File:  [local] / rpl / lapack / lapack / dlarfx.f
Revision 1.20: download - view: text, annotated - select for diffs - revision graph
Mon Aug 7 08:38:57 2023 UTC (8 months, 3 weeks ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_35, rpl-4_1_34, HEAD
Première mise à jour de lapack et blas.

    1: *> \brief \b DLARFX 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 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">
   15: *> [TXT]</a>
   16: *> \endhtmlonly
   17: *
   18: *  Definition:
   19: *  ===========
   20: *
   21: *       SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
   22: *
   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: *       ..
   31: *
   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
   97: *>          The leading dimension of the array C. LDC >= (1,M).
   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: *
  111: *> \author Univ. of Tennessee
  112: *> \author Univ. of California Berkeley
  113: *> \author Univ. of Colorado Denver
  114: *> \author NAG Ltd.
  115: *
  116: *> \ingroup doubleOTHERauxiliary
  117: *
  118: *  =====================================================================
  119:       SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
  120: *
  121: *  -- LAPACK auxiliary routine --
  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>