1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
    Appellation: iter <impls>
    Contrib: FL03 <jo3mccain@icloud.com>
*/
use crate::prelude::{Axis, Scalar};
use crate::tensor::TensorBase;

impl<T> TensorBase<T>
where
    T: Scalar,
{
    pub fn product(&self) -> T {
        self.data().iter().copied().product()
    }

    pub fn product_axis(&self, _axis: Axis) -> T {
        unimplemented!("product_axis")
    }

    pub fn sum(&self) -> T {
        self.data().iter().copied().sum()
    }

    pub fn sum_axis(&self, _axis: Axis) -> T {
        unimplemented!("sum_axis")
    }
}

impl<T> FromIterator<T> for TensorBase<T> {
    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
        Self::from_vec(Vec::from_iter(iter))
    }
}