Copies a real symmetric band matrix stored in band symmetric storage mode to a real band matrix stored in band storage mode.
A — Real band symmetric matrix of order N. (Input)
NUCA — Number of codiagonals in A. (Input)
B — Real band matrix of order N containing a copy of A. (Output)
NLCB — Number of
lower codiagonals in B. (Input)
NLCB must be
at least as large as NUCA.
NUCB — Number of
upper codiagonals in B. (Input)
NUCB must be
at least as large as NUCA.
N — Order of the
matrices A and
B.
(Input)
Default: N = size
(A,2).
LDA — Leading
dimension of A
exactly as specified in the dimension statement of the calling
program. (Input)
Default: LDA = size
(A,1).
LDB — Leading
dimension of B
exactly as specified in the dimension statement of the calling
program. (Input)
Default: LDB = size
(B,1).
Generic: CALL CSBRB (A, NUCA, B, NLCB, NUCB [,…])
Specific: The specific interface names are S_CSBRB and D_CSBRB.
Single: CALL CSBRB (N, A, LDA, NUCA, B, LDB, NLCB, NUCB)
Double: The double precision name is DCSBRB.
The routine CSBRB copies a real matrix A stored in symmetric band mode to a matrix B stored in band mode. The lower codiagonals of B are set using the values from the upper codiagonals of A.
A real matrix of order 4 in band symmetric storage mode with 2 upper codiagonals is copied to a real matrix in band storage mode with 2 upper codiagonals and 2 lower codiagonals.
USE CSBRB_INT
USE WRRRN_INT
IMPLICIT NONE
! Declare variables
INTEGER LDA, LDB, N, NLCB, NUCA, NUCB
PARAMETER (N=4, NUCA=2, LDA=NUCA+1, NLCB=NUCA, NUCB=NUCA, &
LDB=NLCB+NUCB+1)
!
REAL A(LDA,N), B(LDB,N)
! Set values for A, in band mode
! A = ( 0.0 0.0 2.0 1.0 )
! ( 0.0 2.0 3.0 1.0 )
! ( 1.0 2.0 3.0 4.0 )
!
DATA A/2*0.0, 1.0, 0.0, 2.0, 2.0, 2.0, 3.0, 3.0, 1.0, 1.0, 4.0/
! Copy A to B
CALL CSBRB (A, NUCA, B, NLCB, NUCB)
! Print results
CALL WRRRN ('B', B)
END
B
1 2
3 4
1 0.000
0.000 2.000 1.000
2 0.000
2.000 3.000 1.000
3 1.000
2.000 3.000 4.000
4 2.000
3.000 1.000 0.000
5 2.000
1.000 0.000 0.000
PHONE: 713.784.3131 FAX:713.781.9260 |