libflame revision_anchor
Functions
FLA_UDdate_UT_inc_blk_var1.c File Reference

(r)

Functions

FLA_Error FLA_UDdate_UT_inc_blk_var1 (FLA_Obj R, FLA_Obj C, FLA_Obj D, FLA_Obj T, FLA_Obj W, fla_uddateutinc_t *cntl)
 

Function Documentation

◆ FLA_UDdate_UT_inc_blk_var1()

FLA_Error FLA_UDdate_UT_inc_blk_var1 ( FLA_Obj  R,
FLA_Obj  C,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
fla_uddateutinc_t cntl 
)
16{
17 FLA_Obj RTL, RTR, R00, R01, R02,
18 RBL, RBR, R10, R11, R12,
19 R20, R21, R22;
20
21 FLA_Obj CL, CR, C0, C1, C2;
22
23 FLA_Obj DL, DR, D0, D1, D2;
24
25 FLA_Obj TL, TR, T0, T1, T2;
26
27 FLA_Obj WTL, WTR, W00, W01, W02,
28 WBL, WBR, W10, W11, W12,
29 W20, W21, W22;
30
31 dim_t b;
32
33 FLA_Part_2x2( R, &RTL, &RTR,
34 &RBL, &RBR, 0, 0, FLA_TL );
35
36 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT );
37
38 FLA_Part_1x2( D, &DL, &DR, 0, FLA_LEFT );
39
40 FLA_Part_1x2( T, &TL, &TR, 0, FLA_LEFT );
41
42 FLA_Part_2x2( W, &WTL, &WTR,
43 &WBL, &WBR, 0, 0, FLA_TL );
44
45 while ( FLA_Obj_min_dim( RBR ) > 0 ){
46
48
49 FLA_Repart_2x2_to_3x3( RTL, /**/ RTR, &R00, /**/ &R01, &R02,
50 /* ************* */ /* ******************** */
51 &R10, /**/ &R11, &R12,
52 RBL, /**/ RBR, &R20, /**/ &R21, &R22,
53 b, b, FLA_BR );
54
55 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &C1, &C2,
56 b, FLA_RIGHT );
57
58 FLA_Repart_1x2_to_1x3( DL, /**/ DR, &D0, /**/ &D1, &D2,
59 b, FLA_RIGHT );
60
61 FLA_Repart_1x2_to_1x3( TL, /**/ TR, &T0, /**/ &T1, &T2,
62 b, FLA_RIGHT );
63
64 FLA_Repart_2x2_to_3x3( WTL, /**/ WTR, &W00, /**/ &W01, &W02,
65 /* ************* */ /* ******************** */
66 &W10, /**/ &W11, &W12,
67 WBL, /**/ WBR, &W20, /**/ &W21, &W22,
68 b, b, FLA_BR );
69
70 /*------------------------------------------------------------*/
71
72 /*
73 Perform an up/downdate of the upper triangular factor R11 via
74 up/downdating UT Householder transformations:
75
76 [ R11, ...
77 C1, ...
78 D1, T1 ] = FLA_UDdate_UT( R11, ...
79 C1, ...
80 D1, T1 );
81
82 by updating R11 in such a way that removes the contributions of
83 the rows in D1 while simultaneously adding new contributions to
84 the factorization from the rows of C1. Note that C1 and D1 are
85 also updated in the process.
86 */
87
89 C1,
90 D1, T1,
91 FLA_Cntl_sub_uddateut( cntl ) );
92
93
94
95 if ( FLA_Obj_width( R12 ) > 0 )
96 {
97 /*
98 Apply Q' to R12, C2, and D2 from the left:
99
100 / R12 \ / R12 \
101 | C2 | = Q' * | C2 |
102 \ D2 / \ D2 /
103
104 where Q is formed from C1, D1, and T1.
105 */
106
108 T1, W12,
109 R12,
110 C1, C2,
111 D1, D2, FLA_Cntl_sub_apqudut( cntl ) );
112 }
113
114
115 /*------------------------------------------------------------*/
116
117 FLA_Cont_with_3x3_to_2x2( &RTL, /**/ &RTR, R00, R01, /**/ R02,
118 R10, R11, /**/ R12,
119 /* ************** */ /* ****************** */
120 &RBL, /**/ &RBR, R20, R21, /**/ R22,
121 FLA_TL );
122
123 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, C1, /**/ C2,
124 FLA_LEFT );
125
126 FLA_Cont_with_1x3_to_1x2( &DL, /**/ &DR, D0, D1, /**/ D2,
127 FLA_LEFT );
128
129 FLA_Cont_with_1x3_to_1x2( &TL, /**/ &TR, T0, T1, /**/ T2,
130 FLA_LEFT );
131
132 FLA_Cont_with_3x3_to_2x2( &WTL, /**/ &WTR, W00, W01, /**/ W02,
133 W10, W11, /**/ W12,
134 /* ************** */ /* ****************** */
135 &WBL, /**/ &WBR, W20, W21, /**/ W22,
136 FLA_TL );
137 }
138
139 return FLA_SUCCESS;
140}
FLA_Error FLA_Apply_QUD_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj T, FLA_Obj W, FLA_Obj R, FLA_Obj U, FLA_Obj C, FLA_Obj V, FLA_Obj D, fla_apqudut_t *cntl)
Definition FLA_Apply_QUD_UT_internal.c:17
FLA_Error FLA_UDdate_UT_internal(FLA_Obj R, FLA_Obj C, FLA_Obj D, FLA_Obj T, fla_uddateut_t *cntl)
Definition FLA_UDdate_UT_internal.c:16
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition FLA_View.c:304
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition FLA_View.c:17
FLA_Error FLA_Cont_with_1x3_to_1x2(FLA_Obj *AL, FLA_Obj *AR, FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, FLA_Side side)
Definition FLA_View.c:475
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:110
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition FLA_View.c:142
FLA_Error FLA_Repart_1x2_to_1x3(FLA_Obj AL, FLA_Obj AR, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:267
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition FLA_Blocksize.c:234
dim_t FLA_Obj_min_dim(FLA_Obj obj)
Definition FLA_Query.c:153
unsigned long dim_t
Definition FLA_type_defs.h:71
int i
Definition bl1_axmyv2.c:145
Definition FLA_type_defs.h:159

References FLA_Apply_QUD_UT_internal(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Obj_min_dim(), FLA_Obj_width(), FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_UDdate_UT_internal(), and i.

Referenced by FLASH_UDdate_UT_inc().