************80
! SHIFTB shifts the rows in the current block.
Discussion:
This routine shifts rows in the current block, AI, which are not used
as pivot rows, if any, that is, rows IPIVOT(LAST+1) through IPIVOT(NROWI),
onto the first MMAX = NROW - LAST rows of the next block, AI1,
with column LAST + J of AI going to column J,
for J = 1,..., JMAX = NCOLI - LAST.
The remaining columns of these rows of AI1 are zeroed out.
Diagram:
Original situation after Results in a new block I+1
LAST = 2 columns have been created and ready to be
done in FACTRB, assuming no factored by next FACTRB call.
interchanges of rows.
1
X X 1X X X X X X X X
1
0 X 1X X X 0 X X X X
BLOCK I 1 --------------- NROWI=4 0 0 1X X X 0 0 1X X X 0 01 NCOLI=5 1 1 1 LAST=2 0 0 1X X X 0 0 1X X X 0 01 ------------------- 1 1 NEW 1X X X X X 1X X X X X1 BLOCK 1 1 1 I+1 BLOCK I+1 1X X X X X 1X X X X X1 NROWI1= 5 1 1 1 NCOLI1= 5 1X X X X X 1X X X X X1 ------------------- 1-------------1 1
Modified:
14 February 2007
Author:
Carl DeBoor
Reference:
Carl DeBoor,
A Practical Guide to Splines,
Springer, 2001,
ISBN: 0387953663,
LC: QA1.A647.v27.
Parameters:
Input, real ( kind = 8 ) AI(NROWI,NCOLI), the current block.
Input, integer ( kind = 4 ) IPIVOT(NROWI), the pivot vector.
Input, integer ( kind = 4 ) NROWI, NCOLI, the number of rows and columns
in block AI.
Input, integer ( kind = 4 ) LAST, indicates the last row on which pivoting
has been carried out.
Input/output, real ( kind = 8 ) AI1(NROWI1,NCOLI1), the next block.
Input, integer ( kind = 4 ) NROWI1, NCOLI1, the number of rows and columns
in block AI1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=8) | :: | ai(nrowi,ncoli) | ||||
integer(kind=4) | :: | ipivot(nrowi) | ||||
integer(kind=4) | :: | nrowi | ||||
integer(kind=4) | :: | ncoli | ||||
integer(kind=4) | :: | last | ||||
real(kind=8) | :: | ai1(nrowi1,ncoli1) | ||||
integer(kind=4) | :: | nrowi1 | ||||
integer(kind=4) | :: | ncoli1 |