1use crate::prelude::Scalar;
6use crate::tensor::TensorBase;
7use num::traits::{Num, One, Zero};
8
9impl<T> Num for TensorBase<T>
10where
11 T: Scalar + Num,
12{
13 type FromStrRadixErr = T::FromStrRadixErr;
14
15 fn from_str_radix(str: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr> {
16 T::from_str_radix(str, radix).map(Self::from_scalar)
17 }
18}
19
20impl<T> One for TensorBase<T>
21where
22 T: Copy + One,
23{
24 fn one() -> Self {
25 Self::from_scalar(T::one())
26 }
27}
28
29impl<T> Zero for TensorBase<T>
30where
31 T: Copy + Zero,
32{
33 fn zero() -> Self {
34 Self::from_scalar(T::zero())
35 }
36
37 fn is_zero(&self) -> bool {
38 self.data().iter().all(|x| x.is_zero())
39 }
40}