Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <stdio.h>
- #include "s21_math.h"
- double int_pow(double x, int n);
- long long int factorial(int x);
- double shift_2pi(long double x);
- int main() {
- // long double y = -5.55555;
- // printf("%Lf\n", s21_fabs(y));
- // printf("%f\n\n", fabs(y));
- // printf("%f\n", floor(-4.4));
- // printf("%Lf\n", s21_floor(-4.4));
- // printf("%f", exp(1));
- // long long int test = factorial(25);
- // printf("%lld", test);
- double t = s21_PI*756745.6534643; // сходится
- t = 5.1945045; // сходится
- t = -s21_PI*756450.5; // cходится
- t = s21_PI*756450; // cходится
- t = s21_PI*75645000; // сходится
- t = s21_PI*756450000.546; // сходится
- t = 100000000; // сходится
- t = 1000000004; // сходится
- t = 10000000001.0;
- t = 10000000002.0;
- t = 110001000000;
- t = 1000000000100.0;
- // t = 57.739537;
- // t = 57.73932712;
- // t = 2707.543636;
- // t = 2707.543615;
- // t= 2713.02345678;
- // t = 1000000.645646;
- // t = 2707;
- // t = s21_PI/2;
- // t = -s21_PI/2;
- // t = 0;
- // t = 2*s21_PI;
- // t = s21_PI_11;
- // t = s21_PI_10;
- //t = 0;
- // double pi_d = 314159265358.979323846264338;
- // printf("%.15f\n", pi_d);
- // long double pi_l = 314159265358.979323846264338;
- // printf("%.15Lf\n", pi_l);
- printf("%.15f\n", s21_PI_9);
- // long double test_exp = s21_exp(t);
- // printf("%f\n", (double)test_exp);
- // printf("%f", exp(t));
- long double test_sin = s21_sin(t);
- printf("our sin = %Lf\n", test_sin);
- printf("origin sin = %f\n", sin(t));
- printf("pi = %.40f\n", s21_PI);
- printf("origin pi = %.40f\n", M_PI);
- printf("1000000*pi = %.40f\n", s21_PI*100);
- return 0;
- }
- long int s21_abs(int x) {
- if (x < 0) {
- x = x * (-1);
- }
- return x;
- }
- long double s21_fabs(double x) {
- if (x < 0) {
- x = x * (-1);
- }
- return (long double)x;
- }
- long double s21_floor(double x) {
- x = (long double)(int)x;
- if (x < 0) x -= 1;
- return x;
- }
- long double s21_exp(double x) {
- double res = 0;
- for (int k = 0; k < 200; ++k) {
- double current = int_pow(x, k);
- for (int j = 1; j <= k; ++j) {
- current /= j;
- }
- res += current;
- }
- return res;
- }
- double int_pow(double x, int n) {
- double res = 1;
- for (int i = 0; i < n; i++) {
- res = res * x;
- // printf("%");
- }
- return res;
- }
- long long int factorial(int x) {
- long long int res = 0;
- if (x == 0)
- res = 1;
- else
- res = x * factorial(x - 1);
- return res;
- }
- long double s21_sin(double x) {
- x = shift_2pi(x);
- long double res = 0;
- for (int k = 0; k < 300; k++) {
- // long double current = pow(x, 2 * k + 1);
- long double current = 1;
- for (int j = 1; j <= 2 * k + 1; ++j) {
- current *= x;
- current /= (j);
- // printf("%Lf\n", current);
- }
- res += pow(-1, k) * current;
- printf("%Lf\n", res);
- }
- return res;
- }
- double shift_2pi(long double x) {
- long double origin_x = x;
- printf("%Lf\n", x);
- // while (x > s21_PI_11) {
- // x -= s21_PI_11;
- // printf("11$ %Lf\n", x);
- // }
- // while (x > s21_PI_10) {
- // x -= s21_PI_10;
- // printf("10$ %Lf\n", x);
- // }
- // while (x > s21_PI_9) {
- // x -= s21_PI_9;
- // printf("9$ %Lf\n", x);
- // }
- while (x > s21_PI_8) {
- x -= s21_PI_8;
- //printf("8$ %Lf\n", x);
- }
- while (x > s21_PI_7) {
- x -= s21_PI_7;
- //printf("7$ %Lf\n", x);
- }
- while (x > s21_PI_6) {
- x -= s21_PI_6;
- //printf("6$ %Lf\n", x);
- }
- while (x > s21_PI_5) {
- x -= s21_PI_5;
- printf("5$ %Lf\n", x);
- }
- while (x > s21_PI_4) {
- x -= s21_PI_4;
- printf("4$ %Lf\n", x);
- }
- while (x > s21_PI_3) {
- x -= s21_PI_3;
- printf("3$ %Lf\n", x);
- }
- while (x > s21_PI_2) {
- x -= s21_PI_2;
- printf("2$ %Lf\n", x);
- }
- while (x > 2*s21_PI)
- x -= 2*s21_PI;
- while (x < 0)
- x += 2*s21_PI;
- if (origin_x > 2*M_PI) // это не нужно будет, просто сравнивал, как отрабатывает свой s21_PI с M_PI
- while (origin_x > 2*M_PI)
- origin_x -= 2*M_PI;
- else if (origin_x < 0)
- while (origin_x < 0)
- origin_x += 2*M_PI;
- printf("x after proccesing = %.55Lf\n", x);
- printf("origin x = %.55Lf\n", origin_x);
- return x;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement