Merge pull request #3851 from martin-frbg/lapack773
Allocate work array in LAPACKE ?TGSEN when ijob is zero (Reference-LAPACK PR 733)
This commit is contained in:
		
						commit
						02763077d6
					
				|  | @ -86,12 +86,10 @@ lapack_int LAPACKE_ctgsen( int matrix_layout, lapack_int ijob, | |||
|     liwork = iwork_query; | ||||
|     lwork = LAPACK_C2INT( work_query ); | ||||
|     /* Allocate memory for work arrays */ | ||||
|     if( ijob != 0 ) { | ||||
|         iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|         if( iwork == NULL ) { | ||||
|             info = LAPACK_WORK_MEMORY_ERROR; | ||||
|             goto exit_level_0; | ||||
|         } | ||||
|     iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|     if( iwork == NULL ) { | ||||
|         info = LAPACK_WORK_MEMORY_ERROR; | ||||
|         goto exit_level_0; | ||||
|     } | ||||
|     work = (lapack_complex_float*) | ||||
|         LAPACKE_malloc( sizeof(lapack_complex_float) * lwork ); | ||||
|  | @ -106,9 +104,7 @@ lapack_int LAPACKE_ctgsen( int matrix_layout, lapack_int ijob, | |||
|     /* Release memory and exit */ | ||||
|     LAPACKE_free( work ); | ||||
| exit_level_1: | ||||
|     if( ijob != 0 ) { | ||||
|         LAPACKE_free( iwork ); | ||||
|     } | ||||
|     LAPACKE_free( iwork ); | ||||
| exit_level_0: | ||||
|     if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
|         LAPACKE_xerbla( "LAPACKE_ctgsen", info ); | ||||
|  |  | |||
|  | @ -83,12 +83,10 @@ lapack_int LAPACKE_dtgsen( int matrix_layout, lapack_int ijob, | |||
|     liwork = iwork_query; | ||||
|     lwork = (lapack_int)work_query; | ||||
|     /* Allocate memory for work arrays */ | ||||
|     if( ijob != 0 ) { | ||||
|         iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|         if( iwork == NULL ) { | ||||
|             info = LAPACK_WORK_MEMORY_ERROR; | ||||
|             goto exit_level_0; | ||||
|         } | ||||
|     iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|     if( iwork == NULL ) { | ||||
|         info = LAPACK_WORK_MEMORY_ERROR; | ||||
|         goto exit_level_0; | ||||
|     } | ||||
|     work = (double*)LAPACKE_malloc( sizeof(double) * lwork ); | ||||
|     if( work == NULL ) { | ||||
|  | @ -103,9 +101,7 @@ lapack_int LAPACKE_dtgsen( int matrix_layout, lapack_int ijob, | |||
|     /* Release memory and exit */ | ||||
|     LAPACKE_free( work ); | ||||
| exit_level_1: | ||||
|     if( ijob != 0 ) { | ||||
|         LAPACKE_free( iwork ); | ||||
|     } | ||||
|     LAPACKE_free( iwork ); | ||||
| exit_level_0: | ||||
|     if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
|         LAPACKE_xerbla( "LAPACKE_dtgsen", info ); | ||||
|  |  | |||
|  | @ -83,12 +83,10 @@ lapack_int LAPACKE_stgsen( int matrix_layout, lapack_int ijob, | |||
|     liwork = iwork_query; | ||||
|     lwork = (lapack_int)work_query; | ||||
|     /* Allocate memory for work arrays */ | ||||
|     if( ijob != 0 ) { | ||||
|         iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|         if( iwork == NULL ) { | ||||
|             info = LAPACK_WORK_MEMORY_ERROR; | ||||
|             goto exit_level_0; | ||||
|         } | ||||
|     iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|     if( iwork == NULL ) { | ||||
|         info = LAPACK_WORK_MEMORY_ERROR; | ||||
|         goto exit_level_0; | ||||
|     } | ||||
|     work = (float*)LAPACKE_malloc( sizeof(float) * lwork ); | ||||
|     if( work == NULL ) { | ||||
|  | @ -103,9 +101,7 @@ lapack_int LAPACKE_stgsen( int matrix_layout, lapack_int ijob, | |||
|     /* Release memory and exit */ | ||||
|     LAPACKE_free( work ); | ||||
| exit_level_1: | ||||
|     if( ijob != 0 ) { | ||||
|         LAPACKE_free( iwork ); | ||||
|     } | ||||
|     LAPACKE_free( iwork ); | ||||
| exit_level_0: | ||||
|     if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
|         LAPACKE_xerbla( "LAPACKE_stgsen", info ); | ||||
|  |  | |||
|  | @ -86,12 +86,10 @@ lapack_int LAPACKE_ztgsen( int matrix_layout, lapack_int ijob, | |||
|     liwork = iwork_query; | ||||
|     lwork = LAPACK_Z2INT( work_query ); | ||||
|     /* Allocate memory for work arrays */ | ||||
|     if( ijob != 0 ) { | ||||
|         iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|         if( iwork == NULL ) { | ||||
|             info = LAPACK_WORK_MEMORY_ERROR; | ||||
|             goto exit_level_0; | ||||
|         } | ||||
|     iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * liwork ); | ||||
|     if( iwork == NULL ) { | ||||
|         info = LAPACK_WORK_MEMORY_ERROR; | ||||
|         goto exit_level_0; | ||||
|     } | ||||
|     work = (lapack_complex_double*) | ||||
|         LAPACKE_malloc( sizeof(lapack_complex_double) * lwork ); | ||||
|  | @ -106,9 +104,7 @@ lapack_int LAPACKE_ztgsen( int matrix_layout, lapack_int ijob, | |||
|     /* Release memory and exit */ | ||||
|     LAPACKE_free( work ); | ||||
| exit_level_1: | ||||
|     if( ijob != 0 ) { | ||||
|         LAPACKE_free( iwork ); | ||||
|     } | ||||
|     LAPACKE_free( iwork ); | ||||
| exit_level_0: | ||||
|     if( info == LAPACK_WORK_MEMORY_ERROR ) { | ||||
|         LAPACKE_xerbla( "LAPACKE_ztgsen", info ); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue