lapack_int LAPACKE_ctpmqrt( int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int l, lapack_int nb, const lapack_complex_float* v, lapack_int ldv, const lapack_complex_float* t, lapack_int ldt, lapack_complex_float* a, lapack_int lda, lapack_complex_float* b, lapack_int ldb ) { lapack_int ncols_a, nrows_a; lapack_int nrows_v; lapack_int lwork; lapack_int info = 0; lapack_complex_float* work = NULL; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_ctpmqrt", -1 ); return -1; } #ifndef LAPACK_DISABLE_NAN_CHECK if( LAPACKE_get_nancheck() ) { /* Optionally check input matrices for NaNs */ ncols_a = LAPACKE_lsame( side, 'L' ) ? n : ( LAPACKE_lsame( side, 'R' ) ? k : 0 ); nrows_a = LAPACKE_lsame( side, 'L' ) ? k : ( LAPACKE_lsame( side, 'R' ) ? m : 0 ); nrows_v = LAPACKE_lsame( side, 'L' ) ? m : ( LAPACKE_lsame( side, 'R' ) ? n : 0 ); if( LAPACKE_cge_nancheck( matrix_layout, nrows_a, ncols_a, a, lda ) ) { return -13; } if( LAPACKE_cge_nancheck( matrix_layout, m, n, b, ldb ) ) { return -15; } if( LAPACKE_cge_nancheck( matrix_layout, nb, k, t, ldt ) ) { return -11; } if( LAPACKE_cge_nancheck( matrix_layout, nrows_v, k, v, ldv ) ) { return -9; } } #endif /* Allocate memory for working array(s) */ lwork = LAPACKE_lsame( side, 'L' ) ? MAX(1,nb) * MAX(1,n) : ( LAPACKE_lsame( side, 'R' ) ? MAX(1,m) * MAX(1,nb) : 0 ); work = (lapack_complex_float*) LAPACKE_malloc( sizeof(lapack_complex_float) * lwork ); if( work == NULL ) { info = LAPACK_WORK_MEMORY_ERROR; goto exit_level_0; } /* Call middle-level interface */ info = LAPACKE_ctpmqrt_work( matrix_layout, side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, lda, b, ldb, work ); /* Release memory and exit */ LAPACKE_free( work ); exit_level_0: if( info == LAPACK_WORK_MEMORY_ERROR ) { LAPACKE_xerbla( "LAPACKE_ctpmqrt", info ); } return info; }
lapack_int LAPACKE_ctpmqrt( int matrix_order, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int l, lapack_int nb, const lapack_complex_float* v, lapack_int ldv, const lapack_complex_float* t, lapack_int ldt, lapack_complex_float* a, lapack_int lda, lapack_complex_float* b, lapack_int ldb ) { lapack_int info = 0; lapack_complex_float* work = NULL; if( matrix_order != LAPACK_COL_MAJOR && matrix_order != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_ctpmqrt", -1 ); return -1; } #ifndef LAPACK_DISABLE_NAN_CHECK /* Optionally check input matrices for NaNs */ if( LAPACKE_cge_nancheck( matrix_order, k, m, a, lda ) ) { return -13; } if( LAPACKE_cge_nancheck( matrix_order, m, n, b, ldb ) ) { return -15; } if( LAPACKE_cge_nancheck( matrix_order, ldt, nb, t, ldt ) ) { return -11; } if( LAPACKE_cge_nancheck( matrix_order, ldv, k, v, ldv ) ) { return -9; } #endif /* Allocate memory for working array(s) */ work = (lapack_complex_float*) LAPACKE_malloc( sizeof(lapack_complex_float) * MAX(1,m) * MAX(1,nb) ); if( work == NULL ) { info = LAPACK_WORK_MEMORY_ERROR; goto exit_level_0; } /* Call middle-level interface */ info = LAPACKE_ctpmqrt_work( matrix_order, side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, lda, b, ldb, work ); /* Release memory and exit */ LAPACKE_free( work ); exit_level_0: if( info == LAPACK_WORK_MEMORY_ERROR ) { LAPACKE_xerbla( "LAPACKE_ctpmqrt", info ); } return info; }