@@ -157,7 +157,17 @@ macro_rules! impl_tridiagonal {
157
157
// We have to calc one-norm before LU factorization
158
158
let a_opnorm_one = a. opnorm_one( ) ;
159
159
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
+ } ;
161
171
info. as_lapack_result( ) ?;
162
172
Ok ( LUFactorizedTridiagonal {
163
173
a,
@@ -170,25 +180,25 @@ macro_rules! impl_tridiagonal {
170
180
fn rcond_tridiagonal( lu: & LUFactorizedTridiagonal <Self >) -> Result <Self :: Real > {
171
181
let ( n, _) = lu. a. l. size( ) ;
172
182
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 ) } ;
174
184
$(
175
185
let mut $iwork = unsafe { vec_uninit( n as usize ) } ;
176
186
) *
177
187
let mut rcond = Self :: Real :: zero( ) ;
178
188
let mut info = 0 ;
179
189
unsafe {
180
190
$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,
189
199
& mut rcond,
190
- & mut work,
191
- $( & mut $iwork, ) *
200
+ AsPtr :: as_mut_ptr ( & mut work) ,
201
+ $( $iwork. as_mut_ptr ( ) , ) *
192
202
& mut info,
193
203
) ;
194
204
}
@@ -217,16 +227,16 @@ macro_rules! impl_tridiagonal {
217
227
let mut info = 0 ;
218
228
unsafe {
219
229
$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,
230
240
& mut info,
231
241
) ;
232
242
}
@@ -240,7 +250,7 @@ macro_rules! impl_tridiagonal {
240
250
} ;
241
251
} // impl_tridiagonal!
242
252
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