MAGMA
2.3.0
Matrix Algebra for GPU and Multicore Architectures

Functions  
magma_int_t  magma_cheevd (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaFloatComplex *A, magma_int_t lda, float *w, magmaFloatComplex *work, magma_int_t lwork, float *rwork, magma_int_t lrwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
CHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A. More...  
magma_int_t  magma_cheevd_gpu (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaFloatComplex_ptr dA, magma_int_t ldda, float *w, magmaFloatComplex *wA, magma_int_t ldwa, magmaFloatComplex *work, magma_int_t lwork, float *rwork, magma_int_t lrwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
CHEEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A. More...  
magma_int_t  magma_cheevd_m (magma_int_t ngpu, magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaFloatComplex *A, magma_int_t lda, float *w, magmaFloatComplex *work, magma_int_t lwork, float *rwork, magma_int_t lrwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
CHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A. More...  
magma_int_t  magma_dsyevd (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, double *A, magma_int_t lda, double *w, double *work, magma_int_t lwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
DSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. More...  
magma_int_t  magma_dsyevd_gpu (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaDouble_ptr dA, magma_int_t ldda, double *w, double *wA, magma_int_t ldwa, double *work, magma_int_t lwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
DSYEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. More...  
magma_int_t  magma_dsyevd_m (magma_int_t ngpu, magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, double *A, magma_int_t lda, double *w, double *work, magma_int_t lwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
DSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. More...  
magma_int_t  magma_ssyevd (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, float *A, magma_int_t lda, float *w, float *work, magma_int_t lwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
SSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. More...  
magma_int_t  magma_ssyevd_gpu (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaFloat_ptr dA, magma_int_t ldda, float *w, float *wA, magma_int_t ldwa, float *work, magma_int_t lwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
SSYEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. More...  
magma_int_t  magma_ssyevd_m (magma_int_t ngpu, magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, float *A, magma_int_t lda, float *w, float *work, magma_int_t lwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
SSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. More...  
magma_int_t  magma_zheevd (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaDoubleComplex *A, magma_int_t lda, double *w, magmaDoubleComplex *work, magma_int_t lwork, double *rwork, magma_int_t lrwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
ZHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A. More...  
magma_int_t  magma_zheevd_gpu (magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaDoubleComplex_ptr dA, magma_int_t ldda, double *w, magmaDoubleComplex *wA, magma_int_t ldwa, magmaDoubleComplex *work, magma_int_t lwork, double *rwork, magma_int_t lrwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
ZHEEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A. More...  
magma_int_t  magma_zheevd_m (magma_int_t ngpu, magma_vec_t jobz, magma_uplo_t uplo, magma_int_t n, magmaDoubleComplex *A, magma_int_t lda, double *w, magmaDoubleComplex *work, magma_int_t lwork, double *rwork, magma_int_t lrwork, magma_int_t *iwork, magma_int_t liwork, magma_int_t *info) 
ZHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A. More...  
magma_int_t magma_cheevd  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaFloatComplex *  A,  
magma_int_t  lda,  
float *  w,  
magmaFloatComplex *  work,  
magma_int_t  lwork,  
float *  rwork,  
magma_int_t  lrwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
CHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  COMPLEX array, dimension (LDA, N) On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  REAL array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) COMPLEX array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  rwork  (workspace) REAL array, dimension (LRWORK) On exit, if INFO = 0, RWORK[0] returns the optimal LRWORK. 
[in]  lrwork  INTEGER The dimension of the array RWORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_cheevd_gpu  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaFloatComplex_ptr  dA,  
magma_int_t  ldda,  
float *  w,  
magmaFloatComplex *  wA,  
magma_int_t  ldwa,  
magmaFloatComplex *  work,  
magma_int_t  lwork,  
float *  rwork,  
magma_int_t  lrwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
CHEEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  dA  COMPLEX array on the GPU, dimension (LDDA, N). On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  ldda  INTEGER The leading dimension of the array DA. LDDA >= max(1,N). 
[out]  w  REAL array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
wA  (workspace) COMPLEX array, dimension (LDWA, N)  
[in]  ldwa  INTEGER The leading dimension of the array wA. LDWA >= max(1,N). 
[out]  work  (workspace) COMPLEX array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  rwork  (workspace) REAL array, dimension (LRWORK) On exit, if INFO = 0, RWORK[0] returns the optimal LRWORK. 
[in]  lrwork  INTEGER The dimension of the array RWORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_cheevd_m  (  magma_int_t  ngpu, 
magma_vec_t  jobz,  
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaFloatComplex *  A,  
magma_int_t  lda,  
float *  w,  
magmaFloatComplex *  work,  
magma_int_t  lwork,  
float *  rwork,  
magma_int_t  lrwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
CHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  ngpu  INTEGER Number of GPUs to use. ngpu > 0. 
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  COMPLEX array, dimension (LDA, N) On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  REAL array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) COMPLEX array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  rwork  (workspace) REAL array, dimension (LRWORK) On exit, if INFO = 0, RWORK[0] returns the optimal LRWORK. 
[in]  lrwork  INTEGER The dimension of the array RWORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_dsyevd  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
double *  A,  
magma_int_t  lda,  
double *  w,  
double *  work,  
magma_int_t  lwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
DSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  DOUBLE PRECISION array, dimension (LDA, N) On entry, the symmetric matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  DOUBLE PRECISION array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_dsyevd_gpu  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaDouble_ptr  dA,  
magma_int_t  ldda,  
double *  w,  
double *  wA,  
magma_int_t  ldwa,  
double *  work,  
magma_int_t  lwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
DSYEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  dA  DOUBLE PRECISION array on the GPU, dimension (LDDA, N). On entry, the symmetric matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  ldda  INTEGER The leading dimension of the array DA. LDDA >= max(1,N). 
[out]  w  DOUBLE PRECISION array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
wA  (workspace) DOUBLE PRECISION array, dimension (LDWA, N)  
[in]  ldwa  INTEGER The leading dimension of the array wA. LDWA >= max(1,N). 
[out]  work  (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_dsyevd_m  (  magma_int_t  ngpu, 
magma_vec_t  jobz,  
magma_uplo_t  uplo,  
magma_int_t  n,  
double *  A,  
magma_int_t  lda,  
double *  w,  
double *  work,  
magma_int_t  lwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
DSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  ngpu  INTEGER Number of GPUs to use. ngpu > 0. 
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  DOUBLE PRECISION array, dimension (LDA, N) On entry, the symmetric matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  DOUBLE PRECISION array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_ssyevd  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
float *  A,  
magma_int_t  lda,  
float *  w,  
float *  work,  
magma_int_t  lwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
SSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  REAL array, dimension (LDA, N) On entry, the symmetric matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  REAL array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) REAL array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_ssyevd_gpu  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaFloat_ptr  dA,  
magma_int_t  ldda,  
float *  w,  
float *  wA,  
magma_int_t  ldwa,  
float *  work,  
magma_int_t  lwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
SSYEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  dA  REAL array on the GPU, dimension (LDDA, N). On entry, the symmetric matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  ldda  INTEGER The leading dimension of the array DA. LDDA >= max(1,N). 
[out]  w  REAL array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
wA  (workspace) REAL array, dimension (LDWA, N)  
[in]  ldwa  INTEGER The leading dimension of the array wA. LDWA >= max(1,N). 
[out]  work  (workspace) REAL array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_ssyevd_m  (  magma_int_t  ngpu, 
magma_vec_t  jobz,  
magma_uplo_t  uplo,  
magma_int_t  n,  
float *  A,  
magma_int_t  lda,  
float *  w,  
float *  work,  
magma_int_t  lwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
SSYEVD computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  ngpu  INTEGER Number of GPUs to use. ngpu > 0. 
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  REAL array, dimension (LDA, N) On entry, the symmetric matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  REAL array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) REAL array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_zheevd  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaDoubleComplex *  A,  
magma_int_t  lda,  
double *  w,  
magmaDoubleComplex *  work,  
magma_int_t  lwork,  
double *  rwork,  
magma_int_t  lrwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
ZHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  COMPLEX_16 array, dimension (LDA, N) On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  DOUBLE PRECISION array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) COMPLEX_16 array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  rwork  (workspace) DOUBLE PRECISION array, dimension (LRWORK) On exit, if INFO = 0, RWORK[0] returns the optimal LRWORK. 
[in]  lrwork  INTEGER The dimension of the array RWORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_zheevd_gpu  (  magma_vec_t  jobz, 
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaDoubleComplex_ptr  dA,  
magma_int_t  ldda,  
double *  w,  
magmaDoubleComplex *  wA,  
magma_int_t  ldwa,  
magmaDoubleComplex *  work,  
magma_int_t  lwork,  
double *  rwork,  
magma_int_t  lrwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
ZHEEVD_GPU computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  dA  COMPLEX_16 array on the GPU, dimension (LDDA, N). On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  ldda  INTEGER The leading dimension of the array DA. LDDA >= max(1,N). 
[out]  w  DOUBLE PRECISION array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
wA  (workspace) COMPLEX_16 array, dimension (LDWA, N)  
[in]  ldwa  INTEGER The leading dimension of the array wA. LDWA >= max(1,N). 
[out]  work  (workspace) COMPLEX_16 array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  rwork  (workspace) DOUBLE PRECISION array, dimension (LRWORK) On exit, if INFO = 0, RWORK[0] returns the optimal LRWORK. 
[in]  lrwork  INTEGER The dimension of the array RWORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.
magma_int_t magma_zheevd_m  (  magma_int_t  ngpu, 
magma_vec_t  jobz,  
magma_uplo_t  uplo,  
magma_int_t  n,  
magmaDoubleComplex *  A,  
magma_int_t  lda,  
double *  w,  
magmaDoubleComplex *  work,  
magma_int_t  lwork,  
double *  rwork,  
magma_int_t  lrwork,  
magma_int_t *  iwork,  
magma_int_t  liwork,  
magma_int_t *  info  
) 
ZHEEVD computes all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A.
If eigenvectors are desired, it uses a divide and conquer algorithm.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray XMP, Cray YMP, Cray C90, or Cray2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
[in]  ngpu  INTEGER Number of GPUs to use. ngpu > 0. 
[in]  jobz  magma_vec_t

[in]  uplo  magma_uplo_t

[in]  n  INTEGER The order of the matrix A. N >= 0. 
[in,out]  A  COMPLEX_16 array, dimension (LDA, N) On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading NbyN upper triangular part of A contains the upper triangular part of the matrix A. If UPLO = MagmaLower, the leading NbyN lower triangular part of A contains the lower triangular part of the matrix A. On exit, if JOBZ = MagmaVec, then if INFO = 0, A contains the orthonormal eigenvectors of the matrix A. If JOBZ = MagmaNoVec, then on exit the lower triangle (if UPLO=MagmaLower) or the upper triangle (if UPLO=MagmaUpper) of A, including the diagonal, is destroyed. 
[in]  lda  INTEGER The leading dimension of the array A. LDA >= max(1,N). 
[out]  w  DOUBLE PRECISION array, dimension (N) If INFO = 0, the eigenvalues in ascending order. 
[out]  work  (workspace) COMPLEX_16 array, dimension (MAX(1,LWORK)) On exit, if INFO = 0, WORK[0] returns the optimal LWORK. 
[in]  lwork  INTEGER The length of the array WORK.

[out]  rwork  (workspace) DOUBLE PRECISION array, dimension (LRWORK) On exit, if INFO = 0, RWORK[0] returns the optimal LRWORK. 
[in]  lrwork  INTEGER The dimension of the array RWORK.

[out]  iwork  (workspace) INTEGER array, dimension (MAX(1,LIWORK)) On exit, if INFO = 0, IWORK[0] returns the optimal LIWORK. 
[in]  liwork  INTEGER The dimension of the array IWORK.

[out]  info  INTEGER

Based on contributions by Jeff Rutter, Computer Science Division, University of California at Berkeley, USA
Modified description of INFO. Sven, 16 Feb 05.