libflame  revision_anchor
Functions
FLA_Shift_diag.c File Reference

(r)

Functions

FLA_Error FLA_Shift_diag (FLA_Conj conj, FLA_Obj sigma, FLA_Obj A)
 

Function Documentation

◆ FLA_Shift_diag()

FLA_Error FLA_Shift_diag ( FLA_Conj  conj,
FLA_Obj  sigma,
FLA_Obj  A 
)

References bl1_cshiftdiag(), bl1_csshiftdiag(), bl1_dshiftdiag(), bl1_sshiftdiag(), bl1_zdshiftdiag(), bl1_zshiftdiag(), 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_Shift_diag_check().

Referenced by FLA_Lyap_h_unb_var1(), FLA_Lyap_h_unb_var2(), FLA_Lyap_h_unb_var3(), FLA_Lyap_h_unb_var4(), FLA_Lyap_n_unb_var1(), FLA_Lyap_n_unb_var2(), FLA_Lyap_n_unb_var3(), FLA_Lyap_n_unb_var4(), and FLASH_Shift_diag().

14 {
15  FLA_Datatype datatype_A;
16  FLA_Datatype datatype_sigma;
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_Shift_diag_check( conj, sigma, A );
23 
24  datatype_A = FLA_Obj_datatype( A );
25  datatype_sigma = FLA_Obj_datatype( sigma );
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_sigma = ( float * ) FLA_FLOAT_PTR( sigma );
39 
40  bl1_sshiftdiag( blis_conj,
41  0,
42  m_A,
43  n_A,
44  buff_sigma,
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_sigma = ( double * ) FLA_DOUBLE_PTR( sigma );
53 
54  bl1_dshiftdiag( blis_conj,
55  0,
56  m_A,
57  n_A,
58  buff_sigma,
59  buff_A, rs_A, cs_A );
60 
61  break;
62  }
63 
64  case FLA_COMPLEX:
65  {
66  if ( datatype_sigma == FLA_COMPLEX )
67  {
68  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
69  scomplex *buff_sigma = ( scomplex * ) FLA_COMPLEX_PTR( sigma );
70 
71  bl1_cshiftdiag( blis_conj,
72  0,
73  m_A,
74  n_A,
75  buff_sigma,
76  buff_A, rs_A, cs_A );
77  }
78  else
79  {
80  scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
81  float *buff_sigma = ( float * ) FLA_FLOAT_PTR( sigma );
82 
83  bl1_csshiftdiag( blis_conj,
84  0,
85  m_A,
86  n_A,
87  buff_sigma,
88  buff_A, rs_A, cs_A );
89  }
90 
91  break;
92  }
93 
94  case FLA_DOUBLE_COMPLEX:
95  {
96  if ( datatype_sigma == FLA_DOUBLE_COMPLEX )
97  {
98  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
99  dcomplex *buff_sigma = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( sigma );
100 
101  bl1_zshiftdiag( blis_conj,
102  0,
103  m_A,
104  n_A,
105  buff_sigma,
106  buff_A, rs_A, cs_A );
107  }
108  else
109  {
110  dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
111  double *buff_sigma = ( double * ) FLA_DOUBLE_PTR( sigma );
112 
113  bl1_zdshiftdiag( blis_conj,
114  0,
115  m_A,
116  n_A,
117  buff_sigma,
118  buff_A, rs_A, cs_A );
119  }
120 
121  break;
122  }
123 
124  }
125 
126  return FLA_SUCCESS;
127 }
unsigned long dim_t
Definition: FLA_type_defs.h:71
conj1_t
Definition: blis_type_defs.h:79
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
void bl1_sshiftdiag(conj1_t conj, int offset, int m, int n, float *sigma, float *a, int a_rs, int a_cs)
Definition: bl1_shiftdiag.c:13
FLA_Error FLA_Shift_diag_check(FLA_Conj conj, FLA_Obj sigma, FLA_Obj A)
Definition: FLA_Shift_diag_check.c:13
void bl1_zshiftdiag(conj1_t conj, int offset, int m, int n, dcomplex *sigma, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_shiftdiag.c:122
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
void bl1_zdshiftdiag(conj1_t conj, int offset, int m, int n, double *sigma, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_shiftdiag.c:76
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_csshiftdiag(conj1_t conj, int offset, int m, int n, float *sigma, scomplex *a, int a_rs, int a_cs)
Definition: bl1_shiftdiag.c:55
void bl1_dshiftdiag(conj1_t conj, int offset, int m, int n, double *sigma, double *a, int a_rs, int a_cs)
Definition: bl1_shiftdiag.c:34
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
void bl1_cshiftdiag(conj1_t conj, int offset, int m, int n, scomplex *sigma, scomplex *a, int a_rs, int a_cs)
Definition: bl1_shiftdiag.c:97
Definition: blis_type_defs.h:137