libflame  revision_anchor
Functions
FLA_Scale_diag.c File Reference

(r)

Functions

FLA_Error FLA_Scale_diag (FLA_Conj conj, FLA_Obj alpha, FLA_Obj A)
 

Function Documentation

◆ FLA_Scale_diag()

FLA_Error FLA_Scale_diag ( FLA_Conj  conj,
FLA_Obj  alpha,
FLA_Obj  A 
)
14 {
15  FLA_Datatype datatype_A;
16  FLA_Datatype datatype_alpha;
17  dim_t m_A, n_A;
18  dim_t rs_A, cs_A;
19  conj1_t blis_conj;
20 
21  if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
22  FLA_Scale_diag_check( conj, alpha, A );
23 
24  datatype_A = FLA_Obj_datatype( A );
25  datatype_alpha = FLA_Obj_datatype( alpha );
26  m_A = FLA_Obj_length( A );
27  n_A = FLA_Obj_width( A );
28  rs_A = FLA_Obj_row_stride( A );
29  cs_A = FLA_Obj_col_stride( A );
30 
31  FLA_Param_map_flame_to_blis_conj( conj, &blis_conj );
32 
33  switch( datatype_A ){
34 
35  case FLA_FLOAT:
36  {
37  float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
38  float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
39 
40  bl1_sscalediag( blis_conj,
41  0,
42  m_A,
43  n_A,
44  buff_alpha,
45  buff_A, rs_A, cs_A );
46 
47  break;
48  }
49  case FLA_DOUBLE:
50  {
51  double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
52  double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
53 
54  bl1_dscalediag( blis_conj,
55  0,
56  m_A,
57  n_A,
58  buff_alpha,
59  buff_A, rs_A, cs_A );
60 
61  break;
62  }
63 
64  case FLA_COMPLEX:
65  {
66  if ( datatype_alpha == FLA_COMPLEX )
67  {
68  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
69  scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
70 
71  bl1_cscalediag( blis_conj,
72  0,
73  m_A,
74  n_A,
75  buff_alpha,
76  buff_A, rs_A, cs_A );
77  }
78  else
79  {
80  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
81  float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
82 
83  bl1_csscalediag( blis_conj,
84  0,
85  m_A,
86  n_A,
87  buff_alpha,
88  buff_A, rs_A, cs_A );
89  }
90 
91  break;
92  }
93 
94  case FLA_DOUBLE_COMPLEX:
95  {
96  if ( datatype_alpha == FLA_DOUBLE_COMPLEX )
97  {
98  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
99  dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
100 
101  bl1_zscalediag( blis_conj,
102  0,
103  m_A,
104  n_A,
105  buff_alpha,
106  buff_A, rs_A, cs_A );
107  }
108  else
109  {
110  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
111  double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
112 
113  bl1_zdscalediag( blis_conj,
114  0,
115  m_A,
116  n_A,
117  buff_alpha,
118  buff_A, rs_A, cs_A );
119  }
120 
121  break;
122  }
123 
124  }
125 
126  return FLA_SUCCESS;
127 }
FLA_Error FLA_Scale_diag_check(FLA_Conj conj, FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scale_diag_check.c:13
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
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
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
int FLA_Datatype
Definition: FLA_type_defs.h:49
unsigned long dim_t
Definition: FLA_type_defs.h:71
void bl1_zdscalediag(conj1_t conj, int offset, int m, int n, double *sigma, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_scalediag.c:77
void bl1_cscalediag(conj1_t conj, int offset, int m, int n, scomplex *sigma, scomplex *a, int a_rs, int a_cs)
Definition: bl1_scalediag.c:99
void bl1_dscalediag(conj1_t conj, int offset, int m, int n, double *sigma, double *a, int a_rs, int a_cs)
Definition: bl1_scalediag.c:34
void bl1_csscalediag(conj1_t conj, int offset, int m, int n, float *sigma, scomplex *a, int a_rs, int a_cs)
Definition: bl1_scalediag.c:55
void bl1_zscalediag(conj1_t conj, int offset, int m, int n, dcomplex *sigma, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_scalediag.c:123
void bl1_sscalediag(conj1_t conj, int offset, int m, int n, float *sigma, float *a, int a_rs, int a_cs)
Definition: bl1_scalediag.c:13
conj1_t
Definition: blis_type_defs.h:80
Definition: blis_type_defs.h:138
Definition: blis_type_defs.h:133

References bl1_cscalediag(), bl1_csscalediag(), bl1_dscalediag(), bl1_sscalediag(), bl1_zdscalediag(), bl1_zscalediag(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_Param_map_flame_to_blis_conj(), and FLA_Scale_diag_check().

Referenced by FLA_UDdate_UT_unb_var1().