Skip to content

Commit ecd0643

Browse files
committed
Revise tests
1 parent f62a9c0 commit ecd0643

File tree

4 files changed

+59
-101
lines changed

4 files changed

+59
-101
lines changed

tests/cholesky.rs

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,37 @@
1-
include!("header.rs");
21

3-
macro_rules! impl_test {
4-
($modname:ident, $clone:ident) => {
5-
mod $modname {
6-
use super::random_hermite;
7-
use ndarray_linalg::prelude::*;
8-
#[test]
9-
fn cholesky() {
10-
let a = random_hermite(3);
11-
println!("a = \n{:?}", a);
12-
let c = a.$clone().cholesky().unwrap();
13-
println!("c = \n{:?}", c);
14-
println!("cc = \n{:?}", c.t().dot(&c));
15-
assert_close_l2!(&c.t().dot(&c), &a, 1e-7);
16-
}
17-
#[test]
18-
fn cholesky_t() {
19-
let a = random_hermite(3);
20-
println!("a = \n{:?}", a);
21-
let c = a.$clone().cholesky().unwrap();
22-
println!("c = \n{:?}", c);
23-
println!("cc = \n{:?}", c.t().dot(&c));
24-
assert_close_l2!(&c.t().dot(&c), &a, 1e-7);
25-
}
2+
extern crate rand_extra;
3+
extern crate ndarray;
4+
extern crate ndarray_rand;
5+
#[macro_use]
6+
extern crate ndarray_linalg;
7+
8+
use rand_extra::*;
9+
use ndarray::*;
10+
use ndarray_rand::RandomExt;
11+
use ndarray_linalg::prelude::*;
12+
13+
pub fn random_hermite(n: usize) -> Array<f64, Ix2> {
14+
let r_dist = RealNormal::new(0., 1.);
15+
let a = Array::<f64, _>::random((n, n), r_dist);
16+
a.dot(&a.t())
2617
}
27-
}} // impl_test
2818

29-
impl_test!(owned, clone);
30-
impl_test!(shared, to_shared);
19+
#[test]
20+
fn cholesky() {
21+
let a = random_hermite(3);
22+
println!("a = \n{:?}", a);
23+
let c: Array2<_> = (&a).cholesky(UPLO::Upper).unwrap();
24+
println!("c = \n{:?}", c);
25+
println!("cc = \n{:?}", c.t().dot(&c));
26+
assert_close_l2!(&c.t().dot(&c), &a, 1e-7);
27+
}
28+
29+
#[test]
30+
fn cholesky_t() {
31+
let a = random_hermite(3);
32+
println!("a = \n{:?}", a);
33+
let c: Array2<_> = (&a).cholesky(UPLO::Upper).unwrap();
34+
println!("c = \n{:?}", c);
35+
println!("cc = \n{:?}", c.t().dot(&c));
36+
assert_close_l2!(&c.t().dot(&c), &a, 1e-7);
37+
}

tests/det.rs

Lines changed: 0 additions & 20 deletions
This file was deleted.

tests/eigh.rs

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,29 @@
1-
include!("header.rs");
21

3-
macro_rules! impl_test {
4-
($modname:ident, $clone:ident) => {
5-
mod $modname {
6-
use ndarray::prelude::*;
7-
use ndarray_linalg::prelude::*;
8-
#[test]
9-
fn eigen_vector_manual() {
10-
let a = arr2(&[[3.0, 1.0, 1.0], [1.0, 3.0, 1.0], [1.0, 1.0, 3.0]]);
11-
let (e, vecs) = a.$clone().eigh().unwrap();
12-
assert_close_l2!(&e, &arr1(&[2.0, 2.0, 5.0]), 1.0e-7);
13-
for (i, v) in vecs.axis_iter(Axis(1)).enumerate() {
14-
let av = a.dot(&v);
15-
let ev = v.mapv(|x| e[i] * x);
16-
assert_close_l2!(&av, &ev, 1.0e-7);
17-
}
18-
}
19-
#[test]
20-
fn diagonalize() {
21-
let a = arr2(&[[3.0, 1.0, 1.0], [1.0, 3.0, 1.0], [1.0, 1.0, 3.0]]);
22-
let (e, vecs) = a.$clone().eigh().unwrap();
23-
let s = vecs.t().dot(&a).dot(&vecs);
24-
for i in 0..3 {
25-
assert_rclose!(e[i], s[(i, i)], 1e-7);
26-
}
2+
extern crate ndarray;
3+
#[macro_use]
4+
extern crate ndarray_linalg;
5+
6+
use ndarray::prelude::*;
7+
use ndarray_linalg::prelude::*;
8+
9+
#[test]
10+
fn eigen_vector_manual() {
11+
let a = arr2(&[[3.0, 1.0, 1.0], [1.0, 3.0, 1.0], [1.0, 1.0, 3.0]]);
12+
let (e, vecs): (Array1<_>, Array2<_>) = (&a).eigh(UPLO::Upper).unwrap();
13+
assert_close_l2!(&e, &arr1(&[2.0, 2.0, 5.0]), 1.0e-7);
14+
for (i, v) in vecs.axis_iter(Axis(1)).enumerate() {
15+
let av = a.dot(&v);
16+
let ev = v.mapv(|x| e[i] * x);
17+
assert_close_l2!(&av, &ev, 1.0e-7);
2718
}
2819
}
29-
}} // impl_test
3020

31-
impl_test!(owned, clone);
32-
impl_test!(shared, to_shared);
21+
#[test]
22+
fn diagonalize() {
23+
let a = arr2(&[[3.0, 1.0, 1.0], [1.0, 3.0, 1.0], [1.0, 1.0, 3.0]]);
24+
let (e, vecs): (Array1<_>, Array2<_>) = (&a).eigh(UPLO::Upper).unwrap();
25+
let s = vecs.t().dot(&a).dot(&vecs);
26+
for i in 0..3 {
27+
assert_rclose!(e[i], s[(i, i)], 1e-7);
28+
}
29+
}

tests/ssqrt.rs

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)