Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- double solve (double x, double eps);
- double power (double x, double y);
- double taylor_series (double exponent1, double x, double eps);
- double solve (double x, double eps)
- {
- double res = x;
- double fl, fraction_part;
- double exponent1, exponent2;
- int i;
- fl = floor(x);
- fraction_part = x - fl;
- exponent1 = power(M_E, fl);
- exponent2 = taylor_series(exponent1, fraction_part, eps);
- res = exponent1 * exponent2;
- return res;
- }
- double power (double x, double y)
- {
- double res = 1;
- int i;
- double pos = fabs(y);
- for (i = 0; i < y; ++i)
- res *= x;
- if (y < 0)
- res = 1 / res;
- return res;
- }
- double taylor_series (double exponent1, double x, double eps)
- {
- double monomial = 1;
- double s = monomial;
- int k;
- if (fabs(exponent1 * monomial) < eps)
- return s;
- for (k = 1; ; ++k) {
- monomial *= x / k;
- if (fabs(exponent1 * monomial) < eps)
- break;
- s += monomial;
- }
- return s;
- }
- int main (void)
- {
- double t, res, x, eps;
- printf("Input \"x\" and \"eps\": ");
- if (scanf("%lf %lf", &x, &eps) != 2)
- return 1;
- if (eps <= 0)
- return 2;
- t = clock();
- res = solve(x, eps);
- t = (clock() - t) / CLOCKS_PER_SEC;
- printf("\nThe answer is %.16f\n", res);
- printf("The difference = %.16f", fabs(res - exp(x)));
- printf("\nElapsed = %.2f\n", t);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement