17 INTEGER,
INTENT(IN) :: LDA, NPIV, NBROW
18 INTEGER(8),
INTENT(IN) :: SIZEA
19 INTEGER,
INTENT(IN) :: IW( NPIV )
22 INTEGER(8) :: IOLD, INEW, J8
24 INTEGER NBROW_L_RECTANGLE_TO_MOVE
25 INTEGER :: ICOL_BEG, ICOL_END, NBPANELS, NB_TARGET
26 INTEGER :: , NBROWS_PANEL
29 IF ( keep(459) .GT. 1 .AND. keep(50) .NE. 0 )
THEN
32 IF ( keep(50) .EQ.0 .OR. nb_target .EQ. npiv )
THEN
33 IF (lda.EQ.npiv)
GOTO 500
34 IF ( keep(50) .NE. 0 )
THEN
36 inew = int(npiv + 1,8)
37 IF (iold .EQ. inew )
THEN
43.LE.
IF ( I NPIV-2 ) THEN
48 DO J8 = 0_8, int(ILAST,8)
49 A( INEW + J8 ) = A( IOLD + J8 )
51 INEW = INEW + int(NPIV,8)
52 IOLD = IOLD + int(LDA,8)
54 NBROW_L_RECTANGLE_TO_MOVE = NBROW
56 INEW = 1_8 + int(NPIV,8) * int(LDA + 1,8)
57 IOLD = 1_8 + int(LDA,8) * int(NPIV +1,8)
58 NBROW_L_RECTANGLE_TO_MOVE = NBROW - 1
65.LE.
DO WHILE ( ICOL_BEG NPIV )
67 ICOL_END = min(NB_TARGET * NBPANELS, NPIV)
68 IF ( IW( ICOL_END ) < 0 ) THEN
69 ICOL_END = ICOL_END + 1
71 NBCOLS_PANEL = ICOL_END - ICOL_BEG + 1
72 IOLD = int(ICOL_BEG-1,8) * int(LDA,8) + int(ICOL_BEG,8)
74.NE.
IF (IOLD INEW) THEN
75 DO J8=0, min(I+1, NBCOLS_PANEL)-1
76 A(INEW+J8) = A(IOLD+J8)
79 INEW = INEW + int(NBCOLS_PANEL,8)
80 IOLD = IOLD + int(LDA,8)
82 NBROWS_PANEL = NBROWS_PANEL - NBCOLS_PANEL
83 ICOL_BEG = ICOL_END + 1
85 IOLD = 1_8 + int(LDA,8)*int(NPIV,8)
86 NBROW_L_RECTANGLE_TO_MOVE = NBROW
88 DO I = 1, NBROW_L_RECTANGLE_TO_MOVE
89 DO J8 = 0_8, int(NPIV - 1,8)
90 A( INEW + J8 ) = A( IOLD + J8 )
92 INEW = INEW + int(NPIV,8)
93 IOLD = IOLD + int(LDA,8)