|
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 |