Diff for /rpl/lapack/blas/zdrot.f between versions 1.6 and 1.15

version 1.6, 2010/12/21 13:51:26 version 1.15, 2023/08/07 08:38:44
Line 1 Line 1
       SUBROUTINE ZDROT( N, CX, INCX, CY, INCY, C, S )  *> \brief \b ZDROT
   *
   *  =========== DOCUMENTATION ===========
   *
   * Online html documentation available at
   *            http://www.netlib.org/lapack/explore-html/
   *
   *  Definition:
   *  ===========
   *
   *       SUBROUTINE ZDROT( N, ZX, INCX, ZY, INCY, C, S )
   *
   *       .. Scalar Arguments ..
   *       INTEGER            INCX, INCY, N
   *       DOUBLE PRECISION   C, S
   *       ..
   *       .. Array Arguments ..
   *       COMPLEX*16         ZX( * ), ZY( * )
   *       ..
   *
   *
   *> \par Purpose:
   *  =============
   *>
   *> \verbatim
   *>
   *> Applies a plane rotation, where the cos and sin (c and s) are real
   *> and the vectors cx and cy are complex.
   *> jack dongarra, linpack, 3/11/78.
   *> \endverbatim
   *
   *  Arguments:
   *  ==========
   *
   *> \param[in] N
   *> \verbatim
   *>          N is INTEGER
   *>           On entry, N specifies the order of the vectors cx and cy.
   *>           N must be at least zero.
   *> \endverbatim
   *>
   *> \param[in,out] ZX
   *> \verbatim
   *>          ZX is COMPLEX*16 array, dimension at least
   *>           ( 1 + ( N - 1 )*abs( INCX ) ).
   *>           Before entry, the incremented array ZX must contain the n
   *>           element vector cx. On exit, ZX is overwritten by the updated
   *>           vector cx.
   *> \endverbatim
   *>
   *> \param[in] INCX
   *> \verbatim
   *>          INCX is INTEGER
   *>           On entry, INCX specifies the increment for the elements of
   *>           ZX. INCX must not be zero.
   *> \endverbatim
   *>
   *> \param[in,out] ZY
   *> \verbatim
   *>          ZY is COMPLEX*16 array, dimension at least
   *>           ( 1 + ( N - 1 )*abs( INCY ) ).
   *>           Before entry, the incremented array ZY must contain the n
   *>           element vector cy. On exit, ZY is overwritten by the updated
   *>           vector cy.
   *> \endverbatim
   *>
   *> \param[in] INCY
   *> \verbatim
   *>          INCY is INTEGER
   *>           On entry, INCY specifies the increment for the elements of
   *>           ZY. INCY must not be zero.
   *> \endverbatim
   *>
   *> \param[in] C
   *> \verbatim
   *>          C is DOUBLE PRECISION
   *>           On entry, C specifies the cosine, cos.
   *> \endverbatim
   *>
   *> \param[in] S
   *> \verbatim
   *>          S is DOUBLE PRECISION
   *>           On entry, S specifies the sine, sin.
   *> \endverbatim
   *
   *  Authors:
   *  ========
   *
   *> \author Univ. of Tennessee
   *> \author Univ. of California Berkeley
   *> \author Univ. of Colorado Denver
   *> \author NAG Ltd.
   *
   *> \ingroup complex16_blas_level1
   *
   *  =====================================================================
         SUBROUTINE ZDROT( N, ZX, INCX, ZY, INCY, C, S )
   *
   *  -- Reference BLAS level1 routine --
   *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
   *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INCX, INCY, N        INTEGER            INCX, INCY, N
       DOUBLE PRECISION   C, S        DOUBLE PRECISION   C, S
 *     ..  *     ..
 *     .. Array Arguments ..  *     .. Array Arguments ..
       COMPLEX*16         CX( * ), CY( * )        COMPLEX*16         ZX( * ), ZY( * )
 *     ..  *     ..
 *  *
 *  Purpose  
 *  =======  
 *  
 *  Applies a plane rotation, where the cos and sin (c and s) are real  
 *  and the vectors cx and cy are complex.  
 *  jack dongarra, linpack, 3/11/78.  
 *  
 *  Arguments  
 *  ==========  
 *  
 *  N        (input) INTEGER  
 *           On entry, N specifies the order of the vectors cx and cy.  
 *           N must be at least zero.  
 *           Unchanged on exit.  
 *  
 *  CX       (input) COMPLEX*16 array, dimension at least  
 *           ( 1 + ( N - 1 )*abs( INCX ) ).  
 *           Before entry, the incremented array CX must contain the n  
 *           element vector cx. On exit, CX is overwritten by the updated  
 *           vector cx.  
 *  
 *  INCX     (input) INTEGER  
 *           On entry, INCX specifies the increment for the elements of  
 *           CX. INCX must not be zero.  
 *           Unchanged on exit.  
 *  
 *  CY       (input) COMPLEX*16 array, dimension at least  
 *           ( 1 + ( N - 1 )*abs( INCY ) ).  
 *           Before entry, the incremented array CY must contain the n  
 *           element vector cy. On exit, CY is overwritten by the updated  
 *           vector cy.  
 *  
 *  INCY     (input) INTEGER  
 *           On entry, INCY specifies the increment for the elements of  
 *           CY. INCY must not be zero.  
 *           Unchanged on exit.  
 *  
 *  C        (input) DOUBLE PRECISION  
 *           On entry, C specifies the cosine, cos.  
 *           Unchanged on exit.  
 *  
 *  S        (input) DOUBLE PRECISION  
 *           On entry, S specifies the sine, sin.  
 *           Unchanged on exit.  
 *  
 * =====================================================================  * =====================================================================
 *  *
 *     .. Local Scalars ..  *     .. Local Scalars ..
