mxlib
c++ tools for analyzing astronomical data and other tasks by Jared R. Males. [git repo]
Loading...
Searching...
No Matches
templateLapack.hpp File Reference

Declares and defines templatized wrappers for the Lapack library. More...

Declares and defines templatized wrappers for the Lapack library.

Definition in file templateLapack.hpp.

#include <complex>
#include <lapacke.h>

Go to the source code of this file.

Namespaces

namespace  mx
 The mxlib c++ namespace.

Functions

template<typename dataT>
dataT mx::math::lamch (char CMACH)
 Determine machine parameters.
template<typename dataT>
MXLAPACK_INT mx::math::potrf (char UPLO, MXLAPACK_INT N, dataT *A, MXLAPACK_INT LDA, MXLAPACK_INT &INFO)
 Compute the Cholesky factorization of a real symmetric positive definite matrix A.
template<typename dataT>
MXLAPACK_INT mx::math::sytrd (char UPLO, MXLAPACK_INT N, dataT *A, MXLAPACK_INT LDA, dataT *D, dataT *E, dataT *TAU, dataT *WORK, MXLAPACK_INT LWORK, MXLAPACK_INT INFO)
 Reduce a real symmetric matrix to real symmetric tridiagonal form by an orthogonal similarity transformation.
template<typename dataT>
MXLAPACK_INT mx::math::laed9 (dataT *D, dataT *Q, dataT *S, MXLAPACK_INT K, MXLAPACK_INT KSTART, MXLAPACK_INT KSTOP, MXLAPACK_INT N, MXLAPACK_INT LDQ, dataT RHO, dataT *DLAMDA, dataT *W, MXLAPACK_INT LDS)
 Solve selected roots of a diagonal-plus-rank-one secular equation and form its eigenvectors.
template<>
MXLAPACK_INT mx::math::laed9< float > (float *D, float *Q, float *S, MXLAPACK_INT K, MXLAPACK_INT KSTART, MXLAPACK_INT KSTOP, MXLAPACK_INT N, MXLAPACK_INT LDQ, float RHO, float *DLAMDA, float *W, MXLAPACK_INT LDS)
 Float specialization of laed9, a wrapper for LAPACK SLAED9.
template<>
MXLAPACK_INT mx::math::laed9< double > (double *D, double *Q, double *S, MXLAPACK_INT K, MXLAPACK_INT KSTART, MXLAPACK_INT KSTOP, MXLAPACK_INT N, MXLAPACK_INT LDQ, double RHO, double *DLAMDA, double *W, MXLAPACK_INT LDS)
 Double specialization of laed9, a wrapper for LAPACK DLAED9.
template<typename dataT>
MXLAPACK_INT mx::math::syevr (char JOBZ, char RANGE, char UPLO, MXLAPACK_INT N, dataT *A, MXLAPACK_INT LDA, dataT VL, dataT VU, MXLAPACK_INT IL, MXLAPACK_INT IU, dataT ABSTOL, MXLAPACK_INT *M, dataT *W, dataT *Z, MXLAPACK_INT LDZ, MXLAPACK_INT *ISUPPZ, dataT *WORK, MXLAPACK_INT LWORK, MXLAPACK_INT *IWORK, MXLAPACK_INT LIWORK)
 Compute selected eigenvalues and, optionally, eigenvectors of a real symmetric matrix.
template<typename dataT>
MXLAPACK_INT mx::math::gesvd (char JOBU, char JOBVT, MXLAPACK_INT M, MXLAPACK_INT N, dataT *A, MXLAPACK_INT LDA, dataT *S, dataT *U, MXLAPACK_INT LDU, dataT *VT, MXLAPACK_INT LDVT, dataT *WORK, MXLAPACK_INT LWORK)
 Compute the singular value decomposition (SVD) of a real matrix.
