libflame revision_anchor
FLA_Apply_H2_UT_piv_row.c File Reference

(r)

Functions

FLA_Error FLA_Apply_H2_UT_piv_row (FLA_Obj tau, FLA_Obj a1t, FLA_Obj u1t, FLA_Obj W, FLA_Obj u2, FLA_Obj A2, FLA_Obj U2, FLA_Obj w1t, FLA_Obj vt)
 

Function Documentation

◆ FLA_Apply_H2_UT_piv_row()

FLA_Error FLA_Apply_H2_UT_piv_row ( FLA_Obj tau,
FLA_Obj a1t,
FLA_Obj u1t,
FLA_Obj W,
FLA_Obj u2,
FLA_Obj A2,
FLA_Obj U2,
FLA_Obj w1t,
FLA_Obj vt )
50{
51 // a1t -= u1t W = 1 a1t -1 W^T u1t;
52 FLA_Gemvc_external( FLA_TRANSPOSE, FLA_NO_CONJUGATE,
53 FLA_MINUS_ONE, W, u1t, FLA_ONE, a1t );
54
55 // w1t := a1t;
56 FLA_Copy_external( a1t, w1t );
57
58 // w1t += u2' A2 = 1 w1t + 1 A2^T conj(u2);
59 FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, A2, u2, FLA_ONE, w1t );
60
61 if ( FLA_Obj_min_dim( U2 ) > 0 )
62 {
63 FLA_Obj vtR;
64
65 // Partition the workspace (a row vector matching the width of a1t)
66 FLA_Part_1x2( vt, &vt, &vtR, FLA_Obj_width( U2 ), FLA_LEFT );
67
68 // vt := u2'U2 = 0 vt + 1 U2^T conj(u2);
69 FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
70 FLA_ONE, U2, u2, FLA_ZERO, vt );
71
72 // w1t -= - vt W = 1 w1t -1 W^T vt;
73 FLA_Gemvc_external( FLA_TRANSPOSE, FLA_NO_CONJUGATE,
74 FLA_MINUS_ONE, W, vt, FLA_ONE, w1t );
75 }
76
77 // w1t = w1t / tau;
78 FLA_Inv_scalc_external( FLA_NO_CONJUGATE, tau, w1t );
79
80 // a1t = a1t - w1t;
82
83 return FLA_SUCCESS;
84}
FLA_Error FLA_Inv_scalc_external(FLA_Conj conjalpha, FLA_Obj alpha, FLA_Obj A)
Definition FLA_Inv_scalc_external.c:13
FLA_Error FLA_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition FLA_Axpy_external.c:13
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition FLA_Copy_external.c:13
FLA_Error FLA_Gemvc_external(FLA_Trans transa, FLA_Conj conjx, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition FLA_Gemvc_external.c:13
FLA_Obj FLA_MINUS_ONE
Definition FLA_Init.c:22
FLA_Obj FLA_ZERO
Definition FLA_Init.c:20
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:110
dim_t FLA_Obj_min_dim(FLA_Obj obj)
Definition FLA_Query.c:153
Definition FLA_type_defs.h:159

References FLA_Axpy_external(), FLA_Copy_external(), FLA_Gemvc_external(), FLA_Inv_scalc_external(), FLA_MINUS_ONE, FLA_Obj_min_dim(), FLA_Obj_width(), FLA_ONE, FLA_Part_1x2(), and FLA_ZERO.

Referenced by FLA_QR_UT_piv_unb_var2().