Ci sono diverse cose importanti da notare nell’esempio che abbiamo riportato nell’articolo precedente. In primo luogo, si noti che anche se abbiamo scritto il codice più generale possibile per consentire dimensioni arbitrarie indicate con m e n, abbiamo ancora bisogno di specificare la dimensione principale della matrice A.
La dichiarazione di lunghezza variabile (*) può essere utilizzata solo per l’ultima dimensione di un array. La ragione di questo è il modo in cui il Fortran 77 manipola gli array multidimensionali.Quando si calcola y = A * x da operazioni saxpy, abbiamo bisogno di accedere alle colonne di A. La colonna j’th di A è A (1: m, j).
Tuttavia, nel Fortran 77 non è possibile utilizzare una sintassi simile ad una sottomatrice (mentre lo è nel Fortran 90). Così si fornisce un puntatore al primo elemento della colonna, che è (1, j) (non è veramente un puntatore, ma può essere utile pensare ad esso come se lo fosse). Sappiamo che le prossime locazioni di memoria conterranno gli elementi della matrice di questa colonna. La subroutine saxpy tratterà A (1, j) come primo elemento di un vettore, senza sapere che questo vettore sembra essere una colonna di una matrice.
Infine, ricordiamo che l’indice i viene utilizzato come indice di riga (da 1 a m) mentre l’indice j è usato come indice di colonna (da 1 a n). La maggior parte dei programmi Fortran utilizzano questa notazione che rende molto più facile la lettura del codice.
Link correlati all’argomento
- Come scaricare gratuitamente il compilatore Fortran
- Gli articoli della guida Fortran