/* ** -*- C -*- ** ** testIsNan.c ** Made by Bruno JOFRET <bruno.jofret@inria.fr> ** ** Started on Wed Feb 14 16:07:57 2007 jofret ** Last update Mon Oct 22 15:59:35 2007 bruno ** ** Copyright INRIA 2007 */ /* FIXME : Must improve isnan rules and remove define. */ #define NDEBUG #include "testIsNan.h" int sisnansTest() { int result = 0; float nan = 0. / 0.; float full = 1.23456789; printf(">> Float \n"); if (sisnans(nan) == false) { printf("ERROR ! : Test Failed (Must be nan)\n"); result = ERROR; } assert (sisnans(nan) == true); if (sisnans(full) == true) { printf("ERROR ! : Test Failed (Must not be nan)\n"); result = ERROR; } assert(sisnans(full) == false); return result; } int disnansTest() { int result = 0; double nan = 0. / 0.; double full = 1.456789321861; printf(">> Double\n"); if (disnans(nan) == false) { printf("ERROR ! : Test Failed (Must be nan)\n"); result = ERROR; } assert(disnans(nan) == true); if (disnans(full) == true) { printf("ERROR ! : Test Failed (non nan array)\n"); result = ERROR; } assert(disnans(full) == false); return result; } int cisnansTest() { int result = 0; floatComplex nan_nan = FloatComplex(0./0., 0./0.); floatComplex nan_real = FloatComplex(0. / 0. , 1.123456789); floatComplex real_nan = FloatComplex(1.123456789 , 0. / 0.); floatComplex full = FloatComplex(0.,1.); printf(">> Float Complex\n"); if (cisnans(nan_nan) == false) { printf("ERROR ! : Test Failed (Must be nan)\n"); result = ERROR; } assert (cisnans(nan_nan) == true); if (cisnans(nan_real) == true) { printf("ERROR ! : Test Failed (Must not be nan)\n"); result = ERROR; } assert(cisnans(nan_real) == false); if (cisnans(real_nan) == true) { printf("ERROR ! : Test Failed (Must not be nan)\n"); result = ERROR; } assert(cisnans(real_nan) == false); if (cisnans(full) == true) { printf("ERROR ! : Test Failed (Must not be nan)\n"); result = ERROR; } assert(cisnans(full) == false); return result; } int zisnansTest() { int result = 0; floatComplex nan_nan = FloatComplex(0./0., 0./0.); floatComplex nan_real = FloatComplex(0. / 0. , 1.123456789); floatComplex real_nan = FloatComplex(1.123456789 , 0. / 0.); floatComplex full = FloatComplex(0.,1.); printf(">> Double Complex\n"); if (cisnans(nan_nan) == false) { printf("ERROR ! : Test Failed (Must be nan)\n"); result = ERROR; } assert (cisnans(nan_nan) == true); if (cisnans(nan_real) == true) { printf("ERROR ! : Test Failed (Must not be nan)\n"); result = ERROR; } assert(cisnans(nan_real) == false); if (cisnans(real_nan) == true) { printf("ERROR ! : Test Failed (Must not be nan)\n"); result = ERROR; } assert(cisnans(real_nan) == false); if (cisnans(full) == true) { printf("ERROR ! : Test Failed (Must not be nan)\n"); result = ERROR; } assert(cisnans(full) == false); return result; } int testIsNan() { int sisnansTestStatus, disnansTestStatus = 0; int cisnansTestStatus, zisnansTestStatus = 0; printf("\n>>>> IsNan Tests\n"); sisnansTestStatus = sisnansTest(); disnansTestStatus = disnansTest(); cisnansTestStatus = cisnansTest(); zisnansTestStatus = zisnansTest(); return (sisnansTestStatus + disnansTestStatus + cisnansTestStatus + zisnansTestStatus); } int main(void) { assert(testIsNan() == 0); return 0; }