The R Project SVN R

Rev

Rev 85755 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 85755 Rev 87868
Line 1323... Line 1323...
1323
      RETURN
1323
      RETURN
1324
*
1324
*
1325
*     End of DGEMM
1325
*     End of DGEMM
1326
*
1326
*
1327
      END
1327
      END
-
 
1328
*> \brief \b DGEMMTR
-
 
1329
*
-
 
1330
*  =========== DOCUMENTATION ===========
-
 
1331
*
-
 
1332
* Online html documentation available at
-
 
1333
*            http://www.netlib.org/lapack/explore-html/
-
 
1334
*
-
 
1335
*  Definition:
-
 
1336
*  ===========
-
 
1337
*
-
 
1338
*       SUBROUTINE DGEMMTR(UPLO,TRANSA,TRANSB,N,K,ALPHA,A,LDA,B,LDB,BETA,
-
 
1339
*                         C,LDC)
-
 
1340
*
-
 
1341
*       .. Scalar Arguments ..
-
 
1342
*       DOUBLE PRECISION ALPHA,BETA
-
 
1343
*       INTEGER K,LDA,LDB,LDC,N
-
 
1344
*       CHARACTER TRANSA,TRANSB, UPLO
-
 
1345
*       ..
-
 
1346
*       .. Array Arguments ..
-
 
1347
*       DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
-
 
1348
*       ..
-
 
1349
*
-
 
1350
*
-
 
1351
*> \par Purpose:
-
 
1352
*  =============
-
 
1353
*>
-
 
1354
*> \verbatim
-
 
1355
*>
-
 
1356
*> DGEMMTR  performs one of the matrix-matrix operations
-
 
1357
*>
-
 
1358
*>    C := alpha*op( A )*op( B ) + beta*C,
-
 
1359
*>
-
 
1360
*> where  op( X ) is one of
-
 
1361
*>
-
 
1362
*>    op( X ) = X   or   op( X ) = X**T,
-
 
1363
*>
-
 
1364
*> alpha and beta are scalars, and A, B and C are matrices, with op( A )
-
 
1365
*> an n by k matrix,  op( B )  a  k by n matrix and  C an n by n matrix.
-
 
1366
*> Thereby, the routine only accesses and updates the upper or lower
-
 
1367
*> triangular part of the result matrix C. This behaviour can be used if
-
 
1368
*> the resulting matrix C is known to be symmetric.
-
 
1369
*> \endverbatim
-
 
1370
*
-
 
1371
*  Arguments:
-
 
1372
*  ==========
-
 
1373
*
-
 
1374
*> \param[in] UPLO
-
 
1375
*> \verbatim
-
 
1376
*>          UPLO is CHARACTER*1
-
 
1377
*>           On entry, UPLO specifies whether the lower or the upper
-
 
1378
*>           triangular part of C is access and updated.
-
 
1379
*>
-
 
1380
*>              UPLO = 'L' or 'l', the lower triangular part of C is used.
-
 
1381
*>
-
 
1382
*>              UPLO = 'U' or 'u', the upper triangular part of C is used.
-
 
1383
*> \endverbatim
-
 
1384
*
-
 
1385
*> \param[in] TRANSA
-
 
1386
*> \verbatim
-
 
1387
*>          TRANSA is CHARACTER*1
-
 
1388
*>           On entry, TRANSA specifies the form of op( A ) to be used in
-
 
1389
*>           the matrix multiplication as follows:
-
 
1390
*>
-
 
1391
*>              TRANSA = 'N' or 'n',  op( A ) = A.
-
 
1392
*>
-
 
1393
*>              TRANSA = 'T' or 't',  op( A ) = A**T.
-
 
1394
*>
-
 
1395
*>              TRANSA = 'C' or 'c',  op( A ) = A**T.
-
 
1396
*> \endverbatim
-
 
1397
*>
-
 
1398
*> \param[in] TRANSB
-
 
1399
*> \verbatim
-
 
1400
*>          TRANSB is CHARACTER*1
-
 
1401
*>           On entry, TRANSB specifies the form of op( B ) to be used in
-
 
1402
*>           the matrix multiplication as follows:
-
 
1403
*>
-
 
1404
*>              TRANSB = 'N' or 'n',  op( B ) = B.
-
 
1405
*>
-
 
1406
*>              TRANSB = 'T' or 't',  op( B ) = B**T.
-
 
1407
*>
-
 
1408
*>              TRANSB = 'C' or 'c',  op( B ) = B**T.
-
 
1409
*> \endverbatim
-
 
1410
*>
-
 
1411
*> \param[in] N
-
 
1412
*> \verbatim
-
 
1413
*>          N is INTEGER
-
 
1414
*>           On entry,  N specifies the number of rows and columns of
-
 
1415
*>           the matrix C, the number of columns of op(B) and the number
-
 
1416
*>           of rows of op(A).  N must be at least zero.
-
 
1417
*> \endverbatim
-
 
1418
*>
-
 
1419
*> \param[in] K
-
 
1420
*> \verbatim
-
 
1421
*>          K is INTEGER
-
 
1422
*>           On entry,  K  specifies  the number of columns of the matrix
-
 
1423
*>           op( A ) and the number of rows of the matrix op( B ). K must
-
 
1424
*>           be at least  zero.
-
 
1425
*> \endverbatim
-
 
1426
*>
-
 
1427
*> \param[in] ALPHA
-
 
1428
*> \verbatim
-
 
1429
*>          ALPHA is DOUBLE PRECISION.
-
 
1430
*>           On entry, ALPHA specifies the scalar alpha.
-
 
1431
*> \endverbatim
-
 
1432
*>
-
 
1433
*> \param[in] A
-
 
1434
*> \verbatim
-
 
1435
*>          A is DOUBLE PRECISION array, dimension ( LDA, ka ), where ka is
-
 
1436
*>           k  when  TRANSA = 'N' or 'n',  and is  n  otherwise.
-
 
1437
*>           Before entry with  TRANSA = 'N' or 'n',  the leading  n by k
-
 
1438
*>           part of the array  A  must contain the matrix  A,  otherwise
-
 
1439
*>           the leading  k by m  part of the array  A  must contain  the
-
 
1440
*>           matrix A.
-
 
1441
*> \endverbatim
-
 
1442
*>
-
 
1443
*> \param[in] LDA
-
 
1444
*> \verbatim
-
 
1445
*>          LDA is INTEGER
-
 
1446
*>           On entry, LDA specifies the first dimension of A as declared
-
 
1447
*>           in the calling (sub) program. When  TRANSA = 'N' or 'n' then
-
 
1448
*>           LDA must be at least  max( 1, n ), otherwise  LDA must be at
-
 
1449
*>           least  max( 1, k ).
-
 
1450
*> \endverbatim
-
 
1451
*>
-
 
1452
*> \param[in] B
-
 
1453
*> \verbatim
-
 
1454
*>          B is DOUBLE PRECISION array, dimension ( LDB, kb ), where kb is
-
 
1455
*>           n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.
-
 
1456
*>           Before entry with  TRANSB = 'N' or 'n',  the leading  k by n
-
 
1457
*>           part of the array  B  must contain the matrix  B,  otherwise
-
 
1458
*>           the leading  n by k  part of the array  B  must contain  the
-
 
1459
*>           matrix B.
-
 
1460
*> \endverbatim
-
 
1461
*>
-
 
1462
*> \param[in] LDB
-
 
1463
*> \verbatim
-
 
1464
*>          LDB is INTEGER
-
 
1465
*>           On entry, LDB specifies the first dimension of B as declared
-
 
1466
*>           in the calling (sub) program. When  TRANSB = 'N' or 'n' then
-
 
1467
*>           LDB must be at least  max( 1, k ), otherwise  LDB must be at
-
 
1468
*>           least  max( 1, n ).
-
 
1469
*> \endverbatim
-
 
1470
*>
-
 
1471
*> \param[in] BETA
-
 
1472
*> \verbatim
-
 
1473
*>          BETA is DOUBLE PRECISION.
-
 
1474
*>           On entry,  BETA  specifies the scalar  beta.  When  BETA  is
-
 
1475
*>           supplied as zero then C need not be set on input.
-
 
1476
*> \endverbatim
-
 
1477
*>
-
 
1478
*> \param[in,out] C
-
 
1479
*> \verbatim
-
 
1480
*>          C is DOUBLE PRECISION array, dimension ( LDC, N )
-
 
1481
*>           Before entry, the leading  n by n  part of the array  C must
-
 
1482
*>           contain the matrix  C,  except when  beta  is zero, in which
-
 
1483
*>           case C need not be set on entry.
-
 
1484
*>           On exit, the upper or lower triangular part of the matrix
-
 
1485
*>           C  is overwritten by the n by n matrix
-
 
1486
*>           ( alpha*op( A )*op( B ) + beta*C ).
-
 
1487
*> \endverbatim
-
 
1488
*>
-
 
1489
*> \param[in] LDC
-
 
1490
*> \verbatim
-
 
1491
*>          LDC is INTEGER
-
 
1492
*>           On entry, LDC specifies the first dimension of C as declared
-
 
1493
*>           in  the  calling  (sub)  program.   LDC  must  be  at  least
-
 
1494
*>           max( 1, n ).
-
 
1495
*> \endverbatim
-
 
1496
*
-
 
1497
*  Authors:
-
 
1498
*  ========
-
 
1499
*
-
 
1500
*> \author Martin Koehler
-
 
1501
*
-
 
1502
*> \ingroup gemmtr
-
 
1503
*
-
 
1504
*> \par Further Details:
-
 
1505
*  =====================
-
 
1506
*>
-
 
1507
*> \verbatim
-
 
1508
*>
-
 
1509
*>  Level 3 Blas routine.
-
 
1510
*>
-
 
1511
*>  -- Written on 19-July-2023.
-
 
1512
*>     Martin Koehler, MPI Magdeburg
-
 
1513
*> \endverbatim
-
 
1514
*>
-
 
1515
*  =====================================================================
-
 
1516
      SUBROUTINE DGEMMTR(UPLO,TRANSA,TRANSB,N,K,ALPHA,A,LDA,B,LDB,
-
 
1517
     +         BETA,C,LDC)
-
 
1518
      IMPLICIT NONE
-
 
1519
*
-
 
1520
*  -- Reference BLAS level3 routine --
-
 
1521
*  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
-
 
1522
*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-
 
1523
*
-
 
1524
*     .. Scalar Arguments ..
-
 
1525
      DOUBLE PRECISION ALPHA,BETA
-
 
1526
      INTEGER K,LDA,LDB,LDC,N
-
 
1527
      CHARACTER TRANSA,TRANSB,UPLO
-
 
1528
*     ..
-
 
1529
*     .. Array Arguments ..
-
 
1530
      DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
-
 
1531
*     ..
-
 
1532
*
-
 
1533
*  =====================================================================
-
 
1534
*
-
 
1535
*     .. External Functions ..
-
 
1536
      LOGICAL LSAME
-
 
1537
      EXTERNAL LSAME
-
 
1538
*     ..
-
 
1539
*     .. External Subroutines ..
-
 
1540
      EXTERNAL XERBLA
-
 
1541
*     ..
-
 
1542
*     .. Intrinsic Functions ..
-
 
1543
      INTRINSIC MAX
-
 
1544
*     ..
-
 
1545
*     .. Local Scalars ..
-
 
1546
      DOUBLE PRECISION TEMP
-
 
1547
      INTEGER I,INFO,J,L,NROWA,NROWB, ISTART, ISTOP
-
 
1548
      LOGICAL NOTA,NOTB, UPPER
-
 
1549
*     ..
-
 
1550
*     .. Parameters ..
-
 
1551
      DOUBLE PRECISION ONE,ZERO
-
 
1552
      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
-
 
1553
*     ..
-
 
1554
*
-
 
1555
*     Set  NOTA  and  NOTB  as  true if  A  and  B  respectively are not
-
 
1556
*     transposed and set  NROWA and NROWB  as the number of rows of  A
-
 
1557
*     and  B  respectively.
-
 
1558
*
-
 
