Skip to content

Commit 3e43ea7

Browse files
committed
Test for triangular
1 parent 18a0066 commit 3e43ea7

File tree

1 file changed

+59
-47
lines changed

1 file changed

+59
-47
lines changed

tests/triangular.rs

Lines changed: 59 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,65 @@
11
include!("header.rs");
22

3-
#[test]
4-
fn solve_upper() {
5-
let r_dist = RealNormal::new(0.0, 1.0);
6-
let a = drop_lower(Array::<f64, _>::random((3, 3), r_dist));
7-
println!("a = \n{:?}", &a);
8-
let b = Array::<f64, _>::random(3, r_dist);
9-
println!("b = \n{:?}", &b);
10-
let x = a.solve_upper(b.clone()).unwrap();
11-
println!("x = \n{:?}", &x);
12-
println!("Ax = \n{:?}", a.dot(&x));
13-
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
14-
}
3+
macro_rules! impl_test {
4+
($modname:ident, $random:path) => {
5+
mod $modname {
6+
use ndarray::prelude::*;
7+
use ndarray_linalg::prelude::*;
8+
use ndarray_numtest::prelude::*;
9+
use ndarray_rand::RandomExt;
10+
#[test]
11+
fn solve_upper() {
12+
let r_dist = RealNormal::new(0.0, 1.0);
13+
let a = drop_lower($random((3, 3), r_dist));
14+
println!("a = \n{:?}", &a);
15+
let b = $random(3, r_dist);
16+
println!("b = \n{:?}", &b);
17+
let x = a.solve_upper(b.clone()).unwrap();
18+
println!("x = \n{:?}", &x);
19+
println!("Ax = \n{:?}", a.dot(&x));
20+
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
21+
}
1522

16-
#[test]
17-
fn solve_upper_t() {
18-
let r_dist = RealNormal::new(0., 1.);
19-
let a = drop_lower(Array::<f64, _>::random((3, 3), r_dist).reversed_axes());
20-
println!("a = \n{:?}", &a);
21-
let b = Array::<f64, _>::random(3, r_dist);
22-
println!("b = \n{:?}", &b);
23-
let x = a.solve_upper(b.clone()).unwrap();
24-
println!("x = \n{:?}", &x);
25-
println!("Ax = \n{:?}", a.dot(&x));
26-
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
27-
}
23+
#[test]
24+
fn solve_upper_t() {
25+
let r_dist = RealNormal::new(0., 1.);
26+
let a = drop_lower($random((3, 3), r_dist).reversed_axes());
27+
println!("a = \n{:?}", &a);
28+
let b = $random(3, r_dist);
29+
println!("b = \n{:?}", &b);
30+
let x = a.solve_upper(b.clone()).unwrap();
31+
println!("x = \n{:?}", &x);
32+
println!("Ax = \n{:?}", a.dot(&x));
33+
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
34+
}
2835

29-
#[test]
30-
fn solve_lower() {
31-
let r_dist = RealNormal::new(0., 1.);
32-
let a = drop_upper(Array::<f64, _>::random((3, 3), r_dist));
33-
println!("a = \n{:?}", &a);
34-
let b = Array::<f64, _>::random(3, r_dist);
35-
println!("b = \n{:?}", &b);
36-
let x = a.solve_lower(b.clone()).unwrap();
37-
println!("x = \n{:?}", &x);
38-
println!("Ax = \n{:?}", a.dot(&x));
39-
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
40-
}
36+
#[test]
37+
fn solve_lower() {
38+
let r_dist = RealNormal::new(0., 1.);
39+
let a = drop_upper($random((3, 3), r_dist));
40+
println!("a = \n{:?}", &a);
41+
let b = $random(3, r_dist);
42+
println!("b = \n{:?}", &b);
43+
let x = a.solve_lower(b.clone()).unwrap();
44+
println!("x = \n{:?}", &x);
45+
println!("Ax = \n{:?}", a.dot(&x));
46+
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
47+
}
4148

42-
#[test]
43-
fn solve_lower_t() {
44-
let r_dist = RealNormal::new(0., 1.);
45-
let a = drop_upper(Array::<f64, _>::random((3, 3), r_dist).reversed_axes());
46-
println!("a = \n{:?}", &a);
47-
let b = Array::<f64, _>::random(3, r_dist);
48-
println!("b = \n{:?}", &b);
49-
let x = a.solve_lower(b.clone()).unwrap();
50-
println!("x = \n{:?}", &x);
51-
println!("Ax = \n{:?}", a.dot(&x));
52-
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
49+
#[test]
50+
fn solve_lower_t() {
51+
let r_dist = RealNormal::new(0., 1.);
52+
let a = drop_upper($random((3, 3), r_dist).reversed_axes());
53+
println!("a = \n{:?}", &a);
54+
let b = $random(3, r_dist);
55+
println!("b = \n{:?}", &b);
56+
let x = a.solve_lower(b.clone()).unwrap();
57+
println!("x = \n{:?}", &x);
58+
println!("Ax = \n{:?}", a.dot(&x));
59+
all_close_l2(&a.dot(&x), &b, 1e-7).unwrap();
60+
}
5361
}
62+
}} // impl_test_opnorm
63+
64+
impl_test!(owned, Array<f64, _>::random);
65+
impl_test!(shared, RcArray<f64, _>::random);

0 commit comments

Comments
 (0)