2
    3
    4
    5
    6
    7
    8
    9      INTEGER            LDA, LDC, M, N
   10      REAL               ALPHA, BETA
   11
   12
   13      REAL               A( LDA, * ), C( LDC, * )
   14
   15
   16
   17
   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      REAL               ZERO, ONE
   56      parameter( zero = 0.0e+0, one  = 1.0e+0 )
   57
   58
   59      INTEGER            I, J
   60
   61
   62
   63
   64
   65      IF( (m.EQ.0).OR.(n.EQ.0).OR.((alpha.EQ.zero).AND.(beta.EQ.one)) )
   66     $   RETURN
   67
   68      IF( n.EQ.1 ) THEN
   69         IF( beta.EQ.zero ) THEN
   70            IF( alpha.EQ.zero ) THEN
   71               DO 10 i = 1, m
   72                  c( i, 1 ) = zero
   73   10          CONTINUE
   74            ELSE
   75               DO 20  i = 1, m
   76                  c( i, 1 ) = alpha*a( i, 1 )
   77   20          CONTINUE
   78            END IF
   79         ELSE
   80            IF( alpha.EQ.one ) THEN
   81               IF( beta.EQ.one ) THEN
   82                  DO 30 i = 1, m
   83                     c( i, 1 ) = a( i, 1 ) + c( i, 1 )
   84   30             CONTINUE
   85               ELSE
   86                  DO 40 i = 1, m
   87                     c( i, 1 ) = a( i, 1 ) + beta*c( i, 1 )
   88   40             CONTINUE
   89               END IF
   90            ELSE IF( beta.EQ.one ) THEN
   91               DO 50 i = 1, m
   92                  c( i, 1 ) = alpha*a( i, 1 ) + c( i, 1 )
   93   50          CONTINUE
   94            ELSE
   95               DO 60 i = 1, m
   96                  c( i, 1 ) = alpha*a( i, 1 ) + beta*c( i, 1 )
   97   60          CONTINUE
   98            END IF
   99         END IF
  100      ELSE
  101         IF( beta.EQ.zero ) THEN
  102            IF( alpha.EQ.zero ) THEN
  103               DO 80 j = 1, n
  104                  DO 70 i = 1, m
  105                     c( i, j ) = zero
  106   70             CONTINUE
  107   80          CONTINUE
  108            ELSE
  109               DO 100 j = 1, n
  110                  DO 90 i = 1, m
  111                     c( i, j ) = alpha * a( i, j )
  112   90             CONTINUE
  113  100          CONTINUE
  114            END IF
  115         ELSE
  116            IF( alpha.EQ.one ) THEN
  117               IF( beta.EQ.one ) THEN
  118                  DO 120 j = 1, n
  119                     DO 110 i = 1, m
  120                        c( i, j ) = a( i, j ) + c( i, j )
  121  110                CONTINUE
  122  120             CONTINUE
  123               ELSE
  124                  DO 140 j = 1, n
  125                     DO 130 i = 1, m
  126                        c( i, j ) = a( i, j ) + beta * c( i, j )
  127  130                CONTINUE
  128  140             CONTINUE
  129               END IF
  130            ELSE IF( beta.EQ.one ) THEN
  131               DO 160 j = 1, n
  132                  DO 150 i = 1, m
  133                     c( i, j ) = c( i, j ) + alpha * a( i, j )
  134  150             CONTINUE
  135  160          CONTINUE
  136            ELSE
  137               DO 180 j = 1, n
  138                  DO 170 i = 1, m
  139                     c( i, j ) = alpha * a( i, j ) + beta * c( i, j )
  140  170             CONTINUE
  141  180          CONTINUE
  142            END IF
  143         END IF
  144      END IF
  145
  146      RETURN
  147
  148
  149