2
    3
    4
    5
    6
    7
    8
    9      CHARACTER*1        HERM, UPLO
   10      INTEGER            IOFFD, LDA, M, N
   11      DOUBLE PRECISION   ALPHA, BETA
   12
   13
   14      DOUBLE PRECISION   A( LDA, * )
   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
   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
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123      INTEGER            I, J, JTMP, MN
  124
  125
  126      LOGICAL            LSAME
  128
  129
  131
  132
  133
  134
  135
  136      IF( m.LE.0 .OR. n.LE.0 )
  137     $   RETURN
  138
  139
  140
  141      IF( 
lsame( uplo, 
'L' ) ) 
THEN 
  142
  143
  144
  145
  146
  147         mn = 
max( 0, -ioffd )
 
  148         DO 20 j = 1, 
min( mn, n )
 
  149            DO 10 i = 1, m
  150               a( i, j ) = alpha
  151   10       CONTINUE
  152   20    CONTINUE
  153
  154         IF( 
lsame( herm, 
'Z' ) ) 
THEN 
  155            DO 40 j = mn + 1, 
min( m - ioffd, n )
 
  156               jtmp = j + ioffd
  157               DO 30 i = jtmp + 1, m
  158                  a( i, j ) = alpha
  159   30          CONTINUE
  160   40       CONTINUE
  161         ELSE
  162            DO 60 j = mn + 1, 
min( m - ioffd, n )
 
  163               jtmp = j + ioffd
  164               a( jtmp, j ) = beta
  165               DO 50 i = jtmp + 1, m
  166                  a( i, j ) = alpha
  167   50          CONTINUE
  168   60       CONTINUE
  169         END IF
  170
  171      ELSE IF( 
lsame( uplo, 
'U' ) ) 
THEN 
  172
  173
  174
  175
  176
  177         mn = 
min( m - ioffd, n )
 
  178         IF( 
lsame( herm, 
'Z' ) ) 
THEN 
  179            DO 80 j = 
max( 0, -ioffd ) + 1, mn
 
  180               jtmp = j + ioffd
  181               DO 70 i = 1, jtmp - 1
  182                  a( i, j ) = alpha
  183   70          CONTINUE
  184   80       CONTINUE
  185         ELSE
  186            DO 100 j = 
max( 0, -ioffd ) + 1, mn
 
  187               jtmp = j + ioffd
  188               DO 90 i = 1, jtmp - 1
  189                  a( i, j ) = alpha
  190   90          CONTINUE
  191               a( jtmp, j ) = beta
  192  100       CONTINUE
  193         END IF
  194         DO 120 j = 
max( 0, mn ) + 1, n
 
  195            DO 110 i = 1, m
  196               a( i, j ) = alpha
  197  110       CONTINUE
  198  120    CONTINUE
  199
  200      ELSE IF( 
lsame( uplo, 
'D' ) ) 
THEN 
  201
  202
  203
  204         IF( .NOT.( 
lsame( herm, 
'Z' ) ) ) 
THEN 
  205            IF( ( ioffd.LT.m ).AND.( ioffd.GT.-n ) ) THEN
  206               DO 130 j = 
max( 0, -ioffd ) + 1, 
min( m - ioffd, n )
 
  207                  a( j + ioffd, j ) = beta
  208  130          CONTINUE
  209            END IF
  210         END IF
  211
  212      ELSE
  213
  214
  215
  216         DO 150 j = 1, n
  217            DO 140 i = 1, m
  218               a( i, j ) = alpha
  219  140       CONTINUE
  220  150    CONTINUE
  221         IF( alpha.NE.beta .AND. ioffd.LT.m .AND. ioffd.GT.-n ) THEN
  222            DO 160 j = 
max( 0, -ioffd ) + 1, 
min( m - ioffd, n )
 
  223               a( j + ioffd, j ) = beta
  224  160       CONTINUE
  225         END IF
  226
  227      END IF
  228
  229      RETURN
  230
  231
  232