lapack_int n, double* a, lapack_int lda, double* sva,
double* u, lapack_int ldu, double* v, lapack_int ldv,
double* stat, lapack_int* istat );
+lapack_int LAPACKE_cgejsv( int matrix_layout, char joba, char jobu, char jobv,
+ char jobr, char jobt, char jobp, lapack_int m,
+ lapack_int n, lapack_complex_float* a, lapack_int lda, float* sva,
+ lapack_complex_float* u, lapack_int ldu, lapack_complex_float* v, lapack_int ldv,
+ float* stat, lapack_int* istat );
+lapack_int LAPACKE_zgejsv( int matrix_layout, char joba, char jobu, char jobv,
+ char jobr, char jobt, char jobp, lapack_int m,
+ lapack_int n, lapack_complex_double* a, lapack_int lda, double* sva,
+ lapack_complex_double* u, lapack_int ldu, lapack_complex_double* v, lapack_int ldv,
+ double* stat, lapack_int* istat );
lapack_int LAPACKE_sgelq2( int matrix_layout, lapack_int m, lapack_int n,
float* a, lapack_int lda, float* tau );
lapack_int m, lapack_int n, double* a,
lapack_int lda, double* sva, lapack_int mv,
double* v, lapack_int ldv, double* stat );
+lapack_int LAPACKE_cgesvj( int matrix_layout, char joba, char jobu, char jobv,
+ lapack_int m, lapack_int n, lapack_complex_float* a,
+ lapack_int lda, float* sva, lapack_int mv,
+ lapack_complex_float* v, lapack_int ldv, float* stat );
+lapack_int LAPACKE_zgesvj( int matrix_layout, char joba, char jobu, char jobv,
+ lapack_int m, lapack_int n, lapack_complex_double* a,
+ lapack_int lda, double* sva, lapack_int mv,
+ lapack_complex_double* v, lapack_int ldv, double* stat );
lapack_int LAPACKE_sgesvx( int matrix_layout, char fact, char trans,
lapack_int n, lapack_int nrhs, float* a,
lapack_int ldu, double* v, lapack_int ldv,
double* work, lapack_int lwork,
lapack_int* iwork );
+lapack_int LAPACKE_cgejsv_work( int matrix_layout, char joba, char jobu,
+ char jobv, char jobr, char jobt, char jobp,
+ lapack_int m, lapack_int n, lapack_complex_float* a,
+ lapack_int lda, float* sva, lapack_complex_float* u,
+ lapack_int ldu, lapack_complex_float* v, lapack_int ldv,
+ lapack_complex_float* cwork, lapack_int lwork,
+ float* work, lapack_int lrwork,
+ lapack_int* iwork );
+lapack_int LAPACKE_zgejsv_work( int matrix_layout, char joba, char jobu,
+ char jobv, char jobr, char jobt, char jobp,
+ lapack_int m, lapack_int n, lapack_complex_double* a,
+ lapack_int lda, double* sva, lapack_complex_double* u,
+ lapack_int ldu, lapack_complex_double* v, lapack_int ldv,
+ lapack_complex_double* cwork, lapack_int lwork,
+ double* work, lapack_int lrwork,
+ lapack_int* iwork );
lapack_int LAPACKE_sgelq2_work( int matrix_layout, lapack_int m, lapack_int n,
float* a, lapack_int lda, float* tau,
double* a, lapack_int lda, double* sva,
lapack_int mv, double* v, lapack_int ldv,
double* work, lapack_int lwork );
+lapack_int LAPACKE_cgesvj_work( int matrix_layout, char joba, char jobu,
+ char jobv, lapack_int m, lapack_int n, lapack_complex_float* a,
+ lapack_int lda, float* sva, lapack_int mv,
+ lapack_complex_float* v, lapack_int ldv,
+ lapack_complex_float* cwork, lapack_int lwork,
+ float* rwork,lapack_int lrwork );
+lapack_int LAPACKE_zgesvj_work( int matrix_layout, char joba, char jobu,
+ char jobv, lapack_int m, lapack_int n,
+ lapack_complex_double* a, lapack_int lda, double* sva,
+ lapack_int mv, lapack_complex_double* v, lapack_int ldv,
+ lapack_complex_double* cwork, lapack_int lwork,
+ double* rwork, lapack_int lrwork );
lapack_int LAPACKE_sgesvx_work( int matrix_layout, char fact, char trans,
lapack_int n, lapack_int nrhs, float* a,
#define LAPACK_dgesdd LAPACK_GLOBAL(dgesdd,DGESDD)
#define LAPACK_cgesdd LAPACK_GLOBAL(cgesdd,CGESDD)
#define LAPACK_zgesdd LAPACK_GLOBAL(zgesdd,ZGESDD)
-#define LAPACK_dgejsv LAPACK_GLOBAL(dgejsv,DGEJSV)
#define LAPACK_sgejsv LAPACK_GLOBAL(sgejsv,SGEJSV)
-#define LAPACK_dgesvj LAPACK_GLOBAL(dgesvj,DGESVJ)
+#define LAPACK_dgejsv LAPACK_GLOBAL(dgejsv,DGEJSV)
+#define LAPACK_cgejsv LAPACK_GLOBAL(cgejsv,CGEJSV)
+#define LAPACK_zgejsv LAPACK_GLOBAL(zgejsv,ZGEJSV)
#define LAPACK_sgesvj LAPACK_GLOBAL(sgesvj,SGESVJ)
+#define LAPACK_dgesvj LAPACK_GLOBAL(dgesvj,DGESVJ)
+#define LAPACK_cgesvj LAPACK_GLOBAL(cgesvj,CGESVJ)
+#define LAPACK_zgesvj LAPACK_GLOBAL(zgesvj,ZGESVJ)
#define LAPACK_sggsvd LAPACK_GLOBAL(sggsvd,SGGSVD)
#define LAPACK_dggsvd LAPACK_GLOBAL(dggsvd,DGGSVD)
#define LAPACK_cggsvd LAPACK_GLOBAL(cggsvd,CGGSVD)
lapack_int* lda, float* sva, float* u, lapack_int* ldu,
float* v, lapack_int* ldv, float* work, lapack_int* lwork,
lapack_int* iwork, lapack_int *info );
+void LAPACK_cgejsv( char* joba, char* jobu, char* jobv, char* jobr, char* jobt,
+ char* jobp, lapack_int* m, lapack_int* n, lapack_complex_float* a,
+ lapack_int* lda, float* sva, lapack_complex_float* u, lapack_int* ldu,
+ lapack_complex_float* v, lapack_int* ldv, lapack_complex_float* cwork,
+ lapack_int* lwork, float* work, lapack_int* lrwork,
+ lapack_int* iwork, lapack_int *info );
+void LAPACK_zgejsv( char* joba, char* jobu, char* jobv, char* jobr, char* jobt,
+ char* jobp, lapack_int* m, lapack_int* n, lapack_complex_double* a,
+ lapack_int* lda, double* sva, lapack_complex_double* u, lapack_int* ldu,
+ lapack_complex_double* v, lapack_int* ldv, lapack_complex_double* cwork,
+ lapack_int* lwork, double* work, lapack_int* lrwork,
+ lapack_int* iwork, lapack_int *info );
void LAPACK_dgesvj( char* joba, char* jobu, char* jobv, lapack_int* m,
lapack_int* n, double* a, lapack_int* lda, double* sva,
lapack_int* mv, double* v, lapack_int* ldv, double* work,
lapack_int* n, float* a, lapack_int* lda, float* sva,
lapack_int* mv, float* v, lapack_int* ldv, float* work,
lapack_int* lwork, lapack_int *info );
+void LAPACK_cgesvj( char* joba, char* jobu, char* jobv, lapack_int* m,
+ lapack_int* n, lapack_complex_float* a, lapack_int* lda, float* sva,
+ lapack_int* mv, lapack_complex_float* v, lapack_int* ldv,
+ lapack_complex_float* cwork, lapack_int* lwork, float* rwork,
+ lapack_int* lrwork, lapack_int *info );
+void LAPACK_zgesvj( char* joba, char* jobu, char* jobv, lapack_int* m,
+ lapack_int* n, lapack_complex_double* a, lapack_int* lda, double* sva,
+ lapack_int* mv, lapack_complex_double* v, lapack_int* ldv,
+ lapack_complex_double* cwork, lapack_int* lwork, double* rwork,
+ lapack_int* lrwork, lapack_int *info );
void LAPACK_sggsvd( char* jobu, char* jobv, char* jobq, lapack_int* m,
lapack_int* n, lapack_int* p, lapack_int* k, lapack_int* l,
float* a, lapack_int* lda, float* b, lapack_int* ldb,
lapacke_cgeevx_work.c
lapacke_cgehrd.c
lapacke_cgehrd_work.c
+lapacke_cgejsv.c
+lapacke_cgejsv_work.c
lapacke_cgelq2.c
lapacke_cgelq2_work.c
lapacke_cgelqf.c
lapacke_cgesv_work.c
lapacke_cgesvd.c
lapacke_cgesvd_work.c
+lapacke_cgesvj.c
+lapacke_cgesvj_work.c
lapacke_cgesvx.c
lapacke_cgesvx_work.c
lapacke_cgetf2.c
lapacke_zgeevx_work.c
lapacke_zgehrd.c
lapacke_zgehrd_work.c
+lapacke_zgejsv.c
+lapacke_zgejsv_work.c
lapacke_zgelq2.c
lapacke_zgelq2_work.c
lapacke_zgelqf.c
lapacke_zgesv_work.c
lapacke_zgesvd.c
lapacke_zgesvd_work.c
+lapacke_zgesvj.c
+lapacke_zgesvj_work.c
lapacke_zgesvx.c
lapacke_zgesvx_work.c
lapacke_zgetf2.c
lapacke_cgehrd_work.o \
lapacke_cgelq2.o \
lapacke_cgelq2_work.o \
+lapacke_cgejsv.o \
+lapacke_cgejsv_work.o \
lapacke_cgelqf.o \
lapacke_cgelqf_work.o \
lapacke_cgels.o \
lapacke_cgesv_work.o \
lapacke_cgesvd.o \
lapacke_cgesvd_work.o \
+lapacke_cgesvj.o \
+lapacke_cgesvj_work.o \
lapacke_cgesvx.o \
lapacke_cgesvx_work.o \
lapacke_cgetf2.o \
lapacke_zgeevx_work.o \
lapacke_zgehrd.o \
lapacke_zgehrd_work.o \
+lapacke_zgejsv.o \
+lapacke_zgejsv_work.o \
lapacke_zgelq2.o \
lapacke_zgelq2_work.o \
lapacke_zgelqf.o \
lapacke_zgesv_work.o \
lapacke_zgesvd.o \
lapacke_zgesvd_work.o \
+lapacke_zgesvj.o \
+lapacke_zgesvj_work.o \
lapacke_zgesvx.o \
lapacke_zgesvx_work.o \
lapacke_zgetf2.o \
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native high-level C interface to LAPACK function cgejsv
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_cgejsv( int matrix_layout, char joba, char jobu, char jobv,
+ char jobr, char jobt, char jobp, lapack_int m,
+ lapack_int n, lapack_complex_float* a, lapack_int lda, float* sva,
+ lapack_complex_float* u, lapack_int ldu, lapack_complex_float* v, lapack_int ldv,
+ float* stat, lapack_int* istat )
+{
+ lapack_int info = 0;
+ lapack_int lwork = (
+ // 1.1
+ ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? 2*n+1 :
+
+ //1.2
+ ( ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? n*n+3*n :
+
+ //2.1
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ))|| LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+
+ //2.2
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+ //3.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+ //3.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !(LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ !(LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+ //4.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 5*n+2*n*n :
+
+ //4.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 4*n*n:
+ 1) ) ) ) ) ) );
+ lapack_int lrwork = (
+ // 1.1
+ ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? MAX(7,n+2*m) :
+
+ //1.2
+ ( ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? MAX(7,2*n) :
+
+ //2.1
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ))|| LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX( 7, n+ 2*m ) :
+
+
+ //2.2
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX(7,2*n) :
+
+ //3.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX( 7, n+ 2*m ) :
+
+ //3.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !(LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ !(LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX(7,2*n) :
+
+ //4.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX( 7, n+ 2*m ) :
+
+ //4.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX(7,2*n) :
+ 1) ) ) ) ) ) );
+ lapack_int* iwork = NULL;
+ float* rwork = NULL;
+ lapack_complex_float* cwork = NULL;
+ lapack_int i;
+ lapack_int nu, nv;
+ if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
+ LAPACKE_xerbla( "LAPACKE_cgejsv", -1 );
+ return -1;
+ }
+#ifndef LAPACK_DISABLE_NAN_CHECK
+ /* Optionally check input matrices for NaNs */
+ nu = LAPACKE_lsame( jobu, 'n' ) ? 1 : m;
+ nv = LAPACKE_lsame( jobv, 'n' ) ? 1 : n;
+ if( LAPACKE_cge_nancheck( matrix_layout, m, n, a, lda ) ) {
+ return -10;
+ }
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ if( LAPACKE_cge_nancheck( matrix_layout, nu, n, u, ldu ) ) {
+ return -13;
+ }
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ if( LAPACKE_cge_nancheck( matrix_layout, nv, n, v, ldv ) ) {
+ return -15;
+ }
+ }
+#endif
+ /* Allocate memory for working array(s) */
+ iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * MAX(1,m+3*n) );
+ if( iwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ cwork = (lapack_complex_float*)LAPACKE_malloc( sizeof(lapack_complex_float) * lwork );
+ if( cwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ rwork = (float*)LAPACKE_malloc( sizeof(float) * lrwork );
+ if( rwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_2;
+ }
+ /* Call middle-level interface */
+ info = LAPACKE_cgejsv_work( matrix_layout, joba, jobu, jobv, jobr, jobt,
+ jobp, m, n, a, lda, sva, u, ldu, v, ldv, cwork,
+ lwork, rwork, lrwork, iwork );
+ /* Backup significant data from working array(s) */
+ for( i=0; i<7; i++ ) {
+ stat[i] = rwork[i];
+ }
+ for( i=0; i<3; i++ ) {
+ istat[i] = iwork[i];
+ }
+ /* Release memory and exit */
+ LAPACKE_free( cwork );
+exit_level_2:
+ LAPACKE_free( rwork );
+exit_level_1:
+ LAPACKE_free( iwork );
+exit_level_0:
+ if( info == LAPACK_WORK_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_cgejsv", info );
+ }
+ return info;
+}
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native middle-level C interface to LAPACK function cgejsv
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_cgejsv_work( int matrix_layout, char joba, char jobu,
+ char jobv, char jobr, char jobt, char jobp,
+ lapack_int m, lapack_int n, lapack_complex_float* a,
+ lapack_int lda, float* sva, lapack_complex_float* u,
+ lapack_int ldu, lapack_complex_float* v, lapack_int ldv,
+ lapack_complex_float* cwork, lapack_int lwork,
+ float* rwork, lapack_int lrwork,
+ lapack_int* iwork )
+{
+ lapack_int info = 0;
+ if( matrix_layout == LAPACK_COL_MAJOR ) {
+ /* Call LAPACK function and adjust info */
+ LAPACK_cgejsv( &joba, &jobu, &jobv, &jobr, &jobt, &jobp, &m, &n, a,
+ &lda, sva, u, &ldu, v, &ldv, cwork, &lwork, rwork, &lwork,
+ iwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+ lapack_int nu = LAPACKE_lsame( jobu, 'n' ) ? 1 : m;
+ lapack_int nv = LAPACKE_lsame( jobv, 'n' ) ? 1 : n;
+ lapack_int lda_t = MAX(1,m);
+ lapack_int ldu_t = MAX(1,nu);
+ lapack_int ldv_t = MAX(1,nv);
+ lapack_complex_float* a_t = NULL;
+ lapack_complex_float* u_t = NULL;
+ lapack_complex_float* v_t = NULL;
+ /* Check leading dimension(s) */
+ if( lda < n ) {
+ info = -11;
+ LAPACKE_xerbla( "LAPACKE_cgejsv_work", info );
+ return info;
+ }
+ if( ldu < n ) {
+ info = -14;
+ LAPACKE_xerbla( "LAPACKE_cgejsv_work", info );
+ return info;
+ }
+ if( ldv < n ) {
+ info = -16;
+ LAPACKE_xerbla( "LAPACKE_cgejsv_work", info );
+ return info;
+ }
+ /* Allocate memory for temporary array(s) */
+ a_t = (lapack_complex_float*)
+ LAPACKE_malloc( sizeof(lapack_complex_float) * lda_t * MAX(1,n) );
+ if( a_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ u_t = (lapack_complex_float*)
+ LAPACKE_malloc( sizeof(lapack_complex_float) * ldu_t * MAX(1,n) );
+ if( u_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ v_t = (lapack_complex_float*)
+ LAPACKE_malloc( sizeof(lapack_complex_float) * ldv_t * MAX(1,n) );
+ if( v_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_2;
+ }
+ }
+ /* Transpose input matrices */
+ LAPACKE_cge_trans( matrix_layout, m, n, a, lda, a_t, lda_t );
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ LAPACKE_cge_trans( matrix_layout, nu, n, u, ldu, u_t, ldu_t );
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ LAPACKE_cge_trans( matrix_layout, nv, n, v, ldv, v_t, ldv_t );
+ }
+ /* Call LAPACK function and adjust info */
+ LAPACK_cgejsv( &joba, &jobu, &jobv, &jobr, &jobt, &jobp, &m, &n, a_t,
+ &lda_t, sva, u_t, &ldu_t, v_t, &ldv_t, cwork, &lwork,
+ rwork, &lrwork, iwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ /* Transpose output matrices */
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ LAPACKE_cge_trans( LAPACK_COL_MAJOR, nu, n, u_t, ldu_t, u, ldu );
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ LAPACKE_cge_trans( LAPACK_COL_MAJOR, nv, n, v_t, ldv_t, v, ldv );
+ }
+ /* Release memory and exit */
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ LAPACKE_free( v_t );
+ }
+exit_level_2:
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ LAPACKE_free( u_t );
+ }
+exit_level_1:
+ LAPACKE_free( a_t );
+exit_level_0:
+ if( info == LAPACK_TRANSPOSE_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_cgejsv_work", info );
+ }
+ } else {
+ info = -1;
+ LAPACKE_xerbla( "LAPACKE_cgejsv_work", info );
+ }
+ return info;
+}
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native high-level C interface to LAPACK function cgesvj
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_cgesvj( int matrix_layout, char joba, char jobu, char jobv,
+ lapack_int m, lapack_int n,
+ lapack_complex_float * a, lapack_int lda,
+ float* sva, lapack_int mv,
+ lapack_complex_float* v, lapack_int ldv, float* stat )
+{
+ lapack_int info = 0;
+ lapack_int lwork = m+n;
+ lapack_int lrwork = MAX(6,m+n);
+ float* rwork = NULL;
+ lapack_complex_float* cwork = NULL;
+ lapack_int i;
+ lapack_int nrows_v;
+ if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
+ LAPACKE_xerbla( "LAPACKE_cgesvj", -1 );
+ return -1;
+ }
+#ifndef LAPACK_DISABLE_NAN_CHECK
+ /* Optionally check input matrices for NaNs */
+ nrows_v = LAPACKE_lsame( jobv, 'v' ) ? n :
+ ( LAPACKE_lsame( jobv, 'a' ) ? mv : 1);
+ if( LAPACKE_cge_nancheck( matrix_layout, m, n, a, lda ) ) {
+ return -7;
+ }
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ if( LAPACKE_cge_nancheck( matrix_layout, nrows_v, n, v, ldv ) ) {
+ return -11;
+ }
+ }
+#endif
+ /* Allocate memory for working array(s) */
+ cwork = (lapack_complex_float*)
+ LAPACKE_malloc( sizeof(lapack_complex_float) * lwork );
+ if( cwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ rwork = (float*)LAPACKE_malloc( sizeof(float) * lrwork );
+ if( rwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ rwork[0] = stat[0]; /* Significant if jobu = 'c' */
+ /* Call middle-level interface */
+ info = LAPACKE_cgesvj_work( matrix_layout, joba, jobu, jobv, m, n, a, lda,
+ sva, mv, v, ldv, cwork, lwork, rwork, lrwork );
+ /* Backup significant data from working array(s) */
+ for( i=0; i<6; i++ ) {
+ stat[i] = rwork[i];
+ }
+
+ /* Release memory and exit */
+ LAPACKE_free( rwork );
+exit_level_1:
+ LAPACKE_free( cwork );
+exit_level_0:
+ if( info == LAPACK_WORK_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_cgesvj", info );
+ }
+ return info;
+}
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native middle-level C interface to LAPACK function cgesvj
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_cgesvj_work( int matrix_layout, char joba, char jobu,
+ char jobv, lapack_int m, lapack_int n,
+ lapack_complex_float* a, lapack_int lda,
+ float* sva, lapack_int mv,
+ lapack_complex_float* v, lapack_int ldv,
+ lapack_complex_float* cwork, lapack_int lwork,
+ float* rwork, lapack_int lrwork )
+{
+ lapack_int info = 0;
+ if( matrix_layout == LAPACK_COL_MAJOR ) {
+ /* Call LAPACK function and adjust info */
+ LAPACK_cgesvj( &joba, &jobu, &jobv, &m, &n, a, &lda, sva, &mv, v, &ldv,
+ cwork, &lwork, rwork, &lrwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+ lapack_int nrows_v = LAPACKE_lsame( jobv, 'v' ) ? n :
+ ( LAPACKE_lsame( jobv, 'a' ) ? mv : 1);
+ lapack_int lda_t = MAX(1,m);
+ lapack_int ldv_t = MAX(1,nrows_v);
+ lapack_complex_float* a_t = NULL;
+ lapack_complex_float* v_t = NULL;
+ /* Check leading dimension(s) */
+ if( lda < n ) {
+ info = -8;
+ LAPACKE_xerbla( "LAPACKE_cgesvj_work", info );
+ return info;
+ }
+ if( ldv < n ) {
+ info = -12;
+ LAPACKE_xerbla( "LAPACKE_cgesvj_work", info );
+ return info;
+ }
+ /* Allocate memory for temporary array(s) */
+ a_t = (lapack_complex_float*)
+ LAPACKE_malloc( sizeof(lapack_complex_float) * lda_t * MAX(1,n) );
+ if( a_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ v_t = (lapack_complex_float*)
+ LAPACKE_malloc( sizeof(lapack_complex_float) * ldv_t * MAX(1,n) );
+ if( v_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ }
+ /* Transpose input matrices */
+ LAPACKE_cge_trans( matrix_layout, m, n, a, lda, a_t, lda_t );
+ if( LAPACKE_lsame( jobv, 'a' ) ) {
+ LAPACKE_cge_trans( matrix_layout, nrows_v, n, v, ldv, v_t, ldv_t );
+ }
+ /* Call LAPACK function and adjust info */
+ LAPACK_cgesvj( &joba, &jobu, &jobv, &m, &n, a_t, &lda_t, sva, &mv, v_t,
+ &ldv_t, cwork, &lwork, rwork, &lrwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ /* Transpose output matrices */
+ LAPACKE_cge_trans( LAPACK_COL_MAJOR, m, n, a_t, lda_t, a, lda );
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ LAPACKE_cge_trans( LAPACK_COL_MAJOR, nrows_v, n, v_t, ldv_t, v,
+ ldv );
+ }
+ /* Release memory and exit */
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ LAPACKE_free( v_t );
+ }
+exit_level_1:
+ LAPACKE_free( a_t );
+exit_level_0:
+ if( info == LAPACK_TRANSPOSE_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_cgesvj_work", info );
+ }
+ } else {
+ info = -1;
+ LAPACKE_xerbla( "LAPACKE_cgesvj_work", info );
+ }
+ return info;
+}
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native high-level C interface to LAPACK function zgejsv
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_zgejsv( int matrix_layout, char joba, char jobu, char jobv,
+ char jobr, char jobt, char jobp, lapack_int m,
+ lapack_int n, lapack_complex_double* a, lapack_int lda, double* sva,
+ lapack_complex_double* u, lapack_int ldu, lapack_complex_double* v, lapack_int ldv,
+ double* stat, lapack_int* istat )
+{
+ lapack_int info = 0;
+ lapack_int lwork = (
+ // 1.1
+ ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? 2*n+1 :
+
+ //1.2
+ ( ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? n*n+3*n :
+
+ //2.1
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ))|| LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+
+ //2.2
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+ //3.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+ //3.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !(LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ !(LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 3*n :
+
+ //4.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 5*n+2*n*n :
+
+ //4.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? 4*n*n:
+ 1) ) ) ) ) ) );
+ lapack_int lrwork = (
+ // 1.1
+ ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? MAX(7,n+2*m) :
+
+ //1.2
+ ( ( LAPACKE_lsame( jobu, 'n' ) && LAPACKE_lsame( jobv, 'n' ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) )) ? MAX(7,2*n) :
+
+ //2.1
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ))|| LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX( 7, n+ 2*m ) :
+
+
+ //2.2
+ ( ( ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ !( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ !( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX(7,2*n) :
+
+ //3.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX( 7, n+ 2*m ) :
+
+ //3.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' )) &&
+ !(LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' )) &&
+ !(LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX(7,2*n) :
+
+ //4.1
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX( 7, n+ 2*m ) :
+
+ //4.2
+ ( ( ( LAPACKE_lsame( jobu, 'u' ) || LAPACKE_lsame( jobu, 'f' ) ) &&
+ ( LAPACKE_lsame( jobv, 'v' ) || LAPACKE_lsame( jobv, 'j' ) ) &&
+ ( LAPACKE_lsame( jobt, 't' ) || LAPACKE_lsame( joba, 'f' ) || LAPACKE_lsame( joba, 'g' ) ))? MAX(7,2*n) :
+ 1) ) ) ) ) ) );
+ lapack_int* iwork = NULL;
+ double* rwork = NULL;
+ lapack_complex_double* cwork = NULL;
+ lapack_int i;
+ lapack_int nu, nv;
+ if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
+ LAPACKE_xerbla( "LAPACKE_zgejsv", -1 );
+ return -1;
+ }
+#ifndef LAPACK_DISABLE_NAN_CHECK
+ /* Optionally check input matrices for NaNs */
+ nu = LAPACKE_lsame( jobu, 'n' ) ? 1 : m;
+ nv = LAPACKE_lsame( jobv, 'n' ) ? 1 : n;
+ if( LAPACKE_zge_nancheck( matrix_layout, m, n, a, lda ) ) {
+ return -10;
+ }
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ if( LAPACKE_zge_nancheck( matrix_layout, nu, n, u, ldu ) ) {
+ return -13;
+ }
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ if( LAPACKE_zge_nancheck( matrix_layout, nv, n, v, ldv ) ) {
+ return -15;
+ }
+ }
+#endif
+ /* Allocate memory for working array(s) */
+ iwork = (lapack_int*)LAPACKE_malloc( sizeof(lapack_int) * MAX(1,m+3*n) );
+ if( iwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ cwork = (lapack_complex_double*)LAPACKE_malloc( sizeof(lapack_complex_double) * lwork );
+ if( cwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ rwork = (double*)LAPACKE_malloc( sizeof(double) * lrwork );
+ if( rwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_2;
+ }
+ /* Call middle-level interface */
+ info = LAPACKE_zgejsv_work( matrix_layout, joba, jobu, jobv, jobr, jobt,
+ jobp, m, n, a, lda, sva, u, ldu, v, ldv, cwork,
+ lwork, rwork, lrwork, iwork );
+ /* Backup significant data from working array(s) */
+ for( i=0; i<7; i++ ) {
+ stat[i] = rwork[i];
+ }
+ for( i=0; i<3; i++ ) {
+ istat[i] = iwork[i];
+ }
+ /* Release memory and exit */
+ LAPACKE_free( cwork );
+exit_level_2:
+ LAPACKE_free( rwork );
+exit_level_1:
+ LAPACKE_free( iwork );
+exit_level_0:
+ if( info == LAPACK_WORK_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_zgejsv", info );
+ }
+ return info;
+}
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native middle-level C interface to LAPACK function zgejsv
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_zgejsv_work( int matrix_layout, char joba, char jobu,
+ char jobv, char jobr, char jobt, char jobp,
+ lapack_int m, lapack_int n, lapack_complex_double* a,
+ lapack_int lda, double* sva, lapack_complex_double* u,
+ lapack_int ldu, lapack_complex_double* v, lapack_int ldv,
+ lapack_complex_double* cwork, lapack_int lwork,
+ double* rwork, lapack_int lrwork,
+ lapack_int* iwork )
+{
+ lapack_int info = 0;
+ if( matrix_layout == LAPACK_COL_MAJOR ) {
+ /* Call LAPACK function and adjust info */
+ LAPACK_zgejsv( &joba, &jobu, &jobv, &jobr, &jobt, &jobp, &m, &n, a,
+ &lda, sva, u, &ldu, v, &ldv, cwork, &lwork, rwork, &lwork,
+ iwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+ lapack_int nu = LAPACKE_lsame( jobu, 'n' ) ? 1 : m;
+ lapack_int nv = LAPACKE_lsame( jobv, 'n' ) ? 1 : n;
+ lapack_int lda_t = MAX(1,m);
+ lapack_int ldu_t = MAX(1,nu);
+ lapack_int ldv_t = MAX(1,nv);
+ lapack_complex_double* a_t = NULL;
+ lapack_complex_double* u_t = NULL;
+ lapack_complex_double* v_t = NULL;
+ /* Check leading dimension(s) */
+ if( lda < n ) {
+ info = -11;
+ LAPACKE_xerbla( "LAPACKE_zgejsv_work", info );
+ return info;
+ }
+ if( ldu < n ) {
+ info = -14;
+ LAPACKE_xerbla( "LAPACKE_zgejsv_work", info );
+ return info;
+ }
+ if( ldv < n ) {
+ info = -16;
+ LAPACKE_xerbla( "LAPACKE_zgejsv_work", info );
+ return info;
+ }
+ /* Allocate memory for temporary array(s) */
+ a_t = (lapack_complex_double*)
+ LAPACKE_malloc( sizeof(lapack_complex_double) * lda_t * MAX(1,n) );
+ if( a_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ u_t = (lapack_complex_double*)
+ LAPACKE_malloc( sizeof(lapack_complex_double) * ldu_t * MAX(1,n) );
+ if( u_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ v_t = (lapack_complex_double*)
+ LAPACKE_malloc( sizeof(lapack_complex_double) * ldv_t * MAX(1,n) );
+ if( v_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_2;
+ }
+ }
+ /* Transpose input matrices */
+ LAPACKE_zge_trans( matrix_layout, m, n, a, lda, a_t, lda_t );
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ LAPACKE_zge_trans( matrix_layout, nu, n, u, ldu, u_t, ldu_t );
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ LAPACKE_zge_trans( matrix_layout, nv, n, v, ldv, v_t, ldv_t );
+ }
+ /* Call LAPACK function and adjust info */
+ LAPACK_zgejsv( &joba, &jobu, &jobv, &jobr, &jobt, &jobp, &m, &n, a_t,
+ &lda_t, sva, u_t, &ldu_t, v_t, &ldv_t, cwork, &lwork,
+ rwork, &lrwork, iwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ /* Transpose output matrices */
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ LAPACKE_zge_trans( LAPACK_COL_MAJOR, nu, n, u_t, ldu_t, u, ldu );
+ }
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ LAPACKE_zge_trans( LAPACK_COL_MAJOR, nv, n, v_t, ldv_t, v, ldv );
+ }
+ /* Release memory and exit */
+ if( LAPACKE_lsame( jobv, 'j' ) || LAPACKE_lsame( jobv, 'v' ) ||
+ LAPACKE_lsame( jobv, 'w' ) ) {
+ LAPACKE_free( v_t );
+ }
+exit_level_2:
+ if( LAPACKE_lsame( jobu, 'f' ) || LAPACKE_lsame( jobu, 'u' ) ||
+ LAPACKE_lsame( jobu, 'w' ) ) {
+ LAPACKE_free( u_t );
+ }
+exit_level_1:
+ LAPACKE_free( a_t );
+exit_level_0:
+ if( info == LAPACK_TRANSPOSE_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_zgejsv_work", info );
+ }
+ } else {
+ info = -1;
+ LAPACKE_xerbla( "LAPACKE_zgejsv_work", info );
+ }
+ return info;
+}
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native high-level C interface to LAPACK function zgesvj
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_zgesvj( int matrix_layout, char joba, char jobu, char jobv,
+ lapack_int m, lapack_int n,
+ lapack_complex_double * a, lapack_int lda,
+ double* sva, lapack_int mv,
+ lapack_complex_double* v, lapack_int ldv, double* stat )
+{
+ lapack_int info = 0;
+ lapack_int lwork = m+n;
+ lapack_int lrwork = MAX(6,m+n);
+ double* rwork = NULL;
+ lapack_complex_double* cwork = NULL;
+ lapack_int i;
+ lapack_int nrows_v;
+ if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
+ LAPACKE_xerbla( "LAPACKE_zgesvj", -1 );
+ return -1;
+ }
+#ifndef LAPACK_DISABLE_NAN_CHECK
+ /* Optionally check input matrices for NaNs */
+ nrows_v = LAPACKE_lsame( jobv, 'v' ) ? n :
+ ( LAPACKE_lsame( jobv, 'a' ) ? mv : 1);
+ if( LAPACKE_zge_nancheck( matrix_layout, m, n, a, lda ) ) {
+ return -7;
+ }
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ if( LAPACKE_zge_nancheck( matrix_layout, nrows_v, n, v, ldv ) ) {
+ return -11;
+ }
+ }
+#endif
+ /* Allocate memory for working array(s) */
+ cwork = (lapack_complex_double*)
+ LAPACKE_malloc( sizeof(lapack_complex_double) * lwork );
+ if( cwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ rwork = (double*)LAPACKE_malloc( sizeof(double) * lrwork );
+ if( rwork == NULL ) {
+ info = LAPACK_WORK_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ rwork[0] = stat[0]; /* Significant if jobu = 'c' */
+ /* Call middle-level interface */
+ info = LAPACKE_zgesvj_work( matrix_layout, joba, jobu, jobv, m, n, a, lda,
+ sva, mv, v, ldv, cwork, lwork, rwork, lrwork );
+ /* Backup significant data from working array(s) */
+ for( i=0; i<6; i++ ) {
+ stat[i] = rwork[i];
+ }
+
+ /* Release memory and exit */
+ LAPACKE_free( rwork );
+exit_level_1:
+ LAPACKE_free( cwork );
+exit_level_0:
+ if( info == LAPACK_WORK_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_zgesvj", info );
+ }
+ return info;
+}
--- /dev/null
+/*****************************************************************************
+ Copyright (c) 2014, Intel Corp.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************
+* Contents: Native middle-level C interface to LAPACK function zgesvj
+* Author: Intel Corporation
+* Generated November, 2011
+*****************************************************************************/
+
+#include "lapacke_utils.h"
+
+lapack_int LAPACKE_zgesvj_work( int matrix_layout, char joba, char jobu,
+ char jobv, lapack_int m, lapack_int n,
+ lapack_complex_double* a, lapack_int lda,
+ double* sva, lapack_int mv,
+ lapack_complex_double* v, lapack_int ldv,
+ lapack_complex_double* cwork, lapack_int lwork,
+ double* rwork, lapack_int lrwork )
+{
+ lapack_int info = 0;
+ if( matrix_layout == LAPACK_COL_MAJOR ) {
+ /* Call LAPACK function and adjust info */
+ LAPACK_zgesvj( &joba, &jobu, &jobv, &m, &n, a, &lda, sva, &mv, v, &ldv,
+ cwork, &lwork, rwork, &lrwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+ lapack_int nrows_v = LAPACKE_lsame( jobv, 'v' ) ? n :
+ ( LAPACKE_lsame( jobv, 'a' ) ? mv : 1);
+ lapack_int lda_t = MAX(1,m);
+ lapack_int ldv_t = MAX(1,nrows_v);
+ lapack_complex_double* a_t = NULL;
+ lapack_complex_double* v_t = NULL;
+ /* Check leading dimension(s) */
+ if( lda < n ) {
+ info = -8;
+ LAPACKE_xerbla( "LAPACKE_zgesvj_work", info );
+ return info;
+ }
+ if( ldv < n ) {
+ info = -12;
+ LAPACKE_xerbla( "LAPACKE_zgesvj_work", info );
+ return info;
+ }
+ /* Allocate memory for temporary array(s) */
+ a_t = (lapack_complex_double*)
+ LAPACKE_malloc( sizeof(lapack_complex_double) * lda_t * MAX(1,n) );
+ if( a_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_0;
+ }
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ v_t = (lapack_complex_double*)
+ LAPACKE_malloc( sizeof(lapack_complex_double) * ldv_t * MAX(1,n) );
+ if( v_t == NULL ) {
+ info = LAPACK_TRANSPOSE_MEMORY_ERROR;
+ goto exit_level_1;
+ }
+ }
+ /* Transpose input matrices */
+ LAPACKE_zge_trans( matrix_layout, m, n, a, lda, a_t, lda_t );
+ if( LAPACKE_lsame( jobv, 'a' ) ) {
+ LAPACKE_zge_trans( matrix_layout, nrows_v, n, v, ldv, v_t, ldv_t );
+ }
+ /* Call LAPACK function and adjust info */
+ LAPACK_zgesvj( &joba, &jobu, &jobv, &m, &n, a_t, &lda_t, sva, &mv, v_t,
+ &ldv_t, cwork, &lwork, rwork, &lrwork, &info );
+ if( info < 0 ) {
+ info = info - 1;
+ }
+ /* Transpose output matrices */
+ LAPACKE_zge_trans( LAPACK_COL_MAJOR, m, n, a_t, lda_t, a, lda );
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ LAPACKE_zge_trans( LAPACK_COL_MAJOR, nrows_v, n, v_t, ldv_t, v,
+ ldv );
+ }
+ /* Release memory and exit */
+ if( LAPACKE_lsame( jobv, 'a' ) || LAPACKE_lsame( jobv, 'v' ) ) {
+ LAPACKE_free( v_t );
+ }
+exit_level_1:
+ LAPACKE_free( a_t );
+exit_level_0:
+ if( info == LAPACK_TRANSPOSE_MEMORY_ERROR ) {
+ LAPACKE_xerbla( "LAPACKE_zgesvj_work", info );
+ }
+ } else {
+ info = -1;
+ LAPACKE_xerbla( "LAPACKE_zgesvj_work", info );
+ }
+ return info;
+}