1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#include "common.cl"
DEFINE_BODY_V (
test_isnan, ({
/* isfinite */
Jvec jres;
jres.v = isfinite (val.v);
equal = true;
for (int n = 0; n < vecsize; ++n)
{
equal
= equal
&& jres.s[n]
== (isfinite (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0);
}
if (!equal)
{
for (int n = 0; n < vecsize; ++n)
{
printf ("FAIL: isfinite type=%s val=%.17g res=%d good=%d\n",
typename, val.s[n], (int)jres.s[n],
(isfinite (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0));
}
return;
}
/* isinf */
jres.v = isinf (val.v);
equal = true;
for (int n = 0; n < vecsize; ++n)
{
equal = equal
&& jres.s[n]
== (isinf (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0);
}
if (!equal)
{
for (int n = 0; n < vecsize; ++n)
{
printf ("FAIL: isinf type=%s val=%.17g res=%d good=%d\n",
typename, val.s[n], (int)jres.s[n],
(isinf (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0));
}
return;
}
/* isnan */
jres.v = isnan (val.v);
equal = true;
for (int n = 0; n < vecsize; ++n)
{
equal = equal
&& jres.s[n]
== (isnan (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0);
}
if (!equal)
{
for (int n = 0; n < vecsize; ++n)
{
printf ("FAIL: isnan type=%s val=%.17g res=%d good=%d\n",
typename, val.s[n], (int)jres.s[n],
(isnan (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0));
}
return;
}
/* isnormal */
jres.v = isnormal (val.v);
equal = true;
for (int n = 0; n < vecsize; ++n)
{
equal
= equal
&& jres.s[n]
== (isnormal (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0);
}
if (!equal)
{
for (int n = 0; n < vecsize; ++n)
{
printf ("FAIL: isnormal type=%s val=%.17g res=%d good=%d\n",
typename, val.s[n], (int)jres.s[n],
(isnormal (val.s[n]) ? (vecsize == 1 ? +1 : -1) : 0));
}
return;
}
}))
kernel void
test_isnan ()
{
CALL_FUNC_V (test_isnan)
}
|