You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
1.2 KiB

const int N = 1024;
void trsm_optimized(int n, float A[][N], float B[][N]) {
int i = 0;
while (i < n) {
int k = 0;
while (k < n) {
B[i][k] = B[i][k]/A[i][i] + 1;
k = k + 1;
}
int j = i + 1;
while (j < n) {
k = 0;
while (k < n) {
B[j][k] = B[j][k] - A[j][i] * B[i][k];
k = k + 1;
}
j = j + 1;
}
i = i + 1;
}
}
float A[N][N];
float B[N][N];
float C[N][N];
int main() {
int n = getint();
int i, j, k;
i = 0;
j = 0;
while (i < n) {
j = 0;
while (j < n) {
A[i][j] = getfloat();
j = j + 1;
}
i = i + 1;
}
i = 0;
j = 0;
while (i < n) {
j = 0;
while (j < n) {
C[i][j] = getfloat();
j = j + 1;
}
i = i + 1;
}
starttime();
k = 0;
while (k < 5) {
i = 0;
while (i < n) {
j = 0;
while (j < n) {
B[i][j] = C[i][j];
j = j + 1;
}
i = i + 1;
}
trsm_optimized(n, A, B);
k = k + 1;
}
stoptime();
float ans = 0;
i = 0;
while (i < n) {
j = 0;
while (j < n) {
ans = ans + B[i][j];
j = j + 1;
}
i = i + 1;
}
putfloat(ans);
putch(10);
return 0;
}