libflame  revision_anchor
Functions
FLA_Tridiag_UT_form_Q.c File Reference

(r)

Functions

FLA_Error FLA_Tridiag_UT_form_Q (FLA_Uplo uplo, FLA_Obj A, FLA_Obj T)

Function Documentation

References FLA_Check_error_level(), FLA_Part_1x2(), FLA_Part_2x2(), FLA_QR_UT_form_Q(), FLA_Tridiag_UT_form_Q_check(), and FLA_Tridiag_UT_shift_U().

Referenced by FLA_Hevd_lv_unb_var1(), and FLA_Hevd_lv_unb_var2().

{
    FLA_Error r_val = FLA_SUCCESS;
    FLA_Obj   ATL, ATR,
              ABL, ABR;
    FLA_Obj   TL,  TR;

    if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
        FLA_Tridiag_UT_form_Q_check( uplo, A, T );

    // Shift the Householder vectors one row/column towards the diagonal.
    FLA_Tridiag_UT_shift_U( uplo, A );

    FLA_Part_2x2( A,    &ATL, &ATR,
                        &ABL, &ABR,    1, 1, FLA_TL );
    FLA_Part_1x2( T,    &TL, &TR,     1, FLA_RIGHT );

    if ( uplo == FLA_LOWER_TRIANGULAR )
    {
        FLA_QR_UT_form_Q( ABR, TL, ABR );
    }
    else // if ( uplo == FLA_UPPER_TRIANGULAR )
    {
        //FLA_LQ_UT_form_Q( A, T, A );
    }

    return r_val;
}