zlacn2.f.html
来自「famous linear algebra library (LAPACK) p」· HTML 代码 · 共 246 行 · 第 1/2 页
HTML
246 行
10 CONTINUE
KASE = 1
ISAVE( 1 ) = 1
RETURN
END IF
<span class="comment">*</span><span class="comment">
</span> GO TO ( 20, 40, 70, 90, 120 )ISAVE( 1 )
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ................ ENTRY (ISAVE( 1 ) = 1)
</span><span class="comment">*</span><span class="comment"> FIRST ITERATION. X HAS BEEN OVERWRITTEN BY A*X.
</span><span class="comment">*</span><span class="comment">
</span> 20 CONTINUE
IF( N.EQ.1 ) THEN
V( 1 ) = X( 1 )
EST = ABS( V( 1 ) )
<span class="comment">*</span><span class="comment"> ... QUIT
</span> GO TO 130
END IF
EST = <a name="DZSUM1.123"></a><a href="dzsum1.f.html#DZSUM1.1">DZSUM1</a>( N, X, 1 )
<span class="comment">*</span><span class="comment">
</span> DO 30 I = 1, N
ABSXI = ABS( X( I ) )
IF( ABSXI.GT.SAFMIN ) THEN
X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
$ DIMAG( X( I ) ) / ABSXI )
ELSE
X( I ) = CONE
END IF
30 CONTINUE
KASE = 2
ISAVE( 1 ) = 2
RETURN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ................ ENTRY (ISAVE( 1 ) = 2)
</span><span class="comment">*</span><span class="comment"> FIRST ITERATION. X HAS BEEN OVERWRITTEN BY CTRANS(A)*X.
</span><span class="comment">*</span><span class="comment">
</span> 40 CONTINUE
ISAVE( 2 ) = <a name="IZMAX1.142"></a><a href="izmax1.f.html#IZMAX1.1">IZMAX1</a>( N, X, 1 )
ISAVE( 3 ) = 2
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> MAIN LOOP - ITERATIONS 2,3,...,ITMAX.
</span><span class="comment">*</span><span class="comment">
</span> 50 CONTINUE
DO 60 I = 1, N
X( I ) = CZERO
60 CONTINUE
X( ISAVE( 2 ) ) = CONE
KASE = 1
ISAVE( 1 ) = 3
RETURN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ................ ENTRY (ISAVE( 1 ) = 3)
</span><span class="comment">*</span><span class="comment"> X HAS BEEN OVERWRITTEN BY A*X.
</span><span class="comment">*</span><span class="comment">
</span> 70 CONTINUE
CALL ZCOPY( N, X, 1, V, 1 )
ESTOLD = EST
EST = <a name="DZSUM1.162"></a><a href="dzsum1.f.html#DZSUM1.1">DZSUM1</a>( N, V, 1 )
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> TEST FOR CYCLING.
</span> IF( EST.LE.ESTOLD )
$ GO TO 100
<span class="comment">*</span><span class="comment">
</span> DO 80 I = 1, N
ABSXI = ABS( X( I ) )
IF( ABSXI.GT.SAFMIN ) THEN
X( I ) = DCMPLX( DBLE( X( I ) ) / ABSXI,
$ DIMAG( X( I ) ) / ABSXI )
ELSE
X( I ) = CONE
END IF
80 CONTINUE
KASE = 2
ISAVE( 1 ) = 4
RETURN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ................ ENTRY (ISAVE( 1 ) = 4)
</span><span class="comment">*</span><span class="comment"> X HAS BEEN OVERWRITTEN BY CTRANS(A)*X.
</span><span class="comment">*</span><span class="comment">
</span> 90 CONTINUE
JLAST = ISAVE( 2 )
ISAVE( 2 ) = <a name="IZMAX1.186"></a><a href="izmax1.f.html#IZMAX1.1">IZMAX1</a>( N, X, 1 )
IF( ( ABS( X( JLAST ) ).NE.ABS( X( ISAVE( 2 ) ) ) ) .AND.
$ ( ISAVE( 3 ).LT.ITMAX ) ) THEN
ISAVE( 3 ) = ISAVE( 3 ) + 1
GO TO 50
END IF
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ITERATION COMPLETE. FINAL STAGE.
</span><span class="comment">*</span><span class="comment">
</span> 100 CONTINUE
ALTSGN = ONE
DO 110 I = 1, N
X( I ) = DCMPLX( ALTSGN*( ONE+DBLE( I-1 ) / DBLE( N-1 ) ) )
ALTSGN = -ALTSGN
110 CONTINUE
KASE = 1
ISAVE( 1 ) = 5
RETURN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ................ ENTRY (ISAVE( 1 ) = 5)
</span><span class="comment">*</span><span class="comment"> X HAS BEEN OVERWRITTEN BY A*X.
</span><span class="comment">*</span><span class="comment">
</span> 120 CONTINUE
TEMP = TWO*( <a name="DZSUM1.209"></a><a href="dzsum1.f.html#DZSUM1.1">DZSUM1</a>( N, X, 1 ) / DBLE( 3*N ) )
IF( TEMP.GT.EST ) THEN
CALL ZCOPY( N, X, 1, V, 1 )
EST = TEMP
END IF
<span class="comment">*</span><span class="comment">
</span> 130 CONTINUE
KASE = 0
RETURN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> End of <a name="ZLACN2.219"></a><a href="zlacn2.f.html#ZLACN2.1">ZLACN2</a>
</span><span class="comment">*</span><span class="comment">
</span> END
</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?