2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14      INTEGER            INFO, KL, KU, LDAB, M, N
   15
   16
   17      COMPLEX*16           AB( LDAB, * )
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88      DOUBLE PRECISION   ONE, ZERO
   89      parameter( one = 1.0d+0 )
   90      parameter( zero = 0.0d+0 )
   91      COMPLEX*16         CONE, CZERO
   92      parameter( cone = ( 1.0d+0, 0.0d+0 ) )
   93      parameter( czero = ( 0.0d+0, 0.0d+0 ) )
   94
   95
   96      INTEGER            J, JP, JU, KM, KV
   97
   98
   99      INTEGER            ISAMAX
  100      EXTERNAL           isamax
  101
  102
  103      EXTERNAL           zgeru, zscal, zswap
  104
  105
  107
  108
  109
  110
  111
  112
  113      kv = ku
  114
  115
  116
  117      info = 0
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136      IF( m.EQ.0 .OR. n.EQ.0 )
  137     $   RETURN
  138
  139
  140
  141
  142
  143
  144      ju = 1
  145
  146      DO 40 j = 1, 
min( m, n )
 
  147
  148
  149
  150
  152         jp = 1
  153         IF( ab( kv+1, j ).NE.zero ) THEN
  154            ju = 
max( ju, 
min( j+ku, n ) )
 
  155
  156            IF( km.GT.0 ) THEN
  157
  158
  159
  160               CALL zscal( km, one / ab( ku+1, j ), ab( ku+2, j ), 1 )
  161
  162
  163
  164               IF( ju.GT.j ) THEN
  165                  CALL zgeru( km, ju-j, -cone, ab( ku+2, j ), 1,
  166     $                       ab( ku, j+1 ), ldab-1, ab( ku+1, j+1 ),
  167     $                       ldab-1 )
  168               END IF
  169            END IF
  170         ELSE
  171
  172            IF( info.EQ.0 )
  173     $         info = j
  174         END IF
  175   40 CONTINUE
  176      RETURN
  177
  178
  179