libflame  revision_anchor
Functions
FLA_LQ_UT_form_Q.c File Reference

(r)

Functions

FLA_Error FLA_LQ_UT_form_Q (FLA_Obj A, FLA_Obj T, FLA_Obj Q)

Function Documentation

References FLA_Conjugate(), FLA_Obj_flip_base(), FLA_Obj_flip_view(), FLA_Obj_is(), FLA_Obj_is_complex(), and FLA_QR_UT_form_Q().

Referenced by FLA_Bidiag_UT_form_V_ext().

{
  FLA_Error r_val = FLA_SUCCESS;

  // Flip a base once.
  FLA_Obj_flip_base( &A );
  if ( FLA_Obj_is( A, Q ) == FALSE )
    FLA_Obj_flip_base( &Q );

  // Dimensions of the both matrices should be flipped.
  FLA_Obj_flip_view( &A );
  FLA_Obj_flip_view( &Q );

  // Run the QR utility function.
  r_val = FLA_QR_UT_form_Q( A, T, Q );

  // Apply conjugation on Q as we use QR_UT_form_Q.
  if ( FLA_Obj_is_complex( Q ) )
    FLA_Conjugate( Q );
  
  // Recover the base object.
  if ( FLA_Obj_is( A, Q ) == FALSE )
    FLA_Obj_flip_base( &Q );
  FLA_Obj_flip_base( &A );

  return r_val;
}