@@ -16,32 +16,33 @@ pub enum Diag {
16
16
17
17
/// Wraps `*trtri` and `*trtrs`
18
18
pub 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 < ( ) > ;
21
28
}
22
29
23
30
macro_rules! impl_triangular {
24
31
( $scalar: ty, $trtri: path, $trtrs: path) => {
25
32
26
33
impl 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 <( ) > {
28
35
let ( n, _) = l. size( ) ;
29
36
let lda = l. lda( ) ;
30
37
let info = $trtri( l. lapacke_layout( ) , uplo as u8 , diag as u8 , n, a, lda) ;
31
38
into_result( info, ( ) )
32
39
}
33
40
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 <( ) > {
35
42
let ( n, _) = al. size( ) ;
36
43
let lda = al. lda( ) ;
37
44
let ( _, nrhs) = bl. size( ) ;
38
45
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) ;
45
46
let info = $trtrs( al. lapacke_layout( ) , uplo as u8 , Transpose :: No as u8 , diag as u8 , n, nrhs, a, lda, & mut b, ldb) ;
46
47
into_result( info, ( ) )
47
48
}
0 commit comments