SCIP-SDP
3.1.0
|
interface methods for eigenvector computation and matrix multiplication using different versions of LAPACK and BLAS More...
Go to the source code of this file.
Functions | |
EXTERN SCIP_RETCODE | SCIPlapackComputeIthEigenvalue (BMS_BUFMEM *bufmem, SCIP_Bool geteigenvectors, int n, SCIP_Real *A, int i, SCIP_Real *eigenvalue, SCIP_Real *eigenvector) |
EXTERN SCIP_RETCODE | SCIPlapackComputeEigenvectorDecomposition (BMS_BUFMEM *bufmem, int n, SCIP_Real *A, SCIP_Real *eigenvalues, SCIP_Real *eigenvectors) |
EXTERN SCIP_RETCODE | SCIPlapackMatrixVectorMult (int nrows, int ncols, SCIP_Real *matrix, SCIP_Real *vector, SCIP_Real *result) |
EXTERN SCIP_RETCODE | SCIPlapackMatrixMatrixMult (int nrowsA, int ncolsA, SCIP_Real *matrixA, SCIP_Bool transposeA, int nrowsB, int ncolsB, SCIP_Real *matrixB, SCIP_Bool transposeB, SCIP_Real *result) |
interface methods for eigenvector computation and matrix multiplication using different versions of LAPACK and BLAS
This file is used to call the LAPACK routine DSYEVR (double-symmetric-eigenvector computation) and the BLAS routine DGEMV (double-general-matrix-vector multiplication). It is needed because different SDP-solvers need different BLAS/LAPACK-versions with different data types (for example long long int for Openblas/SDPA vs. int for ATLAS/DSDP).
Definition in file lapack.h.
EXTERN SCIP_RETCODE SCIPlapackComputeIthEigenvalue | ( | BMS_BUFMEM * | bufmem, |
SCIP_Bool | geteigenvectors, | ||
int | n, | ||
SCIP_Real * | A, | ||
int | i, | ||
SCIP_Real * | eigenvalue, | ||
SCIP_Real * | eigenvector | ||
) |
computes the i-th eigenvalue of a symmetric matrix using LAPACK, where 1 is the smallest and n the largest, matrix has to be given with all entries
bufmem | buffer memory |
geteigenvectors | should also the eigenvectors be computed? |
n | size of matrix |
A | matrix for which eigenvalues should be computed |
i | index of eigenvalue to be computed |
eigenvalue | pointer to store eigenvalue |
eigenvector | pointer to store eigenvector |
Referenced by checkFixedFeasibilitySdp(), cutUsingEigenvector(), SCIP_DECL_CONSLOCK(), SCIPconsSdpCheckSdpCons(), and SCIPsdpSolcheckerCheck().
EXTERN SCIP_RETCODE SCIPlapackComputeEigenvectorDecomposition | ( | BMS_BUFMEM * | bufmem, |
int | n, | ||
SCIP_Real * | A, | ||
SCIP_Real * | eigenvalues, | ||
SCIP_Real * | eigenvectors | ||
) |
computes the eigenvector decomposition of a symmetric matrix using LAPACK
bufmem | buffer memory |
n | size of matrix |
A | matrix for which the decomposition should be computed |
eigenvalues | pointer to store eigenvalues (should be length n) |
eigenvectors | pointer to store eigenvectors (should be length n*n), eigenvectors are given as rows |
Definition at line 219 of file lapack_dsdp.c.
References BMS_CALL, F77_FUNC, and SCIP_RealTOINT.
Referenced by calcRelax().
EXTERN SCIP_RETCODE SCIPlapackMatrixVectorMult | ( | int | nrows, |
int | ncols, | ||
SCIP_Real * | matrix, | ||
SCIP_Real * | vector, | ||
SCIP_Real * | result | ||
) |
performs matrix-vector-multiplication using BLAS
nrows | number of rows in matrix |
ncols | number of cols in matrix |
matrix | the matrix we want to multiply |
vector | vector we want to multiply with the matrix |
result | pointer to store the resulting vector |
Definition at line 321 of file lapack_dsdp.c.
References F77_FUNC.
Referenced by cutUsingEigenvector().
EXTERN SCIP_RETCODE SCIPlapackMatrixMatrixMult | ( | int | nrowsA, |
int | ncolsA, | ||
SCIP_Real * | matrixA, | ||
SCIP_Bool | transposeA, | ||
int | nrowsB, | ||
int | ncolsB, | ||
SCIP_Real * | matrixB, | ||
SCIP_Bool | transposeB, | ||
SCIP_Real * | result | ||
) |
performs matrix-matrix-multiplication A*B using BLAS
nrowsA | number of rows in matrix A |
ncolsA | number of cols in matrix A |
matrixA | matrix A given as nrowsA * ncolsA array |
transposeA | should matrix A be transposed before multiplication? |
nrowsB | number of rows in matrix B |
ncolsB | number of cols in matrix B |
matrixB | matrix B given as ncolsA * ncolsB array |
transposeB | should matrix B be transposed before multiplication? |
result | pointer to nrowsA * nrowsB array to store the resulting matrix |
Definition at line 359 of file lapack_dsdp.c.
References F77_FUNC.
Referenced by calcRelax().