@@ -157,7 +157,17 @@ macro_rules! impl_tridiagonal {
157157 // We have to calc one-norm before LU factorization
158158 let a_opnorm_one = a. opnorm_one( ) ;
159159 let mut info = 0 ;
160- unsafe { $gttrf( n, & mut a. dl, & mut a. d, & mut a. du, & mut du2, & mut ipiv, & mut info, ) } ;
160+ unsafe {
161+ $gttrf(
162+ & n,
163+ AsPtr :: as_mut_ptr( & mut a. dl) ,
164+ AsPtr :: as_mut_ptr( & mut a. d) ,
165+ AsPtr :: as_mut_ptr( & mut a. du) ,
166+ AsPtr :: as_mut_ptr( & mut du2) ,
167+ ipiv. as_mut_ptr( ) ,
168+ & mut info,
169+ )
170+ } ;
161171 info. as_lapack_result( ) ?;
162172 Ok ( LUFactorizedTridiagonal {
163173 a,
@@ -170,25 +180,25 @@ macro_rules! impl_tridiagonal {
170180 fn rcond_tridiagonal( lu: & LUFactorizedTridiagonal <Self >) -> Result <Self :: Real > {
171181 let ( n, _) = lu. a. l. size( ) ;
172182 let ipiv = & lu. ipiv;
173- let mut work = unsafe { vec_uninit( 2 * n as usize ) } ;
183+ let mut work: Vec < Self > = unsafe { vec_uninit( 2 * n as usize ) } ;
174184 $(
175185 let mut $iwork = unsafe { vec_uninit( n as usize ) } ;
176186 ) *
177187 let mut rcond = Self :: Real :: zero( ) ;
178188 let mut info = 0 ;
179189 unsafe {
180190 $gtcon(
181- NormType :: One as u8 ,
182- n,
183- & lu. a. dl,
184- & lu. a. d,
185- & lu. a. du,
186- & lu. du2,
187- ipiv,
188- lu. a_opnorm_one,
191+ NormType :: One . as_ptr ( ) ,
192+ & n,
193+ AsPtr :: as_ptr ( & lu. a. dl) ,
194+ AsPtr :: as_ptr ( & lu. a. d) ,
195+ AsPtr :: as_ptr ( & lu. a. du) ,
196+ AsPtr :: as_ptr ( & lu. du2) ,
197+ ipiv. as_ptr ( ) ,
198+ & lu. a_opnorm_one,
189199 & mut rcond,
190- & mut work,
191- $( & mut $iwork, ) *
200+ AsPtr :: as_mut_ptr ( & mut work) ,
201+ $( $iwork. as_mut_ptr ( ) , ) *
192202 & mut info,
193203 ) ;
194204 }
@@ -217,16 +227,16 @@ macro_rules! impl_tridiagonal {
217227 let mut info = 0 ;
218228 unsafe {
219229 $gttrs(
220- t as u8 ,
221- n,
222- nrhs,
223- & lu. a. dl,
224- & lu. a. d,
225- & lu. a. du,
226- & lu. du2,
227- ipiv,
228- b_t. as_mut( ) . map( |v| v. as_mut_slice( ) ) . unwrap_or( b) ,
229- ldb,
230+ t. as_ptr ( ) ,
231+ & n,
232+ & nrhs,
233+ AsPtr :: as_ptr ( & lu. a. dl) ,
234+ AsPtr :: as_ptr ( & lu. a. d) ,
235+ AsPtr :: as_ptr ( & lu. a. du) ,
236+ AsPtr :: as_ptr ( & lu. du2) ,
237+ ipiv. as_ptr ( ) ,
238+ AsPtr :: as_mut_ptr ( b_t. as_mut( ) . map( |v| v. as_mut_slice( ) ) . unwrap_or( b) ) ,
239+ & ldb,
230240 & mut info,
231241 ) ;
232242 }
@@ -240,7 +250,7 @@ macro_rules! impl_tridiagonal {
240250 } ;
241251} // impl_tridiagonal!
242252
243- impl_tridiagonal ! ( @real, f64 , lapack :: dgttrf , lapack :: dgtcon , lapack :: dgttrs ) ;
244- impl_tridiagonal ! ( @real, f32 , lapack :: sgttrf , lapack :: sgtcon , lapack :: sgttrs ) ;
245- impl_tridiagonal ! ( @complex, c64, lapack :: zgttrf , lapack :: zgtcon , lapack :: zgttrs ) ;
246- impl_tridiagonal ! ( @complex, c32, lapack :: cgttrf , lapack :: cgtcon , lapack :: cgttrs ) ;
253+ impl_tridiagonal ! ( @real, f64 , lapack_sys :: dgttrf_ , lapack_sys :: dgtcon_ , lapack_sys :: dgttrs_ ) ;
254+ impl_tridiagonal ! ( @real, f32 , lapack_sys :: sgttrf_ , lapack_sys :: sgtcon_ , lapack_sys :: sgttrs_ ) ;
255+ impl_tridiagonal ! ( @complex, c64, lapack_sys :: zgttrf_ , lapack_sys :: zgtcon_ , lapack_sys :: zgttrs_ ) ;
256+ impl_tridiagonal ! ( @complex, c32, lapack_sys :: cgttrf_ , lapack_sys :: cgtcon_ , lapack_sys :: cgttrs_ ) ;
0 commit comments