1559
      NOTA = LSAME(TRANSA,'N')
-
 
1560
      NOTB = LSAME(TRANSB,'N')
-
 
1561
      IF (NOTA) THEN
-
 
1562
          NROWA = N
-
 
1563
      ELSE
-
 
1564
          NROWA = K
-
 
1565
      END IF
-
 
1566
      IF (NOTB) THEN
-
 
1567
          NROWB = K
-
 
1568
      ELSE
-
 
1569
          NROWB = N
-
 
1570
      END IF
-
 
1571
      UPPER = LSAME(UPLO, 'U')
-
 
1572
*
-
 
1573
*     Test the input parameters.
-
 
1574
*
-
 
1575
      INFO = 0
-
 
1576
      IF ((.NOT. UPPER) .AND. (.NOT. LSAME(UPLO, 'L'))) THEN
-
 
1577
          INFO = 1
-
 
1578
      ELSE IF ((.NOT.NOTA) .AND. (.NOT.LSAME(TRANSA,'C')) .AND.
-
 
1579
     +    (.NOT.LSAME(TRANSA,'T'))) THEN
-
 
1580
          INFO = 2
-
 
1581
      ELSE IF ((.NOT.NOTB) .AND. (.NOT.LSAME(TRANSB,'C')) .AND.
-
 
1582
     +         (.NOT.LSAME(TRANSB,'T'))) THEN
-
 
1583
          INFO = 3
-
 
1584
      ELSE IF (N.LT.0) THEN
-
 
1585
          INFO = 4
-
 
1586
      ELSE IF (K.LT.0) THEN
-
 
1587
          INFO = 5
-
 
1588
      ELSE IF (LDA.LT.MAX(1,NROWA)) THEN
-
 
1589
          INFO = 8
-
 
1590
      ELSE IF (LDB.LT.MAX(1,NROWB)) THEN
-
 
1591
          INFO = 10
-
 
1592
      ELSE IF (LDC.LT.MAX(1,N)) THEN
-
 
1593
          INFO = 13
-
 
1594
      END IF
-
 
1595
      IF (INFO.NE.0) THEN
-
 
1596
          CALL XERBLA('DGEMMTR',INFO)
-
 
1597
          RETURN
-
 
1598
      END IF
-
 
1599
*
-
 
1600
*     Quick return if possible.
-
 
1601
*
-
 
1602
      IF (N.EQ.0) RETURN
-
 
1603
*
-
 
1604
*     And if  alpha.eq.zero.
-
 
1605
*
-
 
1606
      IF (ALPHA.EQ.ZERO) THEN
-
 
1607
          IF (BETA.EQ.ZERO) THEN
-
 
1608
              DO 20 J = 1,N
-
 
1609
                  IF (UPPER) THEN
-
 
1610
                      ISTART = 1
-
 
1611
                      ISTOP  = J
-
 
1612
                  ELSE
-
 
1613
                      ISTART = J
-
 
1614
                      ISTOP  = N
-
 
1615
                  END IF
-
 
1616
 
-
 
1617
                  DO 10 I = ISTART, ISTOP
-
 
1618
                      C(I,J) = ZERO
-
 
1619
   10             CONTINUE
-
 
1620
   20         CONTINUE
-
 
1621
          ELSE
-
 
1622
              DO 40 J = 1,N
-
 
1623
                  IF (UPPER) THEN
-
 
1624
                      ISTART = 1
-
 
1625
                      ISTOP  = J
-
 
1626
                  ELSE
-
 
1627
                      ISTART = J
-
 
1628
                      ISTOP  = N
-
 
1629
                  END IF
-
 
1630
 
-
 
1631
                  DO 30 I = ISTART, ISTOP
-
 
1632
                      C(I,J) = BETA*C(I,J)
-
 
1633
   30             CONTINUE
-
 
1634
   40         CONTINUE
-
 
1635
          END IF
-
 
1636
          RETURN
-
 
1637
      END IF
-
 
1638
*
-
 
1639
*     Start the operations.
-
 
1640
*
-
 
1641
      IF (NOTB) THEN
-
 
1642
          IF (NOTA) THEN
-
 
1643
*
-
 
1644
*           Form  C := alpha*A*B + beta*C.
-
 
1645
*
-
 
1646
              DO 90 J = 1,N
-
 
1647
                  IF (UPPER) THEN
-
 
1648
                      ISTART = 1
-
 
1649
                      ISTOP  = J
-
 
1650
                  ELSE
-
 
1651
                      ISTART = J
-
 
1652
                      ISTOP  = N
-
 
1653
                  END IF
-
 
1654
                  IF (BETA.EQ.ZERO) THEN
-
 
1655
                      DO 50 I = ISTART, ISTOP
-
 
1656
                          C(I,J) = ZERO
-
 
1657
   50                 CONTINUE
-
 
1658
                  ELSE IF (BETA.NE.ONE) THEN
-
 
1659
                      DO 60 I = ISTART, ISTOP
-
 
1660
                          C(I,J) = BETA*C(I,J)
-
 
1661
   60                 CONTINUE
-
 
1662
                  END IF
-
 
1663
                  DO 80 L = 1,K
-
 
1664
                      TEMP = ALPHA*B(L,J)
-
 
1665
                      DO 70 I = ISTART, ISTOP
-
 
1666
                          C(I,J) = C(I,J) + TEMP*A(I,L)
-
 
1667
   70                 CONTINUE
-
 
1668
   80             CONTINUE
-
 
1669
   90         CONTINUE
-
 
1670
          ELSE
-
 
1671
*
-
 
1672
*           Form  C := alpha*A**T*B + beta*C
-
 
1673
*
-
 
1674
              DO 120 J = 1,N
-
 
1675
                  IF (UPPER) THEN
-
 
1676
                      ISTART = 1
-
 
1677
                      ISTOP  = J
-
 
1678
                  ELSE
-
 
1679
                      ISTART = J
-
 
1680
                      ISTOP  = N
-
 
1681
                  END IF
-
 
1682
 
-
 
1683
                  DO 110 I = ISTART, ISTOP
-
 
1684
                      TEMP = ZERO
-
 
1685
                      DO 100 L = 1,K
-
 
1686
                          TEMP = TEMP + A(L,I)*B(L,J)
-
 
1687
  100                 CONTINUE
-
 
1688
                      IF (BETA.EQ.ZERO) THEN
-
 
1689
                          C(I,J) = ALPHA*TEMP
-
 
1690
                      ELSE
-
 
1691
                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
-
 
1692
                      END IF
-
 
1693
  110             CONTINUE
-
 
1694
  120         CONTINUE
-
 
1695
          END IF
-
 
1696
      ELSE
-
 
1697
          IF (NOTA) THEN
-
 
1698
*
-
 
1699
*           Form  C := alpha*A*B**T + beta*C
-
 
1700
*
-
 
1701
              DO 170 J = 1,N
-
 
1702
                  IF (UPPER) THEN
-
 
1703
                      ISTART = 1
-
 
1704
                      ISTOP  = J
-
 
1705
                  ELSE
-
 
1706
                      ISTART = J
-
 
1707
                      ISTOP  = N
-
 
1708
                  END IF
-
 
1709
 
-
 
1710
                  IF (BETA.EQ.ZERO) THEN
-
 
1711
                      DO 130 I = ISTART,ISTOP
-
 
1712
                          C(I,J) = ZERO
-
 
1713
  130                 CONTINUE
-
 
1714
                  ELSE IF (BETA.NE.ONE) THEN
-
 
1715
                      DO 140 I = ISTART,ISTOP
-
 
1716
                          C(I,J) = BETA*C(I,J)
-
 
1717
  140                 CONTINUE
-
 
1718
                  END IF
-
 
1719
                  DO 160 L = 1,K
-
 
1720
                      TEMP = ALPHA*B(J,L)
-
 
1721
                      DO 150 I = ISTART,ISTOP
-
 
1722
                          C(I,J) = C(I,J) + TEMP*A(I,L)
-
 
1723
  150                 CONTINUE
-
 
1724
  160             CONTINUE
-
 
1725
  170         CONTINUE
-
 
1726
          ELSE
-
 
1727
*
-
 
1728
*           Form  C := alpha*A**T*B**T + beta*C
-
 
1729
*
-
 
1730
              DO 200 J = 1,N
-
 
1731
                  IF (UPPER) THEN
-
 
1732
                      ISTART = 1
-
 
1733
                      ISTOP  = J
-
 
1734
                  ELSE
-
 
1735
                      ISTART = J
-
 
1736
                      ISTOP  = N
-
 
1737
                  END IF
-
 
1738
 
-
 
1739
                  DO 190 I = ISTART, ISTOP
-
 
1740
                      TEMP = ZERO
-
 
1741
                      DO 180 L = 1,K
-
 
1742
                          TEMP = TEMP + A(L,I)*B(J,L)
-
 
1743
  180                 CONTINUE
-
 
1744
                      IF (BETA.EQ.ZERO) THEN
-
 
1745
                          C(I,J) = ALPHA*TEMP
-
 
1746
                      ELSE
-
 
1747
                          C(I,J) = ALPHA*TEMP + BETA*C(I,J)
-
 
1748
                      END IF
-
 
1749
  190             CONTINUE
-
 
1750
  200         CONTINUE
-
 
1751
          END IF
-
 
1752
      END IF
-
 
1753
*
-
 
1754
      RETURN
-
 
1755
*
-
 
1756
*     End of SGEMM
-
 
1757
*
-
 
1758
      END
1328
*> \brief \b DGEMV
1759
*> \brief \b DGEMV
1329
*
1760
*
1330
*  =========== DOCUMENTATION ===========
1761
*  =========== DOCUMENTATION ===========
1331
*
1762
*
1332
* Online html documentation available at
1763
* Online html documentation available at
Line 1844... Line 2275...
1844
      ELSE
2275
      ELSE
1845
          JY = 1 - (N-1)*INCY
2276
          JY = 1 - (N-1)*INCY
1846
      END IF
2277
      END IF
1847
      IF (INCX.EQ.1) THEN
2278
      IF (INCX.EQ.1) THEN
1848
          DO 20 J = 1,N
2279
          DO 20 J = 1,N
1849
c              IF (Y(JY).NE.ZERO) THEN
2280
              IF (Y(JY).NE.ZERO) THEN
1850
                  TEMP = ALPHA*Y(JY)
2281
                  TEMP = ALPHA*Y(JY)
1851
                  DO 10 I = 1,M
2282
                  DO 10 I = 1,M
1852
                      A(I,J) = A(I,J) + X(I)*TEMP
2283
                      A(I,J) = A(I,J) + X(I)*TEMP
1853
   10             CONTINUE
2284
   10             CONTINUE
1854
c              END IF
2285
              END IF
1855
              JY = JY + INCY
2286
              JY = JY + INCY
1856
   20     CONTINUE
2287
   20     CONTINUE
1857
      ELSE
2288
      ELSE
1858
          IF (INCX.GT.0) THEN
2289
          IF (INCX.GT.0) THEN
1859
              KX = 1
2290
              KX = 1
1860
          ELSE
2291
          ELSE
1861
              KX = 1 - (M-1)*INCX
2292
              KX = 1 - (M-1)*INCX
1862
          END IF
2293
          END IF
1863
          DO 40 J = 1,N
2294
          DO 40 J = 1,N
1864
c              IF (Y(JY).NE.ZERO) THEN
2295
              IF (Y(JY).NE.ZERO) THEN
1865
                  TEMP = ALPHA*Y(JY)
2296
                  TEMP = ALPHA*Y(JY)
1866
                  IX = KX
2297
                  IX = KX
1867
                  DO 30 I = 1,M
2298
                  DO 30 I = 1,M
1868
                      A(I,J) = A(I,J) + X(IX)*TEMP
2299
                      A(I,J) = A(I,J) + X(IX)*TEMP
1869
                      IX = IX + INCX
2300
                      IX = IX + INCX
1870
   30             CONTINUE
2301
   30             CONTINUE
1871
c              END IF
2302
              END IF
1872
              JY = JY + INCY
2303
              JY = JY + INCY
1873
   40     CONTINUE
