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
.