libflame  revision_anchor
Functions
FLA_Max_abs_value.c File Reference

(r)

Functions

FLA_Error FLA_Max_abs_value (FLA_Obj A, FLA_Obj maxabs)
 

Function Documentation

◆ FLA_Max_abs_value()

FLA_Error FLA_Max_abs_value ( FLA_Obj  A,
FLA_Obj  maxabs 
)
14 {
15  FLA_Datatype datatype;
16  FLA_Datatype dt_maxabs;
17  dim_t m_A, n_A;
18  dim_t rs_A, cs_A;
19 
20  if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
21  FLA_Max_abs_value_check( A, maxabs );
22 
23  datatype = FLA_Obj_datatype( A );
24  dt_maxabs = FLA_Obj_datatype( maxabs );
25 
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 
32  switch ( datatype ){
33 
34  case FLA_FLOAT:
35  {
36  float* buff_A = ( float * ) FLA_FLOAT_PTR( A );
37  float* buff_maxabs = ( float * ) FLA_FLOAT_PTR( maxabs );
38 
39  bl1_smaxabsm( m_A,
40  n_A,
41  buff_A, rs_A, cs_A,
42  buff_maxabs );
43 
44  break;
45  }
46 
47  case FLA_DOUBLE:
48  {
49  double* buff_A = ( double * ) FLA_DOUBLE_PTR( A );
50  double* buff_maxabs = ( double * ) FLA_DOUBLE_PTR( maxabs );
51 
52  bl1_dmaxabsm( m_A,
53  n_A,
54  buff_A, rs_A, cs_A,
55  buff_maxabs );
56 
57  break;
58  }
59 
60  case FLA_COMPLEX:
61  {
62  if ( dt_maxabs == FLA_FLOAT )
63  {
64  scomplex* buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
65  float* buff_maxabs = ( float * ) FLA_FLOAT_PTR( maxabs );
66 
67  bl1_cmaxabsm( m_A,
68  n_A,
69  buff_A, rs_A, cs_A,
70  buff_maxabs );
71  }
72  else
73  {
74  scomplex* buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
75  scomplex* buff_maxabs = ( scomplex * ) FLA_COMPLEX_PTR( maxabs );
76 
77  bl1_cmaxabsm( m_A,
78  n_A,
79  buff_A, rs_A, cs_A,
80  &(buff_maxabs->real) );
81 
82  buff_maxabs->imag = 0.0;
83  }
84 
85  break;
86  }
87 
88  case FLA_DOUBLE_COMPLEX:
89  {
90  if ( dt_maxabs == FLA_DOUBLE )
91  {
92  dcomplex* buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
93  double* buff_maxabs = ( double * ) FLA_DOUBLE_PTR( maxabs );
94 
95  bl1_zmaxabsm( m_A,
96  n_A,
97  buff_A, rs_A, cs_A,
98  buff_maxabs );
99  }
100  else
101  {
102  dcomplex* buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
103  dcomplex* buff_maxabs = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( maxabs );
104 
105  bl1_zmaxabsm( m_A,
106  n_A,
107  buff_A, rs_A, cs_A,
108  &(buff_maxabs->real) );
109 
110  buff_maxabs->imag = 0.0;
111  }
112 
113  break;
114  }
115 
116  }
117 
118  return FLA_SUCCESS;
119 }
FLA_Error FLA_Max_abs_value_check(FLA_Obj A, FLA_Obj amax)
Definition: FLA_Max_abs_value_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
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_cmaxabsm(int m, int n, scomplex *a, int a_rs, int a_cs, float *maxabs)
Definition: bl1_maxabsm.c:103
void bl1_smaxabsm(int m, int n, float *a, int a_rs, int a_cs, float *maxabs)
Definition: bl1_maxabsm.c:13
void bl1_dmaxabsm(int m, int n, double *a, int a_rs, int a_cs, double *maxabs)
Definition: bl1_maxabsm.c:58
void bl1_zmaxabsm(int m, int n, dcomplex *a, int a_rs, int a_cs, double *maxabs)
Definition: bl1_maxabsm.c:148
Definition: blis_type_defs.h:138
double real
Definition: blis_type_defs.h:139
double imag
Definition: blis_type_defs.h:139
Definition: blis_type_defs.h:133
float imag
Definition: blis_type_defs.h:134
float real
Definition: blis_type_defs.h:134

References bl1_cmaxabsm(), bl1_dmaxabsm(), bl1_smaxabsm(), bl1_zmaxabsm(), FLA_Check_error_level(), FLA_Max_abs_value_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), scomplex::imag, dcomplex::imag, scomplex::real, and dcomplex::real.

Referenced by FLA_Norm1(), FLA_Norm_inf(), FLA_Svd_compute_scaling(), and FLA_Svd_ext_u_unb_var1().