libflame  revision_anchor
Functions
FLA_Apply_H2_UT_r_unb_var1.c File Reference

(r)

Functions

FLA_Error FLA_Apply_H2_UT_r_unb_var1 (FLA_Obj tau, FLA_Obj u2, FLA_Obj a1, FLA_Obj A2)
 

Function Documentation

◆ FLA_Apply_H2_UT_r_unb_var1()

FLA_Error FLA_Apply_H2_UT_r_unb_var1 ( FLA_Obj  tau,
FLA_Obj  u2,
FLA_Obj  a1,
FLA_Obj  A2 
)

References FLA_Axpy_external(), FLA_Copy_external(), FLA_Gemv_external(), FLA_Gerc_external(), FLA_Inv_scal_external(), FLA_MINUS_ONE, FLA_Obj_create_conf_to(), FLA_Obj_equals(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_ONE, FLA_ZERO, and w1.

58 {
59  FLA_Obj w1;
60 
61  if ( FLA_Obj_has_zero_dim( a1 ) || FLA_Obj_equals( tau, FLA_ZERO ) ) return FLA_SUCCESS;
62 
63  // w1 = a1;
64  FLA_Obj_create_conf_to( FLA_NO_TRANSPOSE, a1, &w1 );
65  FLA_Copy_external( a1, w1 );
66 
67  // w1 = w1 + A2 * u2;
68  FLA_Gemv_external( FLA_NO_TRANSPOSE, FLA_ONE, A2, u2, FLA_ONE, w1 );
69 
70  // w1 = w1 / tau;
71  FLA_Inv_scal_external( tau, w1 );
72 
73  // a1 = a1 - w1;
75 
76  // A2 = A2 - w1 * u2';
77  FLA_Gerc_external( FLA_NO_CONJUGATE, FLA_CONJUGATE, FLA_MINUS_ONE, w1, u2, A2 );
78 
79  FLA_Obj_free( &w1 );
80 
81  return FLA_SUCCESS;
82 }
FLA_Error FLA_Inv_scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Inv_scal_external.c:13
FLA_Error FLA_Obj_free(FLA_Obj *obj)
Definition: FLA_Obj.c:588
FLA_Error FLA_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition: FLA_Axpy_external.c:13
FLA_Error FLA_Gemv_external(FLA_Trans transa, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition: FLA_Gemv_external.c:13
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
double *restrict w1
Definition: bl1_dotsv3.c:172
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
FLA_Error FLA_Gerc_external(FLA_Conj conjx, FLA_Conj conjy, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition: FLA_Gerc_external.c:13
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition: FLA_Copy_external.c:13
Definition: FLA_type_defs.h:158
FLA_Bool FLA_Obj_has_zero_dim(FLA_Obj A)
Definition: FLA_Query.c:400
FLA_Bool FLA_Obj_equals(FLA_Obj A, FLA_Obj B)
Definition: FLA_Query.c:507
FLA_Error FLA_Obj_create_conf_to(FLA_Trans trans, FLA_Obj old, FLA_Obj *obj)
Definition: FLA_Obj.c:286
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20