From 5e99f6ee73b31f683d5b4fb5f88e1bb0b683a9e8 Mon Sep 17 00:00:00 2001 From: jofret Date: Mon, 7 May 2007 14:12:10 +0000 Subject: Is Nan : New function Must improve nan so far as complex numbers are concerned ! --- src/auxiliaryFunctions/isnan/testIsNan.c | 157 +++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 src/auxiliaryFunctions/isnan/testIsNan.c (limited to 'src/auxiliaryFunctions/isnan/testIsNan.c') diff --git a/src/auxiliaryFunctions/isnan/testIsNan.c b/src/auxiliaryFunctions/isnan/testIsNan.c new file mode 100644 index 00000000..87a10119 --- /dev/null +++ b/src/auxiliaryFunctions/isnan/testIsNan.c @@ -0,0 +1,157 @@ +/* +** -*- C -*- +** +** testIsNan.c +** Made by Bruno JOFRET +** +** Started on Wed Feb 14 16:07:57 2007 jofret +** Last update Mon May 7 16:07:09 2007 jofret +** +** Copyright INRIA 2007 +*/ + +/* FIXME : Must improve isnan rules and remove define. */ +#define NDEBUG + +#include "testIsNan.h" + +int sisnansTest() { + int result = 0; + + printf(">> Float \n"); + + float nan = 0. / 0.; + float full = 1.23456789; + + 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; + + printf(">> Double\n"); + + double nan = 0. / 0.; + double full = 1.456789321861; + + 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; + printf(">> Float Complex\n"); + + 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.); + + 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; + + printf(">> Double Complex\n"); + 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.); + + 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; +} -- cgit