File:  [local] / rpl / lapack / lapack / zlarfx.f
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Tue Jan 26 15:22:46 2010 UTC (14 years, 3 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Initial revision

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

CVSweb interface <joel.bertrand@systella.fr>