@@ -16,32 +16,33 @@ pub enum Diag {
1616
1717/// Wraps `*trtri` and `*trtrs`
1818pub trait Triangular_ : Sized {
19- fn inv_triangular ( l : MatrixLayout , UPLO , Diag , a : & mut [ Self ] ) -> Result < ( ) > ;
20- fn solve_triangular ( al : MatrixLayout , bl : MatrixLayout , UPLO , Diag , a : & [ Self ] , b : & mut [ Self ] ) -> Result < ( ) > ;
19+ unsafe fn inv_triangular ( l : MatrixLayout , UPLO , Diag , a : & mut [ Self ] ) -> Result < ( ) > ;
20+ unsafe fn solve_triangular (
21+ al : MatrixLayout ,
22+ bl : MatrixLayout ,
23+ UPLO ,
24+ Diag ,
25+ a : & [ Self ] ,
26+ b : & mut [ Self ] ,
27+ ) -> Result < ( ) > ;
2128}
2229
2330macro_rules! impl_triangular {
2431 ( $scalar: ty, $trtri: path, $trtrs: path) => {
2532
2633impl Triangular_ for $scalar {
27- fn inv_triangular( l: MatrixLayout , uplo: UPLO , diag: Diag , a: & mut [ Self ] ) -> Result <( ) > {
34+ unsafe fn inv_triangular( l: MatrixLayout , uplo: UPLO , diag: Diag , a: & mut [ Self ] ) -> Result <( ) > {
2835 let ( n, _) = l. size( ) ;
2936 let lda = l. lda( ) ;
3037 let info = $trtri( l. lapacke_layout( ) , uplo as u8 , diag as u8 , n, a, lda) ;
3138 into_result( info, ( ) )
3239 }
3340
34- fn solve_triangular( al: MatrixLayout , bl: MatrixLayout , uplo: UPLO , diag: Diag , a: & [ Self ] , mut b: & mut [ Self ] ) -> Result <( ) > {
41+ unsafe fn solve_triangular( al: MatrixLayout , bl: MatrixLayout , uplo: UPLO , diag: Diag , a: & [ Self ] , mut b: & mut [ Self ] ) -> Result <( ) > {
3542 let ( n, _) = al. size( ) ;
3643 let lda = al. lda( ) ;
3744 let ( _, nrhs) = bl. size( ) ;
3845 let ldb = bl. lda( ) ;
39- println!( "al = {:?}" , al) ;
40- println!( "bl = {:?}" , bl) ;
41- println!( "n = {}" , n) ;
42- println!( "lda = {}" , lda) ;
43- println!( "nrhs = {}" , nrhs) ;
44- println!( "ldb = {}" , ldb) ;
4546 let info = $trtrs( al. lapacke_layout( ) , uplo as u8 , Transpose :: No as u8 , diag as u8 , n, nrhs, a, lda, & mut b, ldb) ;
4647 into_result( info, ( ) )
4748 }
0 commit comments