Setting the record straight

Abusing the company mainframe

OK, it's not the silly season, but have you ever used your employers equipment to do something silly? And are not afraid to admit it?

Well, I have in the early 1990'ies, and I actually got away with it, without losing my job.

And talking about jobs, if anyone of you know of any companies looking for someone with 36+ years of PL/I, and a bit less Db2 and CICS, feel free to drop me a line.

So what did I do? Let's go back a few years…

The TI-59 and big numbers

In 1978 I got my first programmable calculator, a TI-59, and in the years that followed I joined about every user club that dealt with it, and at some stage the Swedish one published some programs to calculate "e" to "lots" of digits..

The first program, written by Björn Gustavsson appeared in Programbiten 80-4, pages 4-5. The program ran in the famous "Fast Mode" of the TI-59, and it took around 8:15 to calculate the result. In the same issue there was a second program, written by the same Björn Gustavsson, that did something even more remarkable, it calculated "e" to 1,300 digits, taking just over 24 hours. As for the more remarkable? The TI-59 had only 960 bytes of RAM that could be partitioned between code and data, and the 1,300 digits required 800 bytes for the data, each register in the TI-59 could store a number with a 13-digit mantissa, a 2-digit exponent, and used one nibble to store the combined signs of the two, leaving no space for any counters. Well no, the TI-59 actually had 16 more registers, and nine of them were directly accessible, the "T" register to compare against the display, and 8 initially undocumented regsters that could hold pending operations, and using the latter, Björn was able to free one register for indirect operations.

A few years later, in 1982, another extended precision program for "e" appeared, written by a Ron Knapp [PPC Calculator Journal V8N6P12-13], for the HP-41C. With some difficulty, it turned out that the builtin "MOD" function on the 10-digit HP-41C is more accurate than a synthesized MOD function on the 13-digit TI-59, and although it can "only" calculate "e" to 870 digits, it does so in just 3 hours.

Move on a few more years to the late 1980'ies, when I collected all three of the above, together with two programs to calculate extented precision factorials, three to calculate π (up to 1,287 digits), an as yet never published TI-59 program to calculate natural logarithms (to 1,188 places), and two programs to calculate square roots into an "Extended Precision Programs for the TI-59" "book". As a bonus, I also converted some of them to run on the TI-66 and TI-57. I sold a handful of copies, printed on my employers IBM 3800, and that might have been the end of the story…

Note that you can nowadays run TI-59 programs using an emulator that uses the actual microcode from the original TI-59, and that supports all its features, both the documented and undocumented ones, such as Fast Mode and even Graphics Mode!

But it wasn't…

… because then came MVS

After moving to the UK at the end of 1990, I ended up with Willis, Faber and Dumas, now better known as Willis (they of the Sears Tower), and quickly established myself as somewhat of a technical wiz when it came to PL/I, and later REXX, on their MVS system.

So, sometime in 1991, after copying a lot of floppies to CD, including the one with the extended precision programs, I decided that it would be "fun" to convert some of them to PL/I, and one of them, to calculate "e", to one million digits, survived in electronic format.

However, unlike the discovery of the 25th Mersenne prime by Landon Curt Noll and Laura Nickel, my calculation never made any headlines, and I never gave this much tought, until earlier this week, when I found a copy of a letter I wrote to my father on 15 October 1991, which included the following:

Terwijl ik deze brief schrijf vliegt er overigens elke twee minuten de mededeling

"21.42.03 JOB21733 £HASP165 DRAHPTPD ENDED AT GREY CN(00)"

over the scherm, want ik ben nu al bijna twee weken bezig om het getal "e" uit te rekenen met een precisie van 1,000,000 cijfers, met een programma dat uitermate verschrikkelijk CPU bound is, van de 2 minuten elapsed time die ik in class V of X beschikbaar heb, gebruikt het zo rond de 90 seconden echte CPU tijd. Op dit moment heb ik ongeveer 765,000 cijfers, en ik denk dat het nog een run of 800 duurt voordat ik het eindresultaat beschikbaar heb.

which translates to

While I'm writing this letter, every two minutes my screen flashes a

"21.42.03 JOB21733 £HASP165 DRAHPTPD ENDED AT GREY CN(00)"

message, since two weeks I've been busy calculating the number "e" with a precision of 1,000,000 digits, with a program that's extremely horrible CPU bound, in class V or X I've got two minutes of elapsed time, during which time it uses 118 seconds of CPU time. Right now I've got about 765,000 digits, and I think it may very well take another 800 runs before I've got the final result.

So, sorry Robert Nemiroff and Jerry Bonnell, your … We believe these are the most digits ever computed for the number e on or before 1 April 1994. … believe is wrong, my program calculated "e" to 1,000,000 places at least two years before the two of you succeeded in doing the same!

As for the calculation, as I wrote in the letter to my father, it was obviously extreme CPU bound, and whereas the result of Nemiroff and Bonnell, "There [sic] were computed during spare time on a VAX alpha class machine over the course of a weekend.", my calculations took, I was a bit too optimistic in the letter to my father, several months. I had made the program to run a maximum of two minutes at a time, saving the intermediate results at the end of the run, and only ran it at those times that our development partition wasn't very busy, i.e. early in the morning, before anyone else was in, during lunchtime, late in the afternoon and early evening, and during weekends, I was single at the time, and Willis never stopped me from coming into the office at the weekends, as I also used the time to write many of the other REXX tools that were used by the IT department.

Obviously, as I mentioned, I was found out, it would have been unlikely for an occasional spike in CPU usage to worry anyone, but when such a spike lasts for several hours, in a weekend, and for many weekends in a row, it was inevitable that someone would start asking questions. Fortunately, this only happened at the very end, after the calculations were complete, and I escaped with a "I promise that I'll never do something like this again", a promise I've kept, but given that I've got a z/OS system at my disposal, wouldn't it be fun to see how much faster (or not) one could do this calculation today? (No, when you've got y-cruncher, which can calculate 25,000,000 digits of π in less than a second, and the same number of digits of e in (probably) a comparable time, that's really silly!)

So that's what I did! What, if anything, did you do that you shouldn't have done?

Last updated on 19 January 2022 (Initial version)