Diff for /rpl/lapack/blas/daxpy.f between versions 1.2 and 1.8

version 1.2, 2010/04/21 13:45:09 version 1.8, 2011/11/21 20:37:07
Line 1 Line 1
   *> \brief \b DAXPY
   *
   *  =========== DOCUMENTATION ===========
   *
   * Online html documentation available at 
   *            http://www.netlib.org/lapack/explore-html/ 
   *
   *  Definition:
   *  ===========
   *
   *       SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)
   * 
   *       .. Scalar Arguments ..
   *       DOUBLE PRECISION DA
   *       INTEGER INCX,INCY,N
   *       ..
   *       .. Array Arguments ..
   *       DOUBLE PRECISION DX(*),DY(*)
   *       ..
   *  
   *
   *> \par Purpose:
   *  =============
   *>
   *> \verbatim
   *>
   *>    DAXPY constant times a vector plus a vector.
   *>    uses unrolled loops for increments equal to one.
   *> \endverbatim
   *
   *  Authors:
   *  ========
   *
   *> \author Univ. of Tennessee 
   *> \author Univ. of California Berkeley 
   *> \author Univ. of Colorado Denver 
   *> \author NAG Ltd. 
   *
   *> \date November 2011
   *
   *> \ingroup double_blas_level1
   *
   *> \par Further Details:
   *  =====================
   *>
   *> \verbatim
   *>
   *>     jack dongarra, linpack, 3/11/78.
   *>     modified 12/3/93, array(1) declarations changed to array(*)
   *> \endverbatim
   *>
   *  =====================================================================
       SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)        SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)
   *
   *  -- Reference BLAS level1 routine (version 3.4.0) --
   *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
   *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
   *     November 2011
   *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       DOUBLE PRECISION DA        DOUBLE PRECISION DA
       INTEGER INCX,INCY,N        INTEGER INCX,INCY,N
Line 7 Line 65
       DOUBLE PRECISION DX(*),DY(*)        DOUBLE PRECISION DX(*),DY(*)
 *     ..  *     ..
 *  *
 *  Purpose  
 *  =======  
 *  
 *     DAXPY constant times a vector plus a vector.  
 *     uses unrolled loops for increments equal to one.  
 *  
 *  Further Details  
 *  ===============  
 *  
 *     jack dongarra, linpack, 3/11/78.  
 *     modified 12/3/93, array(1) declarations changed to array(*)  
 *  
 *  =====================================================================  *  =====================================================================
 *  *
 *     .. Local Scalars ..  *     .. Local Scalars ..
Line 29 Line 75
 *     ..  *     ..
       IF (N.LE.0) RETURN        IF (N.LE.0) RETURN
       IF (DA.EQ.0.0d0) RETURN        IF (DA.EQ.0.0d0) RETURN
       IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20        IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
   *
   *        code for both increments equal to 1
   *
   *
   *        clean-up loop
   *
            M = MOD(N,4)
            IF (M.NE.0) THEN
               DO I = 1,M
                  DY(I) = DY(I) + DA*DX(I)
               END DO
            END IF
            IF (N.LT.4) RETURN
            MP1 = M + 1
            DO I = MP1,N,4
               DY(I) = DY(I) + DA*DX(I)
               DY(I+1) = DY(I+1) + DA*DX(I+1)
               DY(I+2) = DY(I+2) + DA*DX(I+2)
               DY(I+3) = DY(I+3) + DA*DX(I+3)
            END DO
         ELSE
 *  *
 *        code for unequal increments or equal increments  *        code for unequal increments or equal increments
 *          not equal to 1  *          not equal to 1
 *  *
       IX = 1           IX = 1
       IY = 1           IY = 1
       IF (INCX.LT.0) IX = (-N+1)*INCX + 1           IF (INCX.LT.0) IX = (-N+1)*INCX + 1
       IF (INCY.LT.0) IY = (-N+1)*INCY + 1           IF (INCY.LT.0) IY = (-N+1)*INCY + 1
       DO 10 I = 1,N           DO I = 1,N
           DY(IY) = DY(IY) + DA*DX(IX)            DY(IY) = DY(IY) + DA*DX(IX)
           IX = IX + INCX            IX = IX + INCX
           IY = IY + INCY            IY = IY + INCY
    10 CONTINUE           END DO
       RETURN        END IF
 *  
 *        code for both increments equal to 1  
 *  
 *  
 *        clean-up loop  
 *  
    20 M = MOD(N,4)  
       IF (M.EQ.0) GO TO 40  
       DO 30 I = 1,M  
           DY(I) = DY(I) + DA*DX(I)  
    30 CONTINUE  
       IF (N.LT.4) RETURN  
    40 MP1 = M + 1  
       DO 50 I = MP1,N,4  
           DY(I) = DY(I) + DA*DX(I)  
           DY(I+1) = DY(I+1) + DA*DX(I+1)  
           DY(I+2) = DY(I+2) + DA*DX(I+2)  
           DY(I+3) = DY(I+3) + DA*DX(I+3)  
    50 CONTINUE  
       RETURN        RETURN
       END        END

Removed from v.1.2  
changed lines
  Added in v.1.8


CVSweb interface <joel.bertrand@systella.fr>