LAPACKE: fix wrong matrix size in ?ormbrtags/v0.2.20^2
@@ -42,7 +42,7 @@ lapack_int LAPACKE_dormbr( int matrix_layout, char vect, char side, char trans, | |||
lapack_int lwork = -1; | |||
double* work = NULL; | |||
double work_query; | |||
lapack_int nq, r; | |||
lapack_int nq, ar, ac; | |||
if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | |||
LAPACKE_xerbla( "LAPACKE_dormbr", -1 ); | |||
return -1; | |||
@@ -50,8 +50,9 @@ lapack_int LAPACKE_dormbr( int matrix_layout, char vect, char side, char trans, | |||
#ifndef LAPACK_DISABLE_NAN_CHECK | |||
/* Optionally check input matrices for NaNs */ | |||
nq = LAPACKE_lsame( side, 'l' ) ? m : n; | |||
r = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
if( LAPACKE_dge_nancheck( matrix_layout, r, MIN(nq,k), a, lda ) ) { | |||
ar = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
ac = LAPACKE_lsame( vect, 'q' ) ? MIN(nq,k) : nq; | |||
if( LAPACKE_dge_nancheck( matrix_layout, ar, ac, a, lda ) ) { | |||
return -8; | |||
} | |||
if( LAPACKE_dge_nancheck( matrix_layout, m, n, c, ldc ) ) { | |||
@@ -40,9 +40,6 @@ lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side, | |||
double* work, lapack_int lwork ) | |||
{ | |||
lapack_int info = 0; | |||
lapack_int nq, r; | |||
lapack_int lda_t, ldc_t; | |||
double *a_t = NULL, *c_t = NULL; | |||
if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
/* Call LAPACK function and adjust info */ | |||
LAPACK_dormbr( &vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, | |||
@@ -51,12 +48,15 @@ lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side, | |||
info = info - 1; | |||
} | |||
} else if( matrix_layout == LAPACK_ROW_MAJOR ) { | |||
nq = LAPACKE_lsame( side, 'l' ) ? m : n; | |||
r = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
lda_t = MAX(1,r); | |||
ldc_t = MAX(1,m); | |||
lapack_int nq = LAPACKE_lsame( side, 'l' ) ? m : n; | |||
lapack_int ar = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
lapack_int ac = LAPACKE_lsame( vect, 'q' ) ? MIN(nq,k) : nq; | |||
lapack_int lda_t = MAX(1,ar); | |||
lapack_int ldc_t = MAX(1,m); | |||
double *a_t = NULL; | |||
double *c_t = NULL; | |||
/* Check leading dimension(s) */ | |||
if( lda < MIN(nq,k) ) { | |||
if( lda < ac ) { | |||
info = -9; | |||
LAPACKE_xerbla( "LAPACKE_dormbr_work", info ); | |||
return info; | |||
@@ -73,11 +73,7 @@ lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side, | |||
return (info < 0) ? (info - 1) : info; | |||
} | |||
/* Allocate memory for temporary array(s) */ | |||
if( LAPACKE_lsame( vect, 'q' ) ) { | |||
a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * MAX(1,k) ); | |||
} else { | |||
a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * MAX(1,nq) ); | |||
} | |||
a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * MAX(1,ac) ); | |||
if( a_t == NULL ) { | |||
info = LAPACK_TRANSPOSE_MEMORY_ERROR; | |||
goto exit_level_0; | |||
@@ -88,7 +84,7 @@ lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side, | |||
goto exit_level_1; | |||
} | |||
/* Transpose input matrices */ | |||
LAPACKE_dge_trans( matrix_layout, r, MIN(nq,k), a, lda, a_t, lda_t ); | |||
LAPACKE_dge_trans( matrix_layout, ar, ac, a, lda, a_t, lda_t ); | |||
LAPACKE_dge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t ); | |||
/* Call LAPACK function and adjust info */ | |||
LAPACK_dormbr( &vect, &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, | |||
@@ -42,7 +42,7 @@ lapack_int LAPACKE_sormbr( int matrix_layout, char vect, char side, char trans, | |||
lapack_int lwork = -1; | |||
float* work = NULL; | |||
float work_query; | |||
lapack_int nq, r; | |||
lapack_int nq, ar, ac; | |||
if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { | |||
LAPACKE_xerbla( "LAPACKE_sormbr", -1 ); | |||
return -1; | |||
@@ -50,8 +50,9 @@ lapack_int LAPACKE_sormbr( int matrix_layout, char vect, char side, char trans, | |||
#ifndef LAPACK_DISABLE_NAN_CHECK | |||
/* Optionally check input matrices for NaNs */ | |||
nq = LAPACKE_lsame( side, 'l' ) ? m : n; | |||
r = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
if( LAPACKE_sge_nancheck( matrix_layout, r, MIN(nq,k), a, lda ) ) { | |||
ar = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
ac = LAPACKE_lsame( vect, 'q' ) ? MIN(nq,k) : nq; | |||
if( LAPACKE_sge_nancheck( matrix_layout, ar, ac, a, lda ) ) { | |||
return -8; | |||
} | |||
if( LAPACKE_sge_nancheck( matrix_layout, m, n, c, ldc ) ) { | |||
@@ -40,9 +40,6 @@ lapack_int LAPACKE_sormbr_work( int matrix_layout, char vect, char side, | |||
float* work, lapack_int lwork ) | |||
{ | |||
lapack_int info = 0; | |||
lapack_int nq, r; | |||
lapack_int lda_t, ldc_t; | |||
float *a_t = NULL, *c_t = NULL; | |||
if( matrix_layout == LAPACK_COL_MAJOR ) { | |||
/* Call LAPACK function and adjust info */ | |||
LAPACK_sormbr( &vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, | |||
@@ -51,12 +48,15 @@ lapack_int LAPACKE_sormbr_work( int matrix_layout, char vect, char side, | |||
info = info - 1; | |||
} | |||
} else if( matrix_layout == LAPACK_ROW_MAJOR ) { | |||
nq = LAPACKE_lsame( side, 'l' ) ? m : n; | |||
r = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
lda_t = MAX(1,r); | |||
ldc_t = MAX(1,m); | |||
lapack_int nq = LAPACKE_lsame( side, 'l' ) ? m : n; | |||
lapack_int ar = LAPACKE_lsame( vect, 'q' ) ? nq : MIN(nq,k); | |||
lapack_int ac = LAPACKE_lsame( vect, 'q' ) ? MIN(nq,k) : nq; | |||
lapack_int lda_t = MAX(1,ar); | |||
lapack_int ldc_t = MAX(1,m); | |||
float *a_t = NULL; | |||
float *c_t = NULL; | |||
/* Check leading dimension(s) */ | |||
if( lda < MIN(nq,k) ) { | |||
if( lda < ac ) { | |||
info = -9; | |||
LAPACKE_xerbla( "LAPACKE_sormbr_work", info ); | |||
return info; | |||
@@ -73,11 +73,7 @@ lapack_int LAPACKE_sormbr_work( int matrix_layout, char vect, char side, | |||
return (info < 0) ? (info - 1) : info; | |||
} | |||
/* Allocate memory for temporary array(s) */ | |||
if( LAPACKE_lsame( vect, 'q' ) ) { | |||
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,k) ); | |||
} else { | |||
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,nq) ); | |||
} | |||
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,ac) ); | |||
if( a_t == NULL ) { | |||
info = LAPACK_TRANSPOSE_MEMORY_ERROR; | |||
goto exit_level_0; | |||
@@ -88,7 +84,7 @@ lapack_int LAPACKE_sormbr_work( int matrix_layout, char vect, char side, | |||
goto exit_level_1; | |||
} | |||
/* Transpose input matrices */ | |||
LAPACKE_sge_trans( matrix_layout, r, MIN(nq,k), a, lda, a_t, lda_t ); | |||
LAPACKE_sge_trans( matrix_layout, ar, ac, a, lda, a_t, lda_t ); | |||
LAPACKE_sge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t ); | |||
/* Call LAPACK function and adjust info */ | |||
LAPACK_sormbr( &vect, &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, | |||