@@ -48,10 +48,12 @@ lapack_int API_SUFFIX(LAPACKE_ztfsm_work)( int matrix_layout, char transr, char
48
48
}
49
49
} else if ( matrix_layout == LAPACK_ROW_MAJOR ) {
50
50
lapack_int ldb_t = MAX (1 ,m );
51
+ lapack_int mn = m ;
51
52
lapack_complex_double * b_t = NULL ;
52
53
lapack_complex_double * a_t = NULL ;
54
+ if ( LAPACKE_lsame ( side , 'r' ) ) mn = n ;
53
55
/* Check leading dimension(s) */
54
- if ( ldb < n ) {
56
+ if ( ldb < m ) {
55
57
info = -12 ;
56
58
API_SUFFIX (LAPACKE_xerbla )( "LAPACKE_ztfsm_work" , info );
57
59
return info ;
@@ -66,7 +68,7 @@ lapack_int API_SUFFIX(LAPACKE_ztfsm_work)( int matrix_layout, char transr, char
66
68
if ( IS_Z_NONZERO (alpha ) ) {
67
69
a_t = (lapack_complex_double * )
68
70
LAPACKE_malloc ( sizeof (lapack_complex_double ) *
69
- ( MAX (1 ,n ) * MAX (2 ,n + 1 ) ) / 2 );
71
+ ( MAX (1 ,mn ) * MAX (2 ,mn + 1 ) ) / 2 );
70
72
if ( a_t == NULL ) {
71
73
info = LAPACK_TRANSPOSE_MEMORY_ERROR ;
72
74
goto exit_level_1 ;
@@ -77,14 +79,14 @@ lapack_int API_SUFFIX(LAPACKE_ztfsm_work)( int matrix_layout, char transr, char
77
79
API_SUFFIX (LAPACKE_zge_trans )( matrix_layout , m , n , b , ldb , b_t , ldb_t );
78
80
}
79
81
if ( IS_Z_NONZERO (alpha ) ) {
80
- API_SUFFIX (LAPACKE_ztf_trans )( matrix_layout , transr , uplo , diag , n , a , a_t );
82
+ API_SUFFIX (LAPACKE_ztf_trans )( matrix_layout , transr , uplo , diag , mn , a , a_t );
81
83
}
82
84
/* Call LAPACK function and adjust info */
83
85
LAPACK_ztfsm ( & transr , & side , & uplo , & trans , & diag , & m , & n , & alpha , a_t ,
84
86
b_t , & ldb_t );
85
87
info = 0 ; /* LAPACK call is ok! */
86
88
/* Transpose output matrices */
87
- API_SUFFIX ( LAPACKE_zge_trans ) ( LAPACK_COL_MAJOR , m , n , b_t , ldb_t , b , ldb );
89
+ LAPACKE_zge_trans ( LAPACK_COL_MAJOR , m , n , b_t , ldb_t , b , ldb );
88
90
/* Release memory and exit */
89
91
if ( IS_Z_NONZERO (alpha ) ) {
90
92
LAPACKE_free ( a_t );
0 commit comments