8.87 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, REAL or UNSIGNED, 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). If one of VECTOR_A or VECTOR_B is UNSIGNED, the other one shall also be UNSIGNED.

Standard:

Fortran 90 and later, extension for UNSIGNED (see Unsigned integers)

Class:

Transformational function

Syntax:

RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)

Arguments:
VECTOR_AThe type shall be numeric or LOGICAL, rank 1. If VECTOR_B is UNSIGNED, VECTOR_A shall also be unsigned.
VECTOR_BThe type shall if VECTOR_A is of numeric type or LOGICAL if VECTOR_A is of type LOGICAL. VECTOR_B shall be a rank-one array. If VECTOR_A is UNSIGNED, VECTOR_B shall also be unsigned.
Return value:

If the arguments are numeric, the return value is a scalar of numeric type, INTEGER, REAL, COMPLEX or UNSIGNED. 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