MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / ARITH_TESTS

Function ARITH_TESTS

test/sparse_arith.cpp:255–343  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

253 ARITH_TESTS_OPS(T, 123, 278, 5, eps)
254
255ARITH_TESTS(float, 1e-6)
256ARITH_TESTS(double, 1e-6)
257ARITH_TESTS(cfloat, 1e-4) // This is mostly for complex division in OpenCL
258ARITH_TESTS(cdouble, 1e-6)
259
260// Sparse-Sparse Arithmetic testing function
261template<typename T, af_op_t op>
262void ssArithmetic(const int m, const int n, int factor, const double eps) {
263 deviceGC();
264
265 SUPPORTED_TYPE_CHECK(T);
266
267#if 1
268 array A = cpu_randu<T>(dim4(m, n));
269 array B = cpu_randu<T>(dim4(m, n));
270#else
271 array A = randu(m, n, (dtype)dtype_traits<T>::af_type);
272 array B = randu(m, n, (dtype)dtype_traits<T>::af_type);
273#endif
274
275 A = makeSparse<T>(A, factor);
276 B = makeSparse<T>(B, factor);
277
278 array spA = sparse(A, AF_STORAGE_CSR);
279 array spB = sparse(B, AF_STORAGE_CSR);
280
281 arith_op<op> binOp;
282
283 // Arith Op
284 array resS = binOp(spA, spB);
285 array resD = binOp(A, B);
286 ASSERT_ARRAYS_NEAR(resD, resS, eps);
287
288 array revS = binOp(spB, spA);
289 array revD = binOp(B, A);
290 ASSERT_ARRAYS_NEAR(revD, revS, eps);
291}
292
293#define SP_SP_ARITH_TEST(type, m, n, factor, eps) \
294 TEST(SparseSparseArith, type##_Addition_##m##_##n) { \
295 ssArithmetic<type, af_add_t>(m, n, factor, eps); \
296 } \
297 TEST(SparseSparseArith, type##_Subtraction_##m##_##n) { \
298 ssArithmetic<type, af_sub_t>(m, n, factor, eps); \
299 }
300
301#define SP_SP_ARITH_TESTS(T, eps) \
302 SP_SP_ARITH_TEST(T, 10, 10, 5, eps) \
303 SP_SP_ARITH_TEST(T, 1024, 1024, 5, eps) \
304 SP_SP_ARITH_TEST(T, 100, 100, 1, eps) \
305 SP_SP_ARITH_TEST(T, 2048, 1000, 6, eps) \
306 SP_SP_ARITH_TEST(T, 123, 278, 5, eps)
307
308SP_SP_ARITH_TESTS(float, 1e-6)
309SP_SP_ARITH_TESTS(double, 1e-6)
310SP_SP_ARITH_TESTS(cfloat,
311 1e-4) // This is mostly for complex division in OpenCL
312SP_SP_ARITH_TESTS(cdouble, 1e-6)

Callers

nothing calls this directly

Calls 9

randuFunction · 0.85
sparseFunction · 0.85
binOpFunction · 0.85
deviceGCFunction · 0.85
mtxReadSparseMatrixFunction · 0.85
sparseConvertToFunction · 0.85
denseFunction · 0.85
TESTFunction · 0.70
dim4Class · 0.50

Tested by

no test coverage detected