
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

Giuseppe Ciaburro








