Trait rustml::math::sum::Sum [] [src]

pub trait Sum<T> {
    fn sum(&self, dim: Dimension) -> T;
}

Trait to compute the sum of values.

Required Methods

fn sum(&self, dim: Dimension) -> T

Computes the sum over all elements of the specified dimension.

When computing the sum of a vector or a slice both are interpreted as a row vector. Thus, the only valid dimension for vectors or slices is Dimension::Row. For other dimensions the function will always return zero.

Examples

Compute the sum of all elements of a vector.

use rustml::*;

let v = vec![1.0, 5.0, 9.0];
assert_eq!(v.sum(), 15.0);

To compute the sum of all elements in each column or each row of a matrix you have to specify the correct dimension.

use rustml::*;

let m = mat![
    1.0, 2.0; 
    5.0, 10.0
];

assert_eq!(m.sum(Dimension::Row), vec![3.0, 15.0]);
assert_eq!(m.sum(Dimension::Column), vec![6.0, 12.0]);

Implementation details

Currently, the following code is used to compute the sum of a row:

self.iter().fold(T::zero(), |init, &val| init + val)

In the future this may be replaced by a more efficient implementation.

Implementors