CRGRB

Converts a real general matrix to a matrix in band storage mode.

Required Arguments

A — Real N by N matrix. (Input)

NLC — Number of lower codiagonals in B. (Input)

NUC — Number of upper codiagonals in B. (Input)

B — Real (NUC + 1 + NLC) by N array containing the band matrix in band storage mode. (Output)

Optional Arguments

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

FORTRAN 90 Interface

Generic: CALL CRGRB (A, NLC, NUC, B [])

Specific: The specific interface names are S_CRGRB and D_CRGRB.

FORTRAN 77 Interface

Single: CALL CRGRB (N, A, LDA, NLC, NUC, B, LDB)

Double: The double precision name is DCRGRB.

Description

The routine CRGRB converts the real general N × N matrix A with mu = NUC upper codiagonals and ml = NLC lower codiagonals into the real band matrix B of order N. The first mu rows of B then contain the upper codiagonals of A, the next row contains the main diagonal of A, and the last ml rows of B contain the lower codiagonals of A.

Example

A real 4 × 4 matrix with one upper codiagonal and three lower codiagonals is copied to a real band matrix of order 4 in band storage mode.

 

USE CRGRB_INT

USE WRRRN_INT

 

IMPLICIT NONE

! Declare variables

INTEGER LDA, LDB, N, NLC, NUC

PARAMETER (LDA=4, LDB=5, N=4, NLC=3, NUC=1)

!

REAL A(LDA,N), B(LDB,N)

! Set values for A

! A = ( 1.0 2.0 0.0 0.0)

! ( -2.0 1.0 3.0 0.0)

! ( 0.0 -3.0 1.0 4.0)

! ( -7.0 0.0 -4.0 1.0)

!

DATA A/1.0, -2.0, 0.0, -7.0, 2.0, 1.0, -3.0, 0.0, 0.0, 3.0, 1.0, &

-4.0, 0.0, 0.0, 4.0, 1.0/

! Convert A to band matrix B

CALL CRGRB (A, NLC, NUC, B)

! Print results

CALL WRRRN ('B', B)

END

Output

 

B

1 2 3 4

1 0.000 2.000 3.000 4.000

2 1.000 1.000 1.000 1.000

3 -2.000 -3.000 -4.000 0.000

4 0.000 0.000 0.000 0.000

5 -7.000 0.000 0.000 0.000