1      PROGRAM LA_GGEV_EXAMPLE
2
3!  -- LAPACK95 EXAMPLE DRIVER ROUTINE (VERSION 1.0) --
4!     UNI-C, DENMARK
5!     DECEMBER, 1999
6!
7!  .. "Use Statements" ..
8      USE LA_PRECISION, ONLY: WP => SP
9      USE F95_LAPACK, ONLY: LA_GGEV
10!  .. "Implicit Statement" ..
11      IMPLICIT NONE
12!  .. "Local Scalars" ..
13      INTEGER :: I, J, INFO, N
14!  .. "Local Arrays" ..
15      COMPLEX(WP), ALLOCATABLE :: A(:,:), AA(:,:), B(:,:), BB(:,:), ALPHA(:)
16      COMPLEX(WP), ALLOCATABLE :: VL(:,:), VR(:,:), BETA(:)
17      REAL(WP), ALLOCATABLE :: AR(:,:), BR(:,:), ALPHAR(:), ALPHAI(:), BETAR(:), &
18                               VLR(:,:), VRR(:,:)
19!  .. "Executable Statements" ..
20      WRITE (*,*) 'LA_GGEV Example Program Results'
21      N = 5
22      ALLOCATE( A(N,N), AA(N,N), B(N,N), BB(N,N), ALPHA(N), BETA(N), VL(N,N), VR(N,N) )
23      ALLOCATE( AR(N,N), BR(N,N), ALPHAR(N), ALPHAI(N), BETAR(N), VLR(N,N), VRR(N,N) )
24
25      WRITE (*,*) 'Example 1, Real Example'
26      OPEN(UNIT=21,FILE='gges.ma',STATUS='UNKNOWN')
27      DO J=1,N
28         DO I=1,N
29            READ(21,*) AR(I,J)
30         ENDDO
31      ENDDO
32      CLOSE(21)
33      WRITE(*,*)'Matrix AR : '
34      DO I=1,N;
35         WRITE(*,"(5(I3,1X))") INT(AR(I,:));
36      ENDDO
37
38      OPEN(UNIT=21,FILE='gges.mb',STATUS='UNKNOWN')
39      DO J=1,N
40         DO I=1,N
41            READ(21,*) BR(I,J)
42         ENDDO
43      ENDDO
44      CLOSE(21)
45      WRITE(*,*)'Matrix BR : '
46      DO I=1,N;
47         WRITE(*,"(5(I3,1X))") INT(BR(I,:));
48      ENDDO
49      WRITE(*,*)
50      WRITE(*,*) 'CALL LA_GGEV( A, B, ALPHAR, ALPHAI, BETAR, VLR, VRR )'
51      CALL LA_GGEV( AR, BR, ALPHAR, ALPHAI, BETAR, VLR, VRR )
52
53      WRITE(*,*); WRITE(*,*)'ALPHAR on exit : '; WRITE(*,*) ALPHAR(1:N)
54      WRITE(*,*); WRITE(*,*)'ALPHAI on exit : '; WRITE(*,*) ALPHAI(1:N)
55      WRITE(*,*); WRITE(*,*)'BETA on exit : '; WRITE(*,*) BETAR(1:N)
56      WRITE(*,*)'Array VL:'; DO I =1,N; WRITE(*,*)I, VLR(I,1:N); ENDDO
57      WRITE(*,*)'Array VR:'; DO I =1,N; WRITE(*,*)I, VRR(I,1:N); ENDDO
58
59      WRITE(*,*)
60      WRITE(*,*)' Generalized eigenvalues : '
61      DO I=1,N
62         WRITE(*,*) '(',ALPHAR(I)/BETAR(I),',',ALPHAI(I)/BETAR(I),')'
63      ENDDO
64
65      WRITE (*,*) 'Example 2, Complex Example'
66      OPEN(UNIT=21,FILE='ggev.ma',STATUS='UNKNOWN')
67      DO J=1,N
68         DO I=1,N
69            READ(21,*) A(I,J)
70         ENDDO
71      ENDDO
72      CLOSE(21)
73
74      AA=A
75
76      WRITE(*,*)'Matrix A : '
77      DO I=1,N
78         WRITE(*,"(5('('(I3,1X,',',I3)')',1X,1X))") INT(A(I,:)), INT(AIMAG(A(I,:)))
79      ENDDO
80
81      OPEN(UNIT=21,FILE='ggev.mb',STATUS='UNKNOWN')
82      DO J=1,N
83         DO I=1,N
84            READ(21,*) B(I,J)
85         ENDDO
86      ENDDO
87      CLOSE(21)
88
89      BB=B
90
91      WRITE(*,*)'Matrix B : '
92      DO I=1,N
93         WRITE(*,"(5('('(I3,1X,',',I3)')',1X,1X))") INT(B(I,:)), INT(AIMAG(B(I,:)))
94      ENDDO
95      WRITE(*,*)
96      WRITE(*,*) 'CALL LA_GGEV( A, B, ALPHA, BETA, INFO=INFO )'
97      CALL LA_GGEV( A, B, ALPHA, BETA,  INFO=INFO )
98
99      WRITE(*,*)
100      WRITE(*,*)'ALPHA on exit : '
101      DO I=1,N
102         WRITE(*,*) ALPHA(I)
103      ENDDO
104
105      WRITE(*,*)
106      WRITE(*,*)'BETA on exit : '
107      DO I=1,N
108         WRITE(*,*) BETA(I)
109      ENDDO
110      WRITE(*,*)
111      WRITE(*,*)'INFO = ', INFO
112
113      WRITE(*,*)
114      WRITE(*,*)' Generalized eigenvalues : '
115      DO I=1,N
116         WRITE(*,*)  ALPHA(I)/BETA(I)
117      ENDDO
118
119      WRITE(*,*)
120!     WRITE(*,*)' * EXAMPLE 2 * '
121      WRITE(*,*) 'CALL LA_GGEV( A, B, ALPHAR, ALPHAI, BETA, VL, VR )'
122      CALL LA_GGEV( A, B, ALPHA, BETA, VL, VR )
123
124      WRITE(*,*)
125      WRITE(*,*)'Matrix VL on exit : '
126      DO I=1,N;
127         WRITE(*,"(5('('(F8.5,1X,',',F8.5)')'))") REAL(VL(I,:)), AIMAG(VL(I,:))
128      ENDDO
129
130      WRITE(*,*)
131      WRITE(*,*)'Matrix VR on exit : '
132      DO I=1,N;
133         WRITE(*,"(5('('(F8.5,1X,',',F8.5)')'))") REAL(VR(I,:)), AIMAG(VR(I,:))
134      ENDDO
135
136      END PROGRAM LA_GGEV_EXAMPLE
137