Functions | |
FLA_Error | FLA_QR_UT_recover_tau_submatrix (FLA_Obj T, FLA_Obj tau) |
FLA_Error | FLA_QR_UT_recover_tau (FLA_Obj T, FLA_Obj t) |
void FLA_F2C() | fla_qr_ut_recover_tau_f (F_INT *T, F_INT *tau, F_INT *IERROR) |
References FLA_Check_error_level(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x1_to_2x1(), FLA_Obj_length(), FLA_Obj_width(), FLA_Part_1x2(), FLA_Part_2x1(), FLA_QR_UT_recover_tau_check(), FLA_QR_UT_recover_tau_submatrix(), FLA_Repart_1x2_to_1x3(), and FLA_Repart_2x1_to_3x1().
Referenced by fla_qr_ut_recover_tau_f().
00038 { 00039 FLA_Obj TL, TR, T0, T1, T2; 00040 00041 FLA_Obj tT, t0, 00042 tB, t1, 00043 t2; 00044 00045 dim_t b; 00046 dim_t b_alg; 00047 00048 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING ) 00049 FLA_QR_UT_recover_tau_check( T, t ); 00050 00051 b_alg = FLA_Obj_length( T ); 00052 00053 FLA_Part_1x2( T, &TL, &TR, 0, FLA_LEFT ); 00054 00055 FLA_Part_2x1( t, &tT, 00056 &tB, 0, FLA_TOP ); 00057 00058 while ( FLA_Obj_width( TL ) < FLA_Obj_width( T ) ){ 00059 00060 b = min( FLA_Obj_width( TR ), b_alg ); 00061 00062 FLA_Repart_1x2_to_1x3( TL, /**/ TR, &T0, /**/ &T1, &T2, 00063 b, FLA_RIGHT ); 00064 00065 FLA_Repart_2x1_to_3x1( tT, &t0, 00066 /* ** */ /* ** */ 00067 &t1, 00068 tB, &t2, b, FLA_BOTTOM ); 00069 00070 /*------------------------------------------------------------*/ 00071 00072 FLA_QR_UT_recover_tau_submatrix( T1, t1 ); 00073 00074 /*------------------------------------------------------------*/ 00075 00076 FLA_Cont_with_1x3_to_1x2( &TL, /**/ &TR, T0, T1, /**/ T2, 00077 FLA_LEFT ); 00078 00079 FLA_Cont_with_3x1_to_2x1( &tT, t0, 00080 t1, 00081 /* ** */ /* ** */ 00082 &tB, t2, FLA_TOP ); 00083 } 00084 00085 return FLA_SUCCESS; 00086 }
void FLA_F2C() fla_qr_ut_recover_tau_f | ( | F_INT * | T, | |
F_INT * | tau, | |||
F_INT * | IERROR | |||
) |
References FLA_QR_UT_recover_tau().
00144 { 00145 *IERROR = FLA_QR_UT_recover_tau( *( ( FLA_Obj * ) T ), 00146 *( ( FLA_Obj * ) tau ) ); 00147 }
References FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Copy_external(), FLA_Obj_min_dim(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), and FLA_Repart_2x2_to_3x3().
Referenced by FLA_QR_UT_recover_tau().
00090 { 00091 FLA_Obj TTL, TTR, T00, t01, T02, 00092 TBL, TBR, t10t, tau11, t12t, 00093 T20, t21, T22; 00094 00095 FLA_Obj tauT, tau0, 00096 tauB, tau1, 00097 tau2; 00098 00099 00100 FLA_Part_2x2( T, &TTL, &TTR, 00101 &TBL, &TBR, 0, 0, FLA_TL ); 00102 00103 FLA_Part_2x1( tau, &tauT, 00104 &tauB, 0, FLA_TOP ); 00105 00106 while ( FLA_Obj_min_dim( TBR ) > 0 ){ 00107 00108 FLA_Repart_2x2_to_3x3( TTL, /**/ TTR, &T00, /**/ &t01, &T02, 00109 /* ************* */ /* ************************ */ 00110 &t10t, /**/ &tau11, &t12t, 00111 TBL, /**/ TBR, &T20, /**/ &t21, &T22, 00112 1, 1, FLA_BR ); 00113 00114 FLA_Repart_2x1_to_3x1( tauT, &tau0, 00115 /* ** */ /* ** */ 00116 &tau1, 00117 tauB, &tau2, 1, FLA_BOTTOM ); 00118 00119 /*------------------------------------------------------------*/ 00120 00121 // tau1 = tau11; 00122 FLA_Copy_external( tau11, tau1 ); 00123 00124 /*------------------------------------------------------------*/ 00125 00126 FLA_Cont_with_3x3_to_2x2( &TTL, /**/ &TTR, T00, t01, /**/ T02, 00127 t10t, tau11, /**/ t12t, 00128 /* ************** */ /* ********************** */ 00129 &TBL, /**/ &TBR, T20, t21, /**/ T22, 00130 FLA_TL ); 00131 00132 FLA_Cont_with_3x1_to_2x1( &tauT, tau0, 00133 tau1, 00134 /* ** */ /* ** */ 00135 &tauB, tau2, FLA_TOP ); 00136 00137 } 00138 00139 return FLA_SUCCESS; 00140 }