aboutsummaryrefslogtreecommitdiff
path: root/src/test.c
diff options
context:
space:
mode:
authoreschnett <eschnett@105869f7-3296-0410-a4ea-f4349344b45a>2011-08-08 01:40:29 +0000
committereschnett <eschnett@105869f7-3296-0410-a4ea-f4349344b45a>2011-08-08 01:40:29 +0000
commitcc49cae66d85758463d43ca1166da59e0eef8bb3 (patch)
treec645cdad984f17a8fdfab72eb0f4593fe714d870 /src/test.c
parentced921c204699a6827162d211b238ea0bc1dafb5 (diff)
Add more vectorisation tests. Add test case.
Add vectorisation test for vector creation, load, and store statements. Convert C to C++ since vectorisation requires C++. Add test case. Beautify vectorsation templates. git-svn-id: https://svn.cct.lsu.edu/repos/numrel/LSUThorns/Vectors/trunk@26 105869f7-3296-0410-a4ea-f4349344b45a
Diffstat (limited to 'src/test.c')
-rw-r--r--src/test.c83
1 files changed, 0 insertions, 83 deletions
diff --git a/src/test.c b/src/test.c
deleted file mode 100644
index 680e775..0000000
--- a/src/test.c
+++ /dev/null
@@ -1,83 +0,0 @@
-#include "cctk.h"
-#include "cctk_Arguments.h"
-#include "cctk_Parameters.h"
-#include "vectors.h"
-#include <math.h>
-
-#define VECTEST(testname, vecexpr, scalarexpr) \
-{ \
- CCTK_REAL_VEC rv = vecexpr; \
- for(int i=0; i<CCTK_REAL_VEC_SIZE; i++) { \
- CCTK_REAL res = scalarexpr; \
- CCTK_REAL vecres = vec_elt(rv,i); \
- if(vecres == res) \
- passed++; \
- else \
- CCTK_VWarn(CCTK_WARN_ALERT, __LINE__, __FILE__, \
- CCTK_THORNSTRING, "Failed test %s", testname); \
- numtests++; \
- } \
-}
-
-void Vectors_Test(CCTK_ARGUMENTS)
-{
- DECLARE_CCTK_ARGUMENTS;
- DECLARE_CCTK_PARAMETERS;
-
- CCTK_INT passed = 0, numtests=0;
-
- CCTK_REAL a[CCTK_REAL_VEC_SIZE];
- CCTK_REAL b[CCTK_REAL_VEC_SIZE];
- CCTK_REAL c[CCTK_REAL_VEC_SIZE];
-
- for(int i=0; i<CCTK_REAL_VEC_SIZE; i++) {
- a[i] = (i+1)*1.23456789;
- b[i] = -(i+1)*9.87654321;
- c[i] = (i+1)*1.01010101;
- }
-
- CCTK_REAL_VEC av = vec_loadu(a[0]);
- CCTK_REAL_VEC bv = vec_loadu(b[0]);
- CCTK_REAL_VEC cv = vec_loadu(c[0]);
- CCTK_REAL_VEC rv = vec_loadu(c[0]);
-
- /* TODO: Add individual tests for vec_set1, vec_set, vec_elt0, vec_elt
- vec_load, vec_loadu, vec_loadu_maybe, vec_loadu_maybe3
- vec_store, vec_store_nta, vec_store_nta_partial_lo,
- vec_store_nta_partial_hi, vec_store_nta_partial_mid */
-
- VECTEST("kpos", kpos(av), +a[i] );
- VECTEST("kneg", kneg(av), -a[i] );
-
- VECTEST("kadd", kadd(av, bv), a[i] + b[i] );
- VECTEST("ksub", ksub(av, bv), a[i] - b[i] );
- VECTEST("kmul", kmul(av, bv), a[i] * b[i] );
- VECTEST("kdiv", kdiv(av, bv), a[i] / b[i] );
-
- VECTEST("kmadd", kmadd(av, bv, cv), a[i] * b[i] + c[i] );
- VECTEST("kmsub", kmsub(av, bv, cv), a[i] * b[i] - c[i] );
- VECTEST("knmadd", knmadd(av, bv, cv), -a[i] * b[i] - c[i] );
- VECTEST("knmsub", knmsub(av, bv, cv), -a[i] * b[i] + c[i] );
-
- VECTEST("kexp", kexp(av), exp(a[i]) );
- VECTEST("kfabs", kfabs(av), fabs(a[i]) );
- VECTEST("kfmax", kfmax(av, bv), fmax(a[i], b[i]) );
- VECTEST("kfmin", kfmin(av, bv), fmin(a[i], b[i]) );
- VECTEST("kfnabs", kfnabs(av), -fabs(a[i]) );
- VECTEST("klog", klog(av), log(a[i]) );
- VECTEST("kpow", kpow(av, 3.14159), pow(a[i], 3.14159) );
- VECTEST("ksqrt", ksqrt(av), sqrt(a[i]) );
-
- VECTEST("kifpos positive", kifpos(av, bv, cv), signbit(a[i]) ? c[i] : b[i]);
- VECTEST("kifpos negative", kifpos(bv, bv, cv), signbit(b[i]) ? c[i] : b[i]);
- VECTEST("kifpos 0", kifpos(ToReal(0.),bv,cv), signbit(0.)?c[i]:b[i]);
- VECTEST("kifpos -0", kifpos(ToReal(-0.),bv,cv), signbit(-0.)?c[i]:b[i]);
-
- if (passed != numtests)
- CCTK_VWarn(CCTK_WARN_ABORT, __LINE__, __FILE__, CCTK_THORNSTRING,
- "Failed %d correctness tests", numtests - passed);
- else
- CCTK_VInfo(CCTK_THORNSTRING, "%d/%d tests passed ", passed, numtests);
-
- return;
-}