Functions | |
FLA_Error | FLA_QR_UT_Accum_T_unb_var1 (FLA_Obj A, FLA_Obj T) |
References FLA_Apply_househ2_UT(), FLA_Cont_with_3x3_to_2x2(), FLA_Copyt_external(), FLA_Gemv_external(), FLA_Househ2_UT(), FLA_Obj_min_dim(), FLA_ONE, FLA_Part_2x2(), and FLA_Repart_2x2_to_3x3().
Referenced by FLA_QR_UT_internal().
00036 { 00037 FLA_Obj ATL, ATR, A00, a01, A02, 00038 ABL, ABR, a10t, alpha11, a12t, 00039 A20, a21, A22; 00040 00041 FLA_Obj TTL, TTR, T00, t01, T02, 00042 TBL, TBR, t10t, tau11, t12t, 00043 T20, t21, T22; 00044 00045 00046 FLA_Part_2x2( A, &ATL, &ATR, 00047 &ABL, &ABR, 0, 0, FLA_TL ); 00048 00049 FLA_Part_2x2( T, &TTL, &TTR, 00050 &TBL, &TBR, 0, 0, FLA_TL ); 00051 00052 while ( FLA_Obj_min_dim( ABR ) > 0 ){ 00053 00054 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02, 00055 /* ************* */ /* ************************** */ 00056 &a10t, /**/ &alpha11, &a12t, 00057 ABL, /**/ ABR, &A20, /**/ &a21, &A22, 00058 1, 1, FLA_BR ); 00059 00060 FLA_Repart_2x2_to_3x3( TTL, /**/ TTR, &T00, /**/ &t01, &T02, 00061 /* ************* */ /* ************************ */ 00062 &t10t, /**/ &tau11, &t12t, 00063 TBL, /**/ TBR, &T20, /**/ &t21, &T22, 00064 1, 1, FLA_BR ); 00065 00066 /*------------------------------------------------------------*/ 00067 00068 // [ alpha11, ... 00069 // a21, tau11 ] = FLA_Househ2_UT( alpha11, ... 00070 // a21, tau11 ); 00071 FLA_Househ2_UT( alpha11, 00072 a21, tau11 ); 00073 00074 // t01 = a10t' + A20' * a21; 00075 FLA_Copyt_external( FLA_CONJ_TRANSPOSE, a10t, t01 ); 00076 FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ONE, t01 ); 00077 00078 // [ a12t, ... 00079 // A22 ] = FLA_Apply_househ2_UT( tau11, a21, a12t, ... 00080 // A22 ); 00081 FLA_Apply_househ2_UT( tau11, a21, a12t, 00082 A22 ); 00083 00084 /*------------------------------------------------------------*/ 00085 00086 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02, 00087 a10t, alpha11, /**/ a12t, 00088 /* ************** */ /* ************************ */ 00089 &ABL, /**/ &ABR, A20, a21, /**/ A22, 00090 FLA_TL ); 00091 00092 FLA_Cont_with_3x3_to_2x2( &TTL, /**/ &TTR, T00, t01, /**/ T02, 00093 t10t, tau11, /**/ t12t, 00094 /* ************** */ /* ********************** */ 00095 &TBL, /**/ &TBR, T20, t21, /**/ T22, 00096 FLA_TL ); 00097 00098 } 00099 00100 return FLA_SUCCESS; 00101 }