Skip to content

Commit 2c787f5

Browse files
committed
Add test for SVD without u or vt
1 parent cf68301 commit 2c787f5

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

tests/svd.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ use ndarray_linalg::*;
33
use std::cmp::min;
44

55
fn test(a: &Array2<f64>, n: usize, m: usize) {
6+
test_both(a, n, m);
7+
test_u(a, n, m);
8+
test_vt(a, n, m);
9+
}
10+
11+
fn test_both(a: &Array2<f64>, n: usize, m: usize) {
612
let answer = a.clone();
713
println!("a = \n{:?}", a);
814
let (u, s, vt): (_, Array1<_>, _) = a.svd(true, true).unwrap();
@@ -18,6 +24,26 @@ fn test(a: &Array2<f64>, n: usize, m: usize) {
1824
assert_close_l2!(&u.dot(&sm).dot(&vt), &answer, 1e-7);
1925
}
2026

27+
fn test_u(a: &Array2<f64>, n: usize, _m: usize) {
28+
println!("a = \n{:?}", a);
29+
let (u, _s, vt): (_, Array1<_>, _) = a.svd(true, false).unwrap();
30+
assert!(u.is_some());
31+
assert!(vt.is_none());
32+
let u = u.unwrap();
33+
assert_eq!(u.dim().0, n);
34+
assert_eq!(u.dim().1, n);
35+
}
36+
37+
fn test_vt(a: &Array2<f64>, _n: usize, m: usize) {
38+
println!("a = \n{:?}", a);
39+
let (u, _s, vt): (_, Array1<_>, _) = a.svd(false, true).unwrap();
40+
assert!(u.is_none());
41+
assert!(vt.is_some());
42+
let vt = vt.unwrap();
43+
assert_eq!(vt.dim().0, m);
44+
assert_eq!(vt.dim().1, m);
45+
}
46+
2147
#[test]
2248
fn svd_square() {
2349
let a = random((3, 3));

0 commit comments

Comments
 (0)