fork download
  1. #include <stdio.h>
  2. #include <stdio.h>
  3. #include <float.h>
  4. #include <math.h>
  5.  
  6. double mojaEksponenta(double x) {
  7. if (x<0) {
  8. return 1.0/mojaEksponenta(-x);
  9. }
  10. double result = 1.0;
  11. double a = 1.0;
  12. int i;
  13. for(i=1; result*DBL_EPSILON<fabs(a); ++i) {
  14. a = a*x/i;
  15. result += a;
  16. }
  17. return result;
  18. }
  19.  
  20. int main(void) {
  21. double x;
  22.  
  23. while(scanf("%lf", &x)==1) {
  24. double a = mojaEksponenta(x);
  25. double b = exp(x);
  26. printf("x=%12lf %12lg - %12lg = %12lg\n", x, a, b, a-b);
  27. }
  28. return 0;
  29. }
  30.  
Success #stdin #stdout 0s 2296KB
stdin
0
1.0
2.0
10.0
30.0
100.0
-1.0
-2.0
-10.0
-30.0
-100.0
-200.0
stdout
x=    0.000000              1 -            1 =            0
x=    1.000000        2.71828 -      2.71828 =            0
x=    2.000000        7.38906 -      7.38906 =            0
x=   10.000000        22026.5 -      22026.5 = -3.63798e-12
x=   30.000000    1.06865e+13 -  1.06865e+13 =  -0.00195312
x=  100.000000    2.68812e+43 -  2.68812e+43 = -4.95176e+27
x=   -1.000000       0.367879 -     0.367879 =            0
x=   -2.000000       0.135335 -     0.135335 =            0
x=  -10.000000    4.53999e-05 -  4.53999e-05 =            0
x=  -30.000000    9.35762e-14 -  9.35762e-14 =            0
x= -100.000000    3.72008e-44 -  3.72008e-44 =  4.97841e-60
x= -200.000000     1.3839e-87 -   1.3839e-87 = 4.46479e-103