Deterministic Gaussian Sampling
Loading...
Searching...
No Matches
gsl_utils_compare.h
1#ifndef GSL_UTILS_COMPARE_H
2#define GSL_UTILS_COMPARE_H
3
4#include <gsl/gsl_matrix.h>
5#include <gsl/gsl_vector.h>
6
7#include <cmath>
8
9/******************************************************************************/
10/*********************************** double ***********************************/
11/******************************************************************************/
21static bool gsl_utils_compare_eq(const gsl_vector* a, const gsl_vector* b,
22 double tol = 1e-6) {
23 if (a->size != b->size) return false;
24 for (size_t i = 0; i < a->size; ++i) {
25 if (std::fabs(gsl_vector_get(a, i) - gsl_vector_get(b, i)) > tol)
26 return false;
27 }
28 return true;
29}
30
41static bool gsl_utils_compare_eq(const gsl_matrix* a, const gsl_matrix* b,
42 double tol = 1e-6) {
43 if (a->size1 != b->size1 || a->size2 != b->size2) return false;
44 for (size_t i = 0; i < a->size1; ++i) {
45 for (size_t j = 0; j < a->size2; ++j) {
46 if (std::fabs(gsl_matrix_get(a, i, j) - gsl_matrix_get(b, i, j)) > tol)
47 return false;
48 }
49 }
50 return true;
51}
52
53/******************************************************************************/
54/************************************ float ***********************************/
55/******************************************************************************/
65static bool gsl_utils_compare_eq(const gsl_vector_float* a,
66 const gsl_vector_float* b, double tol = 1e-6) {
67 if (a->size != b->size) return false;
68 for (size_t i = 0; i < a->size; ++i) {
69 if (std::fabs(gsl_vector_float_get(a, i) - gsl_vector_float_get(b, i)) >
70 (float)tol)
71 return false;
72 }
73 return true;
74}
75
86static bool gsl_utils_compare_eq(const gsl_matrix_float* a,
87 const gsl_matrix_float* b, double tol = 1e-6) {
88 if (a->size1 != b->size1 || a->size2 != b->size2) return false;
89 for (size_t i = 0; i < a->size1; ++i) {
90 for (size_t j = 0; j < a->size2; ++j) {
91 if (std::fabs(gsl_matrix_float_get(a, i, j) -
92 gsl_matrix_float_get(b, i, j)) > (float)tol)
93 return false;
94 }
95 }
96 return true;
97}
98
99/******************************************************************************/
100/********************************* long double ********************************/
101/******************************************************************************/
110[[maybe_unused]]
111static bool gsl_utils_compare_eq(const gsl_vector_long_double* a,
113 double tol = 1e-6) {
114 if (a->size != b->size) return false;
115 for (size_t i = 0; i < a->size; ++i) {
116 if (std::fabs(gsl_vector_long_double_get(a, i) -
118 return false;
119 }
120 return true;
121}
122
133[[maybe_unused]]
134static bool gsl_utils_compare_eq(const gsl_matrix_long_double* a,
136 double tol = 1e-6) {
137 if (a->size1 != b->size1 || a->size2 != b->size2) return false;
138 for (size_t i = 0; i < a->size1; ++i) {
139 for (size_t j = 0; j < a->size2; ++j) {
140 if (std::fabs(gsl_matrix_long_double_get(a, i, j) -
142 return false;
143 }
144 }
145 return true;
146}
147
148/******************************************************************************/
149/************************************ char ************************************/
150/******************************************************************************/
158[[maybe_unused]]
159inline static bool gsl_utils_compare_eq(const gsl_vector_char* a,
160 const gsl_vector_char* b) {
161 return gsl_vector_char_equal(a, b);
162}
163
172[[maybe_unused]]
173inline static bool gsl_utils_compare_eq(const gsl_matrix_char* a,
174 const gsl_matrix_char* b) {
175 return gsl_matrix_char_equal(a, b);
176}
177
178/******************************************************************************/
179/************************************ int *************************************/
180/******************************************************************************/
188[[maybe_unused]]
189inline static bool gsl_utils_compare_eq(const gsl_vector_int* a,
190 const gsl_vector_int* b) {
191 return gsl_vector_int_equal(a, b);
192}
193
202[[maybe_unused]]
203inline static bool gsl_utils_compare_eq(const gsl_matrix_int* a,
204 const gsl_matrix_int* b) {
205 return gsl_matrix_int_equal(a, b);
206}
207
208/******************************************************************************/
209/************************************ long ************************************/
210/******************************************************************************/
218[[maybe_unused]]
219inline static bool gsl_utils_compare_eq(const gsl_vector_long* a,
220 const gsl_vector_long* b) {
221 return gsl_vector_long_equal(a, b);
222}
223
232[[maybe_unused]]
233inline static bool gsl_utils_compare_eq(const gsl_matrix_long* a,
234 const gsl_matrix_long* b) {
235 return gsl_matrix_long_equal(a, b);
236}
237
238/******************************************************************************/
239/************************************ short ***********************************/
240/******************************************************************************/
248inline static bool gsl_utils_compare_eq(const gsl_vector_short* a,
249 const gsl_vector_short* b) {
250 return gsl_vector_short_equal(a, b);
251}
252
261[[maybe_unused]]
262inline static bool gsl_utils_compare_eq(const gsl_matrix_short* a,
263 const gsl_matrix_short* b) {
264 return gsl_matrix_short_equal(a, b);
265}
266
267/******************************************************************************/
268/************************************ uchar ***********************************/
269/******************************************************************************/
277[[maybe_unused]]
278inline static bool gsl_utils_compare_eq(const gsl_vector_uchar* a,
279 const gsl_vector_uchar* b) {
280 return gsl_vector_uchar_equal(a, b);
281}
282
291[[maybe_unused]]
292inline static bool gsl_utils_compare_eq(const gsl_matrix_uchar* a,
293 const gsl_matrix_uchar* b) {
294 return gsl_matrix_uchar_equal(a, b);
295}
296
297/******************************************************************************/
298/************************************ uint ************************************/
299/******************************************************************************/
307[[maybe_unused]]
308inline static bool gsl_utils_compare_eq(const gsl_vector_uint* a,
309 const gsl_vector_uint* b) {
310 return gsl_vector_uint_equal(a, b);
311}
312
321[[maybe_unused]]
322inline static bool gsl_utils_compare_eq(const gsl_matrix_uint* a,
323 const gsl_matrix_uint* b) {
324 return gsl_matrix_uint_equal(a, b);
325}
326
327/******************************************************************************/
328/************************************ ulong ***********************************/
329/******************************************************************************/
337[[maybe_unused]]
338inline static bool gsl_utils_compare_eq(const gsl_vector_ulong* a,
339 const gsl_vector_ulong* b) {
340 return gsl_vector_ulong_equal(a, b);
341}
342
351[[maybe_unused]]
352inline static bool gsl_utils_compare_eq(const gsl_matrix_ulong* a,
353 const gsl_matrix_ulong* b) {
354 return gsl_matrix_ulong_equal(a, b);
355}
356
357/******************************************************************************/
358/*********************************** ushort ***********************************/
359/******************************************************************************/
367[[maybe_unused]]
368inline static bool gsl_utils_compare_eq(const gsl_vector_ushort* a,
369 const gsl_vector_ushort* b) {
370 return gsl_vector_ushort_equal(a, b);
371}
372
381[[maybe_unused]]
382inline static bool gsl_utils_compare_eq(const gsl_matrix_ushort* a,
383 const gsl_matrix_ushort* b) {
384 return gsl_matrix_ushort_equal(a, b);
385}
386
387#endif // GSL_UTILS_COMPARE_H
Definition dirac_to_dirac_approx_short.h:9