25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.17 Overloading 291<br />

! Esegue la somma di due array 2D di tipo "matrix"<br />

TYPE(matrix), INTENT(IN), DIMENSION(:,:) :: Y<br />

TYPE(matrix), INTENT(IN), DIMENSION(SIZE(Y,1),SIZE(Y,2)) :: Z<br />

TYPE(matrix), DIMENSION(SIZE(Y,1),SIZE(Y,2)) :: X<br />

X(:,:)%elem = Y(:,:)%elem + Z(:,:)%elem<br />

END FUNCTION matrix_add<br />

FUNCTION vector_add(Y,Z) RESULT(X)<br />

! Esegue la somma di due array 1D di tipo "matrix"<br />

TYPE(matrix), INTENT(IN), DIMENSION(:) :: Y<br />

TYPE(matrix), INTENT(IN), DIMENSION(SIZE(Y,1)) :: Z<br />

TYPE(matrix), DIMENSION(SIZE(Y,1)) :: X<br />

X(:)%elem = Y(:)%elem + Z(:)%elem<br />

END FUNCTION vector_add<br />

!<br />

! Operatore "differenza": X = Y - Z<br />

!<br />

FUNCTION matrix_sub(Y,Z) RESULT(X)<br />

! Esegue la differenza fra due array 2D di tipo "matrix"<br />

TYPE(matrix), INTENT(IN), DIMENSION(:,:) :: Y<br />

TYPE(matrix), INTENT(IN), DIMENSION(SIZE(Y,1),SIZE(Y,2)) :: Z<br />

TYPE(matrix), DIMENSION(SIZE(Y,1),SIZE(Y,2)) :: X<br />

X(:,:)%elem = Y(:,:)%elem - Z(:,:)%elem<br />

END FUNCTION matrix_sub<br />

FUNCTION vector_sub(Y,Z) RESULT(X)<br />

! Esegue la differenza fra due array 1D di tipo "matrix"<br />

TYPE(matrix), INTENT(IN), DIMENSION(:) :: Y<br />

TYPE(matrix), INTENT(IN), DIMENSION(SIZE(Y,1)) :: Z<br />

TYPE(matrix), DIMENSION(SIZE(Y,1)) :: X<br />

X(:)%elem = Y(:)%elem - Z(:)%elem<br />

END FUNCTION vector_sub<br />

!<br />

! Operatore "moltiplicazione": X = Y * Z<br />

!<br />

FUNCTION matrix_mul(Y,Z) RESULT(X)<br />

! Esegue il prodotto righe x colonne fra due array 2D di tipo "matrix"<br />

TYPE(matrix), INTENT(IN), DIMENSION(:,:) :: Y<br />

TYPE(matrix), INTENT(IN), DIMENSION(:,:) :: Z<br />

TYPE(matrix), DIMENSION(SIZE(Y,1),SIZE(Z,2)) :: X<br />

X(:,:)%elem = MATMUL(Y(:,:)%elem, Z(:,:)%elem)<br />

END FUNCTION matrix_mul

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!