Ciao a tutti sono nuovo di questo forum ed e' la prima volta che scrivo...
Devo scrivere una funzione in c++ di cui posseggo il codice in fortran,pero' non conosco assolutamente niente di Fortran..C'e' qualcuno che gentilmente puo' darmi una spiegazione di cio' che fanno le varie linee di codice e se ha volgia di perdere cinque minuti tradurmi il codice che vi propongo?Grazie .....

SUBROUTINE PRMVO(A,IDIAG,ICOL,B,X,NEQ)

IMPLICIT DOUBLE PRECISION (A-G,O-Z)
DIMENSION A(1),IDIAG(0:NEQ),ICOL(1),B(1),X(1)

DO I=1,NEQ
X(I)=0.D0
J1=IDIAG(I-1)+1
J2=IDIAG(I)
DO J=J1,J2
K=ICOL(J)
X(I)=X(I)+A(J)*B(K)
END DO
J2=IDIAG(I)-1
DO J=J1,J2
K=ICOL(J)
X(K)=X(K)+A(J)*B(I)
END DO
END DO
RETURN
END

aggiungo che:

la funzione che devo creare e':

void prod(const Vector& v,Vector& w)const;

dove v e' un puntatore a una matrice sparsa definita dai vettori A(vettore dove sono immagazinati i termini non nullli),IDIAG(posizione nel vetttore A del primo termine no nullo di ogni riga),ICOL(colonna nella matrice di ogni termine no nullo) e w e' il vettore con cui devo moltiplicare la matrice