Functions | |
FLA_Error | FLA_QR_UT_UD_Accum_T_unb_var1 (FLA_Obj U, FLA_Obj D, FLA_Obj T) |
References FLA_Apply_househ2_UT(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Gemv_external(), FLA_Househ2_UT(), FLA_Obj_min_dim(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), and FLA_ZERO.
Referenced by FLA_QR_UT_UD_internal().
00037 { 00038 FLA_Obj UTL, UTR, U00, u01, U02, 00039 UBL, UBR, u10t, upsilon11, u12t, 00040 U20, u21, U22; 00041 00042 FLA_Obj DL, DR, D0, d1, D2; 00043 00044 FLA_Obj TTL, TTR, T00, t01, T02, 00045 TBL, TBR, t10t, tau11, t12t, 00046 T20, t21, T22; 00047 00048 00049 FLA_Part_2x2( U, &UTL, &UTR, 00050 &UBL, &UBR, 0, 0, FLA_TL ); 00051 00052 FLA_Part_1x2( D, &DL, &DR, 0, FLA_LEFT ); 00053 00054 FLA_Part_2x2( T, &TTL, &TTR, 00055 &TBL, &TBR, 0, 0, FLA_TL ); 00056 00057 while ( FLA_Obj_min_dim( UBR ) > 0 ){ 00058 00059 FLA_Repart_2x2_to_3x3( UTL, /**/ UTR, &U00, /**/ &u01, &U02, 00060 /* ************* */ /* ************************** */ 00061 &u10t, /**/ &upsilon11, &u12t, 00062 UBL, /**/ UBR, &U20, /**/ &u21, &U22, 00063 1, 1, FLA_BR ); 00064 00065 FLA_Repart_1x2_to_1x3( DL, /**/ DR, &D0, /**/ &d1, &D2, 00066 1, FLA_RIGHT ); 00067 00068 FLA_Repart_2x2_to_3x3( TTL, /**/ TTR, &T00, /**/ &t01, &T02, 00069 /* ************* */ /* ************************ */ 00070 &t10t, /**/ &tau11, &t12t, 00071 TBL, /**/ TBR, &T20, /**/ &t21, &T22, 00072 1, 1, FLA_BR ); 00073 00074 /*------------------------------------------------------------*/ 00075 00076 // [ upsilon11, ... 00077 // d1, tau11 ] = FLA_Househ2_UT( upsilon11, ... 00078 // d1 ); 00079 FLA_Househ2_UT( upsilon11, 00080 d1, tau11 ); 00081 00082 // t01 = D0' * d1; 00083 FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D0, d1, FLA_ZERO, t01 ); 00084 00085 // [ u12t, ... 00086 // D2 ] = FLA_Apply_househ2_UT( tau11, d1, u12t, ... 00087 // D2 ); 00088 FLA_Apply_househ2_UT( tau11, d1, u12t, 00089 D2 ); 00090 00091 /*------------------------------------------------------------*/ 00092 00093 FLA_Cont_with_3x3_to_2x2( &UTL, /**/ &UTR, U00, u01, /**/ U02, 00094 u10t, upsilon11, /**/ u12t, 00095 /* ************** */ /* ************************ */ 00096 &UBL, /**/ &UBR, U20, u21, /**/ U22, 00097 FLA_TL ); 00098 00099 FLA_Cont_with_1x3_to_1x2( &DL, /**/ &DR, D0, d1, /**/ D2, 00100 FLA_LEFT ); 00101 00102 FLA_Cont_with_3x3_to_2x2( &TTL, /**/ &TTR, T00, t01, /**/ T02, 00103 t10t, tau11, /**/ t12t, 00104 /* ************** */ /* ********************** */ 00105 &TBL, /**/ &TBR, T20, t21, /**/ T22, 00106 FLA_TL ); 00107 } 00108 00109 return FLA_SUCCESS; 00110 }