@@ -3,16 +3,14 @@ program example_schur_complex
3
3
use stdlib_linalg, only: schur
4
4
use stdlib_linalg_constants, only: dp
5
5
implicit none
6
- complex (dp), allocatable :: A(:,:), T(:,:), Z(:,:)
7
- integer :: n
6
+
7
+ integer , parameter :: n = 3
8
+ complex (dp), dimension (n,n) :: A, T, Z
8
9
9
10
! Initialize a complex-valued square matrix
10
- n = 3
11
- allocate (A(n,n), T(n,n), Z(n,n))
12
- A = reshape ([ &
13
- (1.0_dp , 2.0_dp ), (3.0_dp , - 1.0_dp ), (4.0_dp , 1.0_dp ), &
14
- (0.0_dp , - 1.0_dp ), (2.0_dp , 0.0_dp ), (1.0_dp , - 2.0_dp ), &
15
- (2.0_dp , 3.0_dp ), (1.0_dp , 1.0_dp ), (0.0_dp , - 1.0_dp ) ], shape= [n,n])
11
+ A = reshape ([ (1 , 2 ), (3 ,- 1 ), (4 , 1 ), &
12
+ (0 ,- 1 ), (2 , 0 ), (1 ,- 2 ), &
13
+ (2 , 3 ), (1 , 1 ), (0 ,- 1 ) ], shape= [n,n])
16
14
17
15
! Compute the Schur decomposition: A = Z T Z^H
18
16
call schur(A, T, Z)
@@ -28,6 +26,5 @@ program example_schur_complex
28
26
! Test factorization: Z*T*Z^H = A
29
27
print * , " Max error in reconstruction:" , maxval (abs (matmul (Z, matmul (T, conjg (transpose (Z)))) - A))
30
28
31
- deallocate (A, T, Z)
32
29
end program example_schur_complex
33
30
0 commit comments