2304
   40     CONTINUE
1874
      END IF
2305
      END IF
1875
*
2306
*
1876
      RETURN
2307
      RETURN
Line 3711... Line 4142...
3711
*
4142
*
3712
*        Form  A  when upper triangle is stored in AP.
4143
*        Form  A  when upper triangle is stored in AP.
3713
*
4144
*
3714
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
4145
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
3715
              DO 20 J = 1,N
4146
              DO 20 J = 1,N
3716
c                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
4147
                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
3717
                      TEMP1 = ALPHA*Y(J)
4148
                      TEMP1 = ALPHA*Y(J)
3718
                      TEMP2 = ALPHA*X(J)
4149
                      TEMP2 = ALPHA*X(J)
3719
                      K = KK
4150
                      K = KK
3720
                      DO 10 I = 1,J
4151
                      DO 10 I = 1,J
3721
                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
4152
                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
3722
                          K = K + 1
4153
                          K = K + 1
3723
   10                 CONTINUE
4154
   10                 CONTINUE
3724
c                  END IF
4155
                  END IF
3725
                  KK = KK + J
4156
                  KK = KK + J
3726
   20         CONTINUE
4157
   20         CONTINUE
3727
          ELSE
4158
          ELSE
3728
              DO 40 J = 1,N
4159
              DO 40 J = 1,N
3729
c                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
4160
                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
3730
                      TEMP1 = ALPHA*Y(JY)
4161
                      TEMP1 = ALPHA*Y(JY)
3731
                      TEMP2 = ALPHA*X(JX)
4162
                      TEMP2 = ALPHA*X(JX)
3732
                      IX = KX
4163
                      IX = KX
3733
                      IY = KY
4164
                      IY = KY
3734
                      DO 30 K = KK,KK + J - 1
4165
                      DO 30 K = KK,KK + J - 1
3735
                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
4166
                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
3736
                          IX = IX + INCX
4167
                          IX = IX + INCX
3737
                          IY = IY + INCY
4168
                          IY = IY + INCY
3738
   30                 CONTINUE
4169
   30                 CONTINUE
3739
c                  END IF
4170
                  END IF
3740
                  JX = JX + INCX
4171
                  JX = JX + INCX
3741
                  JY = JY + INCY
4172
                  JY = JY + INCY
3742
                  KK = KK + J
4173
                  KK = KK + J
3743
   40         CONTINUE
4174
   40         CONTINUE
3744
          END IF
4175
          END IF
Line 3746... Line 4177...
3746
*
4177
*
3747
*        Form  A  when lower triangle is stored in AP.
4178
*        Form  A  when lower triangle is stored in AP.
3748
*
4179
*
3749
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
4180
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
3750
              DO 60 J = 1,N
4181
              DO 60 J = 1,N
3751
c                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
4182
                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
3752
                      TEMP1 = ALPHA*Y(J)
4183
                      TEMP1 = ALPHA*Y(J)
3753
                      TEMP2 = ALPHA*X(J)
4184
                      TEMP2 = ALPHA*X(J)
3754
                      K = KK
4185
                      K = KK
3755
                      DO 50 I = J,N
4186
                      DO 50 I = J,N
3756
                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
4187
                          AP(K) = AP(K) + X(I)*TEMP1 + Y(I)*TEMP2
3757
                          K = K + 1
4188
                          K = K + 1
3758
   50                 CONTINUE
4189
   50                 CONTINUE
3759
c                  END IF
4190
                  END IF
3760
                  KK = KK + N - J + 1
4191
                  KK = KK + N - J + 1
3761
   60         CONTINUE
4192
   60         CONTINUE
3762
          ELSE
4193
          ELSE
3763
              DO 80 J = 1,N
4194
              DO 80 J = 1,N
3764
c                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
4195
                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
3765
                      TEMP1 = ALPHA*Y(JY)
4196
                      TEMP1 = ALPHA*Y(JY)
3766
                      TEMP2 = ALPHA*X(JX)
4197
                      TEMP2 = ALPHA*X(JX)
3767
                      IX = JX
4198
                      IX = JX
3768
                      IY = JY
4199
                      IY = JY
3769
                      DO 70 K = KK,KK + N - J
4200
                      DO 70 K = KK,KK + N - J
3770
                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
4201
                          AP(K) = AP(K) + X(IX)*TEMP1 + Y(IY)*TEMP2
3771
                          IX = IX + INCX
4202
                          IX = IX + INCX
3772
                          IY = IY + INCY
4203
                          IY = IY + INCY
3773
   70                 CONTINUE
4204
   70                 CONTINUE
3774
c                  END IF
4205
                  END IF
3775
                  JX = JX + INCX
4206
                  JX = JX + INCX
3776
                  JY = JY + INCY
4207
                  JY = JY + INCY
3777
                  KK = KK + N - J + 1
4208
                  KK = KK + N - J + 1
3778
   80         CONTINUE
4209
   80         CONTINUE
3779
          END IF
4210
          END IF
Line 3977... Line 4408...
3977
*
4408
*
3978
*        Form  A  when upper triangle is stored in AP.
4409
*        Form  A  when upper triangle is stored in AP.
3979
*
4410
*
3980
          IF (INCX.EQ.1) THEN
4411
          IF (INCX.EQ.1) THEN
3981
              DO 20 J = 1,N
4412
              DO 20 J = 1,N
3982
c                  IF (X(J).NE.ZERO) THEN
4413
                  IF (X(J).NE.ZERO) THEN
3983
                      TEMP = ALPHA*X(J)
4414
                      TEMP = ALPHA*X(J)
3984
                      K = KK
4415
                      K = KK
3985
                      DO 10 I = 1,J
4416
                      DO 10 I = 1,J
3986
                          AP(K) = AP(K) + X(I)*TEMP
4417
                          AP(K) = AP(K) + X(I)*TEMP
3987
                          K = K + 1
4418
                          K = K + 1
3988
   10                 CONTINUE
4419
   10                 CONTINUE
3989
c                  END IF
4420
                  END IF
3990
                  KK = KK + J
4421
                  KK = KK + J
3991
   20         CONTINUE
4422
   20         CONTINUE
3992
          ELSE
4423
          ELSE
3993
              JX = KX
4424
              JX = KX
3994
              DO 40 J = 1,N
4425
              DO 40 J = 1,N
3995
c                  IF (X(JX).NE.ZERO) THEN
4426
                  IF (X(JX).NE.ZERO) THEN
3996
                      TEMP = ALPHA*X(JX)
4427
                      TEMP = ALPHA*X(JX)
3997
                      IX = KX
4428
                      IX = KX
3998
                      DO 30 K = KK,KK + J - 1
4429
                      DO 30 K = KK,KK + J - 1
3999
                          AP(K) = AP(K) + X(IX)*TEMP
4430
                          AP(K) = AP(K) + X(IX)*TEMP
4000
                          IX = IX + INCX
4431
                          IX = IX + INCX
4001
   30                 CONTINUE
4432
   30                 CONTINUE
4002
c                  END IF
4433
                  END IF
4003
                  JX = JX + INCX
4434
                  JX = JX + INCX
4004
                  KK = KK + J
4435
                  KK = KK + J
4005
   40         CONTINUE
4436
   40         CONTINUE
4006
          END IF
4437
          END IF
4007
      ELSE
4438
      ELSE
4008
*
4439
*
4009
*        Form  A  when lower triangle is stored in AP.
4440
*        Form  A  when lower triangle is stored in AP.
4010
*
4441
*
4011
          IF (INCX.EQ.1) THEN
4442
          IF (INCX.EQ.1) THEN
4012
              DO 60 J = 1,N
4443
              DO 60 J = 1,N
4013
c                  IF (X(J).NE.ZERO) THEN
4444
                  IF (X(J).NE.ZERO) THEN
4014
                      TEMP = ALPHA*X(J)
4445
                      TEMP = ALPHA*X(J)
4015
                      K = KK
4446
                      K = KK
4016
                      DO 50 I = J,N
4447
                      DO 50 I = J,N
4017
                          AP(K) = AP(K) + X(I)*TEMP
4448
                          AP(K) = AP(K) + X(I)*TEMP
4018
                          K = K + 1
4449
                          K = K + 1
4019
   50                 CONTINUE
4450
   50                 CONTINUE
4020
c                  END IF
4451
                  END IF
4021
                  KK = KK + N - J + 1
4452
                  KK = KK + N - J + 1
4022
   60         CONTINUE
4453
   60         CONTINUE
4023
          ELSE
4454
          ELSE
4024
              JX = KX
4455
              JX = KX
4025
              DO 80 J = 1,N
4456
              DO 80 J = 1,N
4026
c                  IF (X(JX).NE.ZERO) THEN
4457
                  IF (X(JX).NE.ZERO) THEN
4027
                      TEMP = ALPHA*X(JX)
4458
                      TEMP = ALPHA*X(JX)
4028
                      IX = JX
4459
                      IX = JX
4029
                      DO 70 K = KK,KK + N - J
4460
                      DO 70 K = KK,KK + N - J
4030
                          AP(K) = AP(K) + X(IX)*TEMP
4461
                          AP(K) = AP(K) + X(IX)*TEMP
4031
                          IX = IX + INCX
4462
                          IX = IX + INCX
4032
   70                 CONTINUE
4463
   70                 CONTINUE
4033
c                  END IF
4464
                  END IF
4034
                  JX = JX + INCX
4465
                  JX = JX + INCX
4035
                  KK = KK + N - J + 1
4466
                  KK = KK + N - J + 1
4036
   80         CONTINUE
4467
   80         CONTINUE
4037
          END IF
4468
          END IF
4038
      END IF
4469
      END IF
Line 4690... Line 5121...
4690
*> \author Univ. of Tennessee
5121
*> \author Univ. of Tennessee
4691
*> \author Univ. of California Berkeley
5122
*> \author Univ. of California Berkeley
4692
*> \author Univ. of Colorado Denver
5123
*> \author Univ. of Colorado Denver
4693
*> \author NAG Ltd.
5124
*> \author NAG Ltd.
4694
*
5125
*
4695
*> \ingroup double_blas_level2
5126
*> \ingroup hemv
4696
*
5127
*
4697
*> \par Further Details:
5128
*> \par Further Details:
4698
*  =====================
5129
*  =====================
4699
*>
5130
*>
4700
*> \verbatim
5131
*> \verbatim
Line 5016... Line 5447...
5016
*> \author Univ. of Tennessee
5447
*> \author Univ. of Tennessee
5017
*> \author Univ. of California Berkeley
5448
*> \author Univ. of California Berkeley
5018
*> \author Univ. of Colorado Denver
5449
*> \author Univ. of Colorado Denver
5019
*> \author NAG Ltd.
5450
*> \author NAG Ltd.
5020
*
5451
*
5021
*> \ingroup double_blas_level2
5452
*> \ingroup her2
5022
*
5453
*
5023
*> \par Further Details:
5454
*> \par Further Details:
5024
*  =====================
5455
*  =====================
5025
*>
5456
*>
5026
*> \verbatim
5457
*> \verbatim
Line 5120... Line 5551...
5120
*
5551
*
5121
*        Form  A  when A is stored in the upper triangle.
5552
*        Form  A  when A is stored in the upper triangle.
5122
*
5553
*
5123
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
5554
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
5124
              DO 20 J = 1,N
5555
              DO 20 J = 1,N
5125
c                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
5556
                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
5126
                      TEMP1 = ALPHA*Y(J)
5557
                      TEMP1 = ALPHA*Y(J)
5127
                      TEMP2 = ALPHA*X(J)
5558
                      TEMP2 = ALPHA*X(J)
5128
                      DO 10 I = 1,J
5559
                      DO 10 I = 1,J
5129
                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
5560
                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
5130
   10                 CONTINUE
5561
   10                 CONTINUE
5131
c                  END IF
5562
                  END IF
5132
   20         CONTINUE
5563
   20         CONTINUE
5133
          ELSE
5564
          ELSE
5134
              DO 40 J = 1,N
5565
              DO 40 J = 1,N
5135
c                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
5566
                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
