|
1 | 1 | include!("header.rs");
|
2 | 2 |
|
3 |
| -fn random_hermite(n: usize) -> Array<f64, Ix2> { |
4 |
| - let r_dist = RealNormal::new(0., 1.); |
5 |
| - let a = Array::<f64, _>::random((n, n), r_dist); |
6 |
| - a.dot(&a.t()) |
| 3 | +macro_rules! impl_test_det { |
| 4 | + ($modname:ident, $clone:ident) => { |
| 5 | +mod $modname { |
| 6 | + use super::random_hermite; |
| 7 | + use ndarray_linalg::prelude::*; |
| 8 | + use ndarray_numtest::prelude::*; |
| 9 | + #[test] |
| 10 | + fn deth() { |
| 11 | + let a = random_hermite(3); |
| 12 | + let (e, _) = a.$clone().eigh().unwrap(); |
| 13 | + let deth = a.$clone().deth().unwrap(); |
| 14 | + let det_eig = e.iter().fold(1.0, |x, y| x * y); |
| 15 | + deth.assert_close(det_eig, 1.0e-7); |
| 16 | + } |
7 | 17 | }
|
| 18 | +}} // impl_test_det |
8 | 19 |
|
9 |
| -#[test] |
10 |
| -fn deth() { |
11 |
| - let a = random_hermite(3); |
12 |
| - let (e, _) = a.clone().eigh().unwrap(); |
13 |
| - let deth = a.clone().deth().unwrap(); |
14 |
| - let det_eig = e.iter().fold(1.0, |x, y| x * y); |
15 |
| - deth.assert_close(det_eig, 1.0e-7); |
16 |
| -} |
| 20 | +impl_test_det!(owned, clone); |
| 21 | +impl_test_det!(shared, to_shared); |
0 commit comments