StarNEig Library
version v0.1-beta.6
A task-based library for solving nonsymmetric eigenvalue problems
|
Functions for solving non-symmetric standard eigenvalue problems on shared memory systems. More...
Computational functions | |
starneig_error_t | starneig_SEP_SM_Hessenberg (int n, double A[], int ldA, double Q[], int ldQ) |
Computes a Hessenberg decomposition of a general matrix. More... | |
starneig_error_t | starneig_SEP_SM_Schur (int n, double H[], int ldH, double Q[], int ldQ, double real[], double imag[]) |
Computes a Schur decomposition given a Hessenberg decomposition. More... | |
starneig_error_t | starneig_SEP_SM_ReorderSchur (int n, int selected[], double S[], int ldS, double Q[], int ldQ, double real[], double imag[]) |
Reorders selected eigenvalues to the top left corner of a Schur decomposition. More... | |
starneig_error_t | starneig_SEP_SM_Reduce (int n, double A[], int ldA, double Q[], int ldQ, double real[], double imag[], int(*predicate)(double real, double imag, void *arg), void *arg, int selected[], int *num_selected) |
Computes a (reordered) Schur decomposition of a general matrix. More... | |
starneig_error_t | starneig_SEP_SM_Eigenvectors (int n, int selected[], double S[], int ldS, double Q[], int ldQ, double X[], int ldX) |
Computes an eigenvector for each selected eigenvalue. More... | |
Helper functions | |
starneig_error_t | starneig_SEP_SM_Select (int n, double S[], int ldS, int(*predicate)(double real, double imag, void *arg), void *arg, int selected[], int *num_selected) |
Generates a selection array for a Schur matrix using a user-supplied predicate function. More... | |
Expert computational functions | |
starneig_error_t | starneig_SEP_SM_Hessenberg_expert (struct starneig_hessenberg_conf *conf, int n, int begin, int end, double A[], int ldA, double Q[], int ldQ) |
Computes a Hessenberg decomposition of a general matrix. More... | |
starneig_error_t | starneig_SEP_SM_Schur_expert (struct starneig_schur_conf *conf, int n, double H[], int ldH, double Q[], int ldQ, double real[], double imag[]) |
Computes a Schur decomposition given a Hessenberg decomposition. More... | |
starneig_error_t | starneig_SEP_SM_ReorderSchur_expert (struct starneig_reorder_conf *conf, int n, int selected[], double S[], int ldS, double Q[], int ldQ, double real[], double imag[]) |
Reorders selected eigenvalues to the top left corner of a Schur decomposition. More... | |
starneig_error_t | starneig_SEP_SM_Eigenvectors_expert (struct starneig_eigenvectors_conf *conf, int n, int selected[], double S[], int ldS, double Q[], int ldQ, double X[], int ldX) |
Computes an eigenvector for each selected eigenvalue. More... | |
Functions for solving non-symmetric standard eigenvalue problems on shared memory systems.
starneig_error_t starneig_SEP_SM_Hessenberg | ( | int | n, |
double | A[], | ||
int | ldA, | ||
double | Q[], | ||
int | ldQ | ||
) |
Computes a Hessenberg decomposition of a general matrix.
[in] | n | The order of and . |
[in,out] | A | On entry, the general matrix . On exit, the upper Hessenberg matrix . |
[in] | ldA | The leading dimension of . |
[in,out] | Q | On entry, the orthogonal matrix . On exit, the product matrix . |
[in] | ldQ | The leading dimension of . |
starneig_error_t starneig_SEP_SM_Schur | ( | int | n, |
double | H[], | ||
int | ldH, | ||
double | Q[], | ||
int | ldQ, | ||
double | real[], | ||
double | imag[] | ||
) |
Computes a Schur decomposition given a Hessenberg decomposition.
[in] | n | The order of and . |
[in,out] | H | On entry, the upper Hessenberg matrix . On exit, the Schur matrix . |
[in] | ldH | The leading dimension of . |
[in,out] | Q | On entry, the orthogonal matrix . On exit, the product matrix . |
[in] | ldQ | The leading dimension of . |
[out] | real | An array of the same size as containing the real parts of the computed eigenvalues. |
[out] | imag | An array of the same size as containing the imaginary parts of the computed eigenvalues. |
starneig_error_t starneig_SEP_SM_ReorderSchur | ( | int | n, |
int | selected[], | ||
double | S[], | ||
int | ldS, | ||
double | Q[], | ||
int | ldQ, | ||
double | real[], | ||
double | imag[] | ||
) |
Reorders selected eigenvalues to the top left corner of a Schur decomposition.
[in] | n | The order of and . |
[in,out] | selected | The selection array. On entry, the initial positions of the selected eigenvalues. On exit, the final positions of all correctly placed selected eigenvalues. In case of failure, the number of 1's in the output may be less than the number of 1's in the input. |
[in,out] | S | On entry, the Schur matrix . On exit, the updated Schur matrix . |
[in] | ldS | The leading dimension of . |
[in,out] | Q | On entry, the orthogonal matrix . On exit, the product matrix . |
[in] | ldQ | The leading dimension of . |
[out] | real | An array of the same size as containing the real parts of the computed eigenvalues. |
[out] | imag | An array of the same size as containing the imaginary parts of the computed eigenvalues. |
starneig_error_t starneig_SEP_SM_Reduce | ( | int | n, |
double | A[], | ||
int | ldA, | ||
double | Q[], | ||
int | ldQ, | ||
double | real[], | ||
double | imag[], | ||
int(*)(double real, double imag, void *arg) | predicate, | ||
void * | arg, | ||
int | selected[], | ||
int * | num_selected | ||
) |
Computes a (reordered) Schur decomposition of a general matrix.
[in] | n | The order of and . |
[in,out] | A | On entry, the general matrix . On exit, the Schur matrix . |
[in] | ldA | The leading dimension of . |
[in,out] | Q | On entry, the orthogonal matrix . On exit, the product matrix . |
[in] | ldQ | The leading dimension of . |
[out] | real | An array of the same size as containing the real parts of the computed eigenvalues. |
[out] | imag | An array of the same size as containing the imaginary parts of the computed eigenvalues. |
[in] | predicate | A function that takes a (complex) eigenvalue as input and returns non-zero if it should be selected. For complex conjugate pairs of eigenvalues, the predicate is called only for the eigenvalue with positive imaginary part and the corresponding block is either selected or deselected. The reordering step is skipped if the argument is a NULL pointer. |
[in] | arg | An optional argument for the predicate function. |
[out] | selected | The final positions of all correctly placed selected eigenvalues. |
[out] | num_selected | The number of selected eigenvalues (a complex conjugate pair is counted as two selected eigenvalues). |
starneig_error_t starneig_SEP_SM_Eigenvectors | ( | int | n, |
int | selected[], | ||
double | S[], | ||
int | ldS, | ||
double | Q[], | ||
int | ldQ, | ||
double | X[], | ||
int | ldX | ||
) |
Computes an eigenvector for each selected eigenvalue.
[in] | n | The order of and and the number of rows of . |
[in] | selected | The selection array specifying the locations of the selected eigenvalues. The number of 1's in the array is the same as the number of columns in . |
[in] | S | The Schur matrix . |
[in] | ldS | The leading dimension of . |
[in] | Q | The orthogonal matrix . |
[in] | ldQ | The The leading dimension of . |
[out] | X | A matrix with rows and one column for each selected eigenvalue. The columns represent the computed eigenvectors as previously described. |
[in] | ldX | The leading dimension of . |
starneig_error_t starneig_SEP_SM_Select | ( | int | n, |
double | S[], | ||
int | ldS, | ||
int(*)(double real, double imag, void *arg) | predicate, | ||
void * | arg, | ||
int | selected[], | ||
int * | num_selected | ||
) |
Generates a selection array for a Schur matrix using a user-supplied predicate function.
[in] | n | The order of . |
[in] | S | The Schur matrix . |
[in] | ldS | The leading dimension of . |
[in] | predicate | A function that takes a (complex) eigenvalue as input and returns non-zero if it should be selected. For complex conjugate pairs of eigenvalues, the predicate is called only for the eigenvalue with positive imaginary part and the corresponding block is either selected or deselected. |
[in] | arg | An optional argument for the predicate function. |
[out] | selected | The selection array. Both elements of a selected complex conjugate pair are set to 1. |
[out] | num_selected | The number of selected eigenvalues (a complex conjugate pair is counted as two selected eigenvalues). |
starneig_error_t starneig_SEP_SM_Hessenberg_expert | ( | struct starneig_hessenberg_conf * | conf, |
int | n, | ||
int | begin, | ||
int | end, | ||
double | A[], | ||
int | ldA, | ||
double | Q[], | ||
int | ldQ | ||
) |
Computes a Hessenberg decomposition of a general matrix.
[in] | conf | Configuration structure. |
[in] | n | The order of and . |
[in] | begin | First column to be reduced. |
[in] | end | Last column to be reduced. |
[in,out] | A | On entry, the general matrix . On exit, the upper Hessenberg matrix . |
[in] | ldA | The leading dimension of . |
[in,out] | Q | On entry, the orthogonal matrix . On exit, the product matrix . |
[in] | ldQ | The leading dimension of . |
starneig_error_t starneig_SEP_SM_Schur_expert | ( | struct starneig_schur_conf * | conf, |
int | n, | ||
double | H[], | ||
int | ldH, | ||
double | Q[], | ||
int | ldQ, | ||
double | real[], | ||
double | imag[] | ||
) |
Computes a Schur decomposition given a Hessenberg decomposition.
[in] | conf | Configuration structure. |
[in] | n | The order of and . |
[in,out] | H | On entry, the upper Hessenberg matrix . On exit, the Schur matrix . |
[in] | ldH | The leading dimension of . |
[in,out] | Q | On entry, the orthogonal matrix . On exit, the product matrix . |
[in] | ldQ | The leading dimension of . |
[out] | real | An array of the same size as containing the real parts of the computed eigenvalues. |
[out] | imag | An array of the same size as containing the imaginary parts of the computed eigenvalues. |
starneig_error_t starneig_SEP_SM_ReorderSchur_expert | ( | struct starneig_reorder_conf * | conf, |
int | n, | ||
int | selected[], | ||
double | S[], | ||
int | ldS, | ||
double | Q[], | ||
int | ldQ, | ||
double | real[], | ||
double | imag[] | ||
) |
Reorders selected eigenvalues to the top left corner of a Schur decomposition.
[in] | conf | Configuration structure. |
[in] | n | The order of and . |
[in,out] | selected | The selection array. |
[in,out] | S | On entry, the Schur matrix . On exit, the updated Schur matrix . |
[in] | ldS | The leading dimension of . |
[in,out] | Q | On entry, the orthogonal matrix . On exit, the product matrix . |
[in] | ldQ | The leading dimension of . |
[out] | real | An array of the same size as containing the real parts of the computed eigenvalues. |
[out] | imag | An array of the same size as containing the imaginary parts of the computed eigenvalues. |
starneig_error_t starneig_SEP_SM_Eigenvectors_expert | ( | struct starneig_eigenvectors_conf * | conf, |
int | n, | ||
int | selected[], | ||
double | S[], | ||
int | ldS, | ||
double | Q[], | ||
int | ldQ, | ||
double | X[], | ||
int | ldX | ||
) |
Computes an eigenvector for each selected eigenvalue.
[in] | conf | Configuration structure. |
[in] | n | The order of and and the number of rows of . |
[in] | selected | The selection array specifying the locations of the selected eigenvalues. The number of 1's in the array is the same as the number of columns in . |
[in] | S | The Schur matrix . |
[in] | ldS | The leading dimension of . |
[in] | Q | The orthogonal matrix . |
[in] | ldQ | The The leading dimension of . |
[out] | X | A matrix with rows and one column for each selected eigenvalue. The columns represent the computed eigenvectors as previously described. |
[in] | ldX | The leading dimension of . |