Skip to content

Commit 26b3b3a

Browse files
committed
bugfixes form lapack svn for bugs #142 - #155
1 parent acdff55 commit 26b3b3a

25 files changed

Lines changed: 357 additions & 179 deletions

lapack-netlib/LAPACKE/src/lapacke_clantr.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ float LAPACKE_clantr( int matrix_layout, char norm, char uplo, char diag,
5151
}
5252
#endif
5353
/* Allocate memory for working array(s) */
54-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
55-
LAPACKE_lsame( norm, 'O' ) ) {
54+
if( LAPACKE_lsame( norm, 'i' ) ) {
5655
work = (float*)LAPACKE_malloc( sizeof(float) * MAX(1,MAX(m,n)) );
5756
if( work == NULL ) {
5857
info = LAPACK_WORK_MEMORY_ERROR;
@@ -63,8 +62,7 @@ float LAPACKE_clantr( int matrix_layout, char norm, char uplo, char diag,
6362
res = LAPACKE_clantr_work( matrix_layout, norm, uplo, diag, m, n, a, lda,
6463
work );
6564
/* Release memory and exit */
66-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
67-
LAPACKE_lsame( norm, 'O' ) ) {
65+
if( LAPACKE_lsame( norm, 'i' ) ) {
6866
LAPACKE_free( work );
6967
}
7068
exit_level_0:

lapack-netlib/LAPACKE/src/lapacke_dlantr.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ double LAPACKE_dlantr( int matrix_layout, char norm, char uplo, char diag,
5151
}
5252
#endif
5353
/* Allocate memory for working array(s) */
54-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
55-
LAPACKE_lsame( norm, 'O' ) ) {
54+
if( LAPACKE_lsame( norm, 'i' ) ) {
5655
work = (double*)LAPACKE_malloc( sizeof(double) * MAX(1,MAX(m,n)) );
5756
if( work == NULL ) {
5857
info = LAPACK_WORK_MEMORY_ERROR;
@@ -63,8 +62,7 @@ double LAPACKE_dlantr( int matrix_layout, char norm, char uplo, char diag,
6362
res = LAPACKE_dlantr_work( matrix_layout, norm, uplo, diag, m, n, a, lda,
6463
work );
6564
/* Release memory and exit */
66-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
67-
LAPACKE_lsame( norm, 'O' ) ) {
65+
if( LAPACKE_lsame( norm, 'i' ) ) {
6866
LAPACKE_free( work );
6967
}
7068
exit_level_0:

lapack-netlib/LAPACKE/src/lapacke_dlantr_work.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ double LAPACKE_dlantr_work( int matrix_layout, char norm, char uplo,
3838
const double* a, lapack_int lda, double* work )
3939
{
4040
lapack_int info = 0;
41-
double res = 0.;
41+
double res = 0.;
4242
if( matrix_layout == LAPACK_COL_MAJOR ) {
4343
/* Call LAPACK function and adjust info */
44-
LAPACK_dlantr( &norm, &uplo, &diag, &m, &n, a, &lda, work );
44+
res = LAPACK_dlantr( &norm, &uplo, &diag, &m, &n, a, &lda, work );
4545
if( info < 0 ) {
4646
info = info - 1;
4747
}

lapack-netlib/LAPACKE/src/lapacke_dormbr_work.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,10 @@ lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side,
7474
}
7575
/* Allocate memory for temporary array(s) */
7676
if( LAPACKE_lsame( vect, 'q' ) ) {
77-
a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * k );
77+
a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * MAX(1,k) );
7878
} else {
79-
a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * nq );
79+
a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * MAX(1,nq) );
8080
}
81-
8281
if( a_t == NULL ) {
8382
info = LAPACK_TRANSPOSE_MEMORY_ERROR;
8483
goto exit_level_0;
@@ -89,11 +88,7 @@ lapack_int LAPACKE_dormbr_work( int matrix_layout, char vect, char side,
8988
goto exit_level_1;
9089
}
9190
/* Transpose input matrices */
92-
if( LAPACKE_lsame( vect, 'q' ) ) {
93-
LAPACKE_dge_trans( matrix_layout, nq, k, a, lda, a_t, lda_t );
94-
} else {
95-
LAPACKE_dge_trans( matrix_layout, k, nq, a, lda, a_t, lda_t );
96-
}
91+
LAPACKE_dge_trans( matrix_layout, r, MIN(nq,k), a, lda, a_t, lda_t );
9792
LAPACKE_dge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t );
9893
/* Call LAPACK function and adjust info */
9994
LAPACK_dormbr( &vect, &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t,

lapack-netlib/LAPACKE/src/lapacke_dormlq_work.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,7 @@ lapack_int LAPACKE_dormlq_work( int matrix_layout, char side, char trans,
8787
goto exit_level_1;
8888
}
8989
/* Transpose input matrices */
90-
if( LAPACKE_lsame( side, 'l' ) ){
91-
LAPACKE_dge_trans( matrix_layout, k, m, a, lda, a_t, lda_t );
92-
} else {
93-
LAPACKE_dge_trans( matrix_layout, k, n, a, lda, a_t, lda_t );
94-
}
95-
90+
LAPACKE_dge_trans( matrix_layout, k, m, a, lda, a_t, lda_t );
9691
LAPACKE_dge_trans( matrix_layout, m, n, c, ldc, c_t, ldc_t );
9792
/* Call LAPACK function and adjust info */
9893
LAPACK_dormlq( &side, &trans, &m, &n, &k, a_t, &lda_t, tau, c_t, &ldc_t,

lapack-netlib/LAPACKE/src/lapacke_slantr.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ float LAPACKE_slantr( int matrix_layout, char norm, char uplo, char diag,
5151
}
5252
#endif
5353
/* Allocate memory for working array(s) */
54-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
55-
LAPACKE_lsame( norm, 'O' ) ) {
54+
if( LAPACKE_lsame( norm, 'i' ) ) {
5655
work = (float*)LAPACKE_malloc( sizeof(float) * MAX(1,MAX(m,n)) );
5756
if( work == NULL ) {
5857
info = LAPACK_WORK_MEMORY_ERROR;
@@ -63,8 +62,7 @@ float LAPACKE_slantr( int matrix_layout, char norm, char uplo, char diag,
6362
res = LAPACKE_slantr_work( matrix_layout, norm, uplo, diag, m, n, a, lda,
6463
work );
6564
/* Release memory and exit */
66-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
67-
LAPACKE_lsame( norm, 'O' ) ) {
65+
if( LAPACKE_lsame( norm, 'i' ) ) {
6866
LAPACKE_free( work );
6967
}
7068
exit_level_0:

lapack-netlib/LAPACKE/src/lapacke_slantr_work.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ float LAPACKE_slantr_work( int matrix_layout, char norm, char uplo,
4141
float res = 0.;
4242
if( matrix_layout == LAPACK_COL_MAJOR ) {
4343
/* Call LAPACK function and adjust info */
44-
LAPACK_slantr( &norm, &uplo, &diag, &m, &n, a, &lda, work );
44+
res = LAPACK_slantr( &norm, &uplo, &diag, &m, &n, a, &lda, work );
4545
if( info < 0 ) {
4646
info = info - 1;
4747
}

lapack-netlib/LAPACKE/src/lapacke_sormbr_work.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,11 @@ lapack_int LAPACKE_sormbr_work( int matrix_layout, char vect, char side,
7373
return (info < 0) ? (info - 1) : info;
7474
}
7575
/* Allocate memory for temporary array(s) */
76-
a_t = (float*)
77-
LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,MIN(nq,k)) );
76+
if( LAPACKE_lsame( vect, 'q' ) ) {
77+
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,k) );
78+
} else {
79+
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,nq) );
80+
}
7881
if( a_t == NULL ) {
7982
info = LAPACK_TRANSPOSE_MEMORY_ERROR;
8083
goto exit_level_0;

lapack-netlib/LAPACKE/src/lapacke_sormlq_work.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,11 @@ lapack_int LAPACKE_sormlq_work( int matrix_layout, char side, char trans,
7272
return (info < 0) ? (info - 1) : info;
7373
}
7474
/* Allocate memory for temporary array(s) */
75-
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,m) );
75+
if( LAPACKE_lsame( side, 'l' ) ) {
76+
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,m) );
77+
} else {
78+
a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,n) );
79+
}
7680
if( a_t == NULL ) {
7781
info = LAPACK_TRANSPOSE_MEMORY_ERROR;
7882
goto exit_level_0;

lapack-netlib/LAPACKE/src/lapacke_zlantr.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ double LAPACKE_zlantr( int matrix_layout, char norm, char uplo, char diag,
5151
}
5252
#endif
5353
/* Allocate memory for working array(s) */
54-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
55-
LAPACKE_lsame( norm, 'O' ) ) {
54+
if( LAPACKE_lsame( norm, 'i' ) ) {
5655
work = (double*)LAPACKE_malloc( sizeof(double) * MAX(1,MAX(m,n)) );
5756
if( work == NULL ) {
5857
info = LAPACK_WORK_MEMORY_ERROR;
@@ -63,8 +62,7 @@ double LAPACKE_zlantr( int matrix_layout, char norm, char uplo, char diag,
6362
res = LAPACKE_zlantr_work( matrix_layout, norm, uplo, diag, m, n, a, lda,
6463
work );
6564
/* Release memory and exit */
66-
if( LAPACKE_lsame( norm, 'i' ) || LAPACKE_lsame( norm, '1' ) ||
67-
LAPACKE_lsame( norm, 'O' ) ) {
65+
if( LAPACKE_lsame( norm, 'i' ) ) {
6866
LAPACKE_free( work );
6967
}
7068
exit_level_0:

0 commit comments

Comments
 (0)