5761896 [rkeene@sledge /home/rkeene/devel/old/bc-dos/Examples]$ cat -n pi.b
   1: /*
   2:    This is a program to determine the distribution of digits in the
   3:    fraction part of PI.   It will look at the first scale digits.
   4: 
   5:    The results are left in the global variable digits.
   6:    digits[0] is the number of 0's in PI.
   7: 
   8:    This program requires the math library.
   9: */
  10: 
  11: define pi () {
  12:   auto ix, pi, save_scale, work;
  13: 
  14:   save_scale = scale;
  15:   scale += 5;
  16:   print "\n\nCalculating PI to ",scale," digits.  Please wait . . .";
  17:   pi = 4*a(1);
  18:   scale -= 5;
  19:   work = pi;
  20: 
  21:   print "\nCounting digits. . .";
  22:   for (ix = 0; ix < 10; ix++) digits[ix] = 0;
  23: 
  24:   /* Extract the One's digit from pi. */
  25:   scale = 0;
  26:   one_digit = work / 1;
  27: 
  28:   for (ix = save_scale; ix > 0; ix--) {
  29: 
  30:     /* Remove the One's digit and multiply by 10. */
  31:     scale = ix;
  32:     work = (work - one_digit) / 1 * 10;
  33: 
  34:     /* Extract the One's digit. */
  35:     scale = 0;
  36:     one_digit = work / 1;
  37: 
  38:     digits[one_digit] += 1;
  39:   }
  40: 
  41:   /* Restore the scale. */
  42:   scale = save_scale;
  43: 
  44:   /* Report. */
  45:   print "\n\n"
  46:   print "PI to ", scale, " digits is:\n", pi/1, "\n\n"
  47:   print "The frequency of the digits are:\n"
  48:   for (ix = 0; ix < 10; ix++) {
  49:     print "    ", ix, " - ", digits[ix], " times\n"
  50:   }
  51: 
  52:   print "\n\n"
  53: }
5761897 [rkeene@sledge /home/rkeene/devel/old/bc-dos/Examples]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 1995-03-30 07:28:47