FLA_QR_UT_recover_tau.c File Reference

(r)


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)

Function Documentation

FLA_Error FLA_QR_UT_recover_tau ( FLA_Obj  T,
FLA_Obj  t 
)

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 }

FLA_Error FLA_QR_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_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 }


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