libflame  revision_anchor
Functions
FLA_Inv_scal_external.c File Reference

(r)

Functions

FLA_Error FLA_Inv_scal_external (FLA_Obj alpha, FLA_Obj A)
 

Function Documentation

◆ FLA_Inv_scal_external()

FLA_Error FLA_Inv_scal_external ( FLA_Obj  alpha,
FLA_Obj  A 
)

References bl1_cinvscalm(), bl1_csinvscalm(), bl1_dinvscalm(), bl1_sinvscalm(), bl1_zdinvscalm(), bl1_zinvscalm(), FLA_Check_error_level(), FLA_Inv_scal_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_equals(), FLA_Obj_has_zero_dim(), FLA_Obj_is_constant(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_ONE, and FLA_Param_map_flame_to_blis_conj().

Referenced by FLA_Apply_H2_UT_r_unb_var1(), FLA_Chol_l_unb_var2(), FLA_Chol_l_unb_var3(), FLA_Chol_u_unb_var2(), FLA_Chol_u_unb_var3(), FLA_Eig_gest_il_unb_var1(), FLA_Eig_gest_il_unb_var2(), FLA_Eig_gest_il_unb_var3(), FLA_Eig_gest_il_unb_var4(), FLA_Eig_gest_il_unb_var5(), FLA_Eig_gest_iu_unb_var1(), FLA_Eig_gest_iu_unb_var2(), FLA_Eig_gest_iu_unb_var3(), FLA_Eig_gest_iu_unb_var4(), FLA_Eig_gest_iu_unb_var5(), FLA_Inv_scal(), FLA_LU_nopiv_unb_var3(), FLA_LU_nopiv_unb_var4(), FLA_LU_nopiv_unb_var5(), FLA_LU_piv_unb_var3(), FLA_LU_piv_unb_var3b(), FLA_LU_piv_unb_var4(), FLA_LU_piv_unb_var5(), FLA_Trinv_ln_unb_var1(), FLA_Trinv_ln_unb_var2(), FLA_Trinv_ln_unb_var3(), FLA_Trinv_un_unb_var1(), FLA_Trinv_un_unb_var2(), FLA_Trinv_un_unb_var3(), FLA_Trsm_lln_unb_var1(), FLA_Trsm_lln_unb_var2(), FLA_Trsm_llt_unb_var1(), FLA_Trsm_llt_unb_var2(), FLA_Trsm_lun_unb_var1(), FLA_Trsm_lun_unb_var2(), FLA_Trsm_lut_unb_var1(), FLA_Trsm_lut_unb_var2(), FLA_Trsm_rln_unb_var1(), FLA_Trsm_rln_unb_var2(), FLA_Trsm_rlt_unb_var1(), FLA_Trsm_rlt_unb_var2(), FLA_Trsm_run_unb_var1(), FLA_Trsm_run_unb_var2(), FLA_Trsm_rut_unb_var1(), and FLA_Trsm_rut_unb_var2().

14 {
15  FLA_Datatype datatype, dt_alpha;
16  int m_A, n_A;
17  int rs_A, cs_A;
18  conj1_t blis_conj;
19 
20  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
21  FLA_Inv_scal_check( alpha, A );
22 
23  if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
24 
25  if ( FLA_Obj_equals( alpha, FLA_ONE ) ) return FLA_SUCCESS;
26 
27  datatype = FLA_Obj_datatype( A );
28 
29  m_A = FLA_Obj_length( A );
30  n_A = FLA_Obj_width( A );
31  rs_A = FLA_Obj_row_stride( A );
32  cs_A = FLA_Obj_col_stride( A );
33 
34  if ( FLA_Obj_is_constant( alpha ) )
35  dt_alpha = datatype;
36  else
37  dt_alpha = FLA_Obj_datatype( alpha );
38 
39  FLA_Param_map_flame_to_blis_conj( FLA_NO_CONJUGATE, &blis_conj );
40 
41  switch ( datatype ){
42 
43  case FLA_FLOAT:
44  {
45  float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
46  float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
47 
48  bl1_sinvscalm( blis_conj,
49  m_A,
50  n_A,
51  buff_alpha,
52  buff_A, rs_A, cs_A );
53 
54  break;
55  }
56 
57  case FLA_DOUBLE:
58  {
59  double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
60  double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
61 
62  bl1_dinvscalm( blis_conj,
63  m_A,
64  n_A,
65  buff_alpha,
66  buff_A, rs_A, cs_A );
67 
68  break;
69  }
70 
71  case FLA_COMPLEX:
72  {
73  if ( dt_alpha == FLA_COMPLEX )
74  {
75  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
76  scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
77 
78  bl1_cinvscalm( blis_conj,
79  m_A,
80  n_A,
81  buff_alpha,
82  buff_A, rs_A, cs_A );
83  }
84  else if ( dt_alpha == FLA_FLOAT )
85  {
86  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
87  float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
88 
89  bl1_csinvscalm( blis_conj,
90  m_A,
91  n_A,
92  buff_alpha,
93  buff_A, rs_A, cs_A );
94  }
95 
96  break;
97  }
98 
99  case FLA_DOUBLE_COMPLEX:
100  {
101  if ( dt_alpha == FLA_DOUBLE_COMPLEX )
102  {
103  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
104  dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
105 
106  bl1_zinvscalm( blis_conj,
107  m_A,
108  n_A,
109  buff_alpha,
110  buff_A, rs_A, cs_A );
111  }
112  else if ( dt_alpha == FLA_DOUBLE )
113  {
114  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
115  double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
116 
117  bl1_zdinvscalm( blis_conj,
118  m_A,
119  n_A,
120  buff_alpha,
121  buff_A, rs_A, cs_A );
122  }
123 
124  break;
125  }
126 
127  }
128 
129  return FLA_SUCCESS;
130 }
FLA_Error FLA_Inv_scal_check(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Inv_scal_check.c:13
void bl1_zdinvscalm(conj1_t conj, int m, int n, double *alpha, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_invscalm.c:221
conj1_t
Definition: blis_type_defs.h:79
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Bool FLA_Obj_is_constant(FLA_Obj A)
Definition: FLA_Query.c:290
void bl1_zinvscalm(conj1_t conj, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_invscalm.c:273
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_csinvscalm(conj1_t conj, int m, int n, float *alpha, scomplex *a, int a_rs, int a_cs)
Definition: bl1_invscalm.c:117
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
FLA_Bool FLA_Obj_has_zero_dim(FLA_Obj A)
Definition: FLA_Query.c:400
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
FLA_Bool FLA_Obj_equals(FLA_Obj A, FLA_Obj B)
Definition: FLA_Query.c:507
Definition: blis_type_defs.h:132
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
void FLA_Param_map_flame_to_blis_conj(FLA_Conj conj, conj1_t *blis_conj)
Definition: FLA_Param.c:269
int FLA_Datatype
Definition: FLA_type_defs.h:49
void bl1_cinvscalm(conj1_t conj, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs)
Definition: bl1_invscalm.c:169
void bl1_sinvscalm(conj1_t conj, int m, int n, float *alpha, float *a, int a_rs, int a_cs)
Definition: bl1_invscalm.c:13
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
void bl1_dinvscalm(conj1_t conj, int m, int n, double *alpha, double *a, int a_rs, int a_cs)
Definition: bl1_invscalm.c:65
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137