PROGRAM PROVA_VDOT IMPLICIT NONE REAL, DIMENSION(100) :: a, b INTEGER :: i DO i = 1, 100 a(i) = SIN(DBLE(i)) b(i) = DBLE(i+1)/DBLE(i) END DO WRITE(*,*) " VDOT(a,b) = ",VDOT(100,a,b)," = ",DOT_PRODUCT(a,b) STOP CONTAINS FUNCTION VDOT(n,v,w) IMPLICIT NONE INTEGER, INTENT(IN) :: n REAL, INTENT(IN), DIMENSION(n) :: v, w REAL :: c, VDOT c = 0.0 DO i = 1, 100 c = c + v(i) * w(i) END DO VDOT = c RETURN END FUNCTION VDOT END PROGRAM PROVA_VDOT