From 4a5c5ea41eec8f2af271cee47da4531f6baee89b Mon Sep 17 00:00:00 2001 From: AZEN-SGG Date: Thu, 17 Apr 2025 19:18:07 +0300 Subject: [PATCH] Task 4 is donegit add .git add . --- 2025.04.04/dist/Krivoruchenko_SK/profile.txt | 173 ------------------- 2025.04.18/04Ex/solve.c | 51 +++--- 2 files changed, 30 insertions(+), 194 deletions(-) delete mode 100644 2025.04.04/dist/Krivoruchenko_SK/profile.txt diff --git a/2025.04.04/dist/Krivoruchenko_SK/profile.txt b/2025.04.04/dist/Krivoruchenko_SK/profile.txt deleted file mode 100644 index f14a7c1..0000000 --- a/2025.04.04/dist/Krivoruchenko_SK/profile.txt +++ /dev/null @@ -1,173 +0,0 @@ -Flat profile: - -Each sample counts as 0.01 seconds. - % cumulative self self total - time seconds seconds calls ms/call ms/call name - 46.09 75.80 75.80 get_r2 - 46.00 151.45 75.65 get_r1 - 4.20 158.36 6.91 t14_solve - 3.70 164.44 6.08 2000 3.04 3.04 gauss_inverse - 0.01 164.46 0.02 LeakTracer::registerAlloc(unsigned long, AllocType, void*) - 0.01 164.47 0.01 8000000 0.00 0.00 f1 - 0.01 164.48 0.01 1 10.00 10.00 get_matrix_norm - - % the percentage of the total running time of the -time program used by this function. - -cumulative a running sum of the number of seconds accounted - seconds for by this function and those listed above it. - - self the number of seconds accounted for by this -seconds function alone. This is the major sort for this - listing. - -calls the number of times this function was invoked, if - this function is profiled, else blank. - - self the average number of milliseconds spent in this -ms/call function per call, if this function is profiled, - else blank. - - total the average number of milliseconds spent in this -ms/call function and its descendents per call, if this - function is profiled, else blank. - -name the name of the function. This is the minor sort - for this listing. The index shows the location of - the function in the gprof listing. If the index is - in parenthesis it shows where it would appear in - the gprof listing if it were to be printed. - -Copyright (C) 2012-2018 Free Software Foundation, Inc. - -Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. - - Call graph (explanation follows) - - -granularity: each sample hit covers 2 byte(s) for 0.01% of 164.48 seconds - -index % time self children called name - -[1] 46.1 75.80 0.00 get_r2 [1] ------------------------------------------------ - -[2] 46.0 75.65 0.00 get_r1 [2] ------------------------------------------------ - -[3] 7.9 6.91 6.09 t14_solve [3] - 6.08 0.00 2000/2000 gauss_inverse [4] - 0.01 0.00 1/1 get_matrix_norm [7] ------------------------------------------------ - 6.08 0.00 2000/2000 t14_solve [3] -[4] 3.7 6.08 0.00 2000 gauss_inverse [4] ------------------------------------------------ - -[5] 0.0 0.02 0.00 LeakTracer::registerAlloc(unsigned long, AllocType, void*) [5] ------------------------------------------------ - 0.01 0.00 8000000/8000000 read_or_init_matrix [8] -[6] 0.0 0.01 0.00 8000000 f1 [6] ------------------------------------------------ - 0.01 0.00 1/1 t14_solve [3] -[7] 0.0 0.01 0.00 1 get_matrix_norm [7] ------------------------------------------------ - -[8] 0.0 0.00 0.01 read_or_init_matrix [8] - 0.01 0.00 8000000/8000000 f1 [6] ------------------------------------------------ - - This table describes the call tree of the program, and was sorted by - the total amount of time spent in each function and its children. - - Each entry in this table consists of several lines. The line with the - index number at the left hand margin lists the current function. - The lines above it list the functions that called this function, - and the lines below it list the functions this one called. - This line lists: - index A unique number given to each element of the table. - Index numbers are sorted numerically. - The index number is printed next to every function name so - it is easier to look up where the function is in the table. - - % time This is the percentage of the `total' time that was spent - in this function and its children. Note that due to - different viewpoints, functions excluded by options, etc, - these numbers will NOT add up to 100%. - - self This is the total amount of time spent in this function. - - children This is the total amount of time propagated into this - function by its children. - - called This is the number of times the function was called. - If the function called itself recursively, the number - only includes non-recursive calls, and is followed by - a `+' and the number of recursive calls. - - name The name of the current function. The index number is - printed after it. If the function is a member of a - cycle, the cycle number is printed between the - function's name and the index number. - - - For the function's parents, the fields have the following meanings: - - self This is the amount of time that was propagated directly - from the function into this parent. - - children This is the amount of time that was propagated from - the function's children into this parent. - - called This is the number of times this parent called the - function `/' the total number of times the function - was called. Recursive calls to the function are not - included in the number after the `/'. - - name This is the name of the parent. The parent's index - number is printed after it. If the parent is a - member of a cycle, the cycle number is printed between - the name and the index number. - - If the parents of the function cannot be determined, the word - `' is printed in the `name' field, and all the other - fields are blank. - - For the function's children, the fields have the following meanings: - - self This is the amount of time that was propagated directly - from the child into the function. - - children This is the amount of time that was propagated from the - child's children to the function. - - called This is the number of times the function called - this child `/' the total number of times the child - was called. Recursive calls by the child are not - listed in the number after the `/'. - - name This is the name of the child. The child's index - number is printed after it. If the child is a - member of a cycle, the cycle number is printed - between the name and the index number. - - If there are any cycles (circles) in the call graph, there is an - entry for the cycle-as-a-whole. This entry shows who called the - cycle (as parents) and the members of the cycle (as children.) - The `+' recursive calls entry shows the number of function calls that - were internal to the cycle, and the calls entry for each member shows, - for that member, how many times it was called from other members of - the cycle. - -Copyright (C) 2012-2018 Free Software Foundation, Inc. - -Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. - -Index by function name - - [5] LeakTracer::registerAlloc(unsigned long, AllocType, void*) [7] get_matrix_norm [3] t14_solve - [6] f1 [2] get_r1 - [4] gauss_inverse [1] get_r2 diff --git a/2025.04.18/04Ex/solve.c b/2025.04.18/04Ex/solve.c index 56eca10..31ab1e3 100644 --- a/2025.04.18/04Ex/solve.c +++ b/2025.04.18/04Ex/solve.c @@ -25,41 +25,50 @@ double t4_solve ( return DBL_MAX; Y[i+1] = (y_j - y_i) / (x_j - x_i); - printf ("I = %d, f(x%d, ... , x%d) = %lf\n", i, i+1, i+2, Y[i+1]); +// printf ("I = %d, f(x%d, ... , x%d) = %lf\n", i, i+1, i+2, Y[i+1]); y_j = y_i; x_j = x_i; } - for (int i = 1; i < n; ++i) - printf ("f(x%d, x%d) = %lf\n", i-1, i, Y[i]); +// for (int i = 1; i < n; ++i) +// printf ("f(x%d, x%d) = %lf\n", i-1, i, Y[i]); - for (int k = 1; k < n-1; ++k) + for (int k = 1; k < n*2-1; ++k) { double f_j = D[n-1]; - printf ("------- K = %d -------\n", k); +// printf ("------- K = %d -------\n", k); - for (int l = n*2-2; l > k*2; --l) + for (int l = n*2-2; l >= k; --l) { const int i = l >> 1; double x_i, f_i, *f; + +// printf ("--- L = %d, I = %d ---\n", l , i); if (l & 1) { - x_i = X[i-k]; + x_i = X[i-(k>>1)]; +// printf ("f(x%d, ", i-(k>>1)); +// for (int j = i-(k>>1)+1; j < i+(l&1); j++) +// printf ("x%d, ", j); f_i = D[i]; f = Y + i + 1; } else { x_j = X[i]; - x_i = X[i-k]; - + x_i = X[i-(k>>1)-(k&1)]; +// printf ("f(x%d, ", i-(k>>1)-(k&1)); +// for (int j = i-(k>>1)-(k&1)+1; j < i+(l&1); j++) +// printf ("x%d, ", j); f_i = Y[i]; f = D + i; } +// printf ("x%d)\n", i+(l&1)); + if (fabs(x_j - x_i) < DBL_EPSILON) return DBL_MAX; @@ -72,25 +81,25 @@ double t4_solve ( // printf ("I = %d, f(x%d, ... , x%d) = %lf\n", i, i-k+1, i+2, Y[i+1]); } - printf("------- Y -------\n"); - for (int i = 0; i < n; ++i) - printf("Y[%d] = %lf\n", i, Y[i]); +// printf("------- Y -------\n"); +// for (int i = 0; i < n; ++i) +// printf("Y[%d] = %lf\n", i, Y[i]); - printf("------- D -------\n"); - for (int i = 0; i < n; ++i) - printf("D[%d] = %lf\n", i, D[i]); +// printf("------- D -------\n"); +// for (int i = 0; i < n; ++i) +// printf("D[%d] = %lf\n", i, D[i]); } start_value = 1; value = 0; - printf("------- Y -------\n"); - for (int i = 0; i < n; ++i) - printf("Y[%d] = %lf\n", i, Y[i]); +// printf("------- Y -------\n"); +// for (int i = 0; i < n; ++i) +// printf("Y[%d] = %lf\n", i, Y[i]); - printf("------- D -------\n"); - for (int i = 0; i < n; ++i) - printf("D[%d] = %lf\n", i, D[i]); +// printf("------- D -------\n"); +// for (int i = 0; i < n; ++i) +// printf("D[%d] = %lf\n", i, D[i]); for (int i = 0; i < n; ++i) {