Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

SUM

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

result = SUM (array [, mask])

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

array

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

dim

(Input) 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 not specified or array has rank one.

The following rules apply if dim is not specified:

  • If SUM( array) is specified, the result is the sum of all elements of array. If array has size zero, the result is zero.

  • If SUM( array, MASK= mask) is specified, the result is the sum of all elements of array corresponding to true elements of mask. If array has size zero, or every element of mask has the value .FALSE., the result is zero.

The following rules apply if dim is specified:

  • If array has rank one, the value is the same as SUM( array[,MASK= mask]).

  • An array result has a rank that is one less than array, and shape (d1, d2, ..., ddim-1, ddim+1, ..., dn), where (d1, d2, ..., dn) is the shape of array.

  • The value of element (s1, s2, ..., sdim-1, sdim+1, ..., sn) of SUM( array, dim[, mask]) is equal to SUM( array(s1, s2, ..., sdim-1, :, sdim+1, ..., sn) [,MASK = mask(s1, s2, ..., sdim-1, :, sdim+1, ..., sn)].

Example

SUM ((/2, 3, 4/)) returns the value 9 (sum of 2 + 3 + 4). SUM ((/2, 3, 4/), DIM=1) returns the same result.

SUM (B, MASK=B .LT. 0.0) returns the arithmetic sum of the negative elements of B.

C is the array

  [ 1  2  3 ]
  [ 4  5  6 ].

SUM (C, DIM=1) returns the value (5, 7, 9), which is the sum of all elements in each column. 5 is the sum of 1 + 4 in column 1. 7 is the sum of 2 + 5 in column 2, and so forth.

SUM (C, DIM=2) returns the value (6, 15), which is the sum of all elements in each row. 6 is the sum of 1 + 2 + 3 in row 1. 15 is the sum of 4 + 5 + 6 in row 2.

The following shows another example:

 INTEGER array (2, 3), i, j(3)
 array = RESHAPE((/1, 2, 3, 4, 5, 6/), (/2, 3/))
 !  array is  1 3 5
 !            2 4 6
 i = SUM((/ 1, 2, 3 /))        ! returns 6
 j = SUM(array, DIM = 1)       ! returns [3 7 11]
 WRITE(*,*) i, j
 END

See Also