Skip to main content

sciforge_lib/maths/tensor/
display.rs

1use super::storage::Tensor;
2use std::fmt;
3
4impl fmt::Display for Tensor {
5    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
6        if self.rank() == 0 {
7            write!(f, "{:.6}", self.data[0])
8        } else if self.rank() == 1 {
9            write!(f, "[")?;
10            for i in 0..self.shape[0] {
11                if i > 0 {
12                    write!(f, ", ")?;
13                }
14                write!(f, "{:.6}", self.get(&[i]))?;
15            }
16            write!(f, "]")
17        } else if self.rank() == 2 {
18            for i in 0..self.shape[0] {
19                write!(f, "[")?;
20                for j in 0..self.shape[1] {
21                    if j > 0 {
22                        write!(f, ", ")?;
23                    }
24                    write!(f, "{:>12.6}", self.get(&[i, j]))?;
25                }
26                writeln!(f, "]")?;
27            }
28            Ok(())
29        } else {
30            write!(f, "Tensor(shape={:?})", self.shape)
31        }
32    }
33}