libflame revision_anchor
Functions
FLA_Max_elemwise_diff.c File Reference

(r)

Functions

double FLA_Max_elemwise_diff (FLA_Obj A, FLA_Obj B)
 

Function Documentation

◆ FLA_Max_elemwise_diff()

double FLA_Max_elemwise_diff ( FLA_Obj  A,
FLA_Obj  B 
)
14{
15 FLA_Datatype datatype;
16 dim_t i, j;
17 dim_t m_A, n_A;
20 double diff;
21 double d_max = 0.0;
22
25
26 datatype = FLA_Obj_datatype( A );
27
28 m_A = FLA_Obj_length( A );
29 n_A = FLA_Obj_width( A );
32
35
36 switch ( datatype ){
37
38 case FLA_FLOAT:
39 {
40 float *buff_a = ( float * ) FLA_FLOAT_PTR( A );
41 float *buff_b = ( float * ) FLA_FLOAT_PTR( B );
42
43 for( j = 0; j < n_A; j++ )
44 {
45 for( i = 0; i < m_A; i++ )
46 {
47 diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ] - buff_b[ j*cs_B + i*rs_B ] );
48
49 if( fabs(diff) > d_max )
50 d_max = fabs(diff);
51 }
52 }
53
54 break;
55 }
56
57 case FLA_DOUBLE:
58 {
59 double *buff_a = ( double * ) FLA_DOUBLE_PTR( A );
60 double *buff_b = ( double * ) FLA_DOUBLE_PTR( B );
61
62 for( j = 0; j < n_A; j++ )
63 {
64 for( i = 0; i < m_A; i++ )
65 {
66 diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ] - buff_b[ j*cs_B + i*rs_B ] );
67
68 if( fabs(diff) > d_max )
69 d_max = fabs(diff);
70 }
71 }
72
73 break;
74 }
75
76 case FLA_COMPLEX:
77 {
80
81 for( j = 0; j < n_A; j++ )
82 {
83 for( i = 0; i < m_A; i++ )
84 {
85 diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].real - buff_b[ j*cs_B + i*rs_B ].real );
86
87 if( fabs(diff) > d_max )
88 d_max = fabs(diff);
89
90 diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].imag - buff_b[ j*cs_B + i*rs_B ].imag );
91
92 if( fabs(diff) > d_max )
93 d_max = fabs(diff);
94 }
95 }
96
97 break;
98 }
99
101 {
104
105 for( j = 0; j < n_A; j++ )
106 {
107 for( i = 0; i < m_A; i++ )
108 {
109 diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].real - buff_b[ j*cs_B + i*rs_B ].real );
110
111 if( fabs(diff) > d_max )
112 d_max = fabs(diff);
113
114 diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].imag - buff_b[ j*cs_B + i*rs_B ].imag );
115
116 if( fabs(diff) > d_max )
117 d_max = fabs(diff);
118 }
119 }
120
121 break;
122 }
123
124 }
125
126
127 return d_max;
128}
FLA_Error FLA_Max_elemwise_diff_check(FLA_Obj A, FLA_Obj B)
Definition FLA_Max_elemwise_diff_check.c:13
float real
Definition FLA_f2c.h:30
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
int i
Definition bl1_axmyv2.c:145
rho_c imag
Definition bl1_axpyv2bdotaxpy.c:483
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

References FLA_Check_error_level(), FLA_Max_elemwise_diff_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), i, and imag.

Referenced by FLASH_Max_elemwise_diff().