FLA_LQ_UT_recover_tau.c File Reference

(r)


Functions

FLA_Error FLA_LQ_UT_recover_tau_submatrix (FLA_Obj T, FLA_Obj tau)
FLA_Error FLA_LQ_UT_recover_tau (FLA_Obj T, FLA_Obj t)
void FLA_F2C() fla_lq_ut_recover_tau_f (F_INT *T, F_INT *tau, F_INT *IERROR)

Function Documentation

FLA_Error FLA_LQ_UT_recover_tau ( FLA_Obj  T,
FLA_Obj  t 
)

References FLA_Check_error_level(), FLA_Cont_with_3x1_to_2x1(), FLA_LQ_UT_recover_tau_check(), FLA_LQ_UT_recover_tau_submatrix(), FLA_Obj_length(), FLA_Obj_width(), FLA_Part_2x1(), and FLA_Repart_2x1_to_3x1().

Referenced by fla_lq_ut_recover_tau_f().

00038 {
00039   FLA_Obj TT,              T0,
00040           TB,              T1,
00041                            T2;
00042 
00043   FLA_Obj tT,              t0,
00044           tB,              t1,
00045                            t2;
00046 
00047   dim_t b;
00048   dim_t b_alg;
00049 
00050   if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00051     FLA_LQ_UT_recover_tau_check( T, t );
00052 
00053   b_alg = FLA_Obj_width( T );
00054 
00055   FLA_Part_2x1( T,    &TT, 
00056                       &TB,            0, FLA_TOP );
00057 
00058   FLA_Part_2x1( t,    &tT, 
00059                       &tB,            0, FLA_TOP );
00060 
00061   while ( FLA_Obj_length( TT ) < FLA_Obj_length( T ) ){
00062 
00063     b = min( FLA_Obj_length( TB ), b_alg );
00064 
00065     FLA_Repart_2x1_to_3x1( TT,                &T0, 
00066                         /* ** */            /* ** */
00067                                               &T1, 
00068                            TB,                &T2,        b, FLA_BOTTOM );
00069 
00070     FLA_Repart_2x1_to_3x1( tT,                &t0, 
00071                         /* ** */            /* ** */
00072                                               &t1, 
00073                            tB,                &t2,        b, FLA_BOTTOM );
00074 
00075     /*------------------------------------------------------------*/
00076 
00077     FLA_LQ_UT_recover_tau_submatrix( T1, t1 );
00078 
00079     /*------------------------------------------------------------*/
00080 
00081     FLA_Cont_with_3x1_to_2x1( &TT,                T0, 
00082                                                   T1, 
00083                             /* ** */           /* ** */
00084                               &TB,                T2,     FLA_TOP );
00085 
00086     FLA_Cont_with_3x1_to_2x1( &tT,                t0, 
00087                                                   t1, 
00088                             /* ** */           /* ** */
00089                               &tB,                t2,     FLA_TOP );
00090   }
00091 
00092   return FLA_SUCCESS;
00093 }

void FLA_F2C() fla_lq_ut_recover_tau_f ( F_INT *  T,
F_INT *  tau,
F_INT *  IERROR 
)

References FLA_LQ_UT_recover_tau().

00151 {
00152   *IERROR = FLA_LQ_UT_recover_tau( *( ( FLA_Obj * ) T   ),
00153                                    *( ( FLA_Obj * ) tau ) );
00154 }

FLA_Error FLA_LQ_UT_recover_tau_submatrix ( FLA_Obj  T,
FLA_Obj  tau 
)

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_LQ_UT_recover_tau().

00097 {
00098   FLA_Obj TTL,   TTR,      T00,  t01,   T02, 
00099           TBL,   TBR,      t10t, tau11, t12t,
00100                            T20,  t21,   T22;
00101 
00102   FLA_Obj tauT,            tau0,
00103           tauB,            tau1,
00104                            tau2;
00105 
00106 
00107   FLA_Part_2x2( T,    &TTL, &TTR,
00108                       &TBL, &TBR,     0, 0, FLA_TL );
00109 
00110   FLA_Part_2x1( tau,  &tauT, 
00111                       &tauB,          0, FLA_TOP );
00112 
00113   while ( FLA_Obj_min_dim( TBR ) > 0 ){
00114 
00115     FLA_Repart_2x2_to_3x3( TTL, /**/ TTR,       &T00,  /**/ &t01,   &T02,
00116                         /* ************* */   /* ************************ */
00117                                                 &t10t, /**/ &tau11, &t12t,
00118                            TBL, /**/ TBR,       &T20,  /**/ &t21,   &T22,
00119                            1, 1, FLA_BR );
00120 
00121     FLA_Repart_2x1_to_3x1( tauT,                &tau0, 
00122                         /* ** */              /* ** */
00123                                                 &tau1, 
00124                            tauB,                &tau2,        1, FLA_BOTTOM );
00125 
00126     /*------------------------------------------------------------*/
00127 
00128     // tau1 = tau11;
00129     FLA_Copy_external( tau11, tau1 );
00130 
00131     /*------------------------------------------------------------*/
00132 
00133     FLA_Cont_with_3x3_to_2x2( &TTL, /**/ &TTR,       T00,  t01,   /**/ T02,
00134                                                      t10t, tau11, /**/ t12t,
00135                             /* ************** */  /* ********************** */
00136                               &TBL, /**/ &TBR,       T20,  t21,   /**/ T22,
00137                               FLA_TL );
00138 
00139     FLA_Cont_with_3x1_to_2x1( &tauT,                tau0, 
00140                                                     tau1, 
00141                             /* ** */              /* ** */
00142                               &tauB,                tau2,     FLA_TOP );
00143 
00144   }
00145 
00146   return FLA_SUCCESS;
00147 }


Generated on Mon Jul 6 05:45:56 2009 for libflame by  doxygen 1.5.9