Next: , Previous: , Up: Arithmetic   [Contents][Index]

### 17.4 Sums and Products

: y = sum (x)
: y = sum (x, dim)
: y = sum (…, "native")
: y = sum (…, "double")
: y = sum (…, "extra")

Sum of elements along dimension dim.

If dim is omitted, it defaults to the first non-singleton dimension.

The optional `"type"` input determines the class of the variable used for calculations. By default, operations on floating point inputs (double or single) are performed in their native data type, while operations on integer, logical, and character data types are performed using doubles. If the argument `"native"` is given, then the operation is performed in the same type as the original argument.

For example:

```sum ([true, true])
⇒ 2
sum ([true, true], "native")
⇒ true
```

If `"double"` is given the sum is performed in double precision even for single precision inputs.

For double precision inputs, the `"extra"` option will use a more accurate algorithm than straightforward summation. For single precision inputs, `"extra"` is the same as `"double"`. For all other data type `"extra"` has no effect.

: y = prod (x)
: y = prod (x, dim)
: y = prod (…, "native")
: y = prod (…, "double")

Product of elements along dimension dim.

If dim is omitted, it defaults to the first non-singleton dimension.

The optional `"type"` input determines the class of the variable used for calculations. If the argument `"native"` is given, then the operation is performed in the same type as the original argument, rather than the default double type.

For example:

```prod ([true, true])
⇒ 1
prod ([true, true], "native")
⇒ true
```

On the contrary, if `"double"` is given, the operation is performed in double precision even for single precision inputs.

: y = cumsum (x)
: y = cumsum (x, dim)
: y = cumsum (…, "native")
: y = cumsum (…, "double")

Cumulative sum of elements along dimension dim.

If dim is omitted, it defaults to the first non-singleton dimension. For example:

```cumsum ([1, 2; 3, 4; 5, 6])
⇒  1   2
4   6
9  12
```

For an explanation of the optional parameters `"native"` and `"double"`, see `sum`.

: y = cumprod (x)
: y = cumprod (x, dim)

Cumulative product of elements along dimension dim.

If dim is omitted, it defaults to the first non-singleton dimension. For example:

```cumprod ([1, 2; 3, 4; 5, 6])
⇒  1   2
3   8
15  48
```

: y = sumsq (x)
: y = sumsq (x, dim)

Sum of squares of elements along dimension dim.

If dim is omitted, it defaults to the first non-singleton dimension.

This function is conceptually equivalent to computing

```sum (x .* conj (x), dim)
```

but it uses less memory and avoids calling `conj` if x is real.