File:  [local] / rpl / lapack / blas / dscal.f
Revision 1.13: download - view: text, annotated - select for diffs - revision graph
Sat Jun 17 10:53:43 2017 UTC (6 years, 10 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_27, rpl-4_1_26, HEAD
Mise à jour de lapack.

    1: *> \brief \b DSCAL
    2: *
    3: *  =========== DOCUMENTATION ===========
    4: *
    5: * Online html documentation available at
    6: *            http://www.netlib.org/lapack/explore-html/
    7: *
    8: *  Definition:
    9: *  ===========
   10: *
   11: *       SUBROUTINE DSCAL(N,DA,DX,INCX)
   12: *
   13: *       .. Scalar Arguments ..
   14: *       DOUBLE PRECISION DA
   15: *       INTEGER INCX,N
   16: *       ..
   17: *       .. Array Arguments ..
   18: *       DOUBLE PRECISION DX(*)
   19: *       ..
   20: *
   21: *
   22: *> \par Purpose:
   23: *  =============
   24: *>
   25: *> \verbatim
   26: *>
   27: *>    DSCAL scales a vector by a constant.
   28: *>    uses unrolled loops for increment equal to one.
   29: *> \endverbatim
   30: *
   31: *  Authors:
   32: *  ========
   33: *
   34: *> \author Univ. of Tennessee
   35: *> \author Univ. of California Berkeley
   36: *> \author Univ. of Colorado Denver
   37: *> \author NAG Ltd.
   38: *
   39: *> \date December 2016
   40: *
   41: *> \ingroup double_blas_level1
   42: *
   43: *> \par Further Details:
   44: *  =====================
   45: *>
   46: *> \verbatim
   47: *>
   48: *>     jack dongarra, linpack, 3/11/78.
   49: *>     modified 3/93 to return if incx .le. 0.
   50: *>     modified 12/3/93, array(1) declarations changed to array(*)
   51: *> \endverbatim
   52: *>
   53: *  =====================================================================
   54:       SUBROUTINE DSCAL(N,DA,DX,INCX)
   55: *
   56: *  -- Reference BLAS level1 routine (version 3.7.0) --
   57: *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
   58: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
   59: *     December 2016
   60: *
   61: *     .. Scalar Arguments ..
   62:       DOUBLE PRECISION DA
   63:       INTEGER INCX,N
   64: *     ..
   65: *     .. Array Arguments ..
   66:       DOUBLE PRECISION DX(*)
   67: *     ..
   68: *
   69: *  =====================================================================
   70: *
   71: *     .. Local Scalars ..
   72:       INTEGER I,M,MP1,NINCX
   73: *     ..
   74: *     .. Intrinsic Functions ..
   75:       INTRINSIC MOD
   76: *     ..
   77:       IF (N.LE.0 .OR. INCX.LE.0) RETURN
   78:       IF (INCX.EQ.1) THEN
   79: *
   80: *        code for increment equal to 1
   81: *
   82: *
   83: *        clean-up loop
   84: *
   85:          M = MOD(N,5)
   86:          IF (M.NE.0) THEN
   87:             DO I = 1,M
   88:                DX(I) = DA*DX(I)
   89:             END DO
   90:             IF (N.LT.5) RETURN
   91:          END IF
   92:          MP1 = M + 1
   93:          DO I = MP1,N,5
   94:             DX(I) = DA*DX(I)
   95:             DX(I+1) = DA*DX(I+1)
   96:             DX(I+2) = DA*DX(I+2)
   97:             DX(I+3) = DA*DX(I+3)
   98:             DX(I+4) = DA*DX(I+4)
   99:          END DO
  100:       ELSE
  101: *
  102: *        code for increment not equal to 1
  103: *
  104:          NINCX = N*INCX
  105:          DO I = 1,NINCX,INCX
  106:             DX(I) = DA*DX(I)
  107:          END DO
  108:       END IF
  109:       RETURN
  110:       END

CVSweb interface <joel.bertrand@systella.fr>