Functions | |
FLA_Error | FLA_Apply_Q_UT_UD_lhc_blk_var2 (FLA_Obj D, FLA_Obj T, FLA_Obj W1, FLA_Obj C, FLA_Obj E, fla_apqutud_t *cntl) |
FLA_Error FLA_Apply_Q_UT_UD_lhc_blk_var2 | ( | FLA_Obj | D, | |
FLA_Obj | T, | |||
FLA_Obj | W1, | |||
FLA_Obj | C, | |||
FLA_Obj | E, | |||
fla_apqutud_t * | cntl | |||
) |
References FLA_Apply_Q_UT_UD_internal(), FLA_Cont_with_3x1_to_2x1(), FLA_Determine_blocksize(), FLA_Obj_length(), FLA_Part_2x1(), and FLA_Repart_2x1_to_3x1().
Referenced by FLA_Apply_Q_UT_UD_lhc().
00037 { 00038 FLA_Obj DT, D0, 00039 DB, D1, 00040 D2; 00041 00042 FLA_Obj TT, T0, 00043 TB, T1, 00044 T2; 00045 00046 FLA_Obj ET, E0, 00047 EB, E1, 00048 E2; 00049 00050 dim_t b; 00051 00052 FLA_Part_2x1( D, &DT, 00053 &DB, 0, FLA_TOP ); 00054 00055 FLA_Part_2x1( T, &TT, 00056 &TB, 0, FLA_TOP ); 00057 00058 FLA_Part_2x1( E, &ET, 00059 &EB, 0, FLA_TOP ); 00060 00061 while ( FLA_Obj_length( DT ) < FLA_Obj_length( D ) ){ 00062 00063 b = FLA_Determine_blocksize( DB, FLA_BOTTOM, FLA_Cntl_blocksize( cntl ) ); 00064 00065 FLA_Repart_2x1_to_3x1( DT, &D0, 00066 /* ** */ /* ** */ 00067 &D1, 00068 DB, &D2, b, FLA_BOTTOM ); 00069 00070 FLA_Repart_2x1_to_3x1( TT, &T0, 00071 /* ** */ /* ** */ 00072 &T1, 00073 TB, &T2, b, FLA_BOTTOM ); 00074 00075 FLA_Repart_2x1_to_3x1( ET, &E0, 00076 /* ** */ /* ** */ 00077 &E1, 00078 EB, &E2, b, FLA_BOTTOM ); 00079 00080 /*------------------------------------------------------------*/ 00081 00082 /* 00083 / C \ = Q^H / C \ 00084 \ E1 / \ E1 / 00085 where Q is formed from D1 and T1. 00086 */ 00087 00088 FLA_Apply_Q_UT_UD_internal( FLA_LEFT, FLA_CONJ_TRANSPOSE, FLA_COLUMNWISE, 00089 D1, T1, W1, C, 00090 E1, FLA_Cntl_sub_apqutud( cntl ) ); 00091 00092 /*------------------------------------------------------------*/ 00093 00094 FLA_Cont_with_3x1_to_2x1( &DT, D0, 00095 D1, 00096 /* ** */ /* ** */ 00097 &DB, D2, FLA_TOP ); 00098 00099 FLA_Cont_with_3x1_to_2x1( &TT, T0, 00100 T1, 00101 /* ** */ /* ** */ 00102 &TB, T2, FLA_TOP ); 00103 00104 FLA_Cont_with_3x1_to_2x1( &ET, E0, 00105 E1, 00106 /* ** */ /* ** */ 00107 &EB, E2, FLA_TOP ); 00108 } 00109 00110 return FLA_SUCCESS; 00111 }