@@ -41,45 +41,46 @@ double LAPACKE_zlantr_work( int matrix_layout, char norm, char uplo,
4141 lapack_int info = 0 ;
4242 double res = 0. ;
4343 if ( matrix_layout == LAPACK_COL_MAJOR ) {
44- /* Call LAPACK function and adjust info */
44+ /* Call LAPACK function */
4545 res = LAPACK_zlantr ( & norm , & uplo , & diag , & m , & n , a , & lda , work );
4646 } else if ( matrix_layout == LAPACK_ROW_MAJOR ) {
47- lapack_int lda_t = MAX (1 ,m );
48- lapack_complex_double * a_t = NULL ;
4947 double * work_lapack = NULL ;
48+ char norm_lapack ;
49+ char uplo_lapack ;
5050 /* Check leading dimension(s) */
5151 if ( lda < n ) {
5252 info = -8 ;
5353 LAPACKE_xerbla ( "LAPACKE_zlantr_work" , info );
5454 return info ;
5555 }
56- /* Allocate memory for temporary array(s) */
57- a_t = (lapack_complex_double * )
58- LAPACKE_malloc ( sizeof (lapack_complex_double ) * lda_t * MAX (1 ,MAX (m ,n )) );
59- if ( a_t == NULL ) {
60- info = LAPACK_TRANSPOSE_MEMORY_ERROR ;
61- goto exit_level_0 ;
56+ if ( LAPACKE_lsame ( norm , '1' ) || LAPACKE_lsame ( norm , 'o' ) ) {
57+ norm_lapack = 'i' ;
58+ } else if ( LAPACKE_lsame ( norm , 'i' ) ) {
59+ norm_lapack = '1' ;
60+ } else {
61+ norm_lapack = norm ;
62+ }
63+ if ( LAPACKE_lsame ( uplo , 'u' ) ) {
64+ uplo_lapack = 'l' ;
65+ } else {
66+ uplo_lapack = 'u' ;
6267 }
6368 /* Allocate memory for work array(s) */
64- if ( LAPACKE_lsame ( norm , 'i' ) ) {
65- work_lapack = (double * )LAPACKE_malloc ( sizeof (double ) * MAX (1 ,m ) );
69+ if ( LAPACKE_lsame ( norm_lapack , 'i' ) ) {
70+ work_lapack = (double * )LAPACKE_malloc ( sizeof (double ) * MAX (1 ,n ) );
6671 if ( work_lapack == NULL ) {
6772 info = LAPACK_WORK_MEMORY_ERROR ;
68- goto exit_level_1 ;
73+ goto exit_level_0 ;
6974 }
7075 }
71- /* Transpose input matrices */
72- LAPACKE_ztr_trans ( matrix_layout , uplo , diag , MAX (m ,n ), a , lda , a_t , lda_t );
73- /* Call LAPACK function and adjust info */
74- res = LAPACK_zlantr ( & norm , & uplo , & diag , & m , & n , a_t , & lda_t , work_lapack );
76+ /* Call LAPACK function */
77+ res = LAPACK_zlantr ( & norm_lapack , & uplo_lapack , & diag , & n , & m , a , & lda , work_lapack );
7578 /* Release memory and exit */
7679 if ( work_lapack ) {
7780 LAPACKE_free ( work_lapack );
7881 }
79- exit_level_1 :
80- LAPACKE_free ( a_t );
8182exit_level_0 :
82- if ( info == LAPACK_TRANSPOSE_MEMORY_ERROR ) {
83+ if ( info == LAPACK_WORK_MEMORY_ERROR ) {
8384 LAPACKE_xerbla ( "LAPACKE_zlantr_work" , info );
8485 }
8586 } else {
0 commit comments