math_rs/matrix/float/
display.rs1use std::fmt::Display;
4
5use crate::matrix::traits::Matrix;
6
7use super::MatrixF32;
8
9impl Display for MatrixF32 {
10 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11 let mut prec = self.tolerance();
12 let mut decimal_points: usize = 0;
13 while prec.abs() < 1.0 {
14 prec *= 10.0;
15 decimal_points += 1;
16 }
17 Ok(for i in 0..self.rows() {
18 for j in 0..self.columns() {
19 write!(f, "{:+.decimal_points$} ", self.get(i, j)?)?
20 }
21 write!(f, "\n")?
22 })
23 }
24}
25
26#[cfg(test)]
27mod test {
28 use crate::matrix::float::MatrixF32;
29 const TOLERANCE: f32 = 1e-12;
30
31 #[test]
32 #[ignore]
33 fn debug() {
34 let matrix = vec![
35 vec![11111.1, 2.2, 3.3],
36 vec![4.4, 5.5, 6.6],
37 vec![7.7, 8.8, 9.9],
38 ];
39 let matrix = MatrixF32::new(matrix, TOLERANCE).unwrap();
40 println!("{matrix}")
41 }
42
43 #[test]
44 fn print_float() {
45 let matrix = MatrixF32::new(
46 vec![
47 vec![1.1, 2.2, 3.3],
48 vec![4.4, 5.5, 6.6],
49 vec![7.7, 8.8, 9.9],
50 ],
51 1e-4,
52 )
53 .unwrap();
54 let expected = "+1.10000 +2.20000 +3.30000
55+4.40000 +5.50000 +6.60000
56+7.70000 +8.80000 +9.90000
57";
58 pretty_assertions::assert_eq!(matrix.to_string(), expected)
59 }
60}