dlarzt.f.html
来自「famous linear algebra library (LAPACK) p」· HTML 代码 · 共 209 行 · 第 1/2 页
HTML
209 行
</span><span class="comment">*</span><span class="comment"> The shape of the matrix V and the storage of the vectors which define
</span><span class="comment">*</span><span class="comment"> the H(i) is best illustrated by the following example with n = 5 and
</span><span class="comment">*</span><span class="comment"> k = 3. The elements equal to 1 are not stored; the corresponding
</span><span class="comment">*</span><span class="comment"> array elements are modified but restored on exit. The rest of the
</span><span class="comment">*</span><span class="comment"> array is not used.
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ______V_____
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 ) / \
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 ) ( v1 v1 v1 v1 v1 . . . . 1 )
</span><span class="comment">*</span><span class="comment"> V = ( v1 v2 v3 ) ( v2 v2 v2 v2 v2 . . . 1 )
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 ) ( v3 v3 v3 v3 v3 . . 1 )
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 )
</span><span class="comment">*</span><span class="comment"> . . .
</span><span class="comment">*</span><span class="comment"> . . .
</span><span class="comment">*</span><span class="comment"> 1 . .
</span><span class="comment">*</span><span class="comment"> 1 .
</span><span class="comment">*</span><span class="comment"> 1
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> ______V_____
</span><span class="comment">*</span><span class="comment"> 1 / \
</span><span class="comment">*</span><span class="comment"> . 1 ( 1 . . . . v1 v1 v1 v1 v1 )
</span><span class="comment">*</span><span class="comment"> . . 1 ( . 1 . . . v2 v2 v2 v2 v2 )
</span><span class="comment">*</span><span class="comment"> . . . ( . . 1 . . v3 v3 v3 v3 v3 )
</span><span class="comment">*</span><span class="comment"> . . .
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 )
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 )
</span><span class="comment">*</span><span class="comment"> V = ( v1 v2 v3 )
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 )
</span><span class="comment">*</span><span class="comment"> ( v1 v2 v3 )
</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"> .. Parameters ..
</span> DOUBLE PRECISION ZERO
PARAMETER ( ZERO = 0.0D+0 )
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment"> .. Local Scalars ..
</span> INTEGER I, INFO, J
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment"> .. External Subroutines ..
</span> EXTERNAL DGEMV, DTRMV, <a name="XERBLA.131"></a><a href="xerbla.f.html#XERBLA.1">XERBLA</a>
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment"> .. External Functions ..
</span> LOGICAL <a name="LSAME.134"></a><a href="lsame.f.html#LSAME.1">LSAME</a>
EXTERNAL <a name="LSAME.135"></a><a href="lsame.f.html#LSAME.1">LSAME</a>
<span class="comment">*</span><span class="comment"> ..
</span><span class="comment">*</span><span class="comment"> .. Executable Statements ..
</span><span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> Check for currently supported options
</span><span class="comment">*</span><span class="comment">
</span> INFO = 0
IF( .NOT.<a name="LSAME.142"></a><a href="lsame.f.html#LSAME.1">LSAME</a>( DIRECT, <span class="string">'B'</span> ) ) THEN
INFO = -1
ELSE IF( .NOT.<a name="LSAME.144"></a><a href="lsame.f.html#LSAME.1">LSAME</a>( STOREV, <span class="string">'R'</span> ) ) THEN
INFO = -2
END IF
IF( INFO.NE.0 ) THEN
CALL <a name="XERBLA.148"></a><a href="xerbla.f.html#XERBLA.1">XERBLA</a>( <span class="string">'<a name="DLARZT.148"></a><a href="dlarzt.f.html#DLARZT.1">DLARZT</a>'</span>, -INFO )
RETURN
END IF
<span class="comment">*</span><span class="comment">
</span> DO 20 I = K, 1, -1
IF( TAU( I ).EQ.ZERO ) THEN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> H(i) = I
</span><span class="comment">*</span><span class="comment">
</span> DO 10 J = I, K
T( J, I ) = ZERO
10 CONTINUE
ELSE
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> general case
</span><span class="comment">*</span><span class="comment">
</span> IF( I.LT.K ) THEN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> T(i+1:k,i) = - tau(i) * V(i+1:k,1:n) * V(i,1:n)'
</span><span class="comment">*</span><span class="comment">
</span> CALL DGEMV( <span class="string">'No transpose'</span>, K-I, N, -TAU( I ),
$ V( I+1, 1 ), LDV, V( I, 1 ), LDV, ZERO,
$ T( I+1, I ), 1 )
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> T(i+1:k,i) = T(i+1:k,i+1:k) * T(i+1:k,i)
</span><span class="comment">*</span><span class="comment">
</span> CALL DTRMV( <span class="string">'Lower'</span>, <span class="string">'No transpose'</span>, <span class="string">'Non-unit'</span>, K-I,
$ T( I+1, I+1 ), LDT, T( I+1, I ), 1 )
END IF
T( I, I ) = TAU( I )
END IF
20 CONTINUE
RETURN
<span class="comment">*</span><span class="comment">
</span><span class="comment">*</span><span class="comment"> End of <a name="DLARZT.182"></a><a href="dlarzt.f.html#DLARZT.1">DLARZT</a>
</span><span class="comment">*</span><span class="comment">
</span> END
</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?