diff --git a/tests/isnan.ispc b/tests/isnan.ispc new file mode 100644 index 00000000..1cbf928e --- /dev/null +++ b/tests/isnan.ispc @@ -0,0 +1,39 @@ + +export uniform int width() { return programCount; } + +export void f_v(uniform float RET[]) { + int errors = 0; + for (uniform int i = -2; i <= 2; ++i) { + float f = log((float)i); + + if ((i < 0) && (!isnan(f))) errors ++; + if ((i >= 0) && isnan(f)) errors ++; + } + + for (uniform int i = -2; i <= 2; ++i) { + uniform float f = log((uniform float)i); + + if ((i < 0) && (!isnan(f))) errors ++; + if ((i >= 0) && isnan(f)) errors ++; + } + + for (uniform int i = -2; i <= 2; ++i) { + double f = log((double)i); + + if ((i < 0) && (!isnan(f))) errors ++; + if ((i >= 0) && isnan(f)) errors ++; + } + + for (uniform int i = -2; i <= 2; ++i) { + uniform double f = log((uniform double)i); + + if ((i < 0) && (!isnan(f))) errors ++; + if ((i >= 0) && isnan(f)) errors ++; + } + + RET[programIndex] = errors; +} + +export void result(uniform float RET[]) { + RET[programIndex] = 0; +}