Next: DPROD, Previous: DIM, Up: Intrinsic Procedures [Contents][Index]

### 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