Per analizzare nel dettaglio come passare una parte di un array ad un sottoprogramma vi presento una subroutine per la moltiplicazione matrice-vettore. Ci sono due modi per fare questo, utilizzando prodotti interni o operazioni saxpy. Cerchiamo di essere modulari e riutilizziamo il codice saxpy già presentato in un articolo precedente. Un semplice codice è riportato di seguito.
subroutine matvec (m, n, A, lda, x, y) integer m, n, lda real x(*), y(*), A(lda,*) c c Compute y = A*x, where A is m by n and stored in an array c with leading dimension lda. c c Local variables integer i, j c Initialize y do 10 i = 1, m y(i) = 0.0 10 continue c Matrix-vector product by saxpy on columns in A. c Notice that the length of each column of A is m, not n! do 20 j = 1, n call saxpy (m, x(j), A(1,j), y) 20 continue return end
Link correlati all’argomento
- Come scaricare gratuitamente il compilatore Fortran
- Gli articoli della guida Fortran