|
libflame
revision_anchor
|
Functions | |
| FLA_Error | FLA_Bidiag_UT_form_V_check (FLA_Obj A, FLA_Obj T, FLA_Obj V) |
| FLA_Error FLA_Bidiag_UT_form_V_check | ( | FLA_Obj | A, |
| FLA_Obj | T, | ||
| FLA_Obj | V | ||
| ) |
References FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), FLA_Check_object_length_equals(), FLA_Check_object_width_equals(), FLA_Obj_length(), and FLA_Obj_width().
Referenced by FLA_Bidiag_UT_form_V().
{
FLA_Error e_val;
dim_t m_A, n_A;
e_val = FLA_Check_floating_object( A );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( A );
FLA_Check_error_code( e_val );
e_val = FLA_Check_identical_object_datatype( A, T );
FLA_Check_error_code( e_val );
e_val = FLA_Check_identical_object_datatype( A, V );
FLA_Check_error_code( e_val );
// U is not necessary to be square.
// e_val = FLA_Check_square( V );
// FLA_Check_error_code( e_val );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
// Form V (not V^H) has a problem that dimensions are mismatched
// when it overwrites on A that contains house holder vectors on
// the uppper triangular of the diagonal or subdiagonal.
if ( m_A >= n_A )
{
e_val = FLA_Check_object_width_equals( T, n_A );
FLA_Check_error_code( e_val );
e_val = FLA_Check_object_width_equals( V, n_A );
FLA_Check_error_code( e_val );
}
else
{
e_val = FLA_Check_object_width_equals( T, m_A );
FLA_Check_error_code( e_val );
e_val = FLA_Check_object_length_equals( V, n_A );
FLA_Check_error_code( e_val );
}
return FLA_SUCCESS;
}
1.7.6.1