drotm.f.html
来自「famous linear algebra library (LAPACK) p」· HTML 代码 · 共 170 行
HTML
170 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>drotm.f</title>
<meta name="generator" content="emacs 21.3.1; htmlfontify 0.20">
<style type="text/css"><!--
body { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: adobe-courier; font-size: 11pt; text-decoration: none; }
span.default { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: adobe-courier; font-size: 11pt; text-decoration: none; }
span.default a { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: adobe-courier; font-size: 11pt; text-decoration: underline; }
span.comment { color: rgb(178, 34, 34); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: adobe-courier; font-size: 11pt; text-decoration: none; }
span.comment a { color: rgb(178, 34, 34); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: adobe-courier; font-size: 11pt; text-decoration: underline; }
--></style>
</head>
<body>
<pre>
SUBROUTINE <a name="DROTM.1"></a><a href="drotm.f.html#DROTM.1">DROTM</a>(N,DX,INCX,DY,INCY,DPARAM)
<span class="comment">*</span><span class="comment"> .. Scalar Arguments ..
</span> INTEGER INCX,INCY,N
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment"> .. Array Arguments ..
</span> DOUBLE PRECISION DPARAM(5),DX(1),DY(1)
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> Purpose
</span><span class="comment">*</span><span class="comment"> =======
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> (DX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF DX ARE IN
</span><span class="comment">*</span><span class="comment"> (DY**T)
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> DX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
</span><span class="comment">*</span><span class="comment"> LX = (-INCX)*N, AND SIMILARLY FOR SY USING LY AND INCY.
</span><span class="comment">*</span><span class="comment"> WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0)
</span><span class="comment">*</span><span class="comment"> H=( ) ( ) ( ) ( )
</span><span class="comment">*</span><span class="comment"> (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0).
</span><span class="comment">*</span><span class="comment"> SEE <a name="DROTMG.26"></a><a href="drotmg.f.html#DROTMG.1">DROTMG</a> FOR A DESCRIPTION OF DATA STORAGE IN DPARAM.
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> Arguments
</span><span class="comment">*</span><span class="comment"> =========
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> N (input) INTEGER
</span><span class="comment">*</span><span class="comment"> number of elements in input vector(s)
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> DX (input/output) DOUBLE PRECISION array, dimension N
</span><span class="comment">*</span><span class="comment"> double precision vector with 5 elements
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> INCX (input) INTEGER
</span><span class="comment">*</span><span class="comment"> storage spacing between elements of DX
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> DY (input/output) DOUBLE PRECISION array, dimension N
</span><span class="comment">*</span><span class="comment"> double precision vector with N elements
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> INCY (input) INTEGER
</span><span class="comment">*</span><span class="comment"> storage spacing between elements of DY
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> DPARAM (input/output) DOUBLE PRECISION array, dimension 5
</span><span class="comment">*</span><span class="comment"> DPARAM(1)=DFLAG
</span><span class="comment">*</span><span class="comment"> DPARAM(2)=DH11
</span><span class="comment">*</span><span class="comment"> DPARAM(3)=DH21
</span><span class="comment">*</span><span class="comment"> DPARAM(4)=DH12
</span><span class="comment">*</span><span class="comment"> DPARAM(5)=DH22
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> =====================================================================
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> .. Local Scalars ..
</span> DOUBLE PRECISION DFLAG,DH11,DH12,DH21,DH22,TWO,W,Z,ZERO
INTEGER I,KX,KY,NSTEPS
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment"> .. Data statements ..
</span> DATA ZERO,TWO/0.D0,2.D0/
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment">
</span> DFLAG = DPARAM(1)
IF (N.LE.0 .OR. (DFLAG+TWO.EQ.ZERO)) GO TO 140
IF (.NOT. (INCX.EQ.INCY.AND.INCX.GT.0)) GO TO 70
<span class="comment">*</span><span class="comment">
</span> NSTEPS = N*INCX
IF (DFLAG) 50,10,30
10 CONTINUE
DH12 = DPARAM(4)
DH21 = DPARAM(3)
DO 20 I = 1,NSTEPS,INCX
W = DX(I)
Z = DY(I)
DX(I) = W + Z*DH12
DY(I) = W*DH21 + Z
20 CONTINUE
GO TO 140
30 CONTINUE
DH11 = DPARAM(2)
DH22 = DPARAM(5)
DO 40 I = 1,NSTEPS,INCX
W = DX(I)
Z = DY(I)
DX(I) = W*DH11 + Z
DY(I) = -W + DH22*Z
40 CONTINUE
GO TO 140
50 CONTINUE
DH11 = DPARAM(2)
DH12 = DPARAM(4)
DH21 = DPARAM(3)
DH22 = DPARAM(5)
DO 60 I = 1,NSTEPS,INCX
W = DX(I)
Z = DY(I)
DX(I) = W*DH11 + Z*DH12
DY(I) = W*DH21 + Z*DH22
60 CONTINUE
GO TO 140
70 CONTINUE
KX = 1
KY = 1
IF (INCX.LT.0) KX = 1 + (1-N)*INCX
IF (INCY.LT.0) KY = 1 + (1-N)*INCY
<span class="comment">*</span><span class="comment">
</span> IF (DFLAG) 120,80,100
80 CONTINUE
DH12 = DPARAM(4)
DH21 = DPARAM(3)
DO 90 I = 1,N
W = DX(KX)
Z = DY(KY)
DX(KX) = W + Z*DH12
DY(KY) = W*DH21 + Z
KX = KX + INCX
KY = KY + INCY
90 CONTINUE
GO TO 140
100 CONTINUE
DH11 = DPARAM(2)
DH22 = DPARAM(5)
DO 110 I = 1,N
W = DX(KX)
Z = DY(KY)
DX(KX) = W*DH11 + Z
DY(KY) = -W + DH22*Z
KX = KX + INCX
KY = KY + INCY
110 CONTINUE
GO TO 140
120 CONTINUE
DH11 = DPARAM(2)
DH12 = DPARAM(4)
DH21 = DPARAM(3)
DH22 = DPARAM(5)
DO 130 I = 1,N
W = DX(KX)
Z = DY(KY)
DX(KX) = W*DH11 + Z*DH12
DY(KY) = W*DH21 + Z*DH22
KX = KX + INCX
KY = KY + INCY
130 CONTINUE
140 CONTINUE
RETURN
END
</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?