|
libflame
revision_anchor
|
Functions | |
| FLA_Error | FLA_Apply_HUD_UT_lh_unb_var1 (FLA_Obj tau, FLA_Obj w12t, FLA_Obj r12t, FLA_Obj u1, FLA_Obj C2, FLA_Obj v1, FLA_Obj D2) |
| FLA_Error FLA_Apply_HUD_UT_lh_unb_var1 | ( | FLA_Obj | tau, |
| FLA_Obj | w12t, | ||
| FLA_Obj | r12t, | ||
| FLA_Obj | u1, | ||
| FLA_Obj | C2, | ||
| FLA_Obj | v1, | ||
| FLA_Obj | D2 | ||
| ) |
References FLA_Axpy_external(), FLA_Copy_external(), FLA_Gemvc_external(), FLA_Ger_external(), FLA_Inv_scalc_external(), FLA_MINUS_ONE, FLA_Obj_has_zero_dim(), and FLA_ONE.
{
if ( FLA_Obj_has_zero_dim( r12t ) ) return FLA_SUCCESS;
// w12t = r12t;
FLA_Copy_external( r12t, w12t );
// w12t = w12t + u1' * C2;
// = w12t + C2^T * conj(u1);
FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, C2, u1, FLA_ONE, w12t );
// w12t = w12t + v1' * D2;
// = w12t + D2^T * conj(v1);
FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, D2, v1, FLA_ONE, w12t );
// w12t = w12t / tau;
FLA_Inv_scalc_external( FLA_NO_CONJUGATE, tau, w12t );
// r12t = - w12t + r12t;
FLA_Axpy_external( FLA_MINUS_ONE, w12t, r12t );
// C2 = - u1 * w12t + C2;
FLA_Ger_external( FLA_MINUS_ONE, u1, w12t, C2 );
// D2 = v1 * w12t + D2;
FLA_Ger_external( FLA_ONE, v1, w12t, D2 );
return FLA_SUCCESS;
}
1.7.6.1