fortran-lapack
|
Compute the Schur decomposition of a matrix. More...
Public Member Functions | |
subroutine | la_s_schur (a, t, z, eigvals, overwrite_a, storage, err) |
la_real_eig_s_schur | |
subroutine | la_d_schur (a, t, z, eigvals, overwrite_a, storage, err) |
la_real_eig_d_schur | |
subroutine | la_q_schur (a, t, z, eigvals, overwrite_a, storage, err) |
la_real_eig_q_schur | |
subroutine | la_c_schur (a, t, z, eigvals, overwrite_a, storage, err) |
la_real_eig_c_schur | |
subroutine | la_z_schur (a, t, z, eigvals, overwrite_a, storage, err) |
subroutine | la_real_eig_z_schur (a, t, z, eigvals, overwrite_a, storage, err) |
subroutine | la_w_schur (a, t, z, eigvals, overwrite_a, storage, err) |
la_real_eig_w_schur | |
Compute the Schur decomposition of a matrix.
This function computes the Schur decomposition of a real or complex matrix A :
A = Z T Z^H
where Z is an orthonormal/unitary matrix and T is upper-triangular or quasi-upper-triangular. The input matrix A has size [m, m] .
The decomposition is available for both real and complex matrices:
[in,out] | A | The input matrix of size [m, m] . Can be overwritten if overwrite_a is set. |
[out] | T | The upper-triangular or quasi-upper-triangular matrix of size [m, m] . |
[out] | Z | (Optional) The unitary/orthonormal transformation matrix of size [m, m] . |
[out] | eigvals | (Optional) The eigenvalues that appear on the diagonal of T . For real matrices, this is a real-valued array. For complex matrices, this is a complex-valued array. |
[in,out] | storage | (Optional) Pre-allocated workspace array. If provided, no internal allocations occur. |
[in] | overwrite_a | (Optional) Logical flag indicating whether A can be overwritten. |
[out] | err | (Optional) State return flag. If not provided, the function will stop on error. |
overwrite_a
is set correctly to avoid unintended modification of A . subroutine la_schur::schur::la_c_schur | ( | complex(sp), dimension(:,:), intent(inout), target | a, |
complex(sp), dimension(:,:), intent(out), target, contiguous | t, | ||
complex(sp), dimension(:,:), intent(out), optional, target, contiguous | z, | ||
complex(sp), dimension(:), intent(out), optional, target, contiguous | eigvals, | ||
logical(lk), intent(in), optional | overwrite_a, | ||
complex(sp), dimension(:), intent(inout), optional, target | storage, | ||
type(la_state), intent(out), optional | err ) |
[in,out] | a | Input matrix a[m,m] |
[out] | t | Schur form of A: upper-triangular or quasi-upper-triangular matrix T |
[out] | z | Unitary/orthonormal transformation matrix Z |
[out] | eigvals | [optional] Output eigenvalues that appear on the diagonal of T |
[in,out] | storage | [optional] Provide pre-allocated workspace, size to be checked with schur_space |
[in] | overwrite_a | [optional] Can A data be overwritten and destroyed? |
[out] | err | [optional] State return flag. On error if not requested, the code will stop |
subroutine la_schur::schur::la_d_schur | ( | real(dp), dimension(:,:), intent(inout), target | a, |
real(dp), dimension(:,:), intent(out), target, contiguous | t, | ||
real(dp), dimension(:,:), intent(out), optional, target, contiguous | z, | ||
complex(dp), dimension(:), intent(out), optional, target, contiguous | eigvals, | ||
logical(lk), intent(in), optional | overwrite_a, | ||
real(dp), dimension(:), intent(inout), optional, target | storage, | ||
type(la_state), intent(out), optional | err ) |
[in,out] | a | Input matrix a[m,m] |
[out] | t | Schur form of A: upper-triangular or quasi-upper-triangular matrix T |
[out] | z | Unitary/orthonormal transformation matrix Z |
[out] | eigvals | [optional] Output eigenvalues that appear on the diagonal of T |
[in,out] | storage | [optional] Provide pre-allocated workspace, size to be checked with schur_space |
[in] | overwrite_a | [optional] Can A data be overwritten and destroyed? |
[out] | err | [optional] State return flag. On error if not requested, the code will stop |
subroutine la_schur::schur::la_q_schur | ( | real(qp), dimension(:,:), intent(inout), target | a, |
real(qp), dimension(:,:), intent(out), target, contiguous | t, | ||
real(qp), dimension(:,:), intent(out), optional, target, contiguous | z, | ||
complex(qp), dimension(:), intent(out), optional, target, contiguous | eigvals, | ||
logical(lk), intent(in), optional | overwrite_a, | ||
real(qp), dimension(:), intent(inout), optional, target | storage, | ||
type(la_state), intent(out), optional | err ) |
[in,out] | a | Input matrix a[m,m] |
[out] | t | Schur form of A: upper-triangular or quasi-upper-triangular matrix T |
[out] | z | Unitary/orthonormal transformation matrix Z |
[out] | eigvals | [optional] Output eigenvalues that appear on the diagonal of T |
[in,out] | storage | [optional] Provide pre-allocated workspace, size to be checked with schur_space |
[in] | overwrite_a | [optional] Can A data be overwritten and destroyed? |
[out] | err | [optional] State return flag. On error if not requested, the code will stop |
la_schur::schur::la_real_eig_c_schur |
la_schur::schur::la_real_eig_d_schur |
la_schur::schur::la_real_eig_q_schur |
la_schur::schur::la_real_eig_s_schur |
la_schur::schur::la_real_eig_w_schur |
subroutine la_schur::schur::la_real_eig_z_schur | ( | complex(dp), dimension(:,:), intent(inout), target | a, |
complex(dp), dimension(:,:), intent(out), target, contiguous | t, | ||
complex(dp), dimension(:,:), intent(out), optional, target, contiguous | z, | ||
real(dp), dimension(:), intent(out), target, contiguous | eigvals, | ||
logical(lk), intent(in), optional | overwrite_a, | ||
complex(dp), dimension(:), intent(inout), optional, target | storage, | ||
type(la_state), intent(out), optional | err ) |
[in,out] | a | Input matrix a[m,m] |
[out] | t | Schur form of A: upper-triangular or quasi-upper-triangular matrix T |
[out] | z | Unitary/orthonormal transformation matrix Z |
[out] | eigvals | Output eigenvalues that appear on the diagonal of T |
[in,out] | storage | [optional] Provide pre-allocated workspace, size to be checked with schur_space |
[in] | overwrite_a | [optional] Can A data be overwritten and destroyed? |
[out] | err | [optional] State return flag. On error if not requested, the code will stop |
subroutine la_schur::schur::la_s_schur | ( | real(sp), dimension(:,:), intent(inout), target | a, |
real(sp), dimension(:,:), intent(out), target, contiguous | t, | ||
real(sp), dimension(:,:), intent(out), optional, target, contiguous | z, | ||
complex(sp), dimension(:), intent(out), optional, target, contiguous | eigvals, | ||
logical(lk), intent(in), optional | overwrite_a, | ||
real(sp), dimension(:), intent(inout), optional, target | storage, | ||
type(la_state), intent(out), optional | err ) |
[in,out] | a | Input matrix a[m,m] |
[out] | t | Schur form of A: upper-triangular or quasi-upper-triangular matrix T |
[out] | z | Unitary/orthonormal transformation matrix Z |
[out] | eigvals | [optional] Output eigenvalues that appear on the diagonal of T |
[in,out] | storage | [optional] Provide pre-allocated workspace, size to be checked with schur_space |
[in] | overwrite_a | [optional] Can A data be overwritten and destroyed? |
[out] | err | [optional] State return flag. On error if not requested, the code will stop |
subroutine la_schur::schur::la_w_schur | ( | complex(qp), dimension(:,:), intent(inout), target | a, |
complex(qp), dimension(:,:), intent(out), target, contiguous | t, | ||
complex(qp), dimension(:,:), intent(out), optional, target, contiguous | z, | ||
complex(qp), dimension(:), intent(out), optional, target, contiguous | eigvals, | ||
logical(lk), intent(in), optional | overwrite_a, | ||
complex(qp), dimension(:), intent(inout), optional, target | storage, | ||
type(la_state), intent(out), optional | err ) |
[in,out] | a | Input matrix a[m,m] |
[out] | t | Schur form of A: upper-triangular or quasi-upper-triangular matrix T |
[out] | z | Unitary/orthonormal transformation matrix Z |
[out] | eigvals | [optional] Output eigenvalues that appear on the diagonal of T |
[in,out] | storage | [optional] Provide pre-allocated workspace, size to be checked with schur_space |
[in] | overwrite_a | [optional] Can A data be overwritten and destroyed? |
[out] | err | [optional] State return flag. On error if not requested, the code will stop |
subroutine la_schur::schur::la_z_schur | ( | complex(dp), dimension(:,:), intent(inout), target | a, |
complex(dp), dimension(:,:), intent(out), target, contiguous | t, | ||
complex(dp), dimension(:,:), intent(out), optional, target, contiguous | z, | ||
complex(dp), dimension(:), intent(out), optional, target, contiguous | eigvals, | ||
logical(lk), intent(in), optional | overwrite_a, | ||
complex(dp), dimension(:), intent(inout), optional, target | storage, | ||
type(la_state), intent(out), optional | err ) |
[in,out] | a | Input matrix a[m,m] |
[out] | t | Schur form of A: upper-triangular or quasi-upper-triangular matrix T |
[out] | z | Unitary/orthonormal transformation matrix Z |
[out] | eigvals | [optional] Output eigenvalues that appear on the diagonal of T |
[in,out] | storage | [optional] Provide pre-allocated workspace, size to be checked with schur_space |
[in] | overwrite_a | [optional] Can A data be overwritten and destroyed? |
[out] | err | [optional] State return flag. On error if not requested, the code will stop |