Skip to content

Commit e883fd6

Browse files
committed
Remove rand and float-cmp dev-dependence
1 parent 5cae301 commit e883fd6

File tree

13 files changed

+96
-232
lines changed

13 files changed

+96
-232
lines changed

Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,5 @@ version = "0.7"
1818
features = ["blas"]
1919

2020
[dev-dependencies]
21-
rand = "0.3.14"
2221
ndarray-rand = "0.3"
23-
float-cmp = "0.2.3"
2422
ndarray-numtest = "0.1.4"

tests/cholesky.rs

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,25 @@
1-
2-
extern crate rand;
3-
extern crate ndarray;
4-
extern crate ndarray_rand;
5-
extern crate ndarray_linalg;
6-
7-
use rand::distributions::*;
8-
use ndarray::prelude::*;
9-
use ndarray_linalg::prelude::*;
10-
use ndarray_rand::RandomExt;
11-
12-
fn all_close(a: Array<f64, Ix2>, b: Array<f64, Ix2>) {
13-
if !a.all_close(&b, 1.0e-7) {
14-
panic!("\nTwo matrices are not equal:\na = \n{:?}\nb = \n{:?}\n",
15-
a,
16-
b);
17-
}
18-
}
1+
include!("header.rs");
192

203
#[test]
214
fn cholesky() {
22-
let r_dist = Range::new(0., 1.);
5+
let r_dist = RealNormal::new(0., 1.);
236
let mut a = Array::<f64, _>::random((3, 3), r_dist);
247
a = a.dot(&a.t());
258
println!("a = \n{:?}", a);
269
let c = a.clone().cholesky().unwrap();
2710
println!("c = \n{:?}", c);
2811
println!("cc = \n{:?}", c.t().dot(&c));
29-
all_close(c.t().dot(&c), a);
12+
c.t().dot(&c).assert_allclose_l2(&a, 1e-7);
3013
}
3114

3215
#[test]
3316
fn cholesky_t() {
34-
let r_dist = Range::new(0., 1.);
17+
let r_dist = RealNormal::new(0., 1.);
3518
let mut a = Array::<f64, _>::random((3, 3), r_dist);
3619
a = a.dot(&a.t()).reversed_axes();
3720
println!("a = \n{:?}", a);
3821
let c = a.clone().cholesky().unwrap();
3922
println!("c = \n{:?}", c);
4023
println!("cc = \n{:?}", c.t().dot(&c));
41-
all_close(c.t().dot(&c), a);
24+
c.t().dot(&c).assert_allclose_l2(&a, 1e-7);
4225
}

tests/det.rs

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,7 @@
1-
2-
extern crate ndarray;
3-
extern crate ndarray_linalg;
4-
extern crate ndarray_rand;
5-
extern crate rand;
6-
extern crate float_cmp;
7-
8-
use ndarray::prelude::*;
9-
use ndarray_linalg::prelude::*;
10-
use rand::distributions::*;
11-
use ndarray_rand::RandomExt;
12-
use float_cmp::ApproxEqRatio;
13-
14-
fn approx_eq(val: f64, truth: f64, ratio: f64) {
15-
if !val.approx_eq_ratio(&truth, ratio) {
16-
panic!("Not almost equal! val={:?}, truth={:?}, ratio={:?}",
17-
val,
18-
truth,
19-
ratio);
20-
}
21-
}
1+
include!("header.rs");
222

233
fn random_hermite(n: usize) -> Array<f64, Ix2> {
24-
let r_dist = Range::new(0., 1.);
4+
let r_dist = RealNormal::new(0., 1.);
255
let a = Array::<f64, _>::random((n, n), r_dist);
266
a.dot(&a.t())
277
}
@@ -32,5 +12,5 @@ fn deth() {
3212
let (e, _) = a.clone().eigh().unwrap();
3313
let deth = a.clone().deth().unwrap();
3414
let det_eig = e.iter().fold(1.0, |x, y| x * y);
35-
approx_eq(deth, det_eig, 1.0e-7);
15+
deth.assert_close(det_eig, 1.0e-7);
3616
}

