Annotation of rpl/lapack/lapack/dlarfx.f, revision 1.20

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

CVSweb interface <joel.bertrand@systella.fr>