Line 63 Line 118
 *  *
       IF( N.LE.0 )        IF( N.LE.0 )
      $   RETURN       $   RETURN
       IF( INCX.EQ.1 .AND. INCY.EQ.1 )        IF( INCX.EQ.1 .AND. INCY.EQ.1 ) THEN
      $   GO TO 20  *
   *        code for both increments equal to 1
   *
            DO I = 1, N
               CTEMP = C*ZX( I ) + S*ZY( I )
               ZY( I ) = C*ZY( I ) - S*ZX( I )
               ZX( I ) = CTEMP
            END DO
         ELSE
 *  *
 *        code for unequal increments or equal increments not equal  *        code for unequal increments or equal increments not equal
 *          to 1  *          to 1
 *  *
       IX = 1           IX = 1
       IY = 1           IY = 1
       IF( INCX.LT.0 )           IF( INCX.LT.0 )
      $   IX = ( -N+1 )*INCX + 1       $      IX = ( -N+1 )*INCX + 1
       IF( INCY.LT.0 )           IF( INCY.LT.0 )
      $   IY = ( -N+1 )*INCY + 1       $      IY = ( -N+1 )*INCY + 1
       DO 10 I = 1, N           DO I = 1, N
          CTEMP = C*CX( IX ) + S*CY( IY )              CTEMP = C*ZX( IX ) + S*ZY( IY )
          CY( IY ) = C*CY( IY ) - S*CX( IX )              ZY( IY ) = C*ZY( IY ) - S*ZX( IX )
          CX( IX ) = CTEMP              ZX( IX ) = CTEMP
          IX = IX + INCX              IX = IX + INCX
          IY = IY + INCY              IY = IY + INCY
    10 CONTINUE           END DO
         END IF
       RETURN        RETURN
 *  *
 *        code for both increments equal to 1  *     End of ZDROT
 *  *
    20 CONTINUE  
       DO 30 I = 1, N  
          CTEMP = C*CX( I ) + S*CY( I )  
          CY( I ) = C*CY( I ) - S*CX( I )  
          CX( I ) = CTEMP  
    30 CONTINUE  
       RETURN  
       END        END

Removed from v.1.6  
changed lines
  Added in v.1.15


CVSweb interface <joel.bertrand@systella.fr>