extern double MACHEP, PIO2, PI; double ellie(), ellpe(), floor(), fabs(); double ellie2(); main() { double y, m, phi, e, E, phipi, y1; int i, j, npi; /* dprec(); */ m = 0.9; E = ellpe(0.1); for( j=-10; j<=10; j++ ) { printf( "%d * PIO2\n", j ); for( i=-2; i<=2; i++ ) { phi = PIO2 * j + 50 * MACHEP * i; npi = floor(phi/PIO2); if( npi & 1 ) npi += 1; phipi = phi - npi * PIO2; npi = floor(phi/PIO2); if( npi & 1 ) npi += 1; phipi = phi - npi * PIO2; printf( "phi %.9e npi %d ", phi, npi ); y1 = E * npi + ellie(phipi,m); y = ellie2( phi, m ); printf( "y %.9e ", y ); e = fabs(y - y1); if( y1 != 0.0 ) e /= y1; printf( "e %.4e\n", e ); } } }