// test power-series implementation of exp(x) // #include #include // exp(x) = 1 + (x/1) + (x/2)*(x/1) + (x/3)*(x/2)*(x/1) + ... // double myexp( double x) { double t = 1, e1, e2 = 1; for( int n = 1; n < 50 ; ++n) { e1 = e2; // save previous estimate t *= x/n; // update term e2 += t; // update estimate if( e1 == e2) break; // converged } return e2; } int main( void) { double x = 2; scanf( "%lf", &x); double m = myexp(x); double y = exp(x); printf( "x = %.18g\n", x); printf( "m = %.18g\n", m); printf( "y = %.18g\n", y); printf( "d = %.18g\n", m - y); return 0; } /* sample runs: x = 1 m = 2.71828182845904553 y = 2.71828182845904509 d = 4.44089209850062616e-16 x = 100 m = 3.16781183958094239e+35 y = 2.68811714181613561e+43 d = -2.68811711013801703e+43 x = -100 m = -1.10088686522380657e+35 y = 3.72007597602083612e-44 d = -1.10088686522380657e+35 */