libflame  revision_anchor
Functions
FLA_Scal_external.c File Reference

(r)

Functions

FLA_Error FLA_Scal_external (FLA_Obj alpha, FLA_Obj A)
 

Function Documentation

◆ FLA_Scal_external()

FLA_Error FLA_Scal_external ( FLA_Obj  alpha,
FLA_Obj  A 
)

References bl1_cscalm(), bl1_csscalm(), bl1_dscalm(), bl1_sscalm(), bl1_zdscalm(), bl1_zscalm(), FLA_Check_error_level(), 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, FLA_Param_map_flame_to_blis_conj(), FLA_Scal_check(), FLA_Set(), and FLA_ZERO.

Referenced by FLA_Dot2cs_external(), FLA_Dot2s_external(), FLA_Dotcs_external(), FLA_Dots_external(), FLA_Eig_gest_il_unb_var3(), FLA_Eig_gest_il_unb_var4(), FLA_Eig_gest_il_unb_var5(), FLA_Eig_gest_iu_unb_var3(), FLA_Eig_gest_iu_unb_var4(), FLA_Eig_gest_iu_unb_var5(), FLA_Eig_gest_nl_unb_var1(), FLA_Eig_gest_nl_unb_var2(), FLA_Eig_gest_nl_unb_var4(), FLA_Eig_gest_nl_unb_var5(), FLA_Eig_gest_nu_unb_var1(), FLA_Eig_gest_nu_unb_var2(), FLA_Eig_gest_nu_unb_var4(), FLA_Eig_gest_nu_unb_var5(), FLA_Gemm_cc_unb_var1(), FLA_Gemm_cc_unb_var2(), FLA_Gemm_cc_unb_var3(), FLA_Gemm_cc_unb_var4(), FLA_Gemm_cc_unb_var5(), FLA_Gemm_cc_unb_var6(), FLA_Gemm_ch_unb_var1(), FLA_Gemm_ch_unb_var2(), FLA_Gemm_ch_unb_var3(), FLA_Gemm_ch_unb_var4(), FLA_Gemm_ch_unb_var5(), FLA_Gemm_ch_unb_var6(), FLA_Gemm_cn_unb_var1(), FLA_Gemm_cn_unb_var2(), FLA_Gemm_cn_unb_var3(), FLA_Gemm_cn_unb_var4(), FLA_Gemm_cn_unb_var5(), FLA_Gemm_cn_unb_var6(), FLA_Gemm_ct_unb_var1(), FLA_Gemm_ct_unb_var2(), FLA_Gemm_ct_unb_var3(), FLA_Gemm_ct_unb_var4(), FLA_Gemm_ct_unb_var5(), FLA_Gemm_ct_unb_var6(), FLA_Gemm_external(), FLA_Gemm_hc_unb_var1(), FLA_Gemm_hc_unb_var2(), FLA_Gemm_hc_unb_var3(), FLA_Gemm_hc_unb_var4(), FLA_Gemm_hc_unb_var5(), FLA_Gemm_hc_unb_var6(), FLA_Gemm_hh_unb_var1(), FLA_Gemm_hh_unb_var2(), FLA_Gemm_hh_unb_var3(), FLA_Gemm_hh_unb_var4(), FLA_Gemm_hh_unb_var5(), FLA_Gemm_hh_unb_var6(), FLA_Gemm_hn_unb_var1(), FLA_Gemm_hn_unb_var2(), FLA_Gemm_hn_unb_var3(), FLA_Gemm_hn_unb_var4(), FLA_Gemm_hn_unb_var5(), FLA_Gemm_hn_unb_var6(), FLA_Gemm_ht_unb_var1(), FLA_Gemm_ht_unb_var2(), FLA_Gemm_ht_unb_var3(), FLA_Gemm_ht_unb_var4(), FLA_Gemm_ht_unb_var5(), FLA_Gemm_ht_unb_var6(), FLA_Gemm_nc_unb_var1(), FLA_Gemm_nc_unb_var2(), FLA_Gemm_nc_unb_var3(), FLA_Gemm_nc_unb_var4(), FLA_Gemm_nc_unb_var5(), FLA_Gemm_nc_unb_var6(), FLA_Gemm_nh_unb_var1(), FLA_Gemm_nh_unb_var2(), FLA_Gemm_nh_unb_var3(), FLA_Gemm_nh_unb_var4(), FLA_Gemm_nh_unb_var5(), FLA_Gemm_nh_unb_var6(), FLA_Gemm_nn_unb_var1(), FLA_Gemm_nn_unb_var2(), FLA_Gemm_nn_unb_var3(), FLA_Gemm_nn_unb_var4(), FLA_Gemm_nn_unb_var5(), FLA_Gemm_nn_unb_var6(), FLA_Gemm_nt_unb_var1(), FLA_Gemm_nt_unb_var2(), FLA_Gemm_nt_unb_var3(), FLA_Gemm_nt_unb_var4(), FLA_Gemm_nt_unb_var5(), FLA_Gemm_nt_unb_var6(), FLA_Gemm_tc_unb_var1(), FLA_Gemm_tc_unb_var2(), FLA_Gemm_tc_unb_var3(), FLA_Gemm_tc_unb_var4(), FLA_Gemm_tc_unb_var5(), FLA_Gemm_tc_unb_var6(), FLA_Gemm_th_unb_var1(), FLA_Gemm_th_unb_var2(), FLA_Gemm_th_unb_var3(), FLA_Gemm_th_unb_var4(), FLA_Gemm_th_unb_var5(), FLA_Gemm_th_unb_var6(), FLA_Gemm_tn_unb_var1(), FLA_Gemm_tn_unb_var2(), FLA_Gemm_tn_unb_var3(), FLA_Gemm_tn_unb_var4(), FLA_Gemm_tn_unb_var5(), FLA_Gemm_tn_unb_var6(), FLA_Gemm_tt_unb_var1(), FLA_Gemm_tt_unb_var2(), FLA_Gemm_tt_unb_var3(), FLA_Gemm_tt_unb_var4(), FLA_Gemm_tt_unb_var5(), FLA_Gemm_tt_unb_var6(), FLA_Gemv_external(), FLA_Gemvc_external(), FLA_Hemm_ll_unb_var1(), FLA_Hemm_ll_unb_var2(), FLA_Hemm_ll_unb_var3(), FLA_Hemm_ll_unb_var4(), FLA_Hemm_ll_unb_var5(), FLA_Hemm_ll_unb_var6(), FLA_Hemm_ll_unb_var7(), FLA_Hemm_ll_unb_var8(), FLA_Hemm_lu_unb_var1(), FLA_Hemm_lu_unb_var2(), FLA_Hemm_lu_unb_var3(), FLA_Hemm_lu_unb_var4(), FLA_Hemm_lu_unb_var5(), FLA_Hemm_lu_unb_var6(), FLA_Hemm_lu_unb_var7(), FLA_Hemm_lu_unb_var8(), FLA_Hemm_rl_unb_var1(), FLA_Hemm_rl_unb_var2(), FLA_Hemm_rl_unb_var3(), FLA_Hemm_rl_unb_var4(), FLA_Hemm_rl_unb_var5(), FLA_Hemm_rl_unb_var6(), FLA_Hemm_rl_unb_var7(), FLA_Hemm_rl_unb_var8(), FLA_Hemm_ru_unb_var1(), FLA_Hemm_ru_unb_var2(), FLA_Hemm_ru_unb_var3(), FLA_Hemm_ru_unb_var4(), FLA_Hemm_ru_unb_var5(), FLA_Hemm_ru_unb_var6(), FLA_Hemm_ru_unb_var7(), FLA_Hemm_ru_unb_var8(), FLA_Her2k_external(), FLA_Herk_external(), FLA_Scal(), FLA_Scal_task(), FLA_Symm_ll_unb_var1(), FLA_Symm_ll_unb_var2(), FLA_Symm_ll_unb_var3(), FLA_Symm_ll_unb_var4(), FLA_Symm_ll_unb_var5(), FLA_Symm_ll_unb_var6(), FLA_Symm_ll_unb_var7(), FLA_Symm_ll_unb_var8(), FLA_Symm_lu_unb_var1(), FLA_Symm_lu_unb_var2(), FLA_Symm_lu_unb_var3(), FLA_Symm_lu_unb_var4(), FLA_Symm_lu_unb_var5(), FLA_Symm_lu_unb_var6(), FLA_Symm_lu_unb_var7(), FLA_Symm_lu_unb_var8(), FLA_Symm_rl_unb_var1(), FLA_Symm_rl_unb_var2(), FLA_Symm_rl_unb_var3(), FLA_Symm_rl_unb_var4(), FLA_Symm_rl_unb_var5(), FLA_Symm_rl_unb_var6(), FLA_Symm_rl_unb_var7(), FLA_Symm_rl_unb_var8(), FLA_Symm_ru_unb_var1(), FLA_Symm_ru_unb_var2(), FLA_Symm_ru_unb_var3(), FLA_Symm_ru_unb_var4(), FLA_Symm_ru_unb_var5(), FLA_Symm_ru_unb_var6(), FLA_Symm_ru_unb_var7(), FLA_Symm_ru_unb_var8(), FLA_Syr2k_external(), FLA_Syrk_external(), FLA_Trinv_ln_unb_var1(), FLA_Trinv_ln_unb_var2(), FLA_Trinv_ln_unb_var3(), FLA_Trinv_ln_unb_var4(), FLA_Trinv_lu_unb_var1(), FLA_Trinv_lu_unb_var2(), FLA_Trinv_lu_unb_var3(), FLA_Trinv_lu_unb_var4(), FLA_Trinv_un_unb_var1(), FLA_Trinv_un_unb_var2(), FLA_Trinv_un_unb_var3(), FLA_Trinv_un_unb_var4(), FLA_Trinv_uu_unb_var1(), FLA_Trinv_uu_unb_var2(), FLA_Trinv_uu_unb_var3(), FLA_Trinv_uu_unb_var4(), FLA_Trmm_llc_unb_var1(), FLA_Trmm_llc_unb_var2(), FLA_Trmm_llc_unb_var3(), FLA_Trmm_llc_unb_var4(), FLA_Trmm_llh_unb_var1(), FLA_Trmm_llh_unb_var2(), FLA_Trmm_llh_unb_var3(), FLA_Trmm_llh_unb_var4(), FLA_Trmm_lln_unb_var1(), FLA_Trmm_lln_unb_var2(), FLA_Trmm_lln_unb_var3(), FLA_Trmm_lln_unb_var4(), FLA_Trmm_llt_unb_var1(), FLA_Trmm_llt_unb_var2(), FLA_Trmm_llt_unb_var3(), FLA_Trmm_llt_unb_var4(), FLA_Trmm_luc_unb_var1(), FLA_Trmm_luc_unb_var2(), FLA_Trmm_luc_unb_var3(), FLA_Trmm_luc_unb_var4(), FLA_Trmm_luh_unb_var1(), FLA_Trmm_luh_unb_var2(), FLA_Trmm_luh_unb_var3(), FLA_Trmm_luh_unb_var4(), FLA_Trmm_lun_unb_var1(), FLA_Trmm_lun_unb_var2(), FLA_Trmm_lun_unb_var3(), FLA_Trmm_lun_unb_var4(), FLA_Trmm_lut_unb_var1(), FLA_Trmm_lut_unb_var2(), FLA_Trmm_lut_unb_var3(), FLA_Trmm_lut_unb_var4(), FLA_Trmm_rlc_unb_var1(), FLA_Trmm_rlc_unb_var2(), FLA_Trmm_rlc_unb_var3(), FLA_Trmm_rlc_unb_var4(), FLA_Trmm_rlh_unb_var1(), FLA_Trmm_rlh_unb_var2(), FLA_Trmm_rlh_unb_var3(), FLA_Trmm_rlh_unb_var4(), FLA_Trmm_rln_unb_var1(), FLA_Trmm_rln_unb_var2(), FLA_Trmm_rln_unb_var3(), FLA_Trmm_rln_unb_var4(), FLA_Trmm_rlt_unb_var1(), FLA_Trmm_rlt_unb_var2(), FLA_Trmm_rlt_unb_var3(), FLA_Trmm_rlt_unb_var4(), FLA_Trmm_ruc_unb_var1(), FLA_Trmm_ruc_unb_var2(), FLA_Trmm_ruc_unb_var3(), FLA_Trmm_ruc_unb_var4(), FLA_Trmm_ruh_unb_var1(), FLA_Trmm_ruh_unb_var2(), FLA_Trmm_ruh_unb_var3(), FLA_Trmm_ruh_unb_var4(), FLA_Trmm_run_unb_var1(), FLA_Trmm_run_unb_var2(), FLA_Trmm_run_unb_var3(), FLA_Trmm_run_unb_var4(), FLA_Trmm_rut_unb_var1(), FLA_Trmm_rut_unb_var2(), FLA_Trmm_rut_unb_var3(), FLA_Trmm_rut_unb_var4(), FLA_Trmvsx_external(), FLA_Trsm_llc_unb_var1(), FLA_Trsm_llc_unb_var2(), FLA_Trsm_llc_unb_var3(), FLA_Trsm_llc_unb_var4(), FLA_Trsm_llh_unb_var1(), FLA_Trsm_llh_unb_var2(), FLA_Trsm_llh_unb_var3(), FLA_Trsm_llh_unb_var4(), FLA_Trsm_lln_unb_var1(), FLA_Trsm_lln_unb_var2(), FLA_Trsm_lln_unb_var3(), FLA_Trsm_lln_unb_var4(), FLA_Trsm_llt_unb_var1(), FLA_Trsm_llt_unb_var2(), FLA_Trsm_llt_unb_var3(), FLA_Trsm_llt_unb_var4(), FLA_Trsm_luc_unb_var1(), FLA_Trsm_luc_unb_var2(), FLA_Trsm_luc_unb_var3(), FLA_Trsm_luc_unb_var4(), FLA_Trsm_luh_unb_var1(), FLA_Trsm_luh_unb_var2(), FLA_Trsm_luh_unb_var3(), FLA_Trsm_luh_unb_var4(), FLA_Trsm_lun_unb_var1(), FLA_Trsm_lun_unb_var2(), FLA_Trsm_lun_unb_var3(), FLA_Trsm_lun_unb_var4(), FLA_Trsm_lut_unb_var1(), FLA_Trsm_lut_unb_var2(), FLA_Trsm_lut_unb_var3(), FLA_Trsm_lut_unb_var4(), FLA_Trsm_rlc_unb_var1(), FLA_Trsm_rlc_unb_var2(), FLA_Trsm_rlc_unb_var3(), FLA_Trsm_rlc_unb_var4(), FLA_Trsm_rlh_unb_var1(), FLA_Trsm_rlh_unb_var2(), FLA_Trsm_rlh_unb_var3(), FLA_Trsm_rlh_unb_var4(), FLA_Trsm_rln_unb_var1(), FLA_Trsm_rln_unb_var2(), FLA_Trsm_rln_unb_var3(), FLA_Trsm_rln_unb_var4(), FLA_Trsm_rlt_unb_var1(), FLA_Trsm_rlt_unb_var2(), FLA_Trsm_rlt_unb_var3(), FLA_Trsm_rlt_unb_var4(), FLA_Trsm_ruc_unb_var1(), FLA_Trsm_ruc_unb_var2(), FLA_Trsm_ruc_unb_var3(), FLA_Trsm_ruc_unb_var4(), FLA_Trsm_ruh_unb_var1(), FLA_Trsm_ruh_unb_var2(), FLA_Trsm_ruh_unb_var3(), FLA_Trsm_ruh_unb_var4(), FLA_Trsm_run_unb_var1(), FLA_Trsm_run_unb_var2(), FLA_Trsm_run_unb_var3(), FLA_Trsm_run_unb_var4(), FLA_Trsm_rut_unb_var1(), FLA_Trsm_rut_unb_var2(), FLA_Trsm_rut_unb_var3(), FLA_Trsm_rut_unb_var4(), FLA_Trsvsx_external(), FLA_Ttmm_l_unb_var1(), FLA_Ttmm_l_unb_var2(), FLA_Ttmm_u_unb_var1(), and FLA_Ttmm_u_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_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 ) )
26  {
27  return FLA_SUCCESS;
28  }
29  else if ( FLA_Obj_equals( alpha, FLA_ZERO ) )
30  {
31  FLA_Set( FLA_ZERO, A );
32  return FLA_SUCCESS;
33  }
34 
35  datatype = FLA_Obj_datatype( A );
36 
37  m_A = FLA_Obj_length( A );
38  n_A = FLA_Obj_width( A );
39  rs_A = FLA_Obj_row_stride( A );
40  cs_A = FLA_Obj_col_stride( A );
41 
42  if ( FLA_Obj_is_constant( alpha ) )
43  dt_alpha = datatype;
44  else
45  dt_alpha = FLA_Obj_datatype( alpha );
46 
47  FLA_Param_map_flame_to_blis_conj( FLA_NO_CONJUGATE, &blis_conj );
48 
49  switch ( datatype ){
50 
51  case FLA_FLOAT:
52  {
53  float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
54  float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
55 
56  bl1_sscalm( blis_conj,
57  m_A,
58  n_A,
59  buff_alpha,
60  buff_A, rs_A, cs_A );
61 
62  break;
63  }
64 
65  case FLA_DOUBLE:
66  {
67  double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
68  double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
69 
70  bl1_dscalm( blis_conj,
71  m_A,
72  n_A,
73  buff_alpha,
74  buff_A, rs_A, cs_A );
75 
76  break;
77  }
78 
79  case FLA_COMPLEX:
80  {
81  if ( dt_alpha == FLA_COMPLEX )
82  {
83  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
84  scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
85 
86  bl1_cscalm( blis_conj,
87  m_A,
88  n_A,
89  buff_alpha,
90  buff_A, rs_A, cs_A );
91  }
92  else if ( dt_alpha == FLA_FLOAT )
93  {
94  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
95  float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
96 
97  bl1_csscalm( blis_conj,
98  m_A,
99  n_A,
100  buff_alpha,
101  buff_A, rs_A, cs_A );
102  }
103 
104  break;
105  }
106 
107  case FLA_DOUBLE_COMPLEX:
108  {
109  if ( dt_alpha == FLA_DOUBLE_COMPLEX )
110  {
111  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
112  dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
113 
114  bl1_zscalm( blis_conj,
115  m_A,
116  n_A,
117  buff_alpha,
118  buff_A, rs_A, cs_A );
119  }
120  else if ( dt_alpha == FLA_DOUBLE )
121  {
122  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
123  double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
124 
125  bl1_zdscalm( blis_conj,
126  m_A,
127  n_A,
128  buff_alpha,
129  buff_A, rs_A, cs_A );
130  }
131 
132  break;
133  }
134 
135  }
136 
137  return FLA_SUCCESS;
138 }
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
FLA_Error FLA_Scal_check(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_check.c:13
void bl1_zscalm(conj1_t conj, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_scalm.c:273
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_Error FLA_Set(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Set.c:13
void bl1_sscalm(conj1_t conj, int m, int n, float *alpha, float *a, int a_rs, int a_cs)
Definition: bl1_scalm.c:13
FLA_Bool FLA_Obj_equals(FLA_Obj A, FLA_Obj B)
Definition: FLA_Query.c:507
Definition: blis_type_defs.h:132
void bl1_cscalm(conj1_t conj, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs)
Definition: bl1_scalm.c:169
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
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
void bl1_zdscalm(conj1_t conj, int m, int n, double *alpha, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_scalm.c:221
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
void bl1_csscalm(conj1_t conj, int m, int n, float *alpha, scomplex *a, int a_rs, int a_cs)
Definition: bl1_scalm.c:117
void bl1_dscalm(conj1_t conj, int m, int n, double *alpha, double *a, int a_rs, int a_cs)
Definition: bl1_scalm.c:65
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20
Definition: blis_type_defs.h:137