Skip to content

Commit 6731c0f

Browse files
committed
Delete unnecessary work buffer usage of *ktev and *kteqr in lapacke
1 parent b9b2875 commit 6731c0f

File tree

6 files changed

+8
-64
lines changed

6 files changed

+8
-64
lines changed

LAPACKE/src/lapacke_dkteqr.c

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,8 @@ lapack_int API_SUFFIX(LAPACKE_dkteqr)( int matrix_layout, char compz, lapack_int
5656
}
5757
}
5858
#endif
59-
/* Additional scalars initializations for work arrays */
60-
if( API_SUFFIX(LAPACKE_lsame)( compz, 'n' ) ) {
61-
lwork = 1;
62-
} else {
63-
lwork = MAX(1,2*n-2);
64-
}
65-
/* Allocate memory for working array(s) */
66-
work = (double*)LAPACKE_malloc( sizeof(double) * lwork );
67-
if( work == NULL ) {
68-
info = LAPACK_WORK_MEMORY_ERROR;
69-
goto exit_level_0;
70-
}
7159
/* Call middle-level interface */
72-
info = API_SUFFIX(LAPACKE_dkteqr_work)( matrix_layout, compz, n, e, z, ldz, work );
73-
/* Release memory and exit */
74-
LAPACKE_free( work );
75-
exit_level_0:
60+
info = API_SUFFIX(LAPACKE_dkteqr_work)( matrix_layout, compz, n, e, z, ldz, NULL );
7661
if( info == LAPACK_WORK_MEMORY_ERROR ) {
7762
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_dkteqr", info );
7863
}

LAPACKE/src/lapacke_dktev.c

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,8 @@ lapack_int API_SUFFIX(LAPACKE_dktev)( int matrix_layout, char jobz, lapack_int n
5252
}
5353
}
5454
#endif
55-
/* Allocate memory for working array(s) */
56-
if( API_SUFFIX(LAPACKE_lsame)( jobz, 'v' ) ) {
57-
work = (double*)LAPACKE_malloc( sizeof(double) * MAX(1,2*n-2) );
58-
if( work == NULL ) {
59-
info = LAPACK_WORK_MEMORY_ERROR;
60-
goto exit_level_0;
61-
}
62-
}
6355
/* Call middle-level interface */
64-
info = API_SUFFIX(LAPACKE_dktev_work)( matrix_layout, jobz, n, d, e, z, ldz, work );
65-
/* Release memory and exit */
66-
if( API_SUFFIX(LAPACKE_lsame)( jobz, 'v' ) ) {
67-
LAPACKE_free( work );
68-
}
69-
exit_level_0:
56+
info = API_SUFFIX(LAPACKE_dktev_work)( matrix_layout, jobz, n, d, e, z, ldz, NULL );
7057
if( info == LAPACK_WORK_MEMORY_ERROR ) {
7158
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_dktev", info );
7259
}

LAPACKE/src/lapacke_skteqr.c

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,8 @@ lapack_int API_SUFFIX(LAPACKE_skteqr)( int matrix_layout, char compz, lapack_int
5656
}
5757
}
5858
#endif
59-
/* Additional scalars initializations for work arrays */
60-
if( API_SUFFIX(LAPACKE_lsame)( compz, 'n' ) ) {
61-
lwork = 1;
62-
} else {
63-
lwork = MAX(1,2*n-2);
64-
}
65-
/* Allocate memory for working array(s) */
66-
work = (float*)LAPACKE_malloc( sizeof(float) * lwork );
67-
if( work == NULL ) {
68-
info = LAPACK_WORK_MEMORY_ERROR;
69-
goto exit_level_0;
70-
}
7159
/* Call middle-level interface */
72-
info = API_SUFFIX(LAPACKE_skteqr_work)( matrix_layout, compz, n, e, z, ldz, work );
73-
/* Release memory and exit */
74-
LAPACKE_free( work );
75-
exit_level_0:
60+
info = API_SUFFIX(LAPACKE_skteqr_work)( matrix_layout, compz, n, e, z, ldz, NULL );
7661
if( info == LAPACK_WORK_MEMORY_ERROR ) {
7762
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_skteqr", info );
7863
}

LAPACKE/src/lapacke_sktev.c

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,8 @@ lapack_int API_SUFFIX(LAPACKE_sktev)( int matrix_layout, char jobz, lapack_int n
5252
}
5353
}
5454
#endif
55-
/* Allocate memory for working array(s) */
56-
if( API_SUFFIX(LAPACKE_lsame)( jobz, 'v' ) ) {
57-
work = (float*)LAPACKE_malloc( sizeof(float) * MAX(1,2*n-2) );
58-
if( work == NULL ) {
59-
info = LAPACK_WORK_MEMORY_ERROR;
60-
goto exit_level_0;
61-
}
62-
}
6355
/* Call middle-level interface */
64-
info = API_SUFFIX(LAPACKE_sktev_work)( matrix_layout, jobz, n, d, e, z, ldz, work );
65-
/* Release memory and exit */
66-
if( API_SUFFIX(LAPACKE_lsame)( jobz, 'v' ) ) {
67-
LAPACKE_free( work );
68-
}
69-
exit_level_0:
56+
info = API_SUFFIX(LAPACKE_sktev_work)( matrix_layout, jobz, n, d, e, z, ldz, NULL );
7057
if( info == LAPACK_WORK_MEMORY_ERROR ) {
7158
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_sktev", info );
7259
}

SRC/dkygv.f

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
*> \param[in] LWORK
139139
*> \verbatim
140140
*> LWORK is INTEGER
141-
*> The length of the array WORK. LWORK >= max(1,3*N-1).
142-
*> For optimal efficiency, LWORK >= (NB+2)*N,
141+
*> The length of the array WORK. LWORK >= max(1,2*N-1).
142+
*> For optimal efficiency, LWORK >= (NB+1)*N,
143143
*> where NB is the blocksize for SSYTRD returned by ILAENV.
144144
*>
145145
*> If LWORK = -1, then a workspace query is assumed; the routine

SRC/skygv.f

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
*> \param[in] LWORK
139139
*> \verbatim
140140
*> LWORK is INTEGER
141-
*> The length of the array WORK. LWORK >= max(1,3*N-1).
142-
*> For optimal efficiency, LWORK >= (NB+2)*N,
141+
*> The length of the array WORK. LWORK >= max(1,2*N-1).
142+
*> For optimal efficiency, LWORK >= (NB+1)*N,
143143
*> where NB is the blocksize for SSYTRD returned by ILAENV.
144144
*>
145145
*> If LWORK = -1, then a workspace query is assumed; the routine

0 commit comments

Comments
 (0)