FLA_Apply_Q_UT_UD_lhc_blk_var3.c File Reference

(r)


Functions

FLA_Error FLA_Apply_Q_UT_UD_lhc_blk_var3 (FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apqutud_t *cntl)

Function Documentation

FLA_Error FLA_Apply_Q_UT_UD_lhc_blk_var3 ( FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apqutud_t cntl 
)

References FLA_Apply_Q_UT_UD_internal(), FLA_Cont_with_1x3_to_1x2(), FLA_Determine_blocksize(), FLA_Obj_width(), FLA_Part_1x2(), and FLA_Repart_1x2_to_1x3().

Referenced by FLA_Apply_Q_UT_UD_lhc().

00037 {
00038   FLA_Obj WL,    WR,       W0,  W1,  W2;
00039 
00040   FLA_Obj CL,    CR,       C0,  C1,  C2;
00041 
00042   FLA_Obj EL,    ER,       E0,  E1,  E2;
00043 
00044   dim_t b;
00045 
00046   FLA_Part_1x2( W,    &WL,  &WR,      0, FLA_LEFT );
00047 
00048   FLA_Part_1x2( C,    &CL,  &CR,      0, FLA_LEFT );
00049 
00050   FLA_Part_1x2( E,    &EL,  &ER,      0, FLA_LEFT );
00051 
00052   while ( FLA_Obj_width( CL ) < FLA_Obj_width( C ) ){
00053 
00054     b = FLA_Determine_blocksize( CR, FLA_RIGHT, FLA_Cntl_blocksize( cntl ) );
00055 
00056     FLA_Repart_1x2_to_1x3( WL,  /**/ WR,        &W0, /**/ &W1, &W2,
00057                            b, FLA_RIGHT );
00058 
00059     FLA_Repart_1x2_to_1x3( CL,  /**/ CR,        &C0, /**/ &C1, &C2,
00060                            b, FLA_RIGHT );
00061 
00062     FLA_Repart_1x2_to_1x3( EL,  /**/ ER,        &E0, /**/ &E1, &E2,
00063                            b, FLA_RIGHT );
00064 
00065     /*------------------------------------------------------------*/
00066 
00067     /*
00068         / C1 \ = Q^H / C1 \
00069         \ E1 /       \ E1 /
00070                  where Q is formed from D and T.
00071     */
00072 
00073     FLA_Apply_Q_UT_UD_internal( FLA_LEFT, FLA_CONJ_TRANSPOSE, FLA_COLUMNWISE,
00074                                 D, T, W1, C1,
00075                                           E1, FLA_Cntl_sub_apqutud( cntl ) );
00076 
00077     /*------------------------------------------------------------*/
00078 
00079     FLA_Cont_with_1x3_to_1x2( &WL,  /**/ &WR,        W0, W1, /**/ W2,
00080                               FLA_LEFT );
00081 
00082     FLA_Cont_with_1x3_to_1x2( &CL,  /**/ &CR,        C0, C1, /**/ C2,
00083                               FLA_LEFT );
00084 
00085     FLA_Cont_with_1x3_to_1x2( &EL,  /**/ &ER,        E0, E1, /**/ E2,
00086                               FLA_LEFT );
00087   }
00088 
00089   return FLA_SUCCESS;
00090 }


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