5136
                      TEMP1 = ALPHA*Y(JY)
5567
                      TEMP1 = ALPHA*Y(JY)
5137
                      TEMP2 = ALPHA*X(JX)
5568
                      TEMP2 = ALPHA*X(JX)
5138
                      IX = KX
5569
                      IX = KX
5139
                      IY = KY
5570
                      IY = KY
5140
                      DO 30 I = 1,J
5571
                      DO 30 I = 1,J
5141
                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
5572
                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
5142
                          IX = IX + INCX
5573
                          IX = IX + INCX
5143
                          IY = IY + INCY
5574
                          IY = IY + INCY
5144
   30                 CONTINUE
5575
   30                 CONTINUE
5145
c                  END IF
5576
                  END IF
5146
                  JX = JX + INCX
5577
                  JX = JX + INCX
5147
                  JY = JY + INCY
5578
                  JY = JY + INCY
5148
   40         CONTINUE
5579
   40         CONTINUE
5149
          END IF
5580
          END IF
5150
      ELSE
5581
      ELSE
5151
*
5582
*
5152
*        Form  A  when A is stored in the lower triangle.
5583
*        Form  A  when A is stored in the lower triangle.
5153
*
5584
*
5154
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
5585
          IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN
5155
              DO 60 J = 1,N
5586
              DO 60 J = 1,N
5156
c                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
5587
                  IF ((X(J).NE.ZERO) .OR. (Y(J).NE.ZERO)) THEN
5157
                      TEMP1 = ALPHA*Y(J)
5588
                      TEMP1 = ALPHA*Y(J)
5158
                      TEMP2 = ALPHA*X(J)
5589
                      TEMP2 = ALPHA*X(J)
5159
                      DO 50 I = J,N
5590
                      DO 50 I = J,N
5160
                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
5591
                          A(I,J) = A(I,J) + X(I)*TEMP1 + Y(I)*TEMP2
5161
   50                 CONTINUE
5592
   50                 CONTINUE
5162
c                  END IF
5593
                  END IF
5163
   60         CONTINUE
5594
   60         CONTINUE
5164
          ELSE
5595
          ELSE
5165
              DO 80 J = 1,N
5596
              DO 80 J = 1,N
5166
c                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
5597
                  IF ((X(JX).NE.ZERO) .OR. (Y(JY).NE.ZERO)) THEN
5167
                      TEMP1 = ALPHA*Y(JY)
5598
                      TEMP1 = ALPHA*Y(JY)
5168
                      TEMP2 = ALPHA*X(JX)
5599
                      TEMP2 = ALPHA*X(JX)
5169
                      IX = JX
5600
                      IX = JX
5170
                      IY = JY
5601
                      IY = JY
5171
                      DO 70 I = J,N
5602
                      DO 70 I = J,N
5172
                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
5603
                          A(I,J) = A(I,J) + X(IX)*TEMP1 + Y(IY)*TEMP2
5173
                          IX = IX + INCX
5604
                          IX = IX + INCX
5174
                          IY = IY + INCY
5605
                          IY = IY + INCY
5175
   70                 CONTINUE
5606
   70                 CONTINUE
5176
c                  END IF
5607
                  END IF
5177
                  JX = JX + INCX
5608
                  JX = JX + INCX
5178
                  JY = JY + INCY
5609
                  JY = JY + INCY
5179
   80         CONTINUE
5610
   80         CONTINUE
5180
          END IF
5611
          END IF
5181
      END IF
5612
      END IF
Line 5500... Line 5931...
5500
                      DO 100 I = 1,J
5931
                      DO 100 I = 1,J
5501
                          C(I,J) = BETA*C(I,J)
5932
                          C(I,J) = BETA*C(I,J)
5502
  100                 CONTINUE
5933
  100                 CONTINUE
5503
                  END IF
5934
                  END IF
5504
                  DO 120 L = 1,K
5935
                  DO 120 L = 1,K
5505
c                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
5936
                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
5506
                          TEMP1 = ALPHA*B(J,L)
5937
                          TEMP1 = ALPHA*B(J,L)
5507
                          TEMP2 = ALPHA*A(J,L)
5938
                          TEMP2 = ALPHA*A(J,L)
5508
                          DO 110 I = 1,J
5939
                          DO 110 I = 1,J
5509
                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
5940
                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
5510
     +                                 B(I,L)*TEMP2
5941
     +                                 B(I,L)*TEMP2
5511
  110                     CONTINUE
5942
  110                     CONTINUE
5512
c                      END IF
5943
                      END IF
5513
  120             CONTINUE
5944
  120             CONTINUE
5514
  130         CONTINUE
5945
  130         CONTINUE
5515
          ELSE
5946
          ELSE
5516
              DO 180 J = 1,N
5947
              DO 180 J = 1,N
5517
                  IF (BETA.EQ.ZERO) THEN
5948
                  IF (BETA.EQ.ZERO) THEN
Line 5522... Line 5953...
5522
                      DO 150 I = J,N
5953
                      DO 150 I = J,N
5523
                          C(I,J) = BETA*C(I,J)
5954
                          C(I,J) = BETA*C(I,J)
5524
  150                 CONTINUE
5955
  150                 CONTINUE
5525
                  END IF
5956
                  END IF
5526
                  DO 170 L = 1,K
5957
                  DO 170 L = 1,K
5527
c                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
5958
                      IF ((A(J,L).NE.ZERO) .OR. (B(J,L).NE.ZERO)) THEN
5528
                          TEMP1 = ALPHA*B(J,L)
5959
                          TEMP1 = ALPHA*B(J,L)
5529
                          TEMP2 = ALPHA*A(J,L)
5960
                          TEMP2 = ALPHA*A(J,L)
5530
                          DO 160 I = J,N
5961
                          DO 160 I = J,N
5531
                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
5962
                              C(I,J) = C(I,J) + A(I,L)*TEMP1 +
5532
     +                                 B(I,L)*TEMP2
5963
     +                                 B(I,L)*TEMP2
5533
  160                     CONTINUE
5964
  160                     CONTINUE
5534
c                      END IF
5965
                      END IF
5535
  170             CONTINUE
5966
  170             CONTINUE
5536
  180         CONTINUE
5967
  180         CONTINUE
5537
          END IF
5968
          END IF
5538
      ELSE
5969
      ELSE
5539
*
5970
*
Line 5784... Line 6215...
5784
*
6215
*
5785
*        Form  A  when A is stored in upper triangle.
6216
*        Form  A  when A is stored in upper triangle.
5786
*
6217
*
5787
          IF (INCX.EQ.1) THEN
6218
          IF (INCX.EQ.1) THEN
5788
              DO 20 J = 1,N
6219
              DO 20 J = 1,N
5789
c                  IF (X(J).NE.ZERO) THEN
6220
                  IF (X(J).NE.ZERO) THEN
5790
                      TEMP = ALPHA*X(J)
6221
                      TEMP = ALPHA*X(J)
5791
                      DO 10 I = 1,J
6222
                      DO 10 I = 1,J
5792
                          A(I,J) = A(I,J) + X(I)*TEMP
6223
                          A(I,J) = A(I,J) + X(I)*TEMP
5793
   10                 CONTINUE
6224
   10                 CONTINUE
5794
c                  END IF
6225
                  END IF
5795
   20         CONTINUE
6226
   20         CONTINUE
5796
          ELSE
6227
          ELSE
5797
              JX = KX
6228
              JX = KX
5798
              DO 40 J = 1,N
6229
              DO 40 J = 1,N
5799
c                  IF (X(JX).NE.ZERO) THEN
6230
                  IF (X(JX).NE.ZERO) THEN
5800
                      TEMP = ALPHA*X(JX)
6231
                      TEMP = ALPHA*X(JX)
5801
                      IX = KX
6232
                      IX = KX
5802
                      DO 30 I = 1,J
6233
                      DO 30 I = 1,J
5803
                          A(I,J) = A(I,J) + X(IX)*TEMP
6234
                          A(I,J) = A(I,J) + X(IX)*TEMP
5804
                          IX = IX + INCX
6235
                          IX = IX + INCX
5805
   30                 CONTINUE
6236
   30                 CONTINUE
5806
c                  END IF
6237
                  END IF
5807
                  JX = JX + INCX
6238
                  JX = JX + INCX
5808
   40         CONTINUE
6239
   40         CONTINUE
5809
          END IF
6240
          END IF
5810
      ELSE
6241
      ELSE
5811
*
6242
*
5812
*        Form  A  when A is stored in lower triangle.
6243
*        Form  A  when A is stored in lower triangle.
5813
*
6244
*
5814
          IF (INCX.EQ.1) THEN
6245
          IF (INCX.EQ.1) THEN
5815
              DO 60 J = 1,N
6246
              DO 60 J = 1,N
5816
c                  IF (X(J).NE.ZERO) THEN
6247
                  IF (X(J).NE.ZERO) THEN
5817
                      TEMP = ALPHA*X(J)
6248
                      TEMP = ALPHA*X(J)
5818
                      DO 50 I = J,N
6249
                      DO 50 I = J,N
5819
                          A(I,J) = A(I,J) + X(I)*TEMP
6250
                          A(I,J) = A(I,J) + X(I)*TEMP
5820
   50                 CONTINUE
6251
   50                 CONTINUE
5821
c                  END IF
6252
                  END IF
5822
   60         CONTINUE
6253
   60         CONTINUE
5823
          ELSE
6254
          ELSE
5824
              JX = KX
6255
              JX = KX
5825
              DO 80 J = 1,N
6256
              DO 80 J = 1,N
5826
c                  IF (X(JX).NE.ZERO) THEN
6257
                  IF (X(JX).NE.ZERO) THEN
5827
                      TEMP = ALPHA*X(JX)
6258
                      TEMP = ALPHA*X(JX)
5828
                      IX = JX
6259
                      IX = JX
5829
                      DO 70 I = J,N
6260
                      DO 70 I = J,N
5830
                          A(I,J) = A(I,J) + X(IX)*TEMP
6261
                          A(I,J) = A(I,J) + X(IX)*TEMP
5831
                          IX = IX + INCX
6262
                          IX = IX + INCX
5832
   70                 CONTINUE
6263
   70                 CONTINUE
5833
c                  END IF
6264
                  END IF
5834
                  JX = JX + INCX
6265
                  JX = JX + INCX
5835
   80         CONTINUE
6266
   80         CONTINUE
5836
          END IF
6267
          END IF
5837
      END IF
6268
      END IF
5838
*
6269
*
Line 6131... Line 6562...
6131
                      DO 100 I = 1,J
6562
                      DO 100 I = 1,J
6132
                          C(I,J) = BETA*C(I,J)
6563
                          C(I,J) = BETA*C(I,J)
6133
  100                 CONTINUE
6564
  100                 CONTINUE
6134
                  END IF
6565
                  END IF
6135
                  DO 120 L = 1,K
6566
                  DO 120 L = 1,K
6136
c                      IF (A(J,L).NE.ZERO) THEN
6567
                      IF (A(J,L).NE.ZERO) THEN
6137
                          TEMP = ALPHA*A(J,L)
6568
                          TEMP = ALPHA*A(J,L)
6138
                          DO 110 I = 1,J
6569
                          DO 110 I = 1,J
6139
                              C(I,J) = C(I,J) + TEMP*A(I,L)
6570
                              C(I,J) = C(I,J) + TEMP*A(I,L)
6140
  110                     CONTINUE
6571
  110                     CONTINUE
6141
c                      END IF
6572
                      END IF
6142
  120             CONTINUE
6573
  120             CONTINUE
6143
  130         CONTINUE
6574
  130         CONTINUE
6144
          ELSE
6575
          ELSE
6145
              DO 180 J = 1,N
6576
              DO 180 J = 1,N
6146
                  IF (BETA.EQ.ZERO) THEN
6577
                  IF (BETA.EQ.ZERO) THEN
Line 6151... Line 6582...
6151
                      DO 150 I = J,N
6582
                      DO 150 I = J,N
6152
                          C(I,J) = BETA*C(I,J)
6583
                          C(I,J) = BETA*C(I,J)
