Task 6 was fixed and Task 8 was done

This commit is contained in:
AZEN-SGG 2025-03-27 20:44:47 +03:00
parent 863948011f
commit 0a8c75a0cf
45 changed files with 1294 additions and 241 deletions

View file

@ -3,24 +3,40 @@
#include <math.h>
void t7_solve(const double * restrict A, double * restrict x_0, const double * restrict b, double * restrict x, double * restrict r, int n, int m, double t)
void t8_solve(const double * restrict A, double * restrict x_0, const double * restrict b, double * restrict x, double * restrict r, double * restrict w, int n, int m, double t)
{
(void)r;
(void)w;
for (int k = 0; k < m; ++k)
{
double * swap_temp;
#pragma omp parallel for
for (int i = 0; i < n; ++i)
{
double sum = 0;
#pragma omp simd reduction(+:sum)
for (int j = 0; j < n; ++j)
sum += A[i*n + j] * x_0[j];
double sum_x = 0;
double sum_r = 0;
double temp = 0;
double aii = A[i*n + i];
x[i] = x_0[i] + ((b[i] - sum) / A[i*n + i]) * t;
#pragma omp simd reduction(+:sum_x, sum_r)
for (int j = 0; j < i; ++j)
{
double aij = A[i*n + j];
double rj = aij * x_0[j];
sum_x += rj - aij * x[j];
sum_r += rj;
}
temp = aii * x_0[i];
sum_x += temp;
sum_r += temp;
#pragma omp simd reduction(+:sum_r)
for (int j = i+1; j < n; ++j)
sum_r += A[i*n + j] * x_0[j];
x[i] = (sum_x + (b[i] - sum_r) * t) / aii;
}
swap_temp = x;