@@ -56,12 +56,13 @@ impl<A, S> Factorize<S> for ArrayBase<S, Ix2>
56
56
}
57
57
}
58
58
59
- impl < ' a , A , S > Factorize < OwnedRepr < A > > for & ' a ArrayBase < S , Ix2 >
60
- where A : LapackScalar + Clone ,
61
- S : Data < Elem = A >
59
+ impl < ' a , A , Si , So > Factorize < So > for & ' a ArrayBase < Si , Ix2 >
60
+ where A : LapackScalar + Copy ,
61
+ Si : Data < Elem = A > ,
62
+ So : DataOwned < Elem = A > + DataMut
62
63
{
63
- fn factorize ( self ) -> Result < Factorized < OwnedRepr < A > > > {
64
- let mut a = self . to_owned ( ) ;
64
+ fn factorize ( self ) -> Result < Factorized < So > > {
65
+ let mut a: ArrayBase < So , Ix2 > = replicate ( self ) ;
65
66
let ipiv = A :: lu ( a. layout ( ) ?, a. as_allocated_mut ( ) ?) ?;
66
67
Ok ( Factorized { a : a, ipiv : ipiv } )
67
68
}
@@ -81,11 +82,12 @@ impl<A, S> Inverse<ArrayBase<S, Ix2>> for ArrayBase<S, Ix2>
81
82
}
82
83
}
83
84
84
- impl < ' a , A , S > Inverse < Array2 < A > > for & ' a ArrayBase < S , Ix2 >
85
- where A : LapackScalar + Clone ,
86
- S : Data < Elem = A >
85
+ impl < ' a , A , Si , So > Inverse < ArrayBase < So , Ix2 > > for & ' a ArrayBase < Si , Ix2 >
86
+ where A : LapackScalar + Copy ,
87
+ Si : Data < Elem = A > ,
88
+ So : DataOwned < Elem = A > + DataMut
87
89
{
88
- fn inv ( self ) -> Result < Array2 < A > > {
90
+ fn inv ( self ) -> Result < ArrayBase < So , Ix2 > > {
89
91
let f = self . factorize ( ) ?;
90
92
f. into_inverse ( )
91
93
}
0 commit comments