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