libflame  revision_anchor
Functions
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;
81  FLA_Axpy_external( FLA_MINUS_ONE, w1t, a1t );
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().