@@ -48,10 +48,12 @@ lapack_int API_SUFFIX(LAPACKE_ztfsm_work)( int matrix_layout, char transr, char
4848 }
4949 } else if ( matrix_layout == LAPACK_ROW_MAJOR ) {
5050 lapack_int ldb_t = MAX (1 ,m );
51+ lapack_int mn = m ;
5152 lapack_complex_double * b_t = NULL ;
5253 lapack_complex_double * a_t = NULL ;
54+ if ( LAPACKE_lsame ( side , 'r' ) ) mn = n ;
5355 /* Check leading dimension(s) */
54- if ( ldb < n ) {
56+ if ( ldb < m ) {
5557 info = -12 ;
5658 API_SUFFIX (LAPACKE_xerbla )( "LAPACKE_ztfsm_work" , info );
5759 return info ;
@@ -66,7 +68,7 @@ lapack_int API_SUFFIX(LAPACKE_ztfsm_work)( int matrix_layout, char transr, char
6668 if ( IS_Z_NONZERO (alpha ) ) {
6769 a_t = (lapack_complex_double * )
6870 LAPACKE_malloc ( sizeof (lapack_complex_double ) *
69- ( MAX (1 ,n ) * MAX (2 ,n + 1 ) ) / 2 );
71+ ( MAX (1 ,mn ) * MAX (2 ,mn + 1 ) ) / 2 );
7072 if ( a_t == NULL ) {
7173 info = LAPACK_TRANSPOSE_MEMORY_ERROR ;
7274 goto exit_level_1 ;
@@ -77,14 +79,14 @@ lapack_int API_SUFFIX(LAPACKE_ztfsm_work)( int matrix_layout, char transr, char
7779 API_SUFFIX (LAPACKE_zge_trans )( matrix_layout , m , n , b , ldb , b_t , ldb_t );
7880 }
7981 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 );
8183 }
8284 /* Call LAPACK function and adjust info */
8385 LAPACK_ztfsm ( & transr , & side , & uplo , & trans , & diag , & m , & n , & alpha , a_t ,
8486 b_t , & ldb_t );
8587 info = 0 ; /* LAPACK call is ok! */
8688 /* 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 );
8890 /* Release memory and exit */
8991 if ( IS_Z_NONZERO (alpha ) ) {
9092 LAPACKE_free ( a_t );
0 commit comments