home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Science / Science.zip / picalcu.zip / TROEPFEL.C < prev    next >
Text File  |  2002-09-20  |  730b  |  44 lines

  1. /* Tröpfel-Pi fee  of  magazine  c't 12/96, S.249 */
  2. /* this is a corrected version  */
  3.  
  4. #include <stdio.h>
  5. #include <malloc.h>
  6. #include "noargs.c"
  7.  
  8. #define ZT 10000ul
  9. #define S 31024/14*14
  10.  
  11. void main (void)
  12. {
  13.   unsigned long d;
  14.   unsigned int c, z, n, *f;
  15.  
  16.   if (f = malloc (S * sizeof (unsigned int)))
  17.   {
  18.     z = S;
  19.     do
  20.     {
  21.       f[--z] = 2000;
  22.     } while (z);
  23.  
  24.     for (c = S; c; c -= 14)
  25.     {
  26.       for (d = 0, z = c; --z; )
  27.       {
  28.         d *= z + 1;
  29.         d += f[z] * ZT;
  30.         n = (z << 1) + 1;
  31.         f[z] = d % n;
  32.         d = d / n;
  33.       }
  34.  
  35.       printf ("%04d", d / ZT + f[0]);
  36.       f[0] = d % ZT;
  37.     }
  38.  
  39.     printf ("%01d", f[0] / 1000);
  40.     free (f);
  41.   }
  42. }
  43.  
  44.