"Fossies" - the Fresh Open Source Software Archive

Member "bc-1.06.95/Examples/pi.b" (7 Jul 2000, 1188 Bytes) of package /linux/misc/old/bc-1.06.95.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Limbo source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    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 }