Processing math: 100%
fortran-lapack
All Classes Namespaces Files Functions Variables Pages
la_schur::schur Interface Reference

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
 

Detailed Description

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:

  • For real matrices, the Schur form T may contain 2x2 blocks for complex eigenvalues.
  • For complex matrices, T is always upper-triangular.
Parameters
[in,out]AThe input matrix of size [m, m] . Can be overwritten if overwrite_a is set.
[out]TThe 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.
Note
The computation is based on LAPACK's Schur decomposition routines (GEES).
Warning
Ensure that overwrite_a is set correctly to avoid unintended modification of A .

Member Function/Subroutine Documentation

◆ la_c_schur()

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 )
Parameters
[in,out]aInput matrix a[m,m]
[out]tSchur form of A: upper-triangular or quasi-upper-triangular matrix T
[out]zUnitary/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_d_schur()

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 )
Parameters
[in,out]aInput matrix a[m,m]
[out]tSchur form of A: upper-triangular or quasi-upper-triangular matrix T
[out]zUnitary/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_q_schur()

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 )
Parameters
[in,out]aInput matrix a[m,m]
[out]tSchur form of A: upper-triangular or quasi-upper-triangular matrix T
[out]zUnitary/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_real_eig_c_schur()

la_schur::schur::la_real_eig_c_schur

◆ la_real_eig_d_schur()

la_schur::schur::la_real_eig_d_schur

◆ la_real_eig_q_schur()

la_schur::schur::la_real_eig_q_schur

◆ la_real_eig_s_schur()

la_schur::schur::la_real_eig_s_schur

◆ la_real_eig_w_schur()

la_schur::schur::la_real_eig_w_schur

◆ la_real_eig_z_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 )
Parameters
[in,out]aInput matrix a[m,m]
[out]tSchur form of A: upper-triangular or quasi-upper-triangular matrix T
[out]zUnitary/orthonormal transformation matrix Z
[out]eigvalsOutput 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_s_schur()

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 )
Parameters
[in,out]aInput matrix a[m,m]
[out]tSchur form of A: upper-triangular or quasi-upper-triangular matrix T
[out]zUnitary/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_w_schur()

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 )
Parameters
[in,out]aInput matrix a[m,m]
[out]tSchur form of A: upper-triangular or quasi-upper-triangular matrix T
[out]zUnitary/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_z_schur()

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 )
Parameters
[in,out]aInput matrix a[m,m]
[out]tSchur form of A: upper-triangular or quasi-upper-triangular matrix T
[out]zUnitary/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

The documentation for this interface was generated from the following file: