Need to test

This commit is contained in:
AZEN-SGG 2025-04-02 12:24:01 +03:00
parent 0c5beccc85
commit 00974efbc0
9 changed files with 72 additions and 29 deletions

View file

@ -90,23 +90,23 @@ int t14_solve(int n, double * restrict A, double * restrict X, int * restrict c)
c[k] = swap_temp; c[k] = swap_temp;
#pragma omp simd #pragma omp simd
for (int in = k * n; in < n; in+=n) for (int in = 0; in < n*n; in+=n)
{ {
double swap = A[in + k]; double swap = A[in + k];
A[in + k] = A[in + max_j]; A[in + k] = A[in + max_j];
A[in + max_j] = swap; A[in + max_j] = swap;
} }
} }
/*
print_matrix(A, n, n); // print_matrix(A, n, n);
printf("\n"); // printf("\n");
*/
gauss_inverse(n, k, A, X); gauss_inverse(n, k, A, X);
/*
print_matrix(A, n, n); // print_matrix(A, n, n);
printf("Inverse matrix:\n"); // printf("Inverse matrix:\n");
print_matrix(X, n, n); // print_matrix(X, n, n);
*/
} }
gauss_back_substitution(n, A, X); gauss_back_substitution(n, A, X);
@ -114,26 +114,37 @@ int t14_solve(int n, double * restrict A, double * restrict X, int * restrict c)
// Возвращаем строки назад // Возвращаем строки назад
for (int k = 0; k < n; ++k) for (int k = 0; k < n; ++k)
{ {
int str_i = c[k]; int pnt_cur = c[k];
if (str_i != k) if (pnt_cur != k)
{
int pnt_nxt = 0;
#pragma omp parallel for
for (int j = 0; j < n; ++j) for (int j = 0; j < n; ++j)
{ {
int loc_k = k; int loc_cur = pnt_cur;
int loc_i = str_i; double temp_cur = X[k*n + j];
double elem = X[k*n + j]; double temp_nxt = 0;
do { do {
X[loc_i*n + j] = elem; temp_nxt = X[loc_cur*n + j];
elem = X[loc_i*n + j]; X[loc_cur*n + j] = temp_cur;
temp_cur = temp_nxt;
loc_k = loc_i; loc_cur = c[loc_cur];
loc_i = c[loc_i]; } while (loc_cur != k);
if (j == n-1)
c[loc_k] = loc_k;
} while (loc_i != k);
X[k*n + j] = elem; X[k*n + j] = temp_cur;
}
do {
pnt_nxt = c[pnt_cur];
c[pnt_cur] = pnt_cur;
pnt_cur = pnt_nxt;
} while (pnt_nxt != k);
c[k] = k;
} }
} }

View file

@ -0,0 +1,4 @@
2 0 0 0
0 3 0 0
0 0 4 0
0 0 0 5

View file

@ -0,0 +1,4 @@
1 2 3 4
0 5 6 7
0 0 8 9
0 0 0 10

View file

@ -0,0 +1,4 @@
1 2 3 4
5 6 7 8
9 10 11 12
6 9 12 15

View file

@ -0,0 +1,4 @@
1 2 0 4
5 6 0 8
9 10 0 12
13 14 0 16

View file

@ -0,0 +1,4 @@
1 2 3 4
5 6 7 8
0 0 0 0
9 10 11 12

View file

@ -0,0 +1,4 @@
1 2 3 4
2 4 6 8
5 6 7 8
9 10 11 12

View file

@ -0,0 +1,4 @@
1 2 3 4
5 6 7 8
1 2 3 4
9 10 11 12

View file

@ -0,0 +1,4 @@
5 7 6 5
7 10 8 7
6 8 10 9
5 7 9 10