132 intmax_t a = *((const long int*) i1); |
132 intmax_t a = *((const long int*) i1); |
133 intmax_t b = *((const long int*) i2); |
133 intmax_t b = *((const long int*) i2); |
134 return a - b; |
134 return a - b; |
135 } |
135 } |
136 |
136 |
137 int ucx_floatcmp(const void *f1, const void *f2, void *epsilon) { |
137 int ucx_cmp_float(const void *f1, const void *f2, void *epsilon) { |
138 float a = *((const float*) f1); |
138 float a = *((const float*) f1); |
139 float b = *((const float*) f2); |
139 float b = *((const float*) f2); |
140 float e = !epsilon ? 1e-6f : *((float*)epsilon); |
140 float e = !epsilon ? 1e-6f : *((float*)epsilon); |
141 if (fabsf(a - b) < e) { |
141 if (fabsf(a - b) < e) { |
142 return 0; |
142 return 0; |
143 } else { |
143 } else { |
144 return a < b ? -1 : 1; |
144 return a < b ? -1 : 1; |
145 } |
145 } |
146 } |
146 } |
147 |
147 |
148 int ucx_doublecmp(const void *d1, const void *d2, void *epsilon) { |
148 int ucx_cmp_double(const void *d1, const void *d2, void *epsilon) { |
149 double a = *((const double*) d1); |
149 double a = *((const double*) d1); |
150 double b = *((const double*) d2); |
150 double b = *((const double*) d2); |
151 double e = !epsilon ? 1e-14 : *((double*)epsilon); |
151 double e = !epsilon ? 1e-14 : *((double*)epsilon); |
152 if (fabs(a - b) < e) { |
152 if (fabs(a - b) < e) { |
153 return 0; |
153 return 0; |