MODULE vettori IMPLICIT NONE REAL, DIMENSION(2) :: v,v1 REAL :: theta CONTAINS SUBROUTINE rota (v,theta,v1) REAL, DIMENSION(2,2) :: R REAL, DIMENSION(2) :: v,v1 REAL :: theta ! Costruzione della matrice di rotazione R=cos(theta) R(1,2)=-sin(theta) R(2,1)=sin(theta) v1=matmul(R,v) END SUBROUTINE rota END MODULE vettori PROGRAM rotazione USE vettori WRITE(*,'(A10)',ADVANCE='no') "theta: " READ(*,*) theta WRITE(*,'(A10)',ADVANCE='no') "vettore: " READ(*,*) v CALL rota (v,theta,v1) write(*,*) v1 END PROGRAM rotazione