! Program to test the DOT_PRODUCT intrinsic
program testforall
   implicit none
   integer, dimension (3) :: a
   integer, dimension (3) :: b
   real, dimension(3) :: c
   real r
   complex, dimension (2) :: z1
   complex, dimension (2) :: z2
   complex z

   a = (/1, 2, 3/);
   b = (/4, 5, 6/);
   c = (/4, 5, 6/);

   if (dot_product(a, b) .ne. 32) call abort

   r = dot_product(a, c)
   if (abs(r - 32.0) .gt. 0.001) call abort

   z1 = (/(1.0, 2.0), (2.0, 3.0)/)
   z2 = (/(3.0, 4.0), (4.0, 5.0)/)
   z = dot_product (z1, z2)
   if (abs (z - (34.0, -4.0)) .gt. 0.001) call abort
end program
