program main implicit none integer :: n double complex, allocatable :: xh(:), xl(:) integer :: incx double complex, allocatable :: yh(:), yl(:) integer :: incy double complex :: zh, zl n = 2000 incx = 1 incy = 1 allocate(xh(1+(n-1)*abs(incx))) allocate(xl(1+(n-1)*abs(incx))) allocate(yh(1+(n-1)*abs(incy))) allocate(yl(1+(n-1)*abs(incy))) call random_complex(xh) xl = 0d0 call random_complex(yh) yl = 0d0 call zzdotu(n, xh, xl, incx, yh, yl, incy, zh, zl) print *, "zh =", zh print *, "zl =", zl contains subroutine random_complex(z) double complex, intent(out) :: z(:) double precision, allocatable :: re(:), im(:) allocate(re(size(z,1))) allocate(im(size(z,1))) call random_number(re) call random_number(im) z(:) = dcmplx(re, im) end subroutine end program