1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
<HTML>
<HEAD><TITLE>MB03BC - SLICOT Library Routine Documentation</TITLE>
</HEAD>
<BODY>
<H2><A Name="MB03BC">MB03BC</A></H2>
<H3>
Product singular value decomposition of K-1 triangular factors of order 2
</H3>
<A HREF ="#Specification"><B>[Specification]</B></A>
<A HREF ="#Arguments"><B>[Arguments]</B></A>
<A HREF ="#Method"><B>[Method]</B></A>
<A HREF ="#References"><B>[References]</B></A>
<A HREF ="#Comments"><B>[Comments]</B></A>
<A HREF ="#Example"><B>[Example]</B></A>
<P>
<B><FONT SIZE="+1">Purpose</FONT></B>
<PRE>
To compute the product singular value decomposition of the K-1
triangular factors corresponding to a 2-by-2 product of K
factors in upper Hessenberg-triangular form.
For a general product of 2-by-2 triangular matrices
S(2) S(3) S(K)
A = A(:,:,2) A(:,:,3) ... A(:,:,K),
Givens rotations are computed so that
S(i)
[ CV(i-1) SV(i-1) ] [ A(1,1,i)(in) A(1,2,i)(in) ]
[ -SV(i-1) CV(i-1) ] [ 0 A(2,2,i)(in) ]
S(i)
[ A(1,1,i)(out) A(1,2,i)(out) ] [ CV(i) SV(i) ]
= [ 0 A(2,2,i)(out) ] [ -SV(i) CV(i) ]
stays upper triangular and
[ CV(1) SV(1) ] [ CV(K) -SV(K) ]
[ -SV(1) CV(1) ] * A * [ SV(K) CV(K) ]
is diagonal.
</PRE>
<A name="Specification"><B><FONT SIZE="+1">Specification</FONT></B></A>
<PRE>
SUBROUTINE MB03BC( K, AMAP, S, SINV, A, LDA1, LDA2, MACPAR, CV,
$ SV, DWORK )
C .. Scalar Arguments ..
INTEGER K, LDA1, LDA2, SINV
C .. Array Arguments ..
INTEGER AMAP(*), S(*)
DOUBLE PRECISION A(LDA1,LDA2,*), CV(*), DWORK(*), MACPAR(*),
$ SV(*)
</PRE>
<A name="Arguments"><B><FONT SIZE="+1">Arguments</FONT></B></A>
<P>
</PRE>
<B>Input/Output Parameters</B>
<PRE>
K (input) INTEGER
The number of factors. K >= 1.
AMAP (input) INTEGER array, dimension (K)
The map for accessing the factors, i.e., if AMAP(I) = J,
then the factor A_I is stored at the J-th position in A.
S (input) INTEGER array, dimension (K)
The signature array. Each entry of S must be 1 or -1.
SINV (input) INTEGER
Signature multiplier. Entries of S are virtually
multiplied by SINV.
A (input/output) DOUBLE PRECISION array, dimension
(LDA1,LDA2,K)
On entry, the leading 2-by-2-by-K part of this array must
contain a 2-by-2 product (implicitly represented by its K
factors) in upper Hessenberg-triangular form.
On exit, the leading 2-by-2-by-K part of this array
contains modified triangular factors such that their
product is diagonal.
LDA1 INTEGER
The first leading dimension of the array A. LDA1 >= 2.
LDA2 INTEGER
The second leading dimension of the array A. LDA2 >= 2.
MACPAR (input) DOUBLE PRECISION array, dimension (5)
Machine parameters:
MACPAR(1) overflow threshold, DLAMCH( 'O' );
MACPAR(2) underflow threshold, DLAMCH( 'U' );
MACPAR(3) safe minimum, DLAMCH( 'S' );
MACPAR(4) relative machine precision, DLAMCH( 'E' );
MACPAR(5) base of the machine, DLAMCH( 'B' ).
CV (output) DOUBLE PRECISION array, dimension (K)
On exit, the first K elements of this array contain the
cosines of the Givens rotations.
SV (output) DOUBLE PRECISION array, dimension (K)
On exit, the first K elements of this array contain the
sines of the Givens rotations.
</PRE>
<B>Workspace</B>
<PRE>
DWORK DOUBLE PRECISION array, dimension (3*(K-1))
</PRE>
<A name="Method"><B><FONT SIZE="+1">Method</FONT></B></A>
<PRE>
The product singular value decomposition of the K-1
triangular factors are computed as described in [1].
</PRE>
<A name="References"><B><FONT SIZE="+1">References</FONT></B></A>
<PRE>
[1] Bojanczyk, A. and Van Dooren, P.
On propagating orthogonal transformations in a product of 2x2
triangular matrices.
In Reichel, Ruttan and Varga: 'Numerical Linear Algebra',
pp. 1-9, 1993.
</PRE>
<A name="Comments"><B><FONT SIZE="+1">Further Comments</FONT></B></A>
<PRE>
None
</PRE>
<A name="Example"><B><FONT SIZE="+1">Example</FONT></B></A>
<P>
<B>Program Text</B>
<PRE>
None
</PRE>
<B>Program Data</B>
<PRE>
None
</PRE>
<B>Program Results</B>
<PRE>
None
</PRE>
<HR>
<A HREF=support.html><B>Return to Supporting Routines index</B></A></BODY>
</HTML>
|