implicit real(8) (x-z) integer(8), parameter :: n= 10000000 real(8) :: t1 = 0.0, t2 = 0.0, t3 = 0.0 real(8) :: dt1 real(4) :: xin(1024), yin(1024), z(n) integer(8) :: i, j, m xin = (/(dble(j),j=1,1024)/) yin = xin print '(a/a/)', "DOT_PRODUCT test", " array length time(ns)" do l = 2,10 m = 2**l t1 = tim () do i = 1, n z(i) = dot_product (xin(1:m), yin(1:m)) end do t2 = tim () do i = 1, n z(i) = 0d0 end do t3 = tim () dt1 = 1e9_8 * (2d0*t2 - t1 - t3) / (dble (n)) print '(5x,i4,12x,f8.2,12x,f8.2)', m, dt1 end do contains ! Do not use secnds - various compilers do not support it. real(8) function tim () character(12) :: ddate, dtime, zone integer(4) :: elems (8) call date_and_time (ddate, dtime, zone, elems) tim = 60.0_8 * elems(6) + elems(7) + 0.001_8 * elems(8) end function tim end