November 2, 1991 19628 Via Monte Drive Saratoga, CA 95070 Günter Dotzel, ModulaWare GmbH Wilhelmstr. 17A, W-8520 Erlangen, GERMANY Enclosure: MSDOS disk (VPCalc v2.00). Dear Guenter: I thoroughly enjoyed your article "A function to end all functions" in Algorithm 2.4, October 1991. But Guenter, you too can compute A(4,2), on your IBM compatible PC. I am sending you a copy of my program VPCalc. Load the program and type: SetMax(20,000) 20,000 M Ax4y2 = 2^(2^(2^(2^2))) - 3 WriteN("Ax4y2") and A(4,2) will be computed and written to the file Ax4y2.VPN. The commands are not case sensitive and the commas (,) are not needed in numbers. The "Ax4y2 =" is better than "AX4Y2 =" since it is stored inside the output file. It takes about 29 seconds for VPCalc to compute A(4,2) on a 33 MHz 486 DX machine. I have stored the value of A(4,2) that I computed in a separate directory on the disk. This directory also contains this letter and a program, Ackerman.Pas, I wrote to compute A(x,y). If you inspect the output file Ax4y2.VPC, it looks like: Ax4y2 = m.n E+19728, m.n = 2. 00352 99304 06846 46497 90723 51560 25575 04478 25475 56975 14192 65016 97371 08940 59556 31145 30895 06130 88093 33481 01038 23434 29072 63181 82294 93821 18812 66886 95063 64761 54702 91650 41871 91635 15879 66347 21944 29309 27982 08430 91048 55990 57015 93189 59639 52486 33723 67203 00291 69695 92156 10876 49488 89254 09080 59114 57037 67520 85002 06671 ... 91612 41536 89751 48082 61904 84794 65717 36601 00589 24766 55445 84083 83347 90544 14481 76842 55327 20731 55863 49347 Page 1 ... 15545 64509 00448 02789 05570 19683 28313 63071 89976 99153 16667 92089 58768 57229 06009 15472 91963 63816 73596 67395 99757 10326 01557 19202 37348 58052 11281 17458 61006 51525 98883 84311 45118 94880 55212 91457 75699 14657 75300 41384 71712 45779 65048 17585 63950 72895 33753 97558 22087 77750 60723 39445 58789 59057 19156 733 Page 8 E+19728 (19729) ... Page 9 From this you can see that A(4,2) has 19,729 decimal digits, not 19,728 as you stated in your article, a minor flaw. Using my program Ackerman.PAS, it was easy to determine that: A(0,y) = y+1 A(1,y) = y+2 A(2,y) = 2y + 3 A(3,y) = 2^(y+3) - 3 The formula for A(3,y) published in your article was "2 rased to the power of 2y+3", a typographical error. From your article I deduced: A(4,y) = 2^(2^(2^...2)) - 3, where there are y+3 2's My program Ackerman.PAS also computes the total number of times that the A(x,y) function is called for an initial x,y. It would appear that the number of times called, AC(x,y), grows even faster than the Ackermann function itself. For example: A(3,6) = 509 AC(3,6) = 172,233 A(3,7) = 1021 AC(3,7) = 693,964 A(3,8) = 2045 AC(3,8) = 2,785,999 -------- My program VPCalc is quite unique in its ability to perform scientific calculations at whatever precision desired, up to a ridiculously large precision. To use the program, first browse the file VPCalc.Doc. Some of VPCalc's features are: 0 It is a variable precision scientific calculator. 0 Written in object-oriented Turbo Pascal 5.5/6.0. 0 It is its own full program language interpreter. 0 Integrated code parsing, interpreting and evaluating. 0 Floating point numbers normalized from both ends. Neither most significant nor least significant zeros stored in memory. 0 Dynamic memory allocation as new variables are introduced or changed. 0 Pop up help menus. 0 Full command line editing features. 0 Internal calculations performed at higher precision to minimize round-off error. 0 Each Taylor series terms only computed to precision required. 0 Optimal reduction of argument for Taylor series. Read the section on "Transcendental Function Evaluation" near end of VPCalc.Doc file for other original methods. The new version attempts to perform all calculations as if they were done to infinite precision and then rounded to even. The IEEE floating-point standard requires that add, subtract, multiply, divide, and square root be done this way. It is not a requirement for the transcendental functions, but I put guard digits on them also. The calculations done by VPCalc are a lot more stable now. Also the new version has many new features to make the program easier to use. For example, it saves the history of operator entries for re-execution like XTree Pro Gold. Also, the complete state of the calculator can be saved to disk and restored at a later time. Some of VPCalc's new features are: 0 Save/Restore history of previous operator entries. 0 Save/Restore current calculator configuration. 0 Save/Restore the complete state of the calculator. 0 Clear history of previous operator entries. 0 Restore Last Top, like Last x on HP calculators. 0 Enable/Disable save Last Top. 0 Fix display vice scientific notation for low precision numbers. 0 Enable/Disable force scientific notation. 0 Run a code file procedure. 0 Read a number file procedure. 0 Write a number file procedure. 0 Run VPCalc code file AUTOEXEC.VPC on start-up. 0 A:> VPCALC xxxxxxxx.VPC will run file xxxxxxxx.VPC Sincerely, Harry J. Smith