Intel® Fortran Compiler 18.0 Developer Guide and Reference

PRODUCT

Transformational Intrinsic Function (Generic): Returns the product of all the elements in an entire array or in a specified dimension of an array.

result = PRODUCT (array[,dim] [,mask])

array

(Input) Must be an array of type integer, real, or complex.

dim

(Input; optional) Must be a scalar integer with a value in the range 1 to n, where n is the rank of array.

mask

(Input; optional) Must be of type logical and conformable with array.

Results

The result is an array or a scalar of the same data type as array.

The result is a scalar if dim is omitted or array has rank one.

The following rules apply if dim is omitted:

The following rules apply if dim is specified:

Example

PRODUCT ((/2, 3, 4/)) returns the value 24 (the product of 2 * 3 * 4). PRODUCT ((/2, 3, 4/), DIM=1) returns the same result.

PRODUCT (C, MASK=C .LT. 0.0) returns the product of the negative elements of C.

A is the array

  [ 1  4  7 ]
  [ 2  3  5 ].

PRODUCT (A, DIM=1) returns the value (2, 12, 35), which is the product of all elements in each column. 2 is the product of 1 * 2 in column 1. 12 is the product of 4 * 3 in column 2, and so forth.

PRODUCT (A, DIM=2) returns the value (28, 30), which is the product of all elements in each row. 28 is the product of 1 * 4 * 7 in row 1. 30 is the product of 2 * 3 * 5 in row 2.

If array has shape (2, 2, 2), mask is omitted, and dim is 1, the result is an array result with shape (2, 2) whose elements have the following values.

Resultant array element

Value

result(1, 1)

array(1, 1, 1) * array(2, 1, 1)

result(2, 1)

array(1, 2, 1) * array(2, 2, 1)

result(1, 2)

array(1, 1, 2) * array(2, 1, 2)

result(2, 2)

array(1, 2, 2) * array(2, 2, 2)

The following shows another example:

 INTEGER array (2, 3)
 INTEGER AR1(3), AR2(2)
 array = RESHAPE((/1, 4, 2, 5, 3, 6/),(/2,3/))
 ! array is  1 2 3
 !           4 5 6
 AR1 = PRODUCT(array, DIM = 1) ! returns [ 4 10 18 ]
 AR2 = PRODUCT(array, MASK = array .LT. 6, DIM = 2)
                                  ! returns [ 6 20 ]
 END

See Also