6153
  150                 CONTINUE
6584
  150                 CONTINUE
6154
                  END IF
6585
                  END IF
6155
                  DO 170 L = 1,K
6586
                  DO 170 L = 1,K
6156
c                      IF (A(J,L).NE.ZERO) THEN
6587
                      IF (A(J,L).NE.ZERO) THEN
6157
                          TEMP = ALPHA*A(J,L)
6588
                          TEMP = ALPHA*A(J,L)
6158
                          DO 160 I = J,N
6589
                          DO 160 I = J,N
6159
                              C(I,J) = C(I,J) + TEMP*A(I,L)
6590
                              C(I,J) = C(I,J) + TEMP*A(I,L)
6160
  160                     CONTINUE
6591
  160                     CONTINUE
6161
c                      END IF
6592
                      END IF
6162
  170             CONTINUE
6593
  170             CONTINUE
6163
  180         CONTINUE
6594
  180         CONTINUE
6164
          END IF
6595
          END IF
6165
      ELSE
6596
      ELSE
6166
*
6597
*
Line 6472... Line 6903...
6472
*
6903
*
6473
          IF (LSAME(UPLO,'U')) THEN
6904
          IF (LSAME(UPLO,'U')) THEN
6474
              KPLUS1 = K + 1
6905
              KPLUS1 = K + 1
6475
              IF (INCX.EQ.1) THEN
6906
              IF (INCX.EQ.1) THEN
6476
                  DO 20 J = 1,N
6907
                  DO 20 J = 1,N
6477
c                      IF (X(J).NE.ZERO) THEN
6908
                      IF (X(J).NE.ZERO) THEN
6478
                          TEMP = X(J)
6909
                          TEMP = X(J)
6479
                          L = KPLUS1 - J
6910
                          L = KPLUS1 - J
6480
                          DO 10 I = MAX(1,J-K),J - 1
6911
                          DO 10 I = MAX(1,J-K),J - 1
6481
                              X(I) = X(I) + TEMP*A(L+I,J)
6912
                              X(I) = X(I) + TEMP*A(L+I,J)
6482
   10                     CONTINUE
6913
   10                     CONTINUE
6483
                          IF (NOUNIT) X(J) = X(J)*A(KPLUS1,J)
6914
                          IF (NOUNIT) X(J) = X(J)*A(KPLUS1,J)
6484
c                      END IF
6915
                      END IF
6485
   20             CONTINUE
6916
   20             CONTINUE
6486
              ELSE
6917
              ELSE
6487
                  JX = KX
6918
                  JX = KX
6488
                  DO 40 J = 1,N
6919
                  DO 40 J = 1,N
6489
c                      IF (X(JX).NE.ZERO) THEN
6920
                      IF (X(JX).NE.ZERO) THEN
6490
                          TEMP = X(JX)
6921
                          TEMP = X(JX)
6491
                          IX = KX
6922
                          IX = KX
6492
                          L = KPLUS1 - J
6923
                          L = KPLUS1 - J
6493
                          DO 30 I = MAX(1,J-K),J - 1
6924
                          DO 30 I = MAX(1,J-K),J - 1
6494
                              X(IX) = X(IX) + TEMP*A(L+I,J)
6925
                              X(IX) = X(IX) + TEMP*A(L+I,J)
6495
                              IX = IX + INCX
6926
                              IX = IX + INCX
6496
   30                     CONTINUE
6927
   30                     CONTINUE
6497
                          IF (NOUNIT) X(JX) = X(JX)*A(KPLUS1,J)
6928
                          IF (NOUNIT) X(JX) = X(JX)*A(KPLUS1,J)
6498
c                      END IF
6929
                      END IF
6499
                      JX = JX + INCX
6930
                      JX = JX + INCX
6500
                      IF (J.GT.K) KX = KX + INCX
6931
                      IF (J.GT.K) KX = KX + INCX
6501
   40             CONTINUE
6932
   40             CONTINUE
6502
              END IF
6933
              END IF
6503
          ELSE
6934
          ELSE
6504
              IF (INCX.EQ.1) THEN
6935
              IF (INCX.EQ.1) THEN
6505
                  DO 60 J = N,1,-1
6936
                  DO 60 J = N,1,-1
6506
c                      IF (X(J).NE.ZERO) THEN
6937
                      IF (X(J).NE.ZERO) THEN
6507
                          TEMP = X(J)
6938
                          TEMP = X(J)
6508
                          L = 1 - J
6939
                          L = 1 - J
6509
                          DO 50 I = MIN(N,J+K),J + 1,-1
6940
                          DO 50 I = MIN(N,J+K),J + 1,-1
6510
                              X(I) = X(I) + TEMP*A(L+I,J)
6941
                              X(I) = X(I) + TEMP*A(L+I,J)
6511
   50                     CONTINUE
6942
   50                     CONTINUE
6512
                          IF (NOUNIT) X(J) = X(J)*A(1,J)
6943
                          IF (NOUNIT) X(J) = X(J)*A(1,J)
6513
c                      END IF
6944
                      END IF
6514
   60             CONTINUE
6945
   60             CONTINUE
6515
              ELSE
6946
              ELSE
6516
                  KX = KX + (N-1)*INCX
6947
                  KX = KX + (N-1)*INCX
6517
                  JX = KX
6948
                  JX = KX
6518
                  DO 80 J = N,1,-1
6949
                  DO 80 J = N,1,-1
6519
c                      IF (X(JX).NE.ZERO) THEN
6950
                      IF (X(JX).NE.ZERO) THEN
6520
                          TEMP = X(JX)
6951
                          TEMP = X(JX)
6521
                          IX = KX
6952
                          IX = KX
6522
                          L = 1 - J
6953
                          L = 1 - J
6523
                          DO 70 I = MIN(N,J+K),J + 1,-1
6954
                          DO 70 I = MIN(N,J+K),J + 1,-1
6524
                              X(IX) = X(IX) + TEMP*A(L+I,J)
6955
                              X(IX) = X(IX) + TEMP*A(L+I,J)
6525
                              IX = IX - INCX
6956
                              IX = IX - INCX
6526
   70                     CONTINUE
6957
   70                     CONTINUE
6527
                          IF (NOUNIT) X(JX) = X(JX)*A(1,J) 
6958
                          IF (NOUNIT) X(JX) = X(JX)*A(1,J)
6528
c                      END IF
6959
                      END IF
6529
                      JX = JX - INCX
6960
                      JX = JX - INCX
6530
                      IF ((N-J).GE.K) KX = KX - INCX
6961
                      IF ((N-J).GE.K) KX = KX - INCX
6531
   80             CONTINUE
6962
   80             CONTINUE
6532
              END IF
6963
              END IF
6533
          END IF
6964
          END IF
Line 6872... Line 7303...
6872
*
7303
*
6873
          IF (LSAME(UPLO,'U')) THEN
7304
          IF (LSAME(UPLO,'U')) THEN
6874
              KPLUS1 = K + 1
7305
              KPLUS1 = K + 1
6875
              IF (INCX.EQ.1) THEN
7306
              IF (INCX.EQ.1) THEN
6876
                  DO 20 J = N,1,-1
7307
                  DO 20 J = N,1,-1
6877
c                      IF (X(J).NE.ZERO) THEN
7308
                      IF (X(J).NE.ZERO) THEN
6878
                          L = KPLUS1 - J
7309
                          L = KPLUS1 - J
6879
                          IF (NOUNIT) X(J) = X(J)/A(KPLUS1,J)
7310
                          IF (NOUNIT) X(J) = X(J)/A(KPLUS1,J)
6880
                          TEMP = X(J)
7311
                          TEMP = X(J)
6881
                          DO 10 I = J - 1,MAX(1,J-K),-1
7312
                          DO 10 I = J - 1,MAX(1,J-K),-1
6882
                              X(I) = X(I) - TEMP*A(L+I,J)
7313
                              X(I) = X(I) - TEMP*A(L+I,J)
6883
   10                     CONTINUE
7314
   10                     CONTINUE
6884
c                      END IF
7315
                      END IF
6885
   20             CONTINUE
7316
   20             CONTINUE
6886
              ELSE
7317
              ELSE
6887
                  KX = KX + (N-1)*INCX
7318
                  KX = KX + (N-1)*INCX
6888
                  JX = KX
7319
                  JX = KX
6889
                  DO 40 J = N,1,-1
7320
                  DO 40 J = N,1,-1
6890
                      KX = KX - INCX
7321
                      KX = KX - INCX
6891
c                      IF (X(JX).NE.ZERO) THEN
7322
                      IF (X(JX).NE.ZERO) THEN
6892
                          IX = KX
7323
                          IX = KX
6893
                          L = KPLUS1 - J
7324
                          L = KPLUS1 - J
6894
                          IF (NOUNIT) X(JX) = X(JX)/A(KPLUS1,J)
7325
                          IF (NOUNIT) X(JX) = X(JX)/A(KPLUS1,J)
6895
                          TEMP = X(JX)
7326
                          TEMP = X(JX)
6896
                          DO 30 I = J - 1,MAX(1,J-K),-1
7327
                          DO 30 I = J - 1,MAX(1,J-K),-1
6897
                              X(IX) = X(IX) - TEMP*A(L+I,J)
7328
                              X(IX) = X(IX) - TEMP*A(L+I,J)
6898
                              IX = IX - INCX
7329
                              IX = IX - INCX
6899
   30                     CONTINUE
7330
   30                     CONTINUE
6900
c                      END IF
7331
                      END IF
6901
                      JX = JX - INCX
7332
                      JX = JX - INCX
6902
   40             CONTINUE
7333
   40             CONTINUE
6903
              END IF
7334
              END IF
6904
          ELSE
7335
          ELSE
6905
              IF (INCX.EQ.1) THEN
7336
              IF (INCX.EQ.1) THEN
6906
                  DO 60 J = 1,N
7337
                  DO 60 J = 1,N
6907
c                      IF (X(J).NE.ZERO) THEN
7338
                      IF (X(J).NE.ZERO) THEN
6908
                          L = 1 - J
7339
                          L = 1 - J
6909
                          IF (NOUNIT) X(J) = X(J)/A(1,J)
7340
                          IF (NOUNIT) X(J) = X(J)/A(1,J)
6910
                          TEMP = X(J)
7341
                          TEMP = X(J)
6911
                          DO 50 I = J + 1,MIN(N,J+K)
7342
                          DO 50 I = J + 1,MIN(N,J+K)
6912
                              X(I) = X(I) - TEMP*A(L+I,J)
7343
                              X(I) = X(I) - TEMP*A(L+I,J)
6913
   50                     CONTINUE
7344
   50                     CONTINUE
6914
c                      END IF
7345
                      END IF
6915
   60             CONTINUE
7346
   60             CONTINUE
6916
              ELSE
7347
              ELSE
6917
                  JX = KX
7348
                  JX = KX
6918
                  DO 80 J = 1,N
7349
                  DO 80 J = 1,N
6919
                      KX = KX + INCX
7350
                      KX = KX + INCX
6920
c                      IF (X(JX).NE.ZERO) THEN
7351
                      IF (X(JX).NE.ZERO) THEN
6921
                          IX = KX
7352
                          IX = KX
6922
                          L = 1 - J
7353
                          L = 1 - J
6923
                          IF (NOUNIT) X(JX) = X(JX)/A(1,J)
7354
                          IF (NOUNIT) X(JX) = X(JX)/A(1,J)
6924
                          TEMP = X(JX)
7355
                          TEMP = X(JX)
6925
                          DO 70 I = J + 1,MIN(N,J+K)
7356
                          DO 70 I = J + 1,MIN(N,J+K)
6926
                              X(IX) = X(IX) - TEMP*A(L+I,J)
7357
                              X(IX) = X(IX) - TEMP*A(L+I,J)
6927
                              IX = IX + INCX
7358
                              IX = IX + INCX
6928
   70                     CONTINUE
7359
   70                     CONTINUE
6929
c                      END IF
7360
                      END IF
6930
                      JX = JX + INCX
7361
                      JX = JX + INCX
6931
   80             CONTINUE
