Skip to content

Commit 9a6a100

Browse files
committed
Add test for complex
1 parent dafa8bb commit 9a6a100

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

src/arnoldi.rs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ impl<A: Scalar + Lapack> MGS<A> {
4646
nrm
4747
}
4848

49+
/// Get orthogonal basis as Q matrix
4950
pub fn get_q(&self) -> Array2<A> {
5051
hstack(&self.q).unwrap()
5152
}
5253

54+
/// Get each vector norm and coefficients as R matrix
5355
pub fn get_r(&self) -> Array2<A> {
5456
let len = self.len();
5557
let mut r = Array2::zeros((len, len));
@@ -66,6 +68,7 @@ impl<A: Scalar + Lapack> MGS<A> {
6668
mod tests {
6769
use super::*;
6870
use crate::assert::*;
71+
use rand::{distributions::Standard, prelude::*};
6972

7073
const N: usize = 5;
7174

@@ -76,10 +79,12 @@ mod tests {
7679
assert_eq!(mgs.len(), 0);
7780
}
7881

79-
#[test]
80-
fn append_random() {
81-
let mut mgs: MGS<f64> = MGS::new(N);
82-
let a: Array2<f64> = random((N, 3));
82+
fn test<A: Scalar + Lapack>(rtol: A::Real)
83+
where
84+
Standard: Distribution<A>,
85+
{
86+
let mut mgs: MGS<A> = MGS::new(N);
87+
let a: Array2<A> = crate::generate::random((N, 3));
8388
dbg!(&a);
8489
for col in a.axis_iter(Axis(1)) {
8590
let res = mgs.append(col);
@@ -91,9 +96,19 @@ mod tests {
9196
dbg!(&r);
9297

9398
dbg!(q.dot(&r));
94-
close_l2(&q.dot(&r), &a, 1e-9).unwrap();
99+
close_l2(&q.dot(&r), &a, rtol).unwrap();
95100

96101
dbg!(q.t().dot(&q));
97-
close_l2(&q.t().dot(&q), &Array2::eye(3), 1e-9).unwrap();
102+
close_l2(&q.t().dot(&q), &Array2::eye(3), rtol).unwrap();
103+
}
104+
105+
#[test]
106+
fn test_f32() {
107+
test::<f32>(1e-5);
108+
}
109+
110+
#[test]
111+
fn test_c32() {
112+
test::<c32>(1e-5);
98113
}
99114
}

0 commit comments

Comments
 (0)