From 056e721d9a827668046e424a8b76d12c7ed2943c Mon Sep 17 00:00:00 2001 From: AZEN-SGG Date: Fri, 23 May 2025 00:39:50 +0300 Subject: [PATCH] Add .zip Archive --- 2025.05.02/03Ex/comp.h | 2 +- 2025.05.02/04Ex/comp.h | 4 +- 2025.05.02/06Ex/comp.h | 4 +- 2025.05.02/Krivoruchenko_SK.zip | Bin 7344 -> 17110 bytes 2025.05.02/dist/Krivoruchenko_SK/Makefile | 8 +- .../Krivoruchenko_SK/{a01.c => main_01.c} | 4 +- .../Krivoruchenko_SK/{a02.c => main_02.c} | 4 +- .../Krivoruchenko_SK/{a03.c => main_03.c} | 4 +- .../Krivoruchenko_SK/{a04.c => main_04.c} | 4 +- .../Krivoruchenko_SK/{a05.c => main_05.c} | 4 +- .../Krivoruchenko_SK/{a06.c => main_06.c} | 4 +- .../Krivoruchenko_SK/{a07.c => main_07.c} | 2 +- .../Krivoruchenko_SK/{a08.c => main_08.c} | 4 +- .../Krivoruchenko_SK/{a09.c => main_09.c} | 4 +- 2025.05.02/dist/Krivoruchenko_SK/solve.c | 473 ------------------ 2025.05.02/dist/Krivoruchenko_SK/solve.h | 60 --- 2025.05.02/dist/Krivoruchenko_SK/solve_01.c | 70 +++ 2025.05.02/dist/Krivoruchenko_SK/solve_01.h | 10 + 2025.05.02/dist/Krivoruchenko_SK/solve_02.c | 37 ++ 2025.05.02/dist/Krivoruchenko_SK/solve_02.h | 11 + 2025.05.02/dist/Krivoruchenko_SK/solve_03.c | 72 +++ 2025.05.02/dist/Krivoruchenko_SK/solve_03.h | 10 + 2025.05.02/dist/Krivoruchenko_SK/solve_04.c | 59 +++ 2025.05.02/dist/Krivoruchenko_SK/solve_04.h | 10 + 2025.05.02/dist/Krivoruchenko_SK/solve_05.c | 107 ++++ 2025.05.02/dist/Krivoruchenko_SK/solve_05.h | 59 +++ 2025.05.02/dist/Krivoruchenko_SK/solve_06.c | 68 +++ 2025.05.02/dist/Krivoruchenko_SK/solve_06.h | 11 + 2025.05.02/dist/Krivoruchenko_SK/solve_07.c | 33 ++ 2025.05.02/dist/Krivoruchenko_SK/solve_07.h | 10 + 2025.05.02/dist/Krivoruchenko_SK/solve_08.c | 54 ++ 2025.05.02/dist/Krivoruchenko_SK/solve_08.h | 10 + 2025.05.02/dist/Krivoruchenko_SK/solve_09.c | 51 ++ 2025.05.02/dist/Krivoruchenko_SK/solve_09.h | 10 + 34 files changed, 718 insertions(+), 559 deletions(-) rename 2025.05.02/dist/Krivoruchenko_SK/{a01.c => main_01.c} (91%) rename 2025.05.02/dist/Krivoruchenko_SK/{a02.c => main_02.c} (92%) rename 2025.05.02/dist/Krivoruchenko_SK/{a03.c => main_03.c} (91%) rename 2025.05.02/dist/Krivoruchenko_SK/{a04.c => main_04.c} (91%) rename 2025.05.02/dist/Krivoruchenko_SK/{a05.c => main_05.c} (91%) rename 2025.05.02/dist/Krivoruchenko_SK/{a06.c => main_06.c} (93%) rename 2025.05.02/dist/Krivoruchenko_SK/{a07.c => main_07.c} (97%) rename 2025.05.02/dist/Krivoruchenko_SK/{a08.c => main_08.c} (91%) rename 2025.05.02/dist/Krivoruchenko_SK/{a09.c => main_09.c} (91%) delete mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve.c delete mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_01.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_01.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_02.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_02.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_03.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_03.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_04.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_04.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_05.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_05.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_06.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_06.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_07.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_07.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_08.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_08.h create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_09.c create mode 100644 2025.05.02/dist/Krivoruchenko_SK/solve_09.h diff --git a/2025.05.02/03Ex/comp.h b/2025.05.02/03Ex/comp.h index 6b09d43..2bda00e 100644 --- a/2025.05.02/03Ex/comp.h +++ b/2025.05.02/03Ex/comp.h @@ -33,7 +33,7 @@ static inline double * fp_abs_max (double *pa, double *pb, double *fa, double *f static inline int is_equal (const double a, const double b) { double diff = a - b; - double max_val = (a > b) ? a : b; + double max_val = fabs((a > b) ? a : b); return ((diff < 0) ? -diff : diff) < (DBL_EPSILON * max_val); } diff --git a/2025.05.02/04Ex/comp.h b/2025.05.02/04Ex/comp.h index 0c6fb08..2bda00e 100644 --- a/2025.05.02/04Ex/comp.h +++ b/2025.05.02/04Ex/comp.h @@ -33,7 +33,7 @@ static inline double * fp_abs_max (double *pa, double *pb, double *fa, double *f static inline int is_equal (const double a, const double b) { double diff = a - b; - double max_val = (a > b) ? a : b; + double max_val = fabs((a > b) ? a : b); return ((diff < 0) ? -diff : diff) < (DBL_EPSILON * max_val); } @@ -44,7 +44,7 @@ static inline int is_null (const double a) static inline int is_eps (const double a, const double eps) { - return ((a < 0) ? -a : a) < eps; + return (((a < 0) ? -a : a) - eps) < DBL_EPSILON; } #endif diff --git a/2025.05.02/06Ex/comp.h b/2025.05.02/06Ex/comp.h index 0c6fb08..2bda00e 100644 --- a/2025.05.02/06Ex/comp.h +++ b/2025.05.02/06Ex/comp.h @@ -33,7 +33,7 @@ static inline double * fp_abs_max (double *pa, double *pb, double *fa, double *f static inline int is_equal (const double a, const double b) { double diff = a - b; - double max_val = (a > b) ? a : b; + double max_val = fabs((a > b) ? a : b); return ((diff < 0) ? -diff : diff) < (DBL_EPSILON * max_val); } @@ -44,7 +44,7 @@ static inline int is_null (const double a) static inline int is_eps (const double a, const double eps) { - return ((a < 0) ? -a : a) < eps; + return (((a < 0) ? -a : a) - eps) < DBL_EPSILON; } #endif diff --git a/2025.05.02/Krivoruchenko_SK.zip b/2025.05.02/Krivoruchenko_SK.zip index 50c9a6da1fd1b07d4c53ddd612f7c69dd0eac97d..b581f4937b1e6f679cdaad38dbd9ecc1f00e8599 100644 GIT binary patch literal 17110 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 eAgVAe5)dB$s0|sec>n+l{-#3$06a) #include "init_f.h" -#include "solve.h" +#include "solve_01.h" /* ./a.out a b eps M k */ int main(int argc, char *argv[]) @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a02.c b/2025.05.02/dist/Krivoruchenko_SK/main_02.c similarity index 92% rename from 2025.05.02/dist/Krivoruchenko_SK/a02.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_02.c index 18b9cfb..f949cc1 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a02.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_02.c @@ -3,7 +3,7 @@ #include #include "init_f.h" -#include "solve.h" +#include "solve_02.h" /* ./a.out x_0 eps M k */ int main(int argc, char *argv[]) @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) sscanf(argv[1], "%lf", &x_0) == 1 && (sscanf(argv[2], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[3], "%d", &m) == 1) && (m > 0)) && - ((sscanf(argv[4], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) + ((sscanf(argv[4], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) ) { fprintf(stderr, "Usage: %s x_0 eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a03.c b/2025.05.02/dist/Krivoruchenko_SK/main_03.c similarity index 91% rename from 2025.05.02/dist/Krivoruchenko_SK/a03.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_03.c index 598e7f0..e9d669f 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a03.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_03.c @@ -3,7 +3,7 @@ #include #include "init_f.h" -#include "solve.h" +#include "solve_03.h" /* ./a.out a b eps M k */ int main(int argc, char *argv[]) @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a04.c b/2025.05.02/dist/Krivoruchenko_SK/main_04.c similarity index 91% rename from 2025.05.02/dist/Krivoruchenko_SK/a04.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_04.c index 24a13bd..6d51be9 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a04.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_04.c @@ -3,7 +3,7 @@ #include #include "init_f.h" -#include "solve.h" +#include "solve_04.h" /* ./a.out a b eps M k */ int main(int argc, char *argv[]) @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a05.c b/2025.05.02/dist/Krivoruchenko_SK/main_05.c similarity index 91% rename from 2025.05.02/dist/Krivoruchenko_SK/a05.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_05.c index d77f173..94ecd88 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a05.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_05.c @@ -3,7 +3,7 @@ #include #include "init_f.h" -#include "solve.h" +#include "solve_05.h" /* ./a.out a b eps M k */ int main(int argc, char *argv[]) @@ -12,7 +12,7 @@ int main(int argc, char *argv[]) int m, k, cl, it, task = 5; double (*f) (double); - double (*f_lst[]) (double) = {f0, f1, f2, f3, f4, f5, f6}; + double (*f_lst[]) (double) = {f0, f1, f2, f3, f4, f5, f6}; //TODO: Rem f7 int len_f = sizeof(f_lst) / sizeof(f_lst[0]); if ( diff --git a/2025.05.02/dist/Krivoruchenko_SK/a06.c b/2025.05.02/dist/Krivoruchenko_SK/main_06.c similarity index 93% rename from 2025.05.02/dist/Krivoruchenko_SK/a06.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_06.c index ad3bfb0..844e8f5 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a06.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_06.c @@ -5,7 +5,7 @@ #include "init_f.h" #include "array_io.h" -#include "solve.h" +#include "solve_06.h" /* ./a.out m a b eps M k */ int main(int argc, char *argv[]) @@ -25,7 +25,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[4], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[5], "%d", &num_iter) == 1) && num_iter > 0) && - ((sscanf(argv[6], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) + ((sscanf(argv[6], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) ) { fprintf(stderr, "Usage: %s m a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a07.c b/2025.05.02/dist/Krivoruchenko_SK/main_07.c similarity index 97% rename from 2025.05.02/dist/Krivoruchenko_SK/a07.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_07.c index 11be590..f326b14 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a07.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_07.c @@ -3,7 +3,7 @@ #include #include "init_f.h" -#include "solve.h" +#include "solve_07.h" /* ./a.out x_0 eps M k */ int main(int argc, char *argv[]) diff --git a/2025.05.02/dist/Krivoruchenko_SK/a08.c b/2025.05.02/dist/Krivoruchenko_SK/main_08.c similarity index 91% rename from 2025.05.02/dist/Krivoruchenko_SK/a08.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_08.c index 13310fb..6065f39 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a08.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_08.c @@ -3,7 +3,7 @@ #include #include "init_f.h" -#include "solve.h" +#include "solve_08.h" /* ./a.out a b eps M k */ int main(int argc, char *argv[]) @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a09.c b/2025.05.02/dist/Krivoruchenko_SK/main_09.c similarity index 91% rename from 2025.05.02/dist/Krivoruchenko_SK/a09.c rename to 2025.05.02/dist/Krivoruchenko_SK/main_09.c index b65ad8e..67993c5 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a09.c +++ b/2025.05.02/dist/Krivoruchenko_SK/main_09.c @@ -3,7 +3,7 @@ #include #include "init_f.h" -#include "solve.h" +#include "solve_09.h" /* ./a.out a b eps M k */ int main(int argc, char *argv[]) @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve.c b/2025.05.02/dist/Krivoruchenko_SK/solve.c deleted file mode 100644 index 6948a98..0000000 --- a/2025.05.02/dist/Krivoruchenko_SK/solve.c +++ /dev/null @@ -1,473 +0,0 @@ -#include "solve.h" -#include "comp.h" -#include "polynom.h" - -#include -#include -#include -#include -#include - -int t1_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x -) { - int it = 0; - uint64_t bits; - double c = DBL_MAX, y, y_a = f(a), y_b = f(b); - bool sgn_a, sgn_b, sgn_c; - - memcpy(&bits, &y_a, sizeof(bits)); - sgn_a = (bits >> 63) & 1; - memcpy(&bits, &y_b, sizeof(bits)); - sgn_b = (bits >> 63) & 1; - - if (fabs(y_a) - eps < DBL_EPSILON) - { - *x = a; - return 1; - } if (fabs(y_b) - eps < DBL_EPSILON) - { - *x = b; - return 1; - } - - if (sgn_a == sgn_b) - { - *x = DBL_MAX; - return -1; - } - - for (it = 1; it <= m; ++it) - { - c = (a + b) * 0.5; - y = f(c); - - memcpy(&bits, &y, sizeof(bits)); - sgn_c = (bits >> 63) & 1; - - if (fabs(y) - eps < DBL_EPSILON) - break; - else if ((fabs(c - a) < DBL_EPSILON) || (fabs(c - b) < DBL_EPSILON)) - it = m+1; - else if (sgn_c == sgn_a) - { - a = c; - y_a = y; - } else if (sgn_c == sgn_b) - { - b = c; - y_b = y; - } - } - - if (it > m) - it = -1; - - *x = c; - - return it; -} - -int t2_solve ( - double (*f) (double), - double (*d) (double), - double x_0, double eps, - int m, double *x -) { - int it = 0; - - for (it = 1; it <= m; ++it) - { - double y = f(x_0); - double dy = d(x_0); - - if (fabs(y) - eps < DBL_EPSILON) - break; - - if (fabs(dy) < DBL_EPSILON) - { - it = -1; - break; - } - - x_0 -= (y / dy); - } - - if (it > m) - it = -1; - - *x = x_0; - return it; -} - -int t3_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x -) { - int it = 0; - uint64_t bits; - double c = DBL_MAX, y, y_a = f(a), y_b = f(b); - bool sgn_a, sgn_b, sgn_c; - - memcpy(&bits, &y_a, sizeof(bits)); - sgn_a = (bits >> 63) & 1; - memcpy(&bits, &y_b, sizeof(bits)); - sgn_b = (bits >> 63) & 1; - - if (is_eps(y_a, eps)) - { - *x = a; - return 1; - } else if (is_eps(y_b, eps)) - { - *x = b; - return 1; - } - - if (sgn_a == sgn_b) - { - *x = DBL_MAX; - return -1; - } - - for (it = 1; it <= m; ++it) - { - c = a - ((b - a) / (y_b - y_a)) * y_a; - y = f(c); - - memcpy(&bits, &y, sizeof(bits)); - sgn_c = (bits >> 63) & 1; - - if (is_eps(y, eps)) - break; - else if (sgn_c == sgn_a) - { - a = c; - y_a = y; - } else if (sgn_c == sgn_b) - { - b = c; - y_b = y; - } - } - - if (it > m) - it = -1; - - *x = c; - - return it; -} - -int t4_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x -) { - int it = 0; - double c = DBL_MAX, y, y_a = f(a), y_b = f(b); - - if (is_eps(y_a, eps)) - { - *x = a; - return 1; - } if (is_eps(y_b, eps)) - { - *x = b; - return 1; - } if (is_equal(fabs(y_b), fabs(y_a))) - { - *x = a; - return -1; - } - - for (it = 1; it <= m; ++it) - { - // c = b - ((b - a) / (y_b - y_a)) * y_b; - c = a - ((b - a) / (y_b - y_a)) * y_a; - y = f(c); - - if (is_eps(y, eps)) - break; - else if (fabs(y_a) - fabs(y_b) > DBL_EPSILON) - { - a = c; - y_a = y; - } else - { - b = c; - y_b = y; - } - - if (is_equal(y_a, y_b)) - it = m+1; - } - - if (it > m) - it = -1; - - *x = c; - - return it; -} - -int t5_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x -) { - int it; - double c = (a + b) * 0.5; - - double y_a = f(a); - double y_c = f(c); - double y_b = f(b); - - if (is_null(y_a)) - { - *x = a; - return 1; - } else if (is_null(y_b)) - { - *x = b; - return 1; - } else if (is_null(y_c)) - { - *x = c; - return 1; - } - - if (is_equal(a, b)) - return -1; - else if (is_equal(a, c)) - return -1; - else if (is_equal(b, c)) - return -1; - - for (it = 1; it < m+1; ++it) - { - double *temp_pnt = 0, *inner_max_pnt; - const double angle = (c - a) / (y_c - y_a); - const double x_new = a - - angle * y_a + - ((((b - c) / (y_b - y_c)) - angle) / (y_b - y_a)) * y_a * y_c; - const double y_new = f(x_new); - - if (is_eps(y_new, eps)) - { - *x = x_new; - return it; - } - - if ( - is_equal(x_new, a) || - is_equal(x_new, c) || - is_equal(x_new, b) - ) - return -1; - - inner_max_pnt = fp_abs_max(&c, &b, &y_c, &y_b, &temp_pnt); - *fp_abs_max(&a, inner_max_pnt, &y_a, temp_pnt, &temp_pnt) = x_new; - *temp_pnt = y_new; - } - - if (it > m) - return -2; - else - { - double temp = 0, *temp_x_pnt = fpmax(&c, &b, -y_c, -y_b, &temp); - *x = *fpmax(&a, temp_x_pnt, -y_a, temp, &temp); - return it; - } -} - -int t6_solve ( - double (*f) (double), - const int m, double *d, - double a, double b, - const double eps, const int M, double *res -) { - const int len = m + 1; - - double *y_lst = d; - double *x_lst = d + len; - double *t_lst = d + (len << 1); - - int it; - - if (is_eps(y_lst[0], eps)) { - *res = a; - return 1; - } else if (is_eps(y_lst[m], eps)) { - *res = b; - return 1; - } - - for (it = 1; it <= M; ++it) - { - double maximum = 0; - int max_i = 0; - - double x = construct_poly(0, len, y_lst, x_lst); - double y = f(x); - - if (is_eps(y, eps)) - { - *res = x; - return it; - } - - // Возвращение значений функции в x_lst можно было встроить в суммирование полинома, но мало толку - for (int i = 0; i < len; ++i) - { - double xi = t_lst[i]; - double yi = y_lst[i]; - - x_lst[i] = xi; - - if (is_equal(y, yi)) - return -1; - - if ((yi - maximum) > DBL_EPSILON) { - maximum = yi; - max_i = i; - } - } - - y_lst[max_i] = y; - x_lst[max_i] = x; - t_lst[max_i] = x; - } - - return -1; -} - -int t7_solve ( - double (*f) (double), - double x_0, double eps, - int m, double *x -) { - int it = 0; - double y = f(x_0); - - if (fabs(y - x_0) - eps < DBL_EPSILON) - { - *x = x_0; - return 1; - } - - for (it = 1; it <= m; ++it) - { - x_0 = y; - y = f(x_0); - - if (fabs(y - x_0) - eps < DBL_EPSILON) - break; - } - - if (it > m) - it = -1; - - *x = x_0; - - return it; -} - -int t8_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *res -) { - int it = 1; - double h = a - b; - double x_l = 0, y_l = 0, x = a, y = f(a); - - if (fabs(b - a) < DBL_EPSILON) - { - *res = a; - return 1; - } - - while (it <= m) - { - h *= -0.1; - - while (1) - { - it++; - - if (it > m) - return -1; - - x_l = x; - y_l = y; - - x += h; - y = f(x); - if ((y_l - y) > DBL_EPSILON) - break; - - if ((a - x) > DBL_EPSILON || (x - b) > DBL_EPSILON) { - *res = x_l; - return it; - } - - } - - if ((y_l - y) < eps) { - *res = x_l; - return it; - } - } - - return -1; -} - -int t9_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x -) { - const double gdrt = 2 / (1 + sqrt(5)); - int it = 0; - - double x_1 = b + (a - b) * gdrt, x_2 = a + (b - a) * gdrt; - double y_1 = f(x_1), y_2 = f(x_2); - - for (it = 1; it <= m; ++it) - { - if (y_1 - y_2 > DBL_EPSILON) - { - b = x_2; - - x_2 = x_1; - y_2 = y_1; - - x_1 = b + (a - b) * gdrt; - y_1 = f(x_1); - } else - { - a = x_1; - - x_1 = x_2; - y_1 = y_2; - - x_2 = a + (b - a) * gdrt; - y_2 = f(x_2); - } - - if (fabs(b - a) < eps) - { - *x = x_1; - break; - } - } - - if (it > m) - it = -1; - - return it; -} diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve.h b/2025.05.02/dist/Krivoruchenko_SK/solve.h deleted file mode 100644 index 10fbf7e..0000000 --- a/2025.05.02/dist/Krivoruchenko_SK/solve.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef SOLVE_H -#define SOLVE_H - -int t1_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x - ); - -int t2_solve ( - double (*f) (double), - double (*d) (double), - double x_0, double eps, - int m, double *x - ); - -int t3_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x - ); - -int t4_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x - ); - -int t5_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x - ); - -int t6_solve ( - double (*f) (double), - const int m, double *d, - double a, double b, - const double eps, const int M, double *res - ); - -int t7_solve ( - double (*f) (double), - double x_0, double eps, - int m, double *x - ); - -int t8_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *res - ); - -int t9_solve ( - double (*f) (double), - double a, double b, - double eps, int m, double *x - ); - -#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_01.c b/2025.05.02/dist/Krivoruchenko_SK/solve_01.c new file mode 100644 index 0000000..e00fb3e --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_01.c @@ -0,0 +1,70 @@ +#include "solve_01.h" + +#include +#include +#include +#include +#include + +int t1_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x +) { + int it = 0; + uint64_t bits; + double c = DBL_MAX, y, y_a = f(a), y_b = f(b); + bool sgn_a, sgn_b, sgn_c; + + memcpy(&bits, &y_a, sizeof(bits)); + sgn_a = (bits >> 63) & 1; + memcpy(&bits, &y_b, sizeof(bits)); + sgn_b = (bits >> 63) & 1; + + if (fabs(y_a) - eps < DBL_EPSILON) + { + *x = a; + return 1; + } if (fabs(y_b) - eps < DBL_EPSILON) + { + *x = b; + return 1; + } + + if (sgn_a == sgn_b) + { + *x = DBL_MAX; + return -1; + } + + for (it = 1; it <= m; ++it) + { + c = (a + b) * 0.5; + y = f(c); + + memcpy(&bits, &y, sizeof(bits)); + sgn_c = (bits >> 63) & 1; + + if (fabs(y) - eps < DBL_EPSILON) + break; + else if ((fabs(c - a) < DBL_EPSILON) || (fabs(c - b) < DBL_EPSILON)) + it = m+1; + else if (sgn_c == sgn_a) + { + a = c; + y_a = y; + } else if (sgn_c == sgn_b) + { + b = c; + y_b = y; + } + } + + if (it > m) + it = -1; + + *x = c; + + return it; +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_01.h b/2025.05.02/dist/Krivoruchenko_SK/solve_01.h new file mode 100644 index 0000000..9b10deb --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_01.h @@ -0,0 +1,10 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t1_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x + ); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_02.c b/2025.05.02/dist/Krivoruchenko_SK/solve_02.c new file mode 100644 index 0000000..8ca8d0c --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_02.c @@ -0,0 +1,37 @@ +#include "solve_02.h" + +#include +#include + +int t2_solve ( + double (*f) (double), + double (*d) (double), + double x_0, double eps, + int m, double *x +) { + int it = 0; + + for (it = 1; it <= m; ++it) + { + double y = f(x_0); + double dy = d(x_0); + + if (fabs(y) - eps < DBL_EPSILON) + break; + + if (fabs(dy) < DBL_EPSILON) + { + it = -1; + break; + } + + x_0 -= (y / dy); + } + + if (it > m) + it = -1; + + *x = x_0; + return it; +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_02.h b/2025.05.02/dist/Krivoruchenko_SK/solve_02.h new file mode 100644 index 0000000..d7b21f1 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_02.h @@ -0,0 +1,11 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t2_solve ( + double (*f) (double), + double (*d) (double), + double x_0, double eps, + int m, double *x + ); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_03.c b/2025.05.02/dist/Krivoruchenko_SK/solve_03.c new file mode 100644 index 0000000..671ad1c --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_03.c @@ -0,0 +1,72 @@ +#include "solve_03.h" +#include "comp.h" + +#include +#include +#include +#include +#include + +int t3_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x +) { + int it = 0; + uint64_t bits; + double c = DBL_MAX, y, y_a = f(a), y_b = f(b); + bool sgn_a, sgn_b, sgn_c; + + memcpy(&bits, &y_a, sizeof(bits)); + sgn_a = (bits >> 63) & 1; + memcpy(&bits, &y_b, sizeof(bits)); + sgn_b = (bits >> 63) & 1; + + if (is_eps(y_a, eps)) + { + *x = a; + return 1; + } else if (is_eps(y_b, eps)) + { + *x = b; + return 1; + } + + if (sgn_a == sgn_b) + { + *x = DBL_MAX; + return -1; + } + + for (it = 1; it <= m; ++it) + { + if (fabs(y_b) < fabs(y_a)) + c = b - ((a - b) / (y_a - y_b)) * y_b; + else + c = a - ((a - b) / (y_a - y_b)) * y_a; + y = f(c); + + memcpy(&bits, &y, sizeof(bits)); + sgn_c = (bits >> 63) & 1; + + if (is_eps(y, eps)) + break; + else if (sgn_c == sgn_a) + { + a = c; + y_a = y; + } else if (sgn_c == sgn_b) + { + b = c; + y_b = y; + } + } + + if (it > m) + it = -1; + + *x = c; + + return it; +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_03.h b/2025.05.02/dist/Krivoruchenko_SK/solve_03.h new file mode 100644 index 0000000..e7f6279 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_03.h @@ -0,0 +1,10 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t3_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x + ); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_04.c b/2025.05.02/dist/Krivoruchenko_SK/solve_04.c new file mode 100644 index 0000000..764ae4f --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_04.c @@ -0,0 +1,59 @@ +#include "solve_04.h" +#include "comp.h" + +#include +#include + +int t4_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x +) { + int it = 0; + double c = DBL_MAX, y, y_a = f(a), y_b = f(b); + + if (is_eps(y_a, eps)) + { + *x = a; + return 1; + } if (is_eps(y_b, eps)) + { + *x = b; + return 1; + } if (is_equal(fabs(y_b), fabs(y_a))) + { + *x = a; + return -1; + } + + for (it = 1; it <= m; ++it) + { + // c = b - ((b - a) / (y_b - y_a)) * y_b; + c = a - ((b - a) / (y_b - y_a)) * y_a; + y = f(c); + + if (is_eps(y, eps)) + break; + else if (fabs(y_a) - fabs(y_b) > DBL_EPSILON) + { + a = c; + y_a = y; + } else + // if (fabs(y_b) - fabs(y_a) > DBL_EPSILON) + { + b = c; + y_b = y; + } + + if (is_equal(y_a, y_b)) + it = m+1; + } + + if (it > m) + it = -1; + + *x = c; + + return it; +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_04.h b/2025.05.02/dist/Krivoruchenko_SK/solve_04.h new file mode 100644 index 0000000..4f73185 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_04.h @@ -0,0 +1,10 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t4_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x + ); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_05.c b/2025.05.02/dist/Krivoruchenko_SK/solve_05.c new file mode 100644 index 0000000..beaba45 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_05.c @@ -0,0 +1,107 @@ +#include "solve_05.h" + +#include +#include +#include +#include +#include + +int t5_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x +) { + int it; + double c = (a + b) * 0.5; + + double y_a = f(a); + double y_c = f(c); + double y_b = f(b); + + if (is_null(y_a)) + { + *x = a; + return 1; + } else if (is_null(y_b)) + { + *x = b; + return 1; + } else if (is_null(y_c)) + { + *x = c; + return 1; + } + + if (is_equal(a, b)) + return -1; + else if (is_equal(a, c)) + return -1; + else if (is_equal(b, c)) + return -1; + + if ( + (is_equal(y_a, y_b) || is_equal(y_a, y_c)) || + is_equal(y_b, y_c) + ) + return -3; + + for (it = 1; it < m+1; ++it) + { + double *temp_pnt = 0, *inner_max_pnt; + double angle, x_new, y_new; + + if (is_equal(y_a, y_b)) + return -3; + else if (is_equal(y_a, y_c)) + return -3; + else if (is_equal(y_b, y_c)) + return -3; + + if ( + (is_equal(y_a, y_b) || is_equal(y_a, y_c)) || + is_equal(y_b, y_c) + ) + return -3; + + angle = (c - a) / (y_c - y_a); + x_new = a - + angle * y_a + + ((((b - c) / (y_b - y_c)) - angle) / (y_b - y_a)) * y_a * y_c; + y_new = f(x_new); + + if (is_eps(y_new, eps)) + { + *x = x_new; + return it; + } + + if ( + (is_equal(x_new, a) || + is_equal(x_new, c)) || + is_equal(x_new, b) + ) + return -1; + + if ( + (is_equal(y_new, y_a) || + is_equal(y_new, y_c)) || + is_equal(y_new, y_b) + ) + return -3; + + + inner_max_pnt = fp_abs_max(&c, &b, &y_c, &y_b, &temp_pnt); + *fp_abs_max(&a, inner_max_pnt, &y_a, temp_pnt, &temp_pnt) = x_new; + *temp_pnt = y_new; + } + + if (it > m) + return -2; + else + { + double temp = 0, *temp_x_pnt = fpmax(&c, &b, -y_c, -y_b, &temp); + *x = *fpmax(&a, temp_x_pnt, -y_a, temp, &temp); + return it; + } +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_05.h b/2025.05.02/dist/Krivoruchenko_SK/solve_05.h new file mode 100644 index 0000000..cb748bd --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_05.h @@ -0,0 +1,59 @@ +#ifndef SOLVE_H +#define SOLVE_H + +#include +#include +#include + +#define EPS 1e-16 + +static inline double * fpmax (double *pa, double *pb, double fa, double fb, double *max_f_p) +{ + if ((fa - fb) > DBL_EPSILON) + { + *max_f_p = fa; + return pa; + } else + { + *max_f_p = fb; + return pb; + } +} + +static inline double * fp_abs_max (double *pa, double *pb, double *fa, double *fb, double **max_f_p) +{ + if ((fabs(*fa) - fabs(*fb)) > DBL_EPSILON) + { + *max_f_p = fa; + return pa; + } else + { + *max_f_p = fb; + return pb; + } +} + +static inline int is_equal (const double a, const double b) +{ + double diff = a - b; + double max_val = (a > b) ? a : b; + return (fabs(diff) < (EPS * fabs(max_val))); +} + +static inline int is_null (const double a) +{ + return ((a < 0) ? -a : a) < DBL_EPSILON; +} + +static inline int is_eps (const double a, const double eps) +{ + return (((a < 0) ? -a : a) - eps) < DBL_EPSILON; +} + +int t5_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x + ); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_06.c b/2025.05.02/dist/Krivoruchenko_SK/solve_06.c new file mode 100644 index 0000000..932b668 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_06.c @@ -0,0 +1,68 @@ +#include "solve_06.h" +#include "comp.h" +#include "polynom.h" + +#include +#include + +int t6_solve ( + double (*f) (double), + const int m, double *d, + double a, double b, + const double eps, const int M, double *res +) { + const int len = m + 1; + + double *y_lst = d; + double *x_lst = d + len; + double *t_lst = d + (len << 1); + + int it; + + if (is_eps(y_lst[0], eps)) { + *res = a; + return 1; + } else if (is_eps(y_lst[m], eps)) { + *res = b; + return 1; + } + + for (it = 1; it <= M; ++it) + { + double maximum = 0; + int max_i = 0; + + double x = construct_poly(0, len, y_lst, x_lst); + double y = f(x); + + if (is_eps(y, eps)) + { + *res = x; + return it; + } + + // Возвращение значений функции в x_lst можно было встроить в суммирование полинома, но мало толку + for (int i = 0; i < len; ++i) + { + double xi = t_lst[i]; + double yi = y_lst[i]; + + x_lst[i] = xi; + + if (is_equal(y, yi)) + return -1; + + if ((yi - maximum) > DBL_EPSILON) { + maximum = yi; + max_i = i; + } + } + + y_lst[max_i] = y; + x_lst[max_i] = x; + t_lst[max_i] = x; + } + + return -1; +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_06.h b/2025.05.02/dist/Krivoruchenko_SK/solve_06.h new file mode 100644 index 0000000..5042f7a --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_06.h @@ -0,0 +1,11 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t6_solve ( + double (*f) (double), + const int m, double *d, + double a, double b, + const double eps, const int M, double *res +); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_07.c b/2025.05.02/dist/Krivoruchenko_SK/solve_07.c new file mode 100644 index 0000000..306bf22 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_07.c @@ -0,0 +1,33 @@ +#include "solve_07.h" + +#include +#include + +int t7_solve ( + double (*f) (double), + double x_0, double eps, + int m, double *x +) { + int it = 0; + + for (it = 1; it <= m; ++it) + { + const double y = f(x_0); + const double max = fabs((y < x_0) ? x_0 : y); + + if (fabs(y - x_0) < eps * max) { + x_0 = y; + break; + } + + x_0 = y; + } + + if (it > m) + it = -1; + + *x = x_0; + + return it; +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_07.h b/2025.05.02/dist/Krivoruchenko_SK/solve_07.h new file mode 100644 index 0000000..3302d16 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_07.h @@ -0,0 +1,10 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t7_solve ( + double (*f) (double), + double x_0, double eps, + int m, double *x + ); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_08.c b/2025.05.02/dist/Krivoruchenko_SK/solve_08.c new file mode 100644 index 0000000..42b875a --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_08.c @@ -0,0 +1,54 @@ +#include "solve_08.h" + +#include +#include + +int t8_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *res +) { + int it = 1; + double h = a - b; + double x_l = 0, y_l = 0, x = a, y = f(a); + + if (fabs(b - a) < DBL_EPSILON) + { + *res = a; + return 1; + } + + while (it <= m) + { + h *= -0.1; + + while (1) + { + it++; + + if (it > m) + return -1; + + x_l = x; + y_l = y; + + x += h; + y = f(x); + if ((y_l - y) > DBL_EPSILON) + break; + + if ((a - x) > DBL_EPSILON || (x - b) > DBL_EPSILON) { + *res = x_l; + return it; + } + + } + + if ((y_l - y) < eps) { + *res = x_l; + return it; + } + } + + return -1; +} diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_08.h b/2025.05.02/dist/Krivoruchenko_SK/solve_08.h new file mode 100644 index 0000000..cb0876b --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_08.h @@ -0,0 +1,10 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t8_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *res + ); + +#endif diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_09.c b/2025.05.02/dist/Krivoruchenko_SK/solve_09.c new file mode 100644 index 0000000..e4fdbe8 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_09.c @@ -0,0 +1,51 @@ +#include "solve_09.h" + +#include +#include + +int t9_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x +) { + const double gdrt = 2 / (1 + sqrt(5)); + int it = 0; + + double x_1 = b + (a - b) * gdrt, x_2 = a + (b - a) * gdrt; + double y_1 = f(x_1), y_2 = f(x_2); + + for (it = 1; it <= m; ++it) + { + if (y_1 - y_2 > DBL_EPSILON) + { + b = x_2; + + x_2 = x_1; + y_2 = y_1; + + x_1 = b + (a - b) * gdrt; + y_1 = f(x_1); + } else + { + a = x_1; + + x_1 = x_2; + y_1 = y_2; + + x_2 = a + (b - a) * gdrt; + y_2 = f(x_2); + } + + if (fabs(b - a) < eps) + { + *x = x_1; + break; + } + } + + if (it > m) + it = -1; + + return it; +} + diff --git a/2025.05.02/dist/Krivoruchenko_SK/solve_09.h b/2025.05.02/dist/Krivoruchenko_SK/solve_09.h new file mode 100644 index 0000000..1dce4d6 --- /dev/null +++ b/2025.05.02/dist/Krivoruchenko_SK/solve_09.h @@ -0,0 +1,10 @@ +#ifndef SOLVE_H +#define SOLVE_H + +int t9_solve ( + double (*f) (double), + double a, double b, + double eps, int m, double *x + ); + +#endif