void LUdecomposition(float **A, int dim) {
int k, i, j;
1 for (k = 0; k < dim; k++) {
2 for (i = k + 1; i < dim; i++) {
3 A[i][k] = A[i][k] / A[k][k];
4 }
5 for (i = k + 1; i < dim; i++)
6 for (j = k + 1; j < dim; j++)
7 A[i][j] = A[i][j] - A[i][k] * A[k][j];
8 }
9 }
La funzione, per ottimizzare la memoria utilizzata, memorizza le matrici
ed
nella matrice
stessa, terminata la funzione l' elemento
apparterrà a
se
, oppure ad
se
.
Il ciclo for esterno che comincia dalla riga 1, si ripete per
ogni passo ricorsivo. Dentro il ciclo for alle linee 2-4, che
non vengono eseguite quando
, si pone in
il
valore
(linea 3). L' elemento
sarà invece il valore
in
. Infine la sottomatrice
verrà memorizzata nella
matrice
stessa nelle linee 5-8. LUdecomposition() impiega
tempo
.