Contains the structured matrix C interfaces, see StructuredMatrix.hpp for the C++ interface. More...
#include <stdint.h>#include <complex.h>#include "StrumpackConfig.hpp"#include "mpi.h"
Go to the source code of this file.
Classes | |
| struct | CSPOptions |
| Structure containing options for structured matrix compression, to be used with the C interface. More... | |
Macros | |
| #define | OMPI_SKIP_MPICXX 1 |
Typedefs | |
| typedef struct CSPOptions | CSPOptions |
| typedef void * | CSPStructMat |
| Type representing a structured matrix in the C interface. More... | |
Enumerations | |
| enum | SP_STRUCTURED_TYPE { SP_TYPE_HSS = 0 , SP_TYPE_BLR , SP_TYPE_HODLR , SP_TYPE_HODBF , SP_TYPE_BUTTERFLY , SP_TYPE_LR , SP_TYPE_LOSSY , SP_TYPE_LOSSLESS } |
Functions | |
| void | SP_s_struct_default_options (CSPOptions *opts) |
| void | SP_d_struct_default_options (CSPOptions *opts) |
| void | SP_c_struct_default_options (CSPOptions *opts) |
| void | SP_z_struct_default_options (CSPOptions *opts) |
| void | SP_s_struct_destroy (CSPStructMat *S) |
| void | SP_d_struct_destroy (CSPStructMat *S) |
| void | SP_c_struct_destroy (CSPStructMat *S) |
| void | SP_z_struct_destroy (CSPStructMat *S) |
| int | SP_s_struct_rows (const CSPStructMat S) |
| int | SP_d_struct_rows (const CSPStructMat S) |
| int | SP_c_struct_rows (const CSPStructMat S) |
| int | SP_z_struct_rows (const CSPStructMat S) |
| int | SP_s_struct_cols (const CSPStructMat S) |
| int | SP_d_struct_cols (const CSPStructMat S) |
| int | SP_c_struct_cols (const CSPStructMat S) |
| int | SP_z_struct_cols (const CSPStructMat S) |
| long long int | SP_s_struct_memory (const CSPStructMat S) |
| long long int | SP_d_struct_memory (const CSPStructMat S) |
| long long int | SP_c_struct_memory (const CSPStructMat S) |
| long long int | SP_z_struct_memory (const CSPStructMat S) |
| long long int | SP_s_struct_nonzeros (const CSPStructMat S) |
| long long int | SP_d_struct_nonzeros (const CSPStructMat S) |
| long long int | SP_c_struct_nonzeros (const CSPStructMat S) |
| long long int | SP_z_struct_nonzeros (const CSPStructMat S) |
| int | SP_s_struct_rank (const CSPStructMat S) |
| int | SP_d_struct_rank (const CSPStructMat S) |
| int | SP_c_struct_rank (const CSPStructMat S) |
| int | SP_z_struct_rank (const CSPStructMat S) |
| int | SP_s_struct_from_dense (CSPStructMat *S, int rows, int cols, const float *A, int ldA, const CSPOptions *opts) |
| int | SP_d_struct_from_dense (CSPStructMat *S, int rows, int cols, const double *A, int ldA, const CSPOptions *opts) |
| int | SP_c_struct_from_dense (CSPStructMat *S, int rows, int cols, const float _Complex *A, int ldA, const CSPOptions *opts) |
| int | SP_z_struct_from_dense (CSPStructMat *S, int rows, int cols, const double _Complex *A, int ldA, const CSPOptions *opts) |
| int | SP_s_struct_from_elements (CSPStructMat *S, int rows, int cols, float(int i, int j), const CSPOptions *opts) |
| int | SP_d_struct_from_elements (CSPStructMat *S, int rows, int cols, double(int i, int j), const CSPOptions *opts) |
| int | SP_c_struct_from_elements (CSPStructMat *S, int rows, int cols, float _Complex(int i, int j), const CSPOptions *opts) |
| int | SP_z_struct_from_elements (CSPStructMat *S, int rows, int cols, double _Complex(int i, int j), const CSPOptions *opts) |
| int | SP_s_struct_from_dense2d (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, const float *A, int IA, int JA, int *DESCA, const CSPOptions *opts) |
| int | SP_d_struct_from_dense2d (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, const double *A, int IA, int JA, int *DESCA, const CSPOptions *opts) |
| int | SP_c_struct_from_dense2d (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, const float _Complex *A, int IA, int JA, int *DESCA, const CSPOptions *opts) |
| int | SP_z_struct_from_dense2d (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, const double _Complex *A, int IA, int JA, int *DESCA, const CSPOptions *opts) |
| int | SP_s_struct_from_elements_mpi (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, float A(int i, int j), const CSPOptions *opts) |
| int | SP_d_struct_from_elements_mpi (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, double A(int i, int j), const CSPOptions *opts) |
| int | SP_c_struct_from_elements_mpi (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, float _Complex A(int i, int j), const CSPOptions *opts) |
| int | SP_z_struct_from_elements_mpi (CSPStructMat *S, const MPI_Comm comm, int rows, int cols, double _Complex A(int i, int j), const CSPOptions *opts) |
| int | SP_s_struct_local_rows (const CSPStructMat S) |
| int | SP_d_struct_local_rows (const CSPStructMat S) |
| int | SP_c_struct_local_rows (const CSPStructMat S) |
| int | SP_z_struct_local_rows (const CSPStructMat S) |
| int | SP_s_struct_begin_row (const CSPStructMat S) |
| int | SP_d_struct_begin_row (const CSPStructMat S) |
| int | SP_c_struct_begin_row (const CSPStructMat S) |
| int | SP_z_struct_begin_row (const CSPStructMat S) |
| int | SP_s_struct_mult (const CSPStructMat S, char trans, int m, const float *B, int ldB, float *C, int ldC) |
| int | SP_d_struct_mult (const CSPStructMat S, char trans, int m, const double *B, int ldB, double *C, int ldC) |
| int | SP_c_struct_mult (const CSPStructMat S, char trans, int m, const float _Complex *B, int ldB, float _Complex *C, int ldC) |
| int | SP_z_struct_mult (const CSPStructMat S, char trans, int m, const double _Complex *B, int ldB, double _Complex *C, int ldC) |
| int | SP_s_struct_factor (CSPStructMat S) |
| int | SP_d_struct_factor (CSPStructMat S) |
| int | SP_c_struct_factor (CSPStructMat S) |
| int | SP_z_struct_factor (CSPStructMat S) |
| int | SP_s_struct_solve (const CSPStructMat S, int nrhs, float *B, int ldB) |
| int | SP_d_struct_solve (const CSPStructMat S, int nrhs, double *B, int ldB) |
| int | SP_c_struct_solve (const CSPStructMat S, int nrhs, float _Complex *B, int ldB) |
| int | SP_z_struct_solve (const CSPStructMat S, int nrhs, double _Complex *B, int ldB) |
| int | SP_s_struct_shift (CSPStructMat S, float s) |
| int | SP_d_struct_shift (CSPStructMat S, double s) |
| int | SP_c_struct_shift (CSPStructMat S, float _Complex s) |
| int | SP_z_struct_shift (CSPStructMat S, double _Complex s) |
Contains the structured matrix C interfaces, see StructuredMatrix.hpp for the C++ interface.
| typedef void* CSPStructMat |
Type representing a structured matrix in the C interface.
See any of the SP_x_struct... routines. Internally this will be represented as a structured::StructuredMatrix object (implemented in C++).
| enum SP_STRUCTURED_TYPE |
Enumeration of possible structured matrix types. See structured::Type
| int SP_c_struct_begin_row | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the first row assigned to this process.
| int SP_c_struct_cols | ( | const CSPStructMat | S | ) |
Return number of cols in the structured matrix.
| void SP_c_struct_default_options | ( | CSPOptions * | opts | ) |
Fill the options structure with default values. Use this for single precision, complex.
| opts | Pointer to CSPOptions structure |
| void SP_c_struct_destroy | ( | CSPStructMat * | S | ) |
Destroy the structured matrix. Use this for a structured matrix created with one of the SP_c_struct_... routines, i.e., single precision, complex.
| S | Pointer to CSPStructMat object. |
| int SP_c_struct_factor | ( | CSPStructMat | S | ) |
Compute a factorization of the structured matrix. Factors are stored internally. This needs to be called before calling SP_c_struct_solve, and after constructing the structured matrix.
| S | structured matrix |
| int SP_c_struct_from_dense | ( | CSPStructMat * | S, |
| int | rows, | ||
| int | cols, | ||
| const float _Complex * | A, | ||
| int | ldA, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix from a dense (column major) matrix. Use this for single precision, complex.
| S | Pointer to CSPStructMat object, which will be constructed. |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Pointer to data of A, column major |
| ldA | leading dimension of A |
| opts | Options structure, needs to be initialized by the user. |
| int SP_c_struct_from_elements_mpi | ( | CSPStructMat * | S, |
| const MPI_Comm | comm, | ||
| int | rows, | ||
| int | cols, | ||
| float _Complex | Aint i, int j, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix using a routine to compute individual elements, using MPI. Should be called by all ranks in the communicator.
| S | Pointer to CSPStructMat object, which will be constructed. |
| comm | communicator |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Matrix element routine, returning A(i,j) |
| opts | Options structure, needs to be initialized by the user. |
| int SP_c_struct_local_rows | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the local number of rows assigned to this process.
| long long int SP_c_struct_memory | ( | const CSPStructMat | S | ) |
Return the total amount of memory used by this matrix, in bytes.
| int SP_c_struct_mult | ( | const CSPStructMat | S, |
| char | trans, | ||
| int | m, | ||
| const float _Complex * | B, | ||
| int | ldB, | ||
| float _Complex * | C, | ||
| int | ldC | ||
| ) |
Multiply a structured matrix with a dense matrix (or vector):
C = S*B if trans == 'N' or 'n'
C = S^T*B if trans == 'T' or 't'
C = S^C*B if trans == 'C' or 'c'
C should have rows(S) rows if trans == 'N'/'n', else cols(S). B should have cols(S) rows if trans == 'N'/'n', else rows(S).
| S | structured matrix |
| trans | (conjugate-)transpose of S? |
| m | number of columns in B and C |
| B | pointer to data of B (column major) |
| ldB | leading dimension for B |
| C | pointer to matrix C (column major) |
| ldC | leading dimension for C |
| long long int SP_c_struct_nonzeros | ( | const CSPStructMat | S | ) |
Return the total number of nonzeros stored by this matrix.
| int SP_c_struct_rank | ( | const CSPStructMat | S | ) |
Return the maximum rank of this matrix over all low-rank compressed blocks.
| int SP_c_struct_rows | ( | const CSPStructMat | S | ) |
Return number of rows in the structured matrix.
| int SP_c_struct_shift | ( | CSPStructMat | S, |
| float _Complex | s | ||
| ) |
Apply a shift to the diagonal of this matrix. Ie, S += s*I, with I the identity matrix. If this is called after calling factor, then the factors are not updated. To solve a linear system with the shifted matrix, you need to call factor again.
| S | structured matrix |
| s | Shift to be applied to the diagonal. |
| int SP_c_struct_solve | ( | const CSPStructMat | S, |
| int | nrhs, | ||
| float _Complex * | B, | ||
| int | ldB | ||
| ) |
Solve a system of linear equations with a structured matrix, with possibly multiple right-hand sides (column major). The solution overwrites the right-hand side. This should be called after SP_c_struct_factor. This can be called multiple times.
| S | structured matrix |
| nrhs | number of right-hand sides, columns in B |
| B | right-hand side, will be overwritten by the solution |
| ldB | leading dimension of B |
| int SP_d_struct_begin_row | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the first row assigned to this process.
| int SP_d_struct_cols | ( | const CSPStructMat | S | ) |
Return number of cols in the structured matrix.
| void SP_d_struct_default_options | ( | CSPOptions * | opts | ) |
Fill the options structure with default values. Use this for double precision, real.
| opts | Pointer to CSPOptions structure |
| void SP_d_struct_destroy | ( | CSPStructMat * | S | ) |
Destroy the structured matrix. Use this for a structured matrix created with one of the SP_d_struct_... routines, i.e., double precision, real.
| S | Pointer to CSPStructMat object. |
| int SP_d_struct_factor | ( | CSPStructMat | S | ) |
Compute a factorization of the structured matrix. Factors are stored internally. This needs to be called before calling SP_d_struct_solve, and after constructing the structured matrix.
| S | structured matrix |
| int SP_d_struct_from_dense | ( | CSPStructMat * | S, |
| int | rows, | ||
| int | cols, | ||
| const double * | A, | ||
| int | ldA, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix from a dense (column major) matrix. Use this for double precision, real.
| S | Pointer to CSPStructMat object, which will be constructed. |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Pointer to data of A, column major |
| ldA | leading dimension of A |
| opts | Options structure, needs to be initialized by the user. |
| int SP_d_struct_from_elements_mpi | ( | CSPStructMat * | S, |
| const MPI_Comm | comm, | ||
| int | rows, | ||
| int | cols, | ||
| double | Aint i, int j, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix using a routine to compute individual elements, using MPI. Should be called by all ranks in the communicator.
| S | Pointer to CSPStructMat object, which will be constructed. |
| comm | communicator |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Matrix element routine, returning A(i,j) |
| opts | Options structure, needs to be initialized by the user. |
| int SP_d_struct_local_rows | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the local number of rows assigned to this process.
| long long int SP_d_struct_memory | ( | const CSPStructMat | S | ) |
Return the total amount of memory used by this matrix, in bytes.
| int SP_d_struct_mult | ( | const CSPStructMat | S, |
| char | trans, | ||
| int | m, | ||
| const double * | B, | ||
| int | ldB, | ||
| double * | C, | ||
| int | ldC | ||
| ) |
Multiply a structured matrix with a dense matrix (or vector):
C = S*B if trans == 'N' or 'n'
C = S^T*B if trans == 'T' or 't'
C = S^C*B if trans == 'C' or 'c'
C should have rows(S) rows if trans == 'N'/'n', else cols(S). B should have cols(S) rows if trans == 'N'/'n', else rows(S).
| S | structured matrix |
| trans | (conjugate-)transpose of S? |
| m | number of columns in B and C |
| B | pointer to data of B (column major) |
| ldB | leading dimension for B |
| C | pointer to matrix C (column major) |
| ldC | leading dimension for C |
| long long int SP_d_struct_nonzeros | ( | const CSPStructMat | S | ) |
Return the total number of nonzeros stored by this matrix.
| int SP_d_struct_rank | ( | const CSPStructMat | S | ) |
Return the maximum rank of this matrix over all low-rank compressed blocks.
| int SP_d_struct_rows | ( | const CSPStructMat | S | ) |
Return number of rows in the structured matrix.
| int SP_d_struct_shift | ( | CSPStructMat | S, |
| double | s | ||
| ) |
Apply a shift to the diagonal of this matrix. Ie, S += s*I, with I the identity matrix. If this is called after calling factor, then the factors are not updated. To solve a linear system with the shifted matrix, you need to call factor again.
| S | structured matrix |
| s | Shift to be applied to the diagonal. |
| int SP_d_struct_solve | ( | const CSPStructMat | S, |
| int | nrhs, | ||
| double * | B, | ||
| int | ldB | ||
| ) |
Solve a system of linear equations with a structured matrix, with possibly multiple right-hand sides (column major). The solution overwrites the right-hand side. This should be called after SP_d_struct_factor. This can be called multiple times.
| S | structured matrix |
| nrhs | number of right-hand sides, columns in B |
| B | right-hand side, will be overwritten by the solution |
| ldB | leading dimension of B |
| int SP_s_struct_begin_row | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the first row assigned to this process.
| int SP_s_struct_cols | ( | const CSPStructMat | S | ) |
Return number of cols in the structured matrix.
| void SP_s_struct_default_options | ( | CSPOptions * | opts | ) |
Fill the options structure with default values. Use this for single precision, real.
| opts | Pointer to CSPOptions structure |
| void SP_s_struct_destroy | ( | CSPStructMat * | S | ) |
Destroy the structured matrix. Use this for a structured matrix created with one of the SP_s_struct_... routines, i.e., single precision, real.
| S | Pointer to CSPStructMat object. |
| int SP_s_struct_factor | ( | CSPStructMat | S | ) |
Compute a factorization of the structured matrix. Factors are stored internally. This needs to be called before calling SP_s_struct_solve, and after constructing the structured matrix.
| S | structured matrix |
| int SP_s_struct_from_dense | ( | CSPStructMat * | S, |
| int | rows, | ||
| int | cols, | ||
| const float * | A, | ||
| int | ldA, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix from a dense (column major) matrix. Use this for single precision, real.
| S | Pointer to CSPStructMat object, which will be constructed. |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Pointer to data of A, column major |
| ldA | leading dimension of A |
| opts | Options structure, needs to be initialized by the user. |
| int SP_s_struct_from_elements_mpi | ( | CSPStructMat * | S, |
| const MPI_Comm | comm, | ||
| int | rows, | ||
| int | cols, | ||
| float | Aint i, int j, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix using a routine to compute individual elements, using MPI. Should be called by all ranks in the communicator.
| S | Pointer to CSPStructMat object, which will be constructed. |
| comm | communicator |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Matrix element routine, returning A(i,j) |
| opts | Options structure, needs to be initialized by the user. |
| int SP_s_struct_local_rows | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the local number of rows assigned to this process.
| long long int SP_s_struct_memory | ( | const CSPStructMat | S | ) |
Return the total amount of memory used by this matrix, in bytes.
| int SP_s_struct_mult | ( | const CSPStructMat | S, |
| char | trans, | ||
| int | m, | ||
| const float * | B, | ||
| int | ldB, | ||
| float * | C, | ||
| int | ldC | ||
| ) |
Multiply a structured matrix with a dense matrix (or vector):
C = S*B if trans == 'N' or 'n'
C = S^T*B if trans == 'T' or 't'
C = S^C*B if trans == 'C' or 'c'
C should have rows(S) rows if trans == 'N'/'n', else cols(S). B should have cols(S) rows if trans == 'N'/'n', else rows(S).
| S | structured matrix |
| trans | (conjugate-)transpose of S? |
| m | number of columns in B and C |
| B | pointer to data of B (column major) |
| ldB | leading dimension for B |
| C | pointer to matrix C (column major) |
| ldC | leading dimension for C |
| long long int SP_s_struct_nonzeros | ( | const CSPStructMat | S | ) |
Return the total number of nonzeros stored by this matrix.
| int SP_s_struct_rank | ( | const CSPStructMat | S | ) |
Return the maximum rank of this matrix over all low-rank compressed blocks.
| int SP_s_struct_rows | ( | const CSPStructMat | S | ) |
Return number of rows in the structured matrix.
| int SP_s_struct_shift | ( | CSPStructMat | S, |
| float | s | ||
| ) |
Apply a shift to the diagonal of this matrix. Ie, S += s*I, with I the identity matrix. If this is called after calling factor, then the factors are not updated. To solve a linear system with the shifted matrix, you need to call factor again.
| S | structured matrix |
| s | Shift to be applied to the diagonal. |
| int SP_s_struct_solve | ( | const CSPStructMat | S, |
| int | nrhs, | ||
| float * | B, | ||
| int | ldB | ||
| ) |
Solve a system of linear equations with a structured matrix, with possibly multiple right-hand sides (column major). The solution overwrites the right-hand side. This should be called after SP_s_struct_factor. This can be called multiple times.
| S | structured matrix |
| nrhs | number of right-hand sides, columns in B |
| B | right-hand side, will be overwritten by the solution |
| ldB | leading dimension of B |
| int SP_z_struct_begin_row | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the first row assigned to this process.
| int SP_z_struct_cols | ( | const CSPStructMat | S | ) |
Return number of cols in the structured matrix.
| void SP_z_struct_default_options | ( | CSPOptions * | opts | ) |
Fill the options structure with default values. Use this for double precision, complex.
| opts | Pointer to CSPOptions structure |
| void SP_z_struct_destroy | ( | CSPStructMat * | S | ) |
Destroy the structured matrix. Use this for a structured matrix created with one of the SP_z_struct_... routines, i.e., double precision, complex.
| S | Pointer to CSPStructMat object. |
| int SP_z_struct_factor | ( | CSPStructMat | S | ) |
Compute a factorization of the structured matrix. Factors are stored internally. This needs to be called before calling SP_z_struct_solve, and after constructing the structured matrix.
| S | structured matrix |
| int SP_z_struct_from_dense | ( | CSPStructMat * | S, |
| int | rows, | ||
| int | cols, | ||
| const double _Complex * | A, | ||
| int | ldA, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix from a dense (column major) matrix. Use this for double precision, complex.
| S | Pointer to CSPStructMat object, which will be constructed. |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Pointer to data of A, column major |
| ldA | leading dimension of A |
| opts | Options structure, needs to be initialized by the user. |
| int SP_z_struct_from_elements_mpi | ( | CSPStructMat * | S, |
| const MPI_Comm | comm, | ||
| int | rows, | ||
| int | cols, | ||
| double _Complex | Aint i, int j, | ||
| const CSPOptions * | opts | ||
| ) |
Construct a structured matrix using a routine to compute individual elements, using MPI. Should be called by all ranks in the communicator.
| S | Pointer to CSPStructMat object, which will be constructed. |
| comm | communicator |
| rows | Number of rows in A |
| cols | Number of columns in A |
| A | Matrix element routine, returning A(i,j) |
| opts | Options structure, needs to be initialized by the user. |
| int SP_z_struct_local_rows | ( | const CSPStructMat | S | ) |
For a 1d distributed structured matrix, return the local number of rows assigned to this process.
| long long int SP_z_struct_memory | ( | const CSPStructMat | S | ) |
Return the total amount of memory used by this matrix, in bytes.
| int SP_z_struct_mult | ( | const CSPStructMat | S, |
| char | trans, | ||
| int | m, | ||
| const double _Complex * | B, | ||
| int | ldB, | ||
| double _Complex * | C, | ||
| int | ldC | ||
| ) |
Multiply a structured matrix with a dense matrix (or vector):
C = S*B if trans == 'N' or 'n'
C = S^T*B if trans == 'T' or 't'
C = S^C*B if trans == 'C' or 'c'
C should have rows(S) rows if trans == 'N'/'n', else cols(S). B should have cols(S) rows if trans == 'N'/'n', else rows(S).
| S | structured matrix |
| trans | (conjugate-)transpose of S? |
| m | number of columns in B and C |
| B | pointer to data of B (column major) |
| ldB | leading dimension for B |
| C | pointer to matrix C (column major) |
| ldC | leading dimension for C |
| long long int SP_z_struct_nonzeros | ( | const CSPStructMat | S | ) |
Return the total number of nonzeros stored by this matrix.
| int SP_z_struct_rank | ( | const CSPStructMat | S | ) |
Return the maximum rank of this matrix over all low-rank compressed blocks.
| int SP_z_struct_rows | ( | const CSPStructMat | S | ) |
Return number of rows in the structured matrix.
| int SP_z_struct_shift | ( | CSPStructMat | S, |
| double _Complex | s | ||
| ) |
Apply a shift to the diagonal of this matrix. Ie, S += s*I, with I the identity matrix. If this is called after calling factor, then the factors are not updated. To solve a linear system with the shifted matrix, you need to call factor again.
| S | structured matrix |
| s | Shift to be applied to the diagonal. |
| int SP_z_struct_solve | ( | const CSPStructMat | S, |
| int | nrhs, | ||
| double _Complex * | B, | ||
| int | ldB | ||
| ) |
Solve a system of linear equations with a structured matrix, with possibly multiple right-hand sides (column major). The solution overwrites the right-hand side. This should be called after SP_z_struct_factor. This can be called multiple times.
| S | structured matrix |
| nrhs | number of right-hand sides, columns in B |
| B | right-hand side, will be overwritten by the solution |
| ldB | leading dimension of B |