summaryrefslogtreecommitdiff
path: root/SRC/zlar2v.f
diff options
context:
space:
mode:
authorjason <jason@8a072113-8704-0410-8d35-dd094bca7971>2008-10-28 01:38:50 +0000
committerjason <jason@8a072113-8704-0410-8d35-dd094bca7971>2008-10-28 01:38:50 +0000
commitbaba851215b44ac3b60b9248eb02bcce7eb76247 (patch)
tree8c0f5c006875532a30d4409f5e94b0f310ff00a7 /SRC/zlar2v.f
downloadlapack-baba851215b44ac3b60b9248eb02bcce7eb76247.tar.gz
lapack-baba851215b44ac3b60b9248eb02bcce7eb76247.tar.bz2
lapack-baba851215b44ac3b60b9248eb02bcce7eb76247.zip
Move LAPACK trunk into position.
Diffstat (limited to 'SRC/zlar2v.f')
-rw-r--r--SRC/zlar2v.f97
1 files changed, 97 insertions, 0 deletions
diff --git a/SRC/zlar2v.f b/SRC/zlar2v.f
new file mode 100644
index 00000000..cb87cb89
--- /dev/null
+++ b/SRC/zlar2v.f
@@ -0,0 +1,97 @@
+ SUBROUTINE ZLAR2V( N, X, Y, Z, INCX, C, S, INCC )
+*
+* -- LAPACK auxiliary routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ INTEGER INCC, INCX, N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION C( * )
+ COMPLEX*16 S( * ), X( * ), Y( * ), Z( * )
+* ..
+*
+* Purpose
+* =======
+*
+* ZLAR2V applies a vector of complex plane rotations with real cosines
+* from both sides to a sequence of 2-by-2 complex Hermitian matrices,
+* defined by the elements of the vectors x, y and z. For i = 1,2,...,n
+*
+* ( x(i) z(i) ) :=
+* ( conjg(z(i)) y(i) )
+*
+* ( c(i) conjg(s(i)) ) ( x(i) z(i) ) ( c(i) -conjg(s(i)) )
+* ( -s(i) c(i) ) ( conjg(z(i)) y(i) ) ( s(i) c(i) )
+*
+* Arguments
+* =========
+*
+* N (input) INTEGER
+* The number of plane rotations to be applied.
+*
+* X (input/output) COMPLEX*16 array, dimension (1+(N-1)*INCX)
+* The vector x; the elements of x are assumed to be real.
+*
+* Y (input/output) COMPLEX*16 array, dimension (1+(N-1)*INCX)
+* The vector y; the elements of y are assumed to be real.
+*
+* Z (input/output) COMPLEX*16 array, dimension (1+(N-1)*INCX)
+* The vector z.
+*
+* INCX (input) INTEGER
+* The increment between elements of X, Y and Z. INCX > 0.
+*
+* C (input) DOUBLE PRECISION array, dimension (1+(N-1)*INCC)
+* The cosines of the plane rotations.
+*
+* S (input) COMPLEX*16 array, dimension (1+(N-1)*INCC)
+* The sines of the plane rotations.
+*
+* INCC (input) INTEGER
+* The increment between elements of C and S. INCC > 0.
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+ INTEGER I, IC, IX
+ DOUBLE PRECISION CI, SII, SIR, T1I, T1R, T5, T6, XI, YI, ZII,
+ $ ZIR
+ COMPLEX*16 SI, T2, T3, T4, ZI
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE, DCMPLX, DCONJG, DIMAG
+* ..
+* .. Executable Statements ..
+*
+ IX = 1
+ IC = 1
+ DO 10 I = 1, N
+ XI = DBLE( X( IX ) )
+ YI = DBLE( Y( IX ) )
+ ZI = Z( IX )
+ ZIR = DBLE( ZI )
+ ZII = DIMAG( ZI )
+ CI = C( IC )
+ SI = S( IC )
+ SIR = DBLE( SI )
+ SII = DIMAG( SI )
+ T1R = SIR*ZIR - SII*ZII
+ T1I = SIR*ZII + SII*ZIR
+ T2 = CI*ZI
+ T3 = T2 - DCONJG( SI )*XI
+ T4 = DCONJG( T2 ) + SI*YI
+ T5 = CI*XI + T1R
+ T6 = CI*YI - T1R
+ X( IX ) = CI*T5 + ( SIR*DBLE( T4 )+SII*DIMAG( T4 ) )
+ Y( IX ) = CI*T6 - ( SIR*DBLE( T3 )-SII*DIMAG( T3 ) )
+ Z( IX ) = CI*T3 + DCONJG( SI )*DCMPLX( T6, T1I )
+ IX = IX + INCX
+ IC = IC + INCC
+ 10 CONTINUE
+ RETURN
+*
+* End of ZLAR2V
+*
+ END