template<typename dataT>
MXLAPACK_INT mx::math::gesdd (char JOBZ, MXLAPACK_INT M, MXLAPACK_INT N, dataT *A, MXLAPACK_INT LDA, dataT *S, dataT *U, MXLAPACK_INT LDU, dataT *VT, MXLAPACK_INT LDVT, dataT *WORK, MXLAPACK_INT LWORK, MXLAPACK_INT *IWORK)
 Compute the singular value decomposition (SVD) of a real matrix with GESDD.

Function Documentation

◆ laed9< double >()

template<>
MXLAPACK_INT mx::math::laed9< double > ( double * D,
double * Q,
double * S,
MXLAPACK_INT K,
MXLAPACK_INT KSTART,
MXLAPACK_INT KSTOP,
MXLAPACK_INT N,
MXLAPACK_INT LDQ,
double RHO,
double * DLAMDA,
double * W,
MXLAPACK_INT LDS )

Double specialization of laed9, a wrapper for LAPACK DLAED9.

[in] leading dimension of S, at least max(1,K)

Parameters
[out]DN-element array of selected updated eigenvalues
[out]QLDQ-by-N secular-equation workspace produced by LAPACK
[out]SLDS-by-K updated eigenvectors, stored column-wise
[in]Knumber of terms in the secular equation
[in]KSTARTfirst updated eigenvalue, inclusive and one-based
[in]KSTOPlast updated eigenvalue, inclusive and one-based
[in]NQ matrix dimension, at least K
[in]LDQleading dimension of Q, at least max(1,N)
[in]RHOpositive rank-one update weight
[in]DLAMDAK-element array of strictly increasing diagonal poles
[in,out]WK deflation-adjusted update components

Definition at line 246 of file templateLapack.cpp.

References laed9().

◆ laed9< float >()

template<>
MXLAPACK_INT mx::math::laed9< float > ( float * D,
float * Q,
float * S,
MXLAPACK_INT K,
MXLAPACK_INT KSTART,
MXLAPACK_INT KSTOP,
MXLAPACK_INT N,
MXLAPACK_INT LDQ,
float RHO,
float * DLAMDA,
float * W,
MXLAPACK_INT LDS )

Float specialization of laed9, a wrapper for LAPACK SLAED9.

[in] leading dimension of S, at least max(1,K)

Parameters
[out]DN-element array of selected updated eigenvalues
[out]QLDQ-by-N secular-equation workspace produced by LAPACK
[out]SLDS-by-K updated eigenvectors, stored column-wise
[in]Knumber of terms in the secular equation
[in]KSTARTfirst updated eigenvalue, inclusive and one-based
[in]KSTOPlast updated eigenvalue, inclusive and one-based
[in]NQ matrix dimension, at least K
[in]LDQleading dimension of Q, at least max(1,N)
[in]RHOpositive rank-one update weight
[in]DLAMDAK-element array of strictly increasing diagonal poles
[in,out]WK deflation-adjusted update components

Definition at line 225 of file templateLapack.cpp.

References laed9().

◆ potrf()

template<typename dataT>
MXLAPACK_INT mx::math::potrf ( char UPLO,
MXLAPACK_INT N,
dataT * A,
MXLAPACK_INT LDA,
MXLAPACK_INT & INFO )

Compute the Cholesky factorization of a real symmetric positive definite matrix A.

The factorization has the form A = U**T * U, if UPLO = 'U', or A = L * L**T, if UPLO = 'L', where U is an upper triangular matrix and L is lower triangular.

Parameters
[in]UPLO'U' if upper triangle of A is stored, 'L' if lower triangle of A is stored.
[in]NThe order of the matrix A, >= 0.
A[in.out] Symmetric matrix of dimension (LDA,N), stored as specified in UPLO. Note that the opposite half is not referenced.
[in]LDAThe leading dimension of A.
[out]INFO0 on success, < 0 -INFO means the i-th argument had an illegal value, >0 the leading minor of order INFO is not positive definite, and the factorization could not be completed.