7362
   80             CONTINUE
6932
              END IF
7363
              END IF
6933
          END IF
7364
          END IF
6934
      ELSE
7365
      ELSE
Line 7218... Line 7649...
7218
*
7649
*
7219
          IF (LSAME(UPLO,'U')) THEN
7650
          IF (LSAME(UPLO,'U')) THEN
7220
              KK = 1
7651
              KK = 1
7221
              IF (INCX.EQ.1) THEN
7652
              IF (INCX.EQ.1) THEN
7222
                  DO 20 J = 1,N
7653
                  DO 20 J = 1,N
7223
c                      IF (X(J).NE.ZERO) THEN
7654
                      IF (X(J).NE.ZERO) THEN
7224
                          TEMP = X(J)
7655
                          TEMP = X(J)
7225
                          K = KK
7656
                          K = KK
7226
                          DO 10 I = 1,J - 1
7657
                          DO 10 I = 1,J - 1
7227
                              X(I) = X(I) + TEMP*AP(K)
7658
                              X(I) = X(I) + TEMP*AP(K)
7228
                              K = K + 1
7659
                              K = K + 1
7229
   10                     CONTINUE
7660
   10                     CONTINUE
7230
                          IF (NOUNIT) X(J) = X(J)*AP(KK+J-1)
7661
                          IF (NOUNIT) X(J) = X(J)*AP(KK+J-1)
7231
c                      END IF
7662
                      END IF
7232
                      KK = KK + J
7663
                      KK = KK + J
7233
   20             CONTINUE
7664
   20             CONTINUE
7234
              ELSE
7665
              ELSE
7235
                  JX = KX
7666
                  JX = KX
7236
                  DO 40 J = 1,N
7667
                  DO 40 J = 1,N
7237
c                      IF (X(JX).NE.ZERO) THEN
7668
                      IF (X(JX).NE.ZERO) THEN
7238
                          TEMP = X(JX)
7669
                          TEMP = X(JX)
7239
                          IX = KX
7670
                          IX = KX
7240
                          DO 30 K = KK,KK + J - 2
7671
                          DO 30 K = KK,KK + J - 2
7241
                              X(IX) = X(IX) + TEMP*AP(K)
7672
                              X(IX) = X(IX) + TEMP*AP(K)
7242
                              IX = IX + INCX
7673
                              IX = IX + INCX
7243
   30                     CONTINUE
7674
   30                     CONTINUE
7244
                          IF (NOUNIT) X(JX) = X(JX)*AP(KK+J-1)
7675
                          IF (NOUNIT) X(JX) = X(JX)*AP(KK+J-1)
7245
c                      END IF
7676
                      END IF
7246
                      JX = JX + INCX
7677
                      JX = JX + INCX
7247
                      KK = KK + J
7678
                      KK = KK + J
7248
   40             CONTINUE
7679
   40             CONTINUE
7249
              END IF
7680
              END IF
7250
          ELSE
7681
          ELSE
7251
              KK = (N* (N+1))/2
7682
              KK = (N* (N+1))/2
7252
              IF (INCX.EQ.1) THEN
7683
              IF (INCX.EQ.1) THEN
7253
                  DO 60 J = N,1,-1
7684
                  DO 60 J = N,1,-1
7254
c                      IF (X(J).NE.ZERO) THEN
7685
                      IF (X(J).NE.ZERO) THEN
7255
                          TEMP = X(J)
7686
                          TEMP = X(J)
7256
                          K = KK
7687
                          K = KK
7257
                          DO 50 I = N,J + 1,-1
7688
                          DO 50 I = N,J + 1,-1
7258
                              X(I) = X(I) + TEMP*AP(K)
7689
                              X(I) = X(I) + TEMP*AP(K)
7259
                              K = K - 1
7690
                              K = K - 1
7260
   50                     CONTINUE
7691
   50                     CONTINUE
7261
                          IF (NOUNIT) X(J) = X(J)*AP(KK-N+J)
7692
                          IF (NOUNIT) X(J) = X(J)*AP(KK-N+J)
7262
c                      END IF
7693
                      END IF
7263
                      KK = KK - (N-J+1)
7694
                      KK = KK - (N-J+1)
7264
   60             CONTINUE
7695
   60             CONTINUE
7265
              ELSE
7696
              ELSE
7266
                  KX = KX + (N-1)*INCX
7697
                  KX = KX + (N-1)*INCX
7267
                  JX = KX
7698
                  JX = KX
7268
                  DO 80 J = N,1,-1
7699
                  DO 80 J = N,1,-1
7269
c                      IF (X(JX).NE.ZERO) THEN
7700
                      IF (X(JX).NE.ZERO) THEN
7270
                          TEMP = X(JX)
7701
                          TEMP = X(JX)
7271
                          IX = KX
7702
                          IX = KX
7272
                          DO 70 K = KK,KK - (N- (J+1)),-1
7703
                          DO 70 K = KK,KK - (N- (J+1)),-1
7273
                              X(IX) = X(IX) + TEMP*AP(K)
7704
                              X(IX) = X(IX) + TEMP*AP(K)
7274
                              IX = IX - INCX
7705
                              IX = IX - INCX
7275
   70                     CONTINUE
7706
   70                     CONTINUE
7276
                          IF (NOUNIT) X(JX) = X(JX)*AP(KK-N+J)
7707
                          IF (NOUNIT) X(JX) = X(JX)*AP(KK-N+J)
7277
c                      END IF
7708
                      END IF
7278
                      JX = JX - INCX
7709
                      JX = JX - INCX
7279
                      KK = KK - (N-J+1)
7710
                      KK = KK - (N-J+1)
7280
   80             CONTINUE
7711
   80             CONTINUE
7281
              END IF
7712
              END IF
7282
          END IF
7713
          END IF
Line 7571... Line 8002...
7571
*
8002
*
7572
          IF (LSAME(UPLO,'U')) THEN
8003
          IF (LSAME(UPLO,'U')) THEN
7573
              KK = (N* (N+1))/2
8004
              KK = (N* (N+1))/2
7574
              IF (INCX.EQ.1) THEN
8005
              IF (INCX.EQ.1) THEN
7575
                  DO 20 J = N,1,-1
8006
                  DO 20 J = N,1,-1
7576
c                      IF (X(J).NE.ZERO) THEN
8007
                      IF (X(J).NE.ZERO) THEN
7577
                          IF (NOUNIT) X(J) = X(J)/AP(KK)
8008
                          IF (NOUNIT) X(J) = X(J)/AP(KK)
7578
                          TEMP = X(J)
8009
                          TEMP = X(J)
7579
                          K = KK - 1
8010
                          K = KK - 1
7580
                          DO 10 I = J - 1,1,-1
8011
                          DO 10 I = J - 1,1,-1
7581
                              X(I) = X(I) - TEMP*AP(K)
8012
                              X(I) = X(I) - TEMP*AP(K)
7582
                              K = K - 1
8013
                              K = K - 1
7583
   10                     CONTINUE
8014
   10                     CONTINUE
7584
c                      END IF
8015
                      END IF
7585
                      KK = KK - J
8016
                      KK = KK - J
7586
   20             CONTINUE
8017
   20             CONTINUE
7587
              ELSE
8018
              ELSE
7588
                  JX = KX + (N-1)*INCX
8019
                  JX = KX + (N-1)*INCX
7589
                  DO 40 J = N,1,-1
8020
                  DO 40 J = N,1,-1
7590
c                      IF (X(JX).NE.ZERO) THEN
8021
                      IF (X(JX).NE.ZERO) THEN
7591
                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
8022
                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
7592
                          TEMP = X(JX)
8023
                          TEMP = X(JX)
7593
                          IX = JX
8024
                          IX = JX
7594
                          DO 30 K = KK - 1,KK - J + 1,-1
8025
                          DO 30 K = KK - 1,KK - J + 1,-1
7595
                              IX = IX - INCX
8026
                              IX = IX - INCX
7596
                              X(IX) = X(IX) - TEMP*AP(K)
8027
                              X(IX) = X(IX) - TEMP*AP(K)
7597
   30                     CONTINUE
8028
   30                     CONTINUE
7598
c                      END IF
8029
                      END IF
7599
                      JX = JX - INCX
8030
                      JX = JX - INCX
7600
                      KK = KK - J
8031
                      KK = KK - J
7601
   40             CONTINUE
8032
   40             CONTINUE
7602
              END IF
8033
              END IF
7603
          ELSE
8034
          ELSE
7604
              KK = 1
8035
              KK = 1
7605
              IF (INCX.EQ.1) THEN
8036
              IF (INCX.EQ.1) THEN
7606
                  DO 60 J = 1,N
8037
                  DO 60 J = 1,N
7607
c                      IF (X(J).NE.ZERO) THEN
8038
                      IF (X(J).NE.ZERO) THEN
7608
                          IF (NOUNIT) X(J) = X(J)/AP(KK)
8039
                          IF (NOUNIT) X(J) = X(J)/AP(KK)
7609
                          TEMP = X(J)
8040
                          TEMP = X(J)
7610
                          K = KK + 1
8041
                          K = KK + 1
7611
                          DO 50 I = J + 1,N
8042
                          DO 50 I = J + 1,N
7612
                              X(I) = X(I) - TEMP*AP(K)
8043
                              X(I) = X(I) - TEMP*AP(K)
7613
                              K = K + 1
8044
                              K = K + 1
7614
   50                     CONTINUE
8045
   50                     CONTINUE
7615
c                      END IF
8046
                      END IF
7616
                      KK = KK + (N-J+1)
8047
                      KK = KK + (N-J+1)
7617
   60             CONTINUE
8048
   60             CONTINUE
7618
              ELSE
8049
              ELSE
7619
                  JX = KX
8050
                  JX = KX
7620
                  DO 80 J = 1,N
8051
                  DO 80 J = 1,N
7621
c                      IF (X(JX).NE.ZERO) THEN
8052
                      IF (X(JX).NE.ZERO) THEN
7622
                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
8053
                          IF (NOUNIT) X(JX) = X(JX)/AP(KK)
7623
                          TEMP = X(JX)
8054
                          TEMP = X(JX)
7624
                          IX = JX
8055
                          IX = JX
7625
                          DO 70 K = KK + 1,KK + N - J
8056
                          DO 70 K = KK + 1,KK + N - J
7626
                              IX = IX + INCX
8057
                              IX = IX + INCX
7627
                              X(IX) = X(IX) - TEMP*AP(K)
8058
                              X(IX) = X(IX) - TEMP*AP(K)
7628
   70                     CONTINUE
8059
   70                     CONTINUE
7629
c                      END IF
8060
                      END IF
7630
                      JX = JX + INCX
8061
                      JX = JX + INCX
7631
                      KK = KK + (N-J+1)
8062
                      KK = KK + (N-J+1)
7632
   80             CONTINUE
8063
   80             CONTINUE
7633
              END IF
8064
              END IF
7634
          END IF
8065
          END IF
Line 7975... Line 8406...
7975
*           Form  B := alpha*A*B.
8406
*           Form  B := alpha*A*B.
7976
*
8407
*
7977
              IF (UPPER) THEN
8408
              IF (UPPER) THEN
7978
                  DO 50 J = 1,N
8409
                  DO 50 J = 1,N
7979
                      DO 40 K = 1,M
8410
                      DO 40 K = 1,M
7980
c                          IF (B(K,J).NE.ZERO) THEN
8411
                          IF (B(K,J).NE.ZERO) THEN
7981
                              TEMP = ALPHA*B(K,J)
8412
                              TEMP = ALPHA*B(K,J)
7982
                              DO 30 I = 1,K - 1
8413
                              DO 30 I = 1,K - 1
7983
                                  B(I,J) = B(I,J) + TEMP*A(I,K)
8414
                                  B(I,J) = B(I,J) + TEMP*A(I,K)
7984
   30                         CONTINUE
8415
   30                         CONTINUE
7985
                              IF (NOUNIT) TEMP = TEMP*A(K,K)
8416
                              IF (NOUNIT) TEMP = TEMP*A(K,K)
7986
                              B(K,J) = TEMP
