Return to home
Return to A Short Biography

The only Vice I admit to ;-))
I compute Pi

as of May 28, 2011

- I have a friend (who admits to even fewer vices than I won't admit to) who plays with Prime Numbers :-((

I am a Pi computer :-((

I have always been vaguely interested in Pi, the ratio of the length a circle to its diameter.

Not from theoretical or mathematical grounds, but more why can't the world (say physics or measurement) have a simple number for such a simple seeming ratio??

A little like why isn't there a nice ratio between the rotation of the earth about the sun and the rotation of the earth about its axis - wouldn't it be nice if there was a nice exact gear ratio.
Later I got puzzled by even simpler things - such as what is light? Why the strange results from the "double slit experiment" [light is clearly waves] vs Einstein's quantized photon?
Because I wasn't smart enough to puzzle out the above, I decided not to go into physics. Apparently it is still a big puzzle. Best I can come up with is Richard Feynman's statement in " QED", "Light is particles, trust me".

Anyway, about 1961, while starting my computer career at General Electric Computer Department, someone said "Have you looked into the recent issue of "Mathematics Teacher"? It has an article about computing Pi." :-))

The article available from the American Mathematical Society described how Daniel Shanks & T.W. Wrench Jr. used an IBM 7090 to compute Pi to 100,265 places, using an algorithm attributed to F. C. W. Störmer. I was fascinated, and wanted to compute Pi also. Later I figured that computing Pi was a good way to learn a new machine - and I learned a number of machines in a 35 year computer career.

  • - learn the computer's programmable internals, registers, conditions
  • - learn the assembly language to take full advantage of the above
  • - learn an "upper level" language to print the results through the operating system
  • - learn a little of the operating system, and how to control/utilize it.
  • - learn programming development ("debugging" ;-)) on that machine

I figured that the somewhat simpler Machin's arctangent formula (John Machin (1680 - 1751) ) was fast enough for my more moderate asperations ;-))

Over the years I learned many machines, many using the "Pi method" :-)) These included:
for "work"

  • GE 225, 625 ( I forget how many digits )
  • Control Data Corporation 6600 (only floating point multiply and divide :-( (500,000 digits)
  • (I didn't do Pi on the Hp 2100 nor DEC LSI-11 as by then too small, boring.)
  • IBM PC w 80386 (1,000,000 digits)
and for play
  • IBM 360, Mod 91 at SLAC, a friend got the last 4 hours before final power off and removal
    - It ran slower than expected until he changed the JCL cards to disable overflow/underflow trapping
    - The Pi program of course checks for and handles these internally.
  • Commodore PET (Floating point basic, see CDC 6600 above ;-) (maybe 4,000 digits)
    (I had expanded my PET RAM to 24,000 bytes - another story ;-)
  • Apple with PowerPC processor
  • Pi on an IBM 1401 ( 400 digits)
    and 1401 simulator ( 5,000 digits)
and coded multiple precision Pi across memory boundaries on
  • Burroughs ILLIAC IV - - A friend (Gene Wagenbreth) was working at NASA AMES when they had an/the ILLIAC IV .
    - He said to make it for 40 of the 64 processors because ...
    By the time I figured how to zone the dividends and coordinate the remainders across the zones, and code up a trial assembly - he was off to greener pastures -
  • VAX 11/780 - at Measurex we had three VAXs in a cluster, doing system builds 24/7. Several integrators had lost their jobs using too much machine time. User partitions were rather small, I would have had to page to disk. If I had been caught doing a "G Job ;-)" there would have been severe political trouble.
Evidently I tied J. Guilloud & M. Dichampt in 1967 at 500,000 using a CDC 6600 for world record for about 5 years. We both used a full memory CDC-6600 to get the 500,000 places.
I used an "idle" machine in Minnesota over a Thanksgiving weekend. 60 hours. Job cards (in octal) allowed a max of about 8.5 hours for a job. I would check point to tape after about 8 hours, and restart the job from the check point.
The French probably used the CDC 6600 in France which was supposed to be doing civil engineering for railroads. (Rumor has it that every week a plane from Russia would land in Luxembourg, off load and load some stuff to French trucks and fly away. The rumor suggested that this was to support Soviet atom bomb calculations.)

Signs of the times - In about 1987 I used my 66 MHz INTEL 80386 to compute Pi to a million places in about 30 hours This was about 4 times the computing in half the time relative to the CDC 6600, a 5 million dollar machine, in about 1967 - a mere 20 years earlier -

I have since let others have all the fun ;-))) Wikipedia article

Techie notes:

  1. I use assembly language inpart/protest because no "Higher Level" language that I know of
    • Specifies proper status testing after an operation. You can use the full width of a "word" (say 32 bit word) to compute multiple precision in assembly language and test for overflow, zero, positive, etc but there is no way to do that in "Higher Level" languages.
      In "Higher Level" languages you must use smaller operands and bit mask to determine if your operation "overflowed" the range of your smaller (say 30 bit) operand
    • Returns both the quotient and remainder from a division. You can get either the quotient OR the remainder. Then do another divide to get the other.
  2. Fortunately for me, using the algorithms that I use, in the machines I used, I didn't have to use multiple precision divisors :-)))

    Using multiple precision divisors is a much more difficult proposition !!!! See Integer Division of Very Large numbers by LaFarr Stewart.

  3. (The CDC-6n00 was not an ideal extended precision machine as it did not have an integer divide - you had to work around that very carefully.)
    (I'm very used to work-arounds ;-))