/* This program computes the Bernoulli numbers. * See radd.c for rational arithmetic. */ typedef struct{ double n; double d; }fract; #define PD 30 /* fract x[PD+1] = {0.0}; fract p[PD+1] = {0.0}; */ #include "mconf.h" #ifdef ANSIPROT extern double md_fabs ( double ); extern double md_log10 ( double ); #else double md_fabs(), md_log10(); #endif extern double MACHEP; void bernum_wrap(num, den) double num[PD-2], den[PD-2]; { int nx, np; int i, k, n; fract s, t; extern void radd ( fract *, fract *, fract *); extern void rsub ( fract *, fract *, fract *); extern void rmul ( fract *, fract *, fract *); extern void rdiv ( fract *, fract *, fract *); fract x[PD+1], p[PD+1]; for(i=0; i<=PD; i++ ) { x[i].n = 0.0; x[i].d = 1.0; p[i].n = 0.0; p[i].d = 1.0; } p[0].n = 1.0; p[0].d = 1.0; p[1].n = 1.0; p[1].d = 1.0; np = 1; x[0].n = 1.0; x[0].d = 1.0; for( n=1; n