8417
                              B(K,J) = TEMP
7987
c                          END IF
8418
                          END IF
7988
   40                 CONTINUE
8419
   40                 CONTINUE
7989
   50             CONTINUE
8420
   50             CONTINUE
7990
              ELSE
8421
              ELSE
7991
                  DO 80 J = 1,N
8422
                  DO 80 J = 1,N
7992
                      DO 70 K = M,1,-1
8423
                      DO 70 K = M,1,-1
7993
c                          IF (B(K,J).NE.ZERO) THEN
8424
                          IF (B(K,J).NE.ZERO) THEN
7994
                              TEMP = ALPHA*B(K,J)
8425
                              TEMP = ALPHA*B(K,J)
7995
                              B(K,J) = TEMP
8426
                              B(K,J) = TEMP
7996
                              IF (NOUNIT) B(K,J) = B(K,J)*A(K,K)
8427
                              IF (NOUNIT) B(K,J) = B(K,J)*A(K,K)
7997
                              DO 60 I = K + 1,M
8428
                              DO 60 I = K + 1,M
7998
                                  B(I,J) = B(I,J) + TEMP*A(I,K)
8429
                                  B(I,J) = B(I,J) + TEMP*A(I,K)
7999
   60                         CONTINUE
8430
   60                         CONTINUE
8000
c                          END IF
8431
                          END IF
8001
   70                 CONTINUE
8432
   70                 CONTINUE
8002
   80             CONTINUE
8433
   80             CONTINUE
8003
              END IF
8434
              END IF
8004
          ELSE
8435
          ELSE
8005
*
8436
*
Line 8040... Line 8471...
8040
                      IF (NOUNIT) TEMP = TEMP*A(J,J)
8471
                      IF (NOUNIT) TEMP = TEMP*A(J,J)
8041
                      DO 150 I = 1,M
8472
                      DO 150 I = 1,M
8042
                          B(I,J) = TEMP*B(I,J)
8473
                          B(I,J) = TEMP*B(I,J)
8043
  150                 CONTINUE
8474
  150                 CONTINUE
8044
                      DO 170 K = 1,J - 1
8475
                      DO 170 K = 1,J - 1
8045
c                          IF (A(K,J).NE.ZERO) THEN
8476
                          IF (A(K,J).NE.ZERO) THEN
8046
                              TEMP = ALPHA*A(K,J)
8477
                              TEMP = ALPHA*A(K,J)
8047
                              DO 160 I = 1,M
8478
                              DO 160 I = 1,M
8048
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8479
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8049
  160                         CONTINUE
8480
  160                         CONTINUE
8050
c                          END IF
8481
                          END IF
8051
  170                 CONTINUE
8482
  170                 CONTINUE
8052
  180             CONTINUE
8483
  180             CONTINUE
8053
              ELSE
8484
              ELSE
8054
                  DO 220 J = 1,N
8485
                  DO 220 J = 1,N
8055
                      TEMP = ALPHA
8486
                      TEMP = ALPHA
8056
                      IF (NOUNIT) TEMP = TEMP*A(J,J)
8487
                      IF (NOUNIT) TEMP = TEMP*A(J,J)
8057
                      DO 190 I = 1,M
8488
                      DO 190 I = 1,M
8058
                          B(I,J) = TEMP*B(I,J)
8489
                          B(I,J) = TEMP*B(I,J)
8059
  190                 CONTINUE
8490
  190                 CONTINUE
8060
                      DO 210 K = J + 1,N
8491
                      DO 210 K = J + 1,N
8061
c                          IF (A(K,J).NE.ZERO) THEN
8492
                          IF (A(K,J).NE.ZERO) THEN
8062
                              TEMP = ALPHA*A(K,J)
8493
                              TEMP = ALPHA*A(K,J)
8063
                              DO 200 I = 1,M
8494
                              DO 200 I = 1,M
8064
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8495
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8065
  200                         CONTINUE
8496
  200                         CONTINUE
8066
c                          END IF
8497
                          END IF
8067
  210                 CONTINUE
8498
  210                 CONTINUE
8068
  220             CONTINUE
8499
  220             CONTINUE
8069
              END IF
8500
              END IF
8070
          ELSE
8501
          ELSE
8071
*
8502
*
8072
*           Form  B := alpha*B*A**T.
8503
*           Form  B := alpha*B*A**T.
8073
*
8504
*
8074
              IF (UPPER) THEN
8505
              IF (UPPER) THEN
8075
                  DO 260 K = 1,N
8506
                  DO 260 K = 1,N
8076
                      DO 240 J = 1,K - 1
8507
                      DO 240 J = 1,K - 1
8077
c                          IF (A(J,K).NE.ZERO) THEN
8508
                          IF (A(J,K).NE.ZERO) THEN
8078
                              TEMP = ALPHA*A(J,K)
8509
                              TEMP = ALPHA*A(J,K)
8079
                              DO 230 I = 1,M
8510
                              DO 230 I = 1,M
8080
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8511
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8081
  230                         CONTINUE
8512
  230                         CONTINUE
8082
c                          END IF
8513
                          END IF
8083
  240                 CONTINUE
8514
  240                 CONTINUE
8084
                      TEMP = ALPHA
8515
                      TEMP = ALPHA
8085
                      IF (NOUNIT) TEMP = TEMP*A(K,K)
8516
                      IF (NOUNIT) TEMP = TEMP*A(K,K)
8086
                      IF (TEMP.NE.ONE) THEN
8517
                      IF (TEMP.NE.ONE) THEN
8087
                          DO 250 I = 1,M
8518
                          DO 250 I = 1,M
Line 8090... Line 8521...
8090
                      END IF
8521
                      END IF
8091
  260             CONTINUE
8522
  260             CONTINUE
8092
              ELSE
8523
              ELSE
8093
                  DO 300 K = N,1,-1
8524
                  DO 300 K = N,1,-1
8094
                      DO 280 J = K + 1,N
8525
                      DO 280 J = K + 1,N
8095
c                          IF (A(J,K).NE.ZERO) THEN
8526
                          IF (A(J,K).NE.ZERO) THEN
8096
                              TEMP = ALPHA*A(J,K)
8527
                              TEMP = ALPHA*A(J,K)
8097
                              DO 270 I = 1,M
8528
                              DO 270 I = 1,M
8098
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8529
                                  B(I,J) = B(I,J) + TEMP*B(I,K)
8099
  270                         CONTINUE
8530
  270                         CONTINUE
8100
c                          END IF
8531
                          END IF
8101
  280                 CONTINUE
8532
  280                 CONTINUE
8102
                      TEMP = ALPHA
8533
                      TEMP = ALPHA
8103
                      IF (NOUNIT) TEMP = TEMP*A(K,K)
8534
                      IF (NOUNIT) TEMP = TEMP*A(K,K)
8104
                      IF (TEMP.NE.ONE) THEN
8535
                      IF (TEMP.NE.ONE) THEN
8105
                          DO 290 I = 1,M
8536
                          DO 290 I = 1,M
Line 8344... Line 8775...
8344
*        Form  x := A*x.
8775
*        Form  x := A*x.
8345
*
8776
*
8346
          IF (LSAME(UPLO,'U')) THEN
8777
          IF (LSAME(UPLO,'U')) THEN
8347
              IF (INCX.EQ.1) THEN
8778
              IF (INCX.EQ.1) THEN
8348
                  DO 20 J = 1,N
8779
                  DO 20 J = 1,N
8349
c                      IF (X(J).NE.ZERO) THEN
8780
                      IF (X(J).NE.ZERO) THEN
8350
                          TEMP = X(J)
8781
                          TEMP = X(J)
8351
                          DO 10 I = 1,J - 1
8782
                          DO 10 I = 1,J - 1
8352
                              X(I) = X(I) + TEMP*A(I,J)
8783
                              X(I) = X(I) + TEMP*A(I,J)
8353
   10                     CONTINUE
8784
   10                     CONTINUE
8354
                          IF (NOUNIT) X(J) = X(J)*A(J,J)
8785
                          IF (NOUNIT) X(J) = X(J)*A(J,J)
8355
c                      END IF
8786
                      END IF
8356
   20             CONTINUE
8787
   20             CONTINUE
8357
              ELSE
8788
              ELSE
8358
                  JX = KX
8789
                  JX = KX
8359
                  DO 40 J = 1,N
8790
                  DO 40 J = 1,N
8360
c                      IF (X(JX).NE.ZERO) THEN
8791
                      IF (X(JX).NE.ZERO) THEN
8361
                          TEMP = X(JX)
8792
                          TEMP = X(JX)
8362
                          IX = KX
8793
                          IX = KX
8363
                          DO 30 I = 1,J - 1
8794
                          DO 30 I = 1,J - 1
8364
                              X(IX) = X(IX) + TEMP*A(I,J)
8795
                              X(IX) = X(IX) + TEMP*A(I,J)
8365
                              IX = IX + INCX
8796
                              IX = IX + INCX
8366
   30                     CONTINUE
8797
   30                     CONTINUE
8367
                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
8798
                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
8368
c                      END IF
8799
                      END IF
8369
                      JX = JX + INCX
8800
                      JX = JX + INCX
8370
   40             CONTINUE
8801
   40             CONTINUE
8371
              END IF
8802
              END IF
8372
          ELSE
8803
          ELSE
8373
              IF (INCX.EQ.1) THEN
8804
              IF (INCX.EQ.1) THEN
8374
                  DO 60 J = N,1,-1
8805
                  DO 60 J = N,1,-1
8375
c                      IF (X(J).NE.ZERO) THEN
8806
                      IF (X(J).NE.ZERO) THEN
8376
                          TEMP = X(J)
8807
                          TEMP = X(J)
8377
                          DO 50 I = N,J + 1,-1
8808
                          DO 50 I = N,J + 1,-1
8378
                              X(I) = X(I) + TEMP*A(I,J)
8809
                              X(I) = X(I) + TEMP*A(I,J)
8379
   50                     CONTINUE
8810
   50                     CONTINUE
8380
                          IF (NOUNIT) X(J) = X(J)*A(J,J)
8811
                          IF (NOUNIT) X(J) = X(J)*A(J,J)
8381
c                      END IF
8812
                      END IF
8382
   60             CONTINUE
8813
   60             CONTINUE
8383
              ELSE
8814
              ELSE
8384
                  KX = KX + (N-1)*INCX
8815
                  KX = KX + (N-1)*INCX
8385
                  JX = KX
8816
                  JX = KX
8386
                  DO 80 J = N,1,-1
8817
                  DO 80 J = N,1,-1
8387
c                      IF (X(JX).NE.ZERO) THEN
8818
                      IF (X(JX).NE.ZERO) THEN
8388
                          TEMP = X(JX)
8819
                          TEMP = X(JX)
8389
                          IX = KX
8820
                          IX = KX
8390
                          DO 70 I = N,J + 1,-1
8821
                          DO 70 I = N,J + 1,-1
8391
                              X(IX) = X(IX) + TEMP*A(I,J)
8822
                              X(IX) = X(IX) + TEMP*A(I,J)
8392
                              IX = IX - INCX
8823
                              IX = IX - INCX
8393
   70                     CONTINUE
8824
   70                     CONTINUE
8394
                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
8825
                          IF (NOUNIT) X(JX) = X(JX)*A(J,J)
8395
c                      END IF
8826
                      END IF
8396
                      JX = JX - INCX
8827
                      JX = JX - INCX
8397
   80             CONTINUE
8828
   80             CONTINUE
8398
              END IF
8829
              END IF
8399
          END IF
8830
          END IF
8400
      ELSE
8831
      ELSE
Line 8738... Line 9169...
8738
                          DO 30 I = 1,M
9169
                          DO 30 I = 1,M
8739
                              B(I,J) = ALPHA*B(I,J)
9170
                              B(I,J) = ALPHA*B(I,J)
8740
   30                     CONTINUE
9171
   30                     CONTINUE
8741
                      END IF
9172
                      END IF
8742
                      DO 50 K = M,1,-1
9173
                      DO 50 K = M,1,-1
