CSBRB

Copies a real symmetric band matrix stored in band symmetric storage mode to a real band matrix stored in band storage mode.

Required Arguments

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.

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.

NUCB must be at least as large as NUCA.

Optional Arguments

N — Order of the matrices A and B. (Input)

Default: N = SIZE (A,2).

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).

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).

Default: LDB = SIZE (B,1).

FORTRAN 90 Interface

Generic: CALL CSBRB (A, NUCA, B, NLCB, NUCB [, …])

Specific: The specific interface names are S_CSBRB and D_CSBRB.

FORTRAN 77 Interface

Single: CALL CSBRB (N, A, LDA, NUCA, B, LDB, NLCB, NUCB)

Double: The double precision name is DCSBRB.

Description

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.

Example

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

Output

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