Skip to content

Commit 368d577

Browse files
committed
Add SVD impl for &ArrayBase, &mut ArrayBase
1 parent 80b4cf7 commit 368d577

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/svd.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,38 @@ impl<A, S, Su, Svt, Ss> SVD<ArrayBase<Su, Ix2>, ArrayBase<Ss, Ix1>, ArrayBase<Sv
1515
Su: DataOwned<Elem = A>,
1616
Svt: DataOwned<Elem = A>,
1717
Ss: DataOwned<Elem = A::Real>
18+
{
19+
fn svd(mut self,
20+
calc_u: bool,
21+
calc_vt: bool)
22+
-> Result<(Option<ArrayBase<Su, Ix2>>, ArrayBase<Ss, Ix1>, Option<ArrayBase<Svt, Ix2>>)> {
23+
(&mut self).svd(calc_u, calc_vt)
24+
}
25+
}
26+
27+
impl<'a, A, S, Su, Svt, Ss> SVD<ArrayBase<Su, Ix2>, ArrayBase<Ss, Ix1>, ArrayBase<Svt, Ix2>> for &'a ArrayBase<S, Ix2>
28+
where A: LapackScalar + Clone,
29+
S: Data<Elem = A>,
30+
Su: DataOwned<Elem = A>,
31+
Svt: DataOwned<Elem = A>,
32+
Ss: DataOwned<Elem = A::Real>
33+
{
34+
fn svd(self,
35+
calc_u: bool,
36+
calc_vt: bool)
37+
-> Result<(Option<ArrayBase<Su, Ix2>>, ArrayBase<Ss, Ix1>, Option<ArrayBase<Svt, Ix2>>)> {
38+
let a = self.to_owned();
39+
a.svd(calc_u, calc_vt)
40+
}
41+
}
42+
43+
impl<'a, A, S, Su, Svt, Ss> SVD<ArrayBase<Su, Ix2>, ArrayBase<Ss, Ix1>, ArrayBase<Svt, Ix2>>
44+
for &'a mut ArrayBase<S, Ix2>
45+
where A: LapackScalar,
46+
S: DataMut<Elem = A>,
47+
Su: DataOwned<Elem = A>,
48+
Svt: DataOwned<Elem = A>,
49+
Ss: DataOwned<Elem = A::Real>
1850
{
1951
fn svd(mut self,
2052
calc_u: bool,

0 commit comments

Comments
 (0)