File:  [local] / rpl / lapack / lapack / zlarfx.f
Revision 1.14: download - view: text, annotated - select for diffs - revision graph
Mon Jan 27 09:28:39 2014 UTC (10 years, 3 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_24, rpl-4_1_23, rpl-4_1_22, rpl-4_1_21, rpl-4_1_20, rpl-4_1_19, rpl-4_1_18, rpl-4_1_17, HEAD
Cohérence.

    1: *> \brief \b ZLARFX applies an elementary reflector to a general rectangular matrix, with loop unrolling when the reflector has order ≤ 10.
    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 September 2012
  116: *
  117: *> \ingroup complex16OTHERauxiliary
  118: *
  119: *  =====================================================================
  120:       SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
  121: *
  122: *  -- LAPACK auxiliary routine (version 3.4.2) --
  123: *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
  124: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  125: *     September 2012
  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>