8743
c                          IF (B(K,J).NE.ZERO) THEN
9174
                          IF (B(K,J).NE.ZERO) THEN
8744
                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
9175
                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
8745
                              DO 40 I = 1,K - 1
9176
                              DO 40 I = 1,K - 1
8746
                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
9177
                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
8747
   40                         CONTINUE
9178
   40                         CONTINUE
8748
c                          END IF
9179
                          END IF
8749
   50                 CONTINUE
9180
   50                 CONTINUE
8750
   60             CONTINUE
9181
   60             CONTINUE
8751
              ELSE
9182
              ELSE
8752
                  DO 100 J = 1,N
9183
                  DO 100 J = 1,N
8753
                      IF (ALPHA.NE.ONE) THEN
9184
                      IF (ALPHA.NE.ONE) THEN
8754
                          DO 70 I = 1,M
9185
                          DO 70 I = 1,M
8755
                              B(I,J) = ALPHA*B(I,J)
9186
                              B(I,J) = ALPHA*B(I,J)
8756
   70                     CONTINUE
9187
   70                     CONTINUE
8757
                      END IF
9188
                      END IF
8758
                      DO 90 K = 1,M
9189
                      DO 90 K = 1,M
8759
c                          IF (B(K,J).NE.ZERO) THEN
9190
                          IF (B(K,J).NE.ZERO) THEN
8760
                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
9191
                              IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
8761
                              DO 80 I = K + 1,M
9192
                              DO 80 I = K + 1,M
8762
                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
9193
                                  B(I,J) = B(I,J) - B(K,J)*A(I,K)
8763
   80                         CONTINUE
9194
   80                         CONTINUE
8764
c                          END IF
9195
                          END IF
8765
   90                 CONTINUE
9196
   90                 CONTINUE
8766
  100             CONTINUE
9197
  100             CONTINUE
8767
              END IF
9198
              END IF
8768
          ELSE
9199
          ELSE
8769
*
9200
*
Line 8804... Line 9235...
8804
                          DO 170 I = 1,M
9235
                          DO 170 I = 1,M
8805
                              B(I,J) = ALPHA*B(I,J)
9236
                              B(I,J) = ALPHA*B(I,J)
8806
  170                     CONTINUE
9237
  170                     CONTINUE
8807
                      END IF
9238
                      END IF
8808
                      DO 190 K = 1,J - 1
9239
                      DO 190 K = 1,J - 1
8809
c                          IF (A(K,J).NE.ZERO) THEN
9240
                          IF (A(K,J).NE.ZERO) THEN
8810
                              DO 180 I = 1,M
9241
                              DO 180 I = 1,M
8811
                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
9242
                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
8812
  180                         CONTINUE
9243
  180                         CONTINUE
8813
c                          END IF
9244
                          END IF
8814
  190                 CONTINUE
9245
  190                 CONTINUE
8815
                      IF (NOUNIT) THEN
9246
                      IF (NOUNIT) THEN
8816
                          TEMP = ONE/A(J,J)
9247
                          TEMP = ONE/A(J,J)
8817
                          DO 200 I = 1,M
9248
                          DO 200 I = 1,M
8818
                              B(I,J) = TEMP*B(I,J)
9249
                              B(I,J) = TEMP*B(I,J)
Line 8825... Line 9256...
8825
                          DO 220 I = 1,M
9256
                          DO 220 I = 1,M
8826
                              B(I,J) = ALPHA*B(I,J)
9257
                              B(I,J) = ALPHA*B(I,J)
8827
  220                     CONTINUE
9258
  220                     CONTINUE
8828
                      END IF
9259
                      END IF
8829
                      DO 240 K = J + 1,N
9260
                      DO 240 K = J + 1,N
8830
c                          IF (A(K,J).NE.ZERO) THEN
9261
                          IF (A(K,J).NE.ZERO) THEN
8831
                              DO 230 I = 1,M
9262
                              DO 230 I = 1,M
8832
                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
9263
                                  B(I,J) = B(I,J) - A(K,J)*B(I,K)
8833
  230                         CONTINUE
9264
  230                         CONTINUE
8834
c                          END IF
9265
                          END IF
8835
  240                 CONTINUE
9266
  240                 CONTINUE
8836
                      IF (NOUNIT) THEN
9267
                      IF (NOUNIT) THEN
8837
                          TEMP = ONE/A(J,J)
9268
                          TEMP = ONE/A(J,J)
8838
                          DO 250 I = 1,M
9269
                          DO 250 I = 1,M
8839
                              B(I,J) = TEMP*B(I,J)
9270
                              B(I,J) = TEMP*B(I,J)
Line 8852... Line 9283...
8852
                          DO 270 I = 1,M
9283
                          DO 270 I = 1,M
8853
                              B(I,K) = TEMP*B(I,K)
9284
                              B(I,K) = TEMP*B(I,K)
8854
  270                     CONTINUE
9285
  270                     CONTINUE
8855
                      END IF
9286
                      END IF
8856
                      DO 290 J = 1,K - 1
9287
                      DO 290 J = 1,K - 1
8857
c                          IF (A(J,K).NE.ZERO) THEN
9288
                          IF (A(J,K).NE.ZERO) THEN
8858
                              TEMP = A(J,K)
9289
                              TEMP = A(J,K)
8859
                              DO 280 I = 1,M
9290
                              DO 280 I = 1,M
8860
                                  B(I,J) = B(I,J) - TEMP*B(I,K)
9291
                                  B(I,J) = B(I,J) - TEMP*B(I,K)
8861
  280                         CONTINUE
9292
  280                         CONTINUE
8862
c                          END IF
9293
                          END IF
8863
  290                 CONTINUE
9294
  290                 CONTINUE
8864
                      IF (ALPHA.NE.ONE) THEN
9295
                      IF (ALPHA.NE.ONE) THEN
8865
                          DO 300 I = 1,M
9296
                          DO 300 I = 1,M
8866
                              B(I,K) = ALPHA*B(I,K)
9297
                              B(I,K) = ALPHA*B(I,K)
8867
  300                     CONTINUE
9298
  300                     CONTINUE
Line 8874... Line 9305...
8874
                          DO 320 I = 1,M
9305
                          DO 320 I = 1,M
8875
                              B(I,K) = TEMP*B(I,K)
9306
                              B(I,K) = TEMP*B(I,K)
8876
  320                     CONTINUE
9307
  320                     CONTINUE
8877
                      END IF
9308
                      END IF
8878
                      DO 340 J = K + 1,N
9309
                      DO 340 J = K + 1,N
8879
c                          IF (A(J,K).NE.ZERO) THEN
9310
                          IF (A(J,K).NE.ZERO) THEN
8880
                              TEMP = A(J,K)
9311
                              TEMP = A(J,K)
8881
                              DO 330 I = 1,M
9312
                              DO 330 I = 1,M
8882
                                  B(I,J) = B(I,J) - TEMP*B(I,K)
9313
                                  B(I,J) = B(I,J) - TEMP*B(I,K)
8883
  330                         CONTINUE
9314
  330                         CONTINUE
8884
c                          END IF
9315
                          END IF
8885
  340                 CONTINUE
9316
  340                 CONTINUE
8886
                      IF (ALPHA.NE.ONE) THEN
9317
                      IF (ALPHA.NE.ONE) THEN
8887
                          DO 350 I = 1,M
9318
                          DO 350 I = 1,M
8888
                              B(I,K) = ALPHA*B(I,K)
9319
                              B(I,K) = ALPHA*B(I,K)
8889
  350                     CONTINUE
9320
  350                     CONTINUE
Line 9122... Line 9553...
9122
*        Form  x := inv( A )*x.
9553
*        Form  x := inv( A )*x.
9123
*
9554
*
9124
          IF (LSAME(UPLO,'U')) THEN
9555
          IF (LSAME(UPLO,'U')) THEN
9125
              IF (INCX.EQ.1) THEN
9556
              IF (INCX.EQ.1) THEN
9126
                  DO 20 J = N,1,-1
9557
                  DO 20 J = N,1,-1
9127
c                      IF (X(J).NE.ZERO) THEN
9558
                      IF (X(J).NE.ZERO) THEN
9128
                          IF (NOUNIT) X(J) = X(J)/A(J,J)
9559
                          IF (NOUNIT) X(J) = X(J)/A(J,J)
9129
                          TEMP = X(J)
9560
                          TEMP = X(J)
9130
                          DO 10 I = J - 1,1,-1
9561
                          DO 10 I = J - 1,1,-1
9131
                              X(I) = X(I) - TEMP*A(I,J)
9562
                              X(I) = X(I) - TEMP*A(I,J)
9132
   10                     CONTINUE
9563
   10                     CONTINUE
9133
c                      END IF
9564
                      END IF
9134
   20             CONTINUE
9565
   20             CONTINUE
9135
              ELSE
9566
              ELSE
9136
                  JX = KX + (N-1)*INCX
9567
                  JX = KX + (N-1)*INCX
9137
                  DO 40 J = N,1,-1
9568
                  DO 40 J = N,1,-1
9138
c                      IF (X(JX).NE.ZERO) THEN
9569
                      IF (X(JX).NE.ZERO) THEN
9139
                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
9570
                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
9140
                          TEMP = X(JX)
9571
                          TEMP = X(JX)
9141
                          IX = JX
9572
                          IX = JX
9142
                          DO 30 I = J - 1,1,-1
9573
                          DO 30 I = J - 1,1,-1
9143
                              IX = IX - INCX
9574
                              IX = IX - INCX
9144
                              X(IX) = X(IX) - TEMP*A(I,J)
9575
                              X(IX) = X(IX) - TEMP*A(I,J)
9145
   30                     CONTINUE
9576
   30                     CONTINUE
9146
c                      END IF
9577
                      END IF
9147
                      JX = JX - INCX
9578
                      JX = JX - INCX
9148
   40             CONTINUE
9579
   40             CONTINUE
9149
              END IF
9580
              END IF
9150
          ELSE
9581
          ELSE
9151
              IF (INCX.EQ.1) THEN
9582
              IF (INCX.EQ.1) THEN
9152
                  DO 60 J = 1,N
9583
                  DO 60 J = 1,N
9153
c                      IF (X(J).NE.ZERO) THEN
9584
                      IF (X(J).NE.ZERO) THEN
9154
                          IF (NOUNIT) X(J) = X(J)/A(J,J)
9585
                          IF (NOUNIT) X(J) = X(J)/A(J,J)
9155
                          TEMP = X(J)
9586
                          TEMP = X(J)
9156
                          DO 50 I = J + 1,N
9587
                          DO 50 I = J + 1,N
9157
                              X(I) = X(I) - TEMP*A(I,J)
9588
                              X(I) = X(I) - TEMP*A(I,J)
9158
   50                     CONTINUE
9589
   50                     CONTINUE
9159
c                      END IF
9590
                      END IF
9160
   60             CONTINUE
9591
   60             CONTINUE
9161
              ELSE
9592
              ELSE
9162
                  JX = KX
9593
                  JX = KX
9163
                  DO 80 J = 1,N
9594
                  DO 80 J = 1,N
9164
c                      IF (X(JX).NE.ZERO) THEN
9595
                      IF (X(JX).NE.ZERO) THEN
9165
                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
9596
                          IF (NOUNIT) X(JX) = X(JX)/A(J,J)
9166
                          TEMP = X(JX)
9597
                          TEMP = X(JX)
9167
                          IX = JX
9598
                          IX = JX
9168
                          DO 70 I = J + 1,N
9599
                          DO 70 I = J + 1,N
9169
                              IX = IX + INCX
9600
                              IX = IX + INCX
9170
                              X(IX) = X(IX) - TEMP*A(I,J)
9601
                              X(IX) = X(IX) - TEMP*A(I,J)
9171
   70                     CONTINUE
9602
   70                     CONTINUE
9172
c                      END IF
9603
                      END IF
9173
                      JX = JX + INCX
9604
                      JX = JX + INCX
9174
   80             CONTINUE
9605
   80             CONTINUE
9175
              END IF
9606
              END IF
9176
          END IF
9607
          END IF
9177
      ELSE
9608
      ELSE