/****************************************/ /* Compute pi to arbitrary precision */ /* Author Roy Williams February 1994 */ /* Uses Machin's formula... */ /* pi/4 = 4 arctan(1/5) - arctan(1/239) */ /****************************************/ /* compile with cc -O -o pi pi.c */ /* run as "pi -n 1000" */ /****************************************/ /* The last few digits may be wrong.......... */ #include #include /* the following line is Mac CodeWarrior specific */ /* #include */ #define BASE 10000 int nblock; int *tot; int *t1; int *t2; int *t3; int ndigit = 10000; void set(int *result, int rhs) { int i; for(i=0; i=0; i--){ result[i] -= decrem[i]; if(result[i] < 0){ result[i] += BASE; result[i-1]--; } } } void add(int *result, int *increm) { int i; for(i=nblock-1; i>=0; i--){ result[i] += increm[i]; if(result[i] >= BASE){ result[i] -= BASE; result[i-1]++; } } } int zero(int *result) { int i; for(i=0; i=0; i--){ result[i] *= factor; result[i] += carry; carry = result[i]/BASE; result[i] %= BASE; } } void output(int *result) { int i, k; char s[10]; printf("%1d.\n", result[0]); for(i=1; i