|
PROGRAM TEST
|
IMPLICIT NONE
|
C
|
REAL RZERO
|
COMPLEX ZERO
|
INTEGER LDA, N, NDIAG
|
PARAMETER (LDA = 3)
|
PARAMETER (N = 4)
|
PARAMETER (NDIAG = 2)
|
PARAMETER (RZERO = 0.0E0)
|
PARAMETER (ZERO = (0.0E0,0.0E0))
|
C
|
INTEGER I, J
|
COMPLEX A(LDA,N), ALPHA, BETA, X(N), Y(N)
|
C
|
EXTERNAL CHBMV
|
INTRINSIC CMPLX, CONJG, REAL
|
C
|
C Initialize the array A to store in Hermitian banded form the
|
C matrix A with two diagonals shown below. Initialize the
|
C arrays X and Y to store the vectors x and y shown below.
|
C
|
C 1+0i 2+1i 3+2i 1+4i 1+1i
|
C A = 2-1i 4+0i 5+3i 6+4i x = 2+3i y = 1+2i
|
C 3-2i 5-3i 7+0i 8+5i 3+2i 1+3i
|
C 6-4i 8-5i 9+0i 4+1i 1+4i
|
C
|
DATA A /(8E8,8E8), (8E8,8E8), (1.0,8E8),
|
$ (8E8,8E8), (2.0,1.0), (4.0,8E8),
|
$ (3.0,2.0), (5.0,3.0), (7.0,8E8),
|
$ (6.0,4.0), (8.0,5.0), (9.0,8E8) /
|
C
|
DO 10, I = 1, N
|
X(I) = CMPLX (REAL (I), REAL (5-I))
|
Y(I) = CMPLX (1.0, REAL (I))
|
10 CONTINUE
|
ALPHA = CMPLX (1.0,0.0)
|
BETA = CMPLX (1.0, 0.0)
|
PRINT 1000
|
PRINT 1010, REAL (A(3,1)), RZERO, A(2,2), A(1,3), ZERO
|
PRINT 1010, CONJG (A(2,2)), REAL (A(3,2)), RZERO, A(2,3),
|
$ A(1,4)
|
PRINT 1010, CONJG (A(1,3)), CONJG (A(2,3)),
|
$ REAL (A(3,3)), RZERO, A(2,4)
|
PRINT 1010, ZERO, CONJG (A(1,4)), CONJG (A(2,4)),
|
$ REAL (A(3,4)), RZERO
|
PRINT 1020
|
DO 20, I = 1, LDA
|
PRINT 1010, (A(I,J), J = 1, N)
|
20 CONTINUE
|
PRINT 1030
|
PRINT 1040, (X(I), Y(I), I = 1, N)
|
CALL CHBMV ('UPPER TRIANGULAR A', N, NDIAG, ALPHA, A, LDA,
|
$ X, 1, BETA, Y, 1)
|
PRINT 1050
|
PRINT 1060, (Y(I), I = 1, N)
|
C
|
1000 FORMAT (/1X, 'Array A in full form:')
|
1010 FORMAT (1X, 4(2X, '(', F5.1, ',', F5.1, ')'))
|
1020 FORMAT (/1X, 'Array A in banded form: ',
|
$ '(* in unused elements)')
|
1030 FORMAT (/10X, 'x', 15X, 'y')
|
1040 FORMAT (2(3X, '(', F5.1, ',', F5.1, ')'))
|
1050 FORMAT (/1X, 'Ax + y:')
|
1060 FORMAT (1X, 2X, '(', F5.1, ',', F5.1, ')')
|
C
|
END
|
|