@@ -40,45 +40,46 @@ double LAPACKE_zlantr_work( int matrix_layout, char norm, char uplo,
4040 lapack_int info = 0 ;
4141 double res = 0. ;
4242 if ( matrix_layout == LAPACK_COL_MAJOR ) {
43- /* Call LAPACK function and adjust info */
43+ /* Call LAPACK function */
4444 res = LAPACK_zlantr ( & norm , & uplo , & diag , & m , & n , a , & lda , work );
4545 } else if ( matrix_layout == LAPACK_ROW_MAJOR ) {
46- lapack_int lda_t = MAX (1 ,m );
47- lapack_complex_double * a_t = NULL ;
4846 double * work_lapack = NULL ;
47+ char norm_lapack ;
48+ char uplo_lapack ;
4949 /* Check leading dimension(s) */
5050 if ( lda < n ) {
5151 info = -8 ;
5252 LAPACKE_xerbla ( "LAPACKE_zlantr_work" , info );
5353 return info ;
5454 }
55- /* Allocate memory for temporary array(s) */
56- a_t = (lapack_complex_double * )
57- LAPACKE_malloc ( sizeof (lapack_complex_double ) * lda_t * MAX (1 ,MAX (m ,n )) );
58- if ( a_t == NULL ) {
59- info = LAPACK_TRANSPOSE_MEMORY_ERROR ;
60- goto exit_level_0 ;
55+ if ( LAPACKE_lsame ( norm , '1' ) || LAPACKE_lsame ( norm , 'o' ) ) {
56+ norm_lapack = 'i' ;
57+ } else if ( LAPACKE_lsame ( norm , 'i' ) ) {
58+ norm_lapack = '1' ;
59+ } else {
60+ norm_lapack = norm ;
61+ }
62+ if ( LAPACKE_lsame ( uplo , 'u' ) ) {
63+ uplo_lapack = 'l' ;
64+ } else {
65+ uplo_lapack = 'u' ;
6166 }
6267 /* Allocate memory for work array(s) */
63- if ( LAPACKE_lsame ( norm , 'i' ) ) {
64- work_lapack = (double * )LAPACKE_malloc ( sizeof (double ) * MAX (1 ,m ) );
68+ if ( LAPACKE_lsame ( norm_lapack , 'i' ) ) {
69+ work_lapack = (double * )LAPACKE_malloc ( sizeof (double ) * MAX (1 ,n ) );
6570 if ( work_lapack == NULL ) {
6671 info = LAPACK_WORK_MEMORY_ERROR ;
67- goto exit_level_1 ;
72+ goto exit_level_0 ;
6873 }
6974 }
70- /* Transpose input matrices */
71- LAPACKE_ztr_trans ( matrix_layout , uplo , diag , MAX (m ,n ), a , lda , a_t , lda_t );
72- /* Call LAPACK function and adjust info */
73- res = LAPACK_zlantr ( & norm , & uplo , & diag , & m , & n , a_t , & lda_t , work_lapack );
75+ /* Call LAPACK function */
76+ res = LAPACK_zlantr ( & norm_lapack , & uplo_lapack , & diag , & n , & m , a , & lda , work_lapack );
7477 /* Release memory and exit */
7578 if ( work_lapack ) {
7679 LAPACKE_free ( work_lapack );
7780 }
78- exit_level_1 :
79- LAPACKE_free ( a_t );
8081exit_level_0 :
81- if ( info == LAPACK_TRANSPOSE_MEMORY_ERROR ) {
82+ if ( info == LAPACK_WORK_MEMORY_ERROR ) {
8283 LAPACKE_xerbla ( "LAPACKE_zlantr_work" , info );
8384 }
8485 } else {
0 commit comments