Annotation of rpl/lapack/lapack/zlarfx.f, revision 1.4

1.1       bertrand    1:       SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
                      2:       IMPLICIT NONE
                      3: *
                      4: *  -- LAPACK auxiliary routine (version 3.2) --
                      5: *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
                      6: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
                      7: *     November 2006
                      8: *
                      9: *     .. Scalar Arguments ..
                     10:       CHARACTER          SIDE
                     11:       INTEGER            LDC, M, N
                     12:       COMPLEX*16         TAU
                     13: *     ..
                     14: *     .. Array Arguments ..
                     15:       COMPLEX*16         C( LDC, * ), V( * ), WORK( * )
                     16: *     ..
                     17: *
                     18: *  Purpose
                     19: *  =======
                     20: *
                     21: *  ZLARFX applies a complex elementary reflector H to a complex m by n
                     22: *  matrix C, from either the left or the right. H is represented in the
                     23: *  form
                     24: *
                     25: *        H = I - tau * v * v'
                     26: *
                     27: *  where tau is a complex scalar and v is a complex vector.
                     28: *
                     29: *  If tau = 0, then H is taken to be the unit matrix
                     30: *
                     31: *  This version uses inline code if H has order < 11.
                     32: *
                     33: *  Arguments
                     34: *  =========
                     35: *
                     36: *  SIDE    (input) CHARACTER*1
                     37: *          = 'L': form  H * C
                     38: *          = 'R': form  C * H
                     39: *
                     40: *  M       (input) INTEGER
                     41: *          The number of rows of the matrix C.
                     42: *
                     43: *  N       (input) INTEGER
                     44: *          The number of columns of the matrix C.
                     45: *
                     46: *  V       (input) COMPLEX*16 array, dimension (M) if SIDE = 'L'
                     47: *                                        or (N) if SIDE = 'R'
                     48: *          The vector v in the representation of H.
                     49: *
                     50: *  TAU     (input) COMPLEX*16
                     51: *          The value tau in the representation of H.
                     52: *
                     53: *  C       (input/output) COMPLEX*16 array, dimension (LDC,N)
                     54: *          On entry, the m by n matrix C.
                     55: *          On exit, C is overwritten by the matrix H * C if SIDE = 'L',
                     56: *          or C * H if SIDE = 'R'.
                     57: *
                     58: *  LDC     (input) INTEGER
                     59: *          The leading dimension of the array C. LDA >= max(1,M).
                     60: *
                     61: *  WORK    (workspace) COMPLEX*16 array, dimension (N) if SIDE = 'L'
                     62: *                                            or (M) if SIDE = 'R'
                     63: *          WORK is not referenced if H has order < 11.
                     64: *
                     65: *  =====================================================================
                     66: *
                     67: *     .. Parameters ..
                     68:       COMPLEX*16         ZERO, ONE
                     69:       PARAMETER          ( ZERO = ( 0.0D+0, 0.0D+0 ),
                     70:      $                   ONE = ( 1.0D+0, 0.0D+0 ) )
                     71: *     ..
                     72: *     .. Local Scalars ..
                     73:       INTEGER            J
                     74:       COMPLEX*16         SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
                     75:      $                   V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
                     76: *     ..
                     77: *     .. External Functions ..
                     78:       LOGICAL            LSAME
                     79:       EXTERNAL           LSAME
                     80: *     ..
                     81: *     .. External Subroutines ..
                     82:       EXTERNAL           ZLARF
                     83: *     ..
                     84: *     .. Intrinsic Functions ..
                     85:       INTRINSIC          DCONJG
                     86: *     ..
                     87: *     .. Executable Statements ..
                     88: *
                     89:       IF( TAU.EQ.ZERO )
                     90:      $   RETURN
                     91:       IF( LSAME( SIDE, 'L' ) ) THEN
                     92: *
                     93: *        Form  H * C, where H has order m.
                     94: *
                     95:          GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
                     96:      $           170, 190 )M
                     97: *
                     98: *        Code for general M
                     99: *
                    100:          CALL ZLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
                    101:          GO TO 410
                    102:    10    CONTINUE
                    103: *
                    104: *        Special code for 1 x 1 Householder
                    105: *
                    106:          T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
                    107:          DO 20 J = 1, N
                    108:             C( 1, J ) = T1*C( 1, J )
                    109:    20    CONTINUE
                    110:          GO TO 410
                    111:    30    CONTINUE
                    112: *
                    113: *        Special code for 2 x 2 Householder
                    114: *
                    115:          V1 = DCONJG( V( 1 ) )
                    116:          T1 = TAU*DCONJG( V1 )
                    117:          V2 = DCONJG( V( 2 ) )
                    118:          T2 = TAU*DCONJG( V2 )
                    119:          DO 40 J = 1, N
                    120:             SUM = V1*C( 1, J ) + V2*C( 2, J )
                    121:             C( 1, J ) = C( 1, J ) - SUM*T1
                    122:             C( 2, J ) = C( 2, J ) - SUM*T2
                    123:    40    CONTINUE
                    124:          GO TO 410
                    125:    50    CONTINUE
                    126: *
                    127: *        Special code for 3 x 3 Householder
                    128: *
                    129:          V1 = DCONJG( V( 1 ) )
                    130:          T1 = TAU*DCONJG( V1 )
                    131:          V2 = DCONJG( V( 2 ) )
                    132:          T2 = TAU*DCONJG( V2 )
                    133:          V3 = DCONJG( V( 3 ) )
                    134:          T3 = TAU*DCONJG( V3 )
                    135:          DO 60 J = 1, N
                    136:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
                    137:             C( 1, J ) = C( 1, J ) - SUM*T1
                    138:             C( 2, J ) = C( 2, J ) - SUM*T2
                    139:             C( 3, J ) = C( 3, J ) - SUM*T3
                    140:    60    CONTINUE
                    141:          GO TO 410
                    142:    70    CONTINUE
                    143: *
                    144: *        Special code for 4 x 4 Householder
                    145: *
                    146:          V1 = DCONJG( V( 1 ) )
                    147:          T1 = TAU*DCONJG( V1 )
                    148:          V2 = DCONJG( V( 2 ) )
                    149:          T2 = TAU*DCONJG( V2 )
                    150:          V3 = DCONJG( V( 3 ) )
                    151:          T3 = TAU*DCONJG( V3 )
                    152:          V4 = DCONJG( V( 4 ) )
                    153:          T4 = TAU*DCONJG( V4 )
                    154:          DO 80 J = 1, N
                    155:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
                    156:      $            V4*C( 4, J )
                    157:             C( 1, J ) = C( 1, J ) - SUM*T1
                    158:             C( 2, J ) = C( 2, J ) - SUM*T2
                    159:             C( 3, J ) = C( 3, J ) - SUM*T3
                    160:             C( 4, J ) = C( 4, J ) - SUM*T4
                    161:    80    CONTINUE
                    162:          GO TO 410
                    163:    90    CONTINUE
                    164: *
                    165: *        Special code for 5 x 5 Householder
                    166: *
                    167:          V1 = DCONJG( V( 1 ) )
                    168:          T1 = TAU*DCONJG( V1 )
                    169:          V2 = DCONJG( V( 2 ) )
                    170:          T2 = TAU*DCONJG( V2 )
                    171:          V3 = DCONJG( V( 3 ) )
                    172:          T3 = TAU*DCONJG( V3 )
                    173:          V4 = DCONJG( V( 4 ) )
                    174:          T4 = TAU*DCONJG( V4 )
                    175:          V5 = DCONJG( V( 5 ) )
                    176:          T5 = TAU*DCONJG( V5 )
                    177:          DO 100 J = 1, N
                    178:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
                    179:      $            V4*C( 4, J ) + V5*C( 5, J )
                    180:             C( 1, J ) = C( 1, J ) - SUM*T1
                    181:             C( 2, J ) = C( 2, J ) - SUM*T2
                    182:             C( 3, J ) = C( 3, J ) - SUM*T3
                    183:             C( 4, J ) = C( 4, J ) - SUM*T4
                    184:             C( 5, J ) = C( 5, J ) - SUM*T5
                    185:   100    CONTINUE
                    186:          GO TO 410
                    187:   110    CONTINUE
                    188: *
                    189: *        Special code for 6 x 6 Householder
                    190: *
                    191:          V1 = DCONJG( V( 1 ) )
                    192:          T1 = TAU*DCONJG( V1 )
                    193:          V2 = DCONJG( V( 2 ) )
                    194:          T2 = TAU*DCONJG( V2 )
                    195:          V3 = DCONJG( V( 3 ) )
                    196:          T3 = TAU*DCONJG( V3 )
                    197:          V4 = DCONJG( V( 4 ) )
                    198:          T4 = TAU*DCONJG( V4 )
                    199:          V5 = DCONJG( V( 5 ) )
                    200:          T5 = TAU*DCONJG( V5 )
                    201:          V6 = DCONJG( V( 6 ) )
                    202:          T6 = TAU*DCONJG( V6 )
                    203:          DO 120 J = 1, N
                    204:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
                    205:      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
                    206:             C( 1, J ) = C( 1, J ) - SUM*T1
                    207:             C( 2, J ) = C( 2, J ) - SUM*T2
                    208:             C( 3, J ) = C( 3, J ) - SUM*T3
                    209:             C( 4, J ) = C( 4, J ) - SUM*T4
                    210:             C( 5, J ) = C( 5, J ) - SUM*T5
                    211:             C( 6, J ) = C( 6, J ) - SUM*T6
                    212:   120    CONTINUE
                    213:          GO TO 410
                    214:   130    CONTINUE
                    215: *
                    216: *        Special code for 7 x 7 Householder
                    217: *
                    218:          V1 = DCONJG( V( 1 ) )
                    219:          T1 = TAU*DCONJG( V1 )
                    220:          V2 = DCONJG( V( 2 ) )
                    221:          T2 = TAU*DCONJG( V2 )
                    222:          V3 = DCONJG( V( 3 ) )
                    223:          T3 = TAU*DCONJG( V3 )
                    224:          V4 = DCONJG( V( 4 ) )
                    225:          T4 = TAU*DCONJG( V4 )
                    226:          V5 = DCONJG( V( 5 ) )
                    227:          T5 = TAU*DCONJG( V5 )
                    228:          V6 = DCONJG( V( 6 ) )
                    229:          T6 = TAU*DCONJG( V6 )
                    230:          V7 = DCONJG( V( 7 ) )
                    231:          T7 = TAU*DCONJG( V7 )
                    232:          DO 140 J = 1, N
                    233:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
                    234:      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
                    235:      $            V7*C( 7, J )
                    236:             C( 1, J ) = C( 1, J ) - SUM*T1
                    237:             C( 2, J ) = C( 2, J ) - SUM*T2
                    238:             C( 3, J ) = C( 3, J ) - SUM*T3
                    239:             C( 4, J ) = C( 4, J ) - SUM*T4
                    240:             C( 5, J ) = C( 5, J ) - SUM*T5
                    241:             C( 6, J ) = C( 6, J ) - SUM*T6
                    242:             C( 7, J ) = C( 7, J ) - SUM*T7
                    243:   140    CONTINUE
                    244:          GO TO 410
                    245:   150    CONTINUE
                    246: *
                    247: *        Special code for 8 x 8 Householder
                    248: *
                    249:          V1 = DCONJG( V( 1 ) )
                    250:          T1 = TAU*DCONJG( V1 )
                    251:          V2 = DCONJG( V( 2 ) )
                    252:          T2 = TAU*DCONJG( V2 )
                    253:          V3 = DCONJG( V( 3 ) )
                    254:          T3 = TAU*DCONJG( V3 )
                    255:          V4 = DCONJG( V( 4 ) )
                    256:          T4 = TAU*DCONJG( V4 )
                    257:          V5 = DCONJG( V( 5 ) )
                    258:          T5 = TAU*DCONJG( V5 )
                    259:          V6 = DCONJG( V( 6 ) )
                    260:          T6 = TAU*DCONJG( V6 )
                    261:          V7 = DCONJG( V( 7 ) )
                    262:          T7 = TAU*DCONJG( V7 )
                    263:          V8 = DCONJG( V( 8 ) )
                    264:          T8 = TAU*DCONJG( V8 )
                    265:          DO 160 J = 1, N
                    266:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
                    267:      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
                    268:      $            V7*C( 7, J ) + V8*C( 8, J )
                    269:             C( 1, J ) = C( 1, J ) - SUM*T1
                    270:             C( 2, J ) = C( 2, J ) - SUM*T2
                    271:             C( 3, J ) = C( 3, J ) - SUM*T3
                    272:             C( 4, J ) = C( 4, J ) - SUM*T4
                    273:             C( 5, J ) = C( 5, J ) - SUM*T5
                    274:             C( 6, J ) = C( 6, J ) - SUM*T6
                    275:             C( 7, J ) = C( 7, J ) - SUM*T7
                    276:             C( 8, J ) = C( 8, J ) - SUM*T8
                    277:   160    CONTINUE
                    278:          GO TO 410
                    279:   170    CONTINUE
                    280: *
                    281: *        Special code for 9 x 9 Householder
                    282: *
                    283:          V1 = DCONJG( V( 1 ) )
                    284:          T1 = TAU*DCONJG( V1 )
                    285:          V2 = DCONJG( V( 2 ) )
                    286:          T2 = TAU*DCONJG( V2 )
                    287:          V3 = DCONJG( V( 3 ) )
                    288:          T3 = TAU*DCONJG( V3 )
                    289:          V4 = DCONJG( V( 4 ) )
                    290:          T4 = TAU*DCONJG( V4 )
                    291:          V5 = DCONJG( V( 5 ) )
                    292:          T5 = TAU*DCONJG( V5 )
                    293:          V6 = DCONJG( V( 6 ) )
                    294:          T6 = TAU*DCONJG( V6 )
                    295:          V7 = DCONJG( V( 7 ) )
                    296:          T7 = TAU*DCONJG( V7 )
                    297:          V8 = DCONJG( V( 8 ) )
                    298:          T8 = TAU*DCONJG( V8 )
                    299:          V9 = DCONJG( V( 9 ) )
                    300:          T9 = TAU*DCONJG( V9 )
                    301:          DO 180 J = 1, N
                    302:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
                    303:      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
                    304:      $            V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
                    305:             C( 1, J ) = C( 1, J ) - SUM*T1
                    306:             C( 2, J ) = C( 2, J ) - SUM*T2
                    307:             C( 3, J ) = C( 3, J ) - SUM*T3
                    308:             C( 4, J ) = C( 4, J ) - SUM*T4
                    309:             C( 5, J ) = C( 5, J ) - SUM*T5
                    310:             C( 6, J ) = C( 6, J ) - SUM*T6
                    311:             C( 7, J ) = C( 7, J ) - SUM*T7
                    312:             C( 8, J ) = C( 8, J ) - SUM*T8
                    313:             C( 9, J ) = C( 9, J ) - SUM*T9
                    314:   180    CONTINUE
                    315:          GO TO 410
                    316:   190    CONTINUE
                    317: *
                    318: *        Special code for 10 x 10 Householder
                    319: *
                    320:          V1 = DCONJG( V( 1 ) )
                    321:          T1 = TAU*DCONJG( V1 )
                    322:          V2 = DCONJG( V( 2 ) )
                    323:          T2 = TAU*DCONJG( V2 )
                    324:          V3 = DCONJG( V( 3 ) )
                    325:          T3 = TAU*DCONJG( V3 )
                    326:          V4 = DCONJG( V( 4 ) )
                    327:          T4 = TAU*DCONJG( V4 )
                    328:          V5 = DCONJG( V( 5 ) )
                    329:          T5 = TAU*DCONJG( V5 )
                    330:          V6 = DCONJG( V( 6 ) )
                    331:          T6 = TAU*DCONJG( V6 )
                    332:          V7 = DCONJG( V( 7 ) )
                    333:          T7 = TAU*DCONJG( V7 )
                    334:          V8 = DCONJG( V( 8 ) )
                    335:          T8 = TAU*DCONJG( V8 )
                    336:          V9 = DCONJG( V( 9 ) )
                    337:          T9 = TAU*DCONJG( V9 )
                    338:          V10 = DCONJG( V( 10 ) )
                    339:          T10 = TAU*DCONJG( V10 )
                    340:          DO 200 J = 1, N
                    341:             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
                    342:      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
                    343:      $            V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
                    344:      $            V10*C( 10, J )
                    345:             C( 1, J ) = C( 1, J ) - SUM*T1
                    346:             C( 2, J ) = C( 2, J ) - SUM*T2
                    347:             C( 3, J ) = C( 3, J ) - SUM*T3
                    348:             C( 4, J ) = C( 4, J ) - SUM*T4
                    349:             C( 5, J ) = C( 5, J ) - SUM*T5
                    350:             C( 6, J ) = C( 6, J ) - SUM*T6
                    351:             C( 7, J ) = C( 7, J ) - SUM*T7
                    352:             C( 8, J ) = C( 8, J ) - SUM*T8
                    353:             C( 9, J ) = C( 9, J ) - SUM*T9
                    354:             C( 10, J ) = C( 10, J ) - SUM*T10
                    355:   200    CONTINUE
                    356:          GO TO 410
                    357:       ELSE
                    358: *
                    359: *        Form  C * H, where H has order n.
                    360: *
                    361:          GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
                    362:      $           370, 390 )N
                    363: *
                    364: *        Code for general N
                    365: *
                    366:          CALL ZLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
                    367:          GO TO 410
                    368:   210    CONTINUE
                    369: *
                    370: *        Special code for 1 x 1 Householder
                    371: *
                    372:          T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
                    373:          DO 220 J = 1, M
                    374:             C( J, 1 ) = T1*C( J, 1 )
                    375:   220    CONTINUE
                    376:          GO TO 410
                    377:   230    CONTINUE
                    378: *
                    379: *        Special code for 2 x 2 Householder
                    380: *
                    381:          V1 = V( 1 )
                    382:          T1 = TAU*DCONJG( V1 )
                    383:          V2 = V( 2 )
                    384:          T2 = TAU*DCONJG( V2 )
                    385:          DO 240 J = 1, M
                    386:             SUM = V1*C( J, 1 ) + V2*C( J, 2 )
                    387:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    388:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    389:   240    CONTINUE
                    390:          GO TO 410
                    391:   250    CONTINUE
                    392: *
                    393: *        Special code for 3 x 3 Householder
                    394: *
                    395:          V1 = V( 1 )
                    396:          T1 = TAU*DCONJG( V1 )
                    397:          V2 = V( 2 )
                    398:          T2 = TAU*DCONJG( V2 )
                    399:          V3 = V( 3 )
                    400:          T3 = TAU*DCONJG( V3 )
                    401:          DO 260 J = 1, M
                    402:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
                    403:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    404:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    405:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    406:   260    CONTINUE
                    407:          GO TO 410
                    408:   270    CONTINUE
                    409: *
                    410: *        Special code for 4 x 4 Householder
                    411: *
                    412:          V1 = V( 1 )
                    413:          T1 = TAU*DCONJG( V1 )
                    414:          V2 = V( 2 )
                    415:          T2 = TAU*DCONJG( V2 )
                    416:          V3 = V( 3 )
                    417:          T3 = TAU*DCONJG( V3 )
                    418:          V4 = V( 4 )
                    419:          T4 = TAU*DCONJG( V4 )
                    420:          DO 280 J = 1, M
                    421:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
                    422:      $            V4*C( J, 4 )
                    423:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    424:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    425:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    426:             C( J, 4 ) = C( J, 4 ) - SUM*T4
                    427:   280    CONTINUE
                    428:          GO TO 410
                    429:   290    CONTINUE
                    430: *
                    431: *        Special code for 5 x 5 Householder
                    432: *
                    433:          V1 = V( 1 )
                    434:          T1 = TAU*DCONJG( V1 )
                    435:          V2 = V( 2 )
                    436:          T2 = TAU*DCONJG( V2 )
                    437:          V3 = V( 3 )
                    438:          T3 = TAU*DCONJG( V3 )
                    439:          V4 = V( 4 )
                    440:          T4 = TAU*DCONJG( V4 )
                    441:          V5 = V( 5 )
                    442:          T5 = TAU*DCONJG( V5 )
                    443:          DO 300 J = 1, M
                    444:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
                    445:      $            V4*C( J, 4 ) + V5*C( J, 5 )
                    446:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    447:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    448:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    449:             C( J, 4 ) = C( J, 4 ) - SUM*T4
                    450:             C( J, 5 ) = C( J, 5 ) - SUM*T5
                    451:   300    CONTINUE
                    452:          GO TO 410
                    453:   310    CONTINUE
                    454: *
                    455: *        Special code for 6 x 6 Householder
                    456: *
                    457:          V1 = V( 1 )
                    458:          T1 = TAU*DCONJG( V1 )
                    459:          V2 = V( 2 )
                    460:          T2 = TAU*DCONJG( V2 )
                    461:          V3 = V( 3 )
                    462:          T3 = TAU*DCONJG( V3 )
                    463:          V4 = V( 4 )
                    464:          T4 = TAU*DCONJG( V4 )
                    465:          V5 = V( 5 )
                    466:          T5 = TAU*DCONJG( V5 )
                    467:          V6 = V( 6 )
                    468:          T6 = TAU*DCONJG( V6 )
                    469:          DO 320 J = 1, M
                    470:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
                    471:      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
                    472:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    473:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    474:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    475:             C( J, 4 ) = C( J, 4 ) - SUM*T4
                    476:             C( J, 5 ) = C( J, 5 ) - SUM*T5
                    477:             C( J, 6 ) = C( J, 6 ) - SUM*T6
                    478:   320    CONTINUE
                    479:          GO TO 410
                    480:   330    CONTINUE
                    481: *
                    482: *        Special code for 7 x 7 Householder
                    483: *
                    484:          V1 = V( 1 )
                    485:          T1 = TAU*DCONJG( V1 )
                    486:          V2 = V( 2 )
                    487:          T2 = TAU*DCONJG( V2 )
                    488:          V3 = V( 3 )
                    489:          T3 = TAU*DCONJG( V3 )
                    490:          V4 = V( 4 )
                    491:          T4 = TAU*DCONJG( V4 )
                    492:          V5 = V( 5 )
                    493:          T5 = TAU*DCONJG( V5 )
                    494:          V6 = V( 6 )
                    495:          T6 = TAU*DCONJG( V6 )
                    496:          V7 = V( 7 )
                    497:          T7 = TAU*DCONJG( V7 )
                    498:          DO 340 J = 1, M
                    499:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
                    500:      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
                    501:      $            V7*C( J, 7 )
                    502:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    503:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    504:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    505:             C( J, 4 ) = C( J, 4 ) - SUM*T4
                    506:             C( J, 5 ) = C( J, 5 ) - SUM*T5
                    507:             C( J, 6 ) = C( J, 6 ) - SUM*T6
                    508:             C( J, 7 ) = C( J, 7 ) - SUM*T7
                    509:   340    CONTINUE
                    510:          GO TO 410
                    511:   350    CONTINUE
                    512: *
                    513: *        Special code for 8 x 8 Householder
                    514: *
                    515:          V1 = V( 1 )
                    516:          T1 = TAU*DCONJG( V1 )
                    517:          V2 = V( 2 )
                    518:          T2 = TAU*DCONJG( V2 )
                    519:          V3 = V( 3 )
                    520:          T3 = TAU*DCONJG( V3 )
                    521:          V4 = V( 4 )
                    522:          T4 = TAU*DCONJG( V4 )
                    523:          V5 = V( 5 )
                    524:          T5 = TAU*DCONJG( V5 )
                    525:          V6 = V( 6 )
                    526:          T6 = TAU*DCONJG( V6 )
                    527:          V7 = V( 7 )
                    528:          T7 = TAU*DCONJG( V7 )
                    529:          V8 = V( 8 )
                    530:          T8 = TAU*DCONJG( V8 )
                    531:          DO 360 J = 1, M
                    532:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
                    533:      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
                    534:      $            V7*C( J, 7 ) + V8*C( J, 8 )
                    535:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    536:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    537:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    538:             C( J, 4 ) = C( J, 4 ) - SUM*T4
                    539:             C( J, 5 ) = C( J, 5 ) - SUM*T5
                    540:             C( J, 6 ) = C( J, 6 ) - SUM*T6
                    541:             C( J, 7 ) = C( J, 7 ) - SUM*T7
                    542:             C( J, 8 ) = C( J, 8 ) - SUM*T8
                    543:   360    CONTINUE
                    544:          GO TO 410
                    545:   370    CONTINUE
                    546: *
                    547: *        Special code for 9 x 9 Householder
                    548: *
                    549:          V1 = V( 1 )
                    550:          T1 = TAU*DCONJG( V1 )
                    551:          V2 = V( 2 )
                    552:          T2 = TAU*DCONJG( V2 )
                    553:          V3 = V( 3 )
                    554:          T3 = TAU*DCONJG( V3 )
                    555:          V4 = V( 4 )
                    556:          T4 = TAU*DCONJG( V4 )
                    557:          V5 = V( 5 )
                    558:          T5 = TAU*DCONJG( V5 )
                    559:          V6 = V( 6 )
                    560:          T6 = TAU*DCONJG( V6 )
                    561:          V7 = V( 7 )
                    562:          T7 = TAU*DCONJG( V7 )
                    563:          V8 = V( 8 )
                    564:          T8 = TAU*DCONJG( V8 )
                    565:          V9 = V( 9 )
                    566:          T9 = TAU*DCONJG( V9 )
                    567:          DO 380 J = 1, M
                    568:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
                    569:      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
                    570:      $            V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
                    571:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    572:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    573:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    574:             C( J, 4 ) = C( J, 4 ) - SUM*T4
                    575:             C( J, 5 ) = C( J, 5 ) - SUM*T5
                    576:             C( J, 6 ) = C( J, 6 ) - SUM*T6
                    577:             C( J, 7 ) = C( J, 7 ) - SUM*T7
                    578:             C( J, 8 ) = C( J, 8 ) - SUM*T8
                    579:             C( J, 9 ) = C( J, 9 ) - SUM*T9
                    580:   380    CONTINUE
                    581:          GO TO 410
                    582:   390    CONTINUE
                    583: *
                    584: *        Special code for 10 x 10 Householder
                    585: *
                    586:          V1 = V( 1 )
                    587:          T1 = TAU*DCONJG( V1 )
                    588:          V2 = V( 2 )
                    589:          T2 = TAU*DCONJG( V2 )
                    590:          V3 = V( 3 )
                    591:          T3 = TAU*DCONJG( V3 )
                    592:          V4 = V( 4 )
                    593:          T4 = TAU*DCONJG( V4 )
                    594:          V5 = V( 5 )
                    595:          T5 = TAU*DCONJG( V5 )
                    596:          V6 = V( 6 )
                    597:          T6 = TAU*DCONJG( V6 )
                    598:          V7 = V( 7 )
                    599:          T7 = TAU*DCONJG( V7 )
                    600:          V8 = V( 8 )
                    601:          T8 = TAU*DCONJG( V8 )
                    602:          V9 = V( 9 )
                    603:          T9 = TAU*DCONJG( V9 )
                    604:          V10 = V( 10 )
                    605:          T10 = TAU*DCONJG( V10 )
                    606:          DO 400 J = 1, M
                    607:             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
                    608:      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
                    609:      $            V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
                    610:      $            V10*C( J, 10 )
                    611:             C( J, 1 ) = C( J, 1 ) - SUM*T1
                    612:             C( J, 2 ) = C( J, 2 ) - SUM*T2
                    613:             C( J, 3 ) = C( J, 3 ) - SUM*T3
                    614:             C( J, 4 ) = C( J, 4 ) - SUM*T4
                    615:             C( J, 5 ) = C( J, 5 ) - SUM*T5
                    616:             C( J, 6 ) = C( J, 6 ) - SUM*T6
                    617:             C( J, 7 ) = C( J, 7 ) - SUM*T7
                    618:             C( J, 8 ) = C( J, 8 ) - SUM*T8
                    619:             C( J, 9 ) = C( J, 9 ) - SUM*T9
                    620:             C( J, 10 ) = C( J, 10 ) - SUM*T10
                    621:   400    CONTINUE
                    622:          GO TO 410
                    623:       END IF
                    624:   410 CONTINUE
                    625:       RETURN
                    626: *
                    627: *     End of ZLARFX
                    628: *
                    629:       END

CVSweb interface <joel.bertrand@systella.fr>