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

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

CVSweb interface <joel.bertrand@systella.fr>