tests/eigh.rs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,4 @@
1-
2-
extern crate ndarray;
3-
extern crate ndarray_linalg;
4-
5-
use ndarray::prelude::*;
6-
use ndarray_linalg::prelude::*;
7-
8-
fn assert_almost_eq(a: f64, b: f64) {
9-
let rel_dev = (a - b).abs() / (a.abs() + b.abs());
10-
if rel_dev > 1.0e-7 {
11-
panic!("a={:?}, b={:?} are not almost equal", a, b);
12-
}
13-
}
14-
1+
include!("header.rs");
152

163
#[test]
174
fn eigen_vector_manual() {
@@ -31,6 +18,6 @@ fn diagonalize() {
3118
let (e, vecs) = a.clone().eigh().unwrap();
3219
let s = vecs.t().dot(&a).dot(&vecs);
3320
for i in 0..3 {
34-
assert_almost_eq(e[i], s[(i, i)]);
21+
e[i].assert_close(s[(i, i)], 1e-7);
3522
}
3623
}

tests/header.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
extern crate ndarray;
3+
extern crate ndarray_rand;
4+
extern crate ndarray_linalg;
5+
extern crate ndarray_numtest;
6+
extern crate num_traits;
7+
8+
#[allow(unused_imports)]
9+
use ndarray::prelude::*;
10+
#[allow(unused_imports)]
11+
use ndarray_linalg::prelude::*;
12+
#[allow(unused_imports)]
13+
use ndarray_numtest::prelude::*;
14+
#[allow(unused_imports)]
15+
use ndarray_rand::RandomExt;
16+
#[allow(unused_imports)]
17+
use num_traits::Float;

tests/inv.rs

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,21 @@
1-
2-
extern crate rand;
3-
extern crate ndarray;
4-
extern crate ndarray_rand;
5-
extern crate ndarray_linalg;
6-
7-
use ndarray::prelude::*;
8-
use ndarray_linalg::prelude::*;
9-
use rand::distributions::*;
10-
use ndarray_rand::RandomExt;
11-
12-
fn all_close(a: Array<f64, Ix2>, b: Array<f64, Ix2>) {
13-
if !a.all_close(&b, 1.0e-7) {
14-
panic!("\nTwo matrices are not equal:\na = \n{:?}\nb = \n{:?}\n",
15-
a,
16-
b);
17-
}
18-
}
1+
include!("header.rs");
192

203
#[test]
214
fn inv_random() {
22-
let r_dist = Range::new(0., 1.);
5+
let r_dist = RealNormal::new(0., 1.);
236
let a = Array::<f64, _>::random((3, 3), r_dist);
247
let ai = a.clone().inv().unwrap();
258
let id = Array::eye(3);
26-
all_close(ai.dot(&a), id);
9+
ai.dot(&a).assert_allclose_l2(&id, 1e-7);
2710
}
2811

2912
#[test]
3013
fn inv_random_t() {
31-
let r_dist = Range::new(0., 1.);
14+
let r_dist = RealNormal::new(0., 1.);
3215
let a = Array::<f64, _>::random((3, 3), r_dist).reversed_axes();
3316
let ai = a.clone().inv().unwrap();
3417
let id = Array::eye(3);
35-
all_close(ai.dot(&a), id);
18+
ai.dot(&a).assert_allclose_l2(&id, 1e-7);
3619
}
3720

3821
#[test]

tests/lu.rs

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,4 @@
1-
2-
extern crate ndarray;
3-
extern crate ndarray_linalg;
4-
extern crate ndarray_rand;
5-
extern crate rand;
6-
7-
use ndarray::prelude::*;
8-
use ndarray_linalg::prelude::*;
9-
use rand::distributions::*;
10-
use ndarray_rand::RandomExt;
11-
12-
fn all_close(a: Array<f64, Ix2>, b: Array<f64, Ix2>) {
13-
if !a.all_close(&b, 1.0e-7) {
14-
panic!("\nTwo matrices are not equal:\na = \n{:?}\nb = \n{:?}\n",
15-
a,
16-
b);
17-
}
18-
}
1+
include!("header.rs");
192

203
macro_rules! test_permutate {
214
($testname:ident, $permutate:expr, $input:expr, $answer:expr) => {
@@ -26,7 +9,7 @@ fn $testname() {
269
let p = $permutate; // replace 1-2
2710
let pa = a.permutated(&p);
2811
println!("permutated = \n{:?}", &pa);
29-
all_close(pa, arr2($answer))
12+
pa.assert_allclose_l2(&arr2($answer), 1e-7);
3013
}
3114
}} // end test_permutate
3215

@@ -39,7 +22,7 @@ fn $testname() {
3922
let p = $permutate; // replace 1-2
4023
let pa = a.permutated(&p);
4124
println!("permutated = \n{:?}", &pa);
42-
all_close(pa, arr2($answer))
25+
pa.assert_allclose_l2(&arr2($answer), 1e-7);
4326
}
4427
}} // end test_permutate_t
4528

@@ -75,14 +58,14 @@ fn test_lu(a: Array<f64, Ix2>) {
7558
println!("L = \n{:?}", &l);
7659
println!("U = \n{:?}", &u);
7760
println!("LU = \n{:?}", l.dot(&u));
78-
all_close(l.dot(&u).permutated(&p), a);
61+
l.dot(&u).permutated(&p).assert_allclose_l2(&a, 1e-7);
7962
}
8063

8164
macro_rules! test_lu_upper {
8265
($testname:ident, $testname_t:ident, $n:expr, $m:expr) => {
8366
#[test]
8467
fn $testname() {
85-
let r_dist = Range::new(0., 1.);
68+
let r_dist = RealNormal::new(0., 1.);
8669
let mut a = Array::<f64, _>::random(($n, $m), r_dist);
8770
for ((i, j), val) in a.indexed_iter_mut() {
8871
if i > j {
@@ -93,7 +76,7 @@ fn $testname() {
9376
}
9477
#[test]
9578
fn $testname_t() {
96-
let r_dist = Range::new(0., 1.);
79+
let r_dist = RealNormal::new(0., 1.);
9780
let mut a = Array::<f64, _>::random(($m, $n), r_dist).reversed_axes();
9881
for ((i, j), val) in a.indexed_iter_mut() {
9982
if i > j {
@@ -111,7 +94,7 @@ macro_rules! test_lu_lower {
11194
($testname:ident, $testname_t:ident, $n:expr, $m:expr) => {
11295
#[test]
11396
fn $testname() {
114-
let r_dist = Range::new(0., 1.);
97+
let r_dist = RealNormal::new(0., 1.);
11598
let mut a = Array::<f64, _>::random(($n, $m), r_dist);
11699
for ((i, j), val) in a.indexed_iter_mut() {
117100
if i < j {
@@ -122,7 +105,7 @@ fn $testname() {
122105
}
123106
#[test]
124107
fn $testname_t() {
125-
let r_dist = Range::new(0., 1.);
108+
let r_dist = RealNormal::new(0., 1.);
126109
let mut a = Array::<f64, _>::random(($m, $n), r_dist).reversed_axes();
127110
for ((i, j), val) in a.indexed_iter_mut() {
128111
if i < j {
@@ -140,13 +123,13 @@ macro_rules! test_lu {
140123
($testname:ident, $testname_t:ident, $n:expr, $m:expr) => {
141124
#[test]
142125
fn $testname() {
143-
let r_dist = Range::new(0., 1.);
126+
let r_dist = RealNormal::new(0., 1.);
144127
let a = Array::<f64, _>::random(($n, $m), r_dist);
145128
test_lu(a);
146129
}
147130
#[test]
148131
fn $testname_t() {
149-
let r_dist = Range::new(0., 1.);
132+
let r_dist = RealNormal::new(0., 1.);
150133
let a = Array::<f64, _>::random(($m, $n), r_dist).reversed_axes();
151134
test_lu(a);
152135
}

tests/norm.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
2-
extern crate ndarray;
3-
extern crate ndarray_linalg;
4-
extern crate num_traits;
5-
6-
use ndarray::prelude::*;
7-
use ndarray_linalg::prelude::*;
8-
use num_traits::float::Float;
1+
include!("header.rs");
92

103
fn assert_almost_eq(a: f64, b: f64) {
114
let rel_dev = (a - b).abs() / (a.abs() + b.abs());

0 commit comments

Comments
 (0)