### 8.66 `DOT_PRODUCT` — Dot product function

Description:
  `DOT_PRODUCT(VECTOR_A, VECTOR_B)` computes the dot product multiplication of two vectors VECTOR_A and VECTOR_B. The two vectors may be either numeric or logical and must be arrays of rank one and of equal size. If the vectors are `INTEGER` or `REAL`, the result is `SUM(VECTOR_A*VECTOR_B)`. If the vectors are `COMPLEX`, the result is `SUM(CONJG(VECTOR_A)*VECTOR_B)`. If the vectors are `LOGICAL`, the result is `ANY(VECTOR_A .AND. VECTOR_B)`.
Standard:
  Fortran 95 and later
Class:
  Transformational function
Syntax:
  `RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)`
Arguments:

  VECTOR_A | The type shall be numeric or `LOGICAL`, rank 1.
  VECTOR_B | The type shall be numeric if VECTOR_A is of numeric type or `LOGICAL` if VECTOR_A is of type `LOGICAL`. VECTOR_B shall be a rank-one array.

Return value:
  If the arguments are numeric, the return value is a scalar of numeric type, `INTEGER`, `REAL`, or `COMPLEX`. If the arguments are `LOGICAL`, the return value is `.TRUE.` or `.FALSE.`.
Example:

                program test_dot_prod
                    integer, dimension(3) :: a, b
                    a = (/ 1, 2, 3 /)
                    b = (/ 4, 5, 6 /)
                    print '(3i3)', a
                    print *
                    print '(3i3)', b
                    print *
                    print *, dot_product(a,b)
                end program test_dot_prod