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.

370 Puntatori<br />

END TYPE matrix<br />

INTERFACE OPERATOR (+)<br />

MODULE PROCEDURE sum<br />

END INTERFACE<br />

INTERFACE OPERATOR (*)<br />

MODULE PROCEDURE prod, scale<br />

END INTERFACE<br />

PRIVATE sum, prod, scale<br />

CONTAINS<br />

FUNCTION sum(A,B)<br />

TYPE(matrix), INTENT(IN) :: A, B<br />

TYPE(matrix) :: sum<br />

IF (A%row /= B%row .OR. A%col /= B%col) THEN<br />

WRITE(*,*) " Impossibile effettuare la somma "<br />

ELSE<br />

sum%row = A%row<br />

sum%col = A%col<br />

ALLOCATE(sum%array(A%row, A%col))<br />

sum%array = A%array + B%array<br />

END IF<br />

END FUNCTION sum<br />

FUNCTION prod(A,B)<br />

TYPE(matrix), INTENT(IN) :: A, B<br />

TYPE(matrix) :: prod<br />

IF (A%col /= B%row ) THEN<br />

WRITE(*,*) " Impossibile effettuare il prodotto "<br />

ELSE<br />

prod%row = A%row<br />

prod%col = B%col<br />

ALLOCATE(prod%array(A%row,B%col))<br />

prod%array = MATMUL(A%array, B%array)<br />

END IF<br />

END FUNCTION prod<br />

FUNCTION scale(c,A)<br />

REAL, INTENT(IN) :: c<br />

TYPE(matrix), INTENT(IN) :: A

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

Saved successfully!

Ooh no, something went wrong!