blob: 8d18b72d275f775e8e038b3959ef1e0c83f57f0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include <math.h>
int main() {
int M, N;
float** A;
float *s;
float *Rdiag;
float *nrm;
int i, j, k;
float t;
for (k = 0; k < N; k++) {
nrm[k] = 0;
for (i = k; i < M; i++)
nrm[k] = sqrt(nrm[k] * nrm[k] + A[i][k] * A[i][k]);
//t = A[k][k];
//if (t < 0)
// nrm[k] = -nrm[k];
for (i = k; i < M; i++)
A[i][k] = A[i][k] / nrm[k];
A[k][k] = A[k][k] + 1;
for (j = k + 1; j < N; j++) {
s[j] = 0; //S6
for (i = k; i < M; i++)
s[j] = s[j] + A[i][k] * A[i][j]; //S7
s[j] = -s[j] / A[k][k]; //S8
for (i = k; i < M; i++)
A[i][j] = A[i][j] + s[j] * A[i][k]; //S9
}
Rdiag[k] = -nrm[k];
}
return 0;
}
|