Functions | |
FLA_Error | FLA_QR_UT_UD_blk_var2 (FLA_Obj U, FLA_Obj D, FLA_Obj T, fla_qrutud_t *cntl) |
FLA_Error FLA_QR_UT_UD_blk_var2 | ( | FLA_Obj | U, | |
FLA_Obj | D, | |||
FLA_Obj | T, | |||
fla_qrutud_t * | cntl | |||
) |
References FLA_Cont_with_3x1_to_2x1(), FLA_Determine_blocksize(), FLA_Obj_length(), FLA_Part_2x1(), FLA_QR_UT_UD_internal(), and FLA_Repart_2x1_to_3x1().
Referenced by FLA_QR_UT_UD_internal().
00037 { 00038 FLA_Obj DT, D0, 00039 DB, D1, 00040 D2; 00041 00042 FLA_Obj TT, T0, 00043 TB, T1, 00044 T2; 00045 00046 dim_t b; 00047 00048 FLA_Part_2x1( D, &DT, 00049 &DB, 0, FLA_TOP ); 00050 00051 FLA_Part_2x1( T, &TT, 00052 &TB, 0, FLA_TOP ); 00053 00054 while ( FLA_Obj_length( DT ) < FLA_Obj_length( D ) ){ 00055 00056 b = FLA_Determine_blocksize( DB, FLA_BOTTOM, FLA_Cntl_blocksize( cntl ) ); 00057 00058 FLA_Repart_2x1_to_3x1( DT, &D0, 00059 /* ** */ /* ****** */ 00060 &D1, 00061 DB, &D2, b, FLA_BOTTOM ); 00062 00063 FLA_Repart_2x1_to_3x1( TT, &T0, 00064 /* ** */ /* ****** */ 00065 &T1, 00066 TB, &T2, b, FLA_BOTTOM ); 00067 00068 /*------------------------------------------------------------*/ 00069 00070 /* 00071 [ U, ... 00072 D1, T ] = FLA_QR_UT_UD_internal( U 00073 D1, T1 ); 00074 */ 00075 00076 FLA_QR_UT_UD_internal( U, 00077 D1, T1, 00078 FLA_Cntl_sub_qrutud( cntl ) ); 00079 00080 /*------------------------------------------------------------*/ 00081 00082 FLA_Cont_with_3x1_to_2x1( &DT, D0, 00083 D1, 00084 /* ** */ /* ****** */ 00085 &DB, D2, FLA_TOP ); 00086 00087 FLA_Cont_with_3x1_to_2x1( &TT, T0, 00088 T1, 00089 /* ** */ /* ****** */ 00090 &TB, T2, FLA_TOP ); 00091 } 00092 00093 return FLA_SUCCESS; 00094 }