diff options
-rw-r--r-- | ChangeLog | 34 | ||||
-rw-r--r-- | src/auxiliaryFunctions/includes/isnan.h | 41 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/Makefile.am | 6 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/Makefile.in | 28 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/cisnans.c | 18 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/disnans.c | 19 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/sisnans.c | 19 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/testIsNan.c | 157 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/testIsNan.h | 32 | ||||
-rw-r--r-- | src/auxiliaryFunctions/isnan/zisnans.c | 18 |
10 files changed, 350 insertions, 22 deletions
@@ -1,4 +1,36 @@ -2007-04-20 Bruno JOFRET <jofret@agon.inria.fr> +2007-05-07 Bruno JOFRET <bruno.jofret@inria.fr> + + * src/AuxiliaryFunctions/isnan : + New Nan detection function. Must be improved ! + +2007-04-27 Bruno JOFRET <bruno.jofret@inria.fr> + + * src/AuxiliaryFunctions/isempty : + [RELEASE] Ending IsEmpty implementation AND tests. + +2007-04-26 Bruno JOFRET <bruno.jofret@inria.fr> + + * src/AuxiliaryFunctions/find : + [RELEASE] Ending Find implementation AND tests. + +2007-04-25 Bruno JOFRET <bruno.jofret@inria.fr> + + * src/AuxiliaryFunctions/abs : + [RELEASE] Ending Absolute Value implementation AND tests. + +2007-04-24 Bruno JOFRET <bruno.jofret@inria.fr> + + * src/AuxiliaryFunctions/find : + New find implementation. + +2007-04-23 Bruno JOFRET <bruno.jofret@inria.fr> + + * src/AuxiliaryFunctions/abs : + New Absolute Value implementation. + * src/AuxiliaryFunctions/pythag : + New Pythagore function : sqrt(a^2 + b^2) + +2007-04-20 Bruno JOFRET <bruno.jofret@inria.fr> * src/ElementaryFunctions/sinh : [RELEASE] Ending Hyperbolic Sine implementation AND tests. diff --git a/src/auxiliaryFunctions/includes/isnan.h b/src/auxiliaryFunctions/includes/isnan.h new file mode 100644 index 00000000..e7ed1583 --- /dev/null +++ b/src/auxiliaryFunctions/includes/isnan.h @@ -0,0 +1,41 @@ +/* +** -*- C -*- +** +** isnan.h +** Made by Bruno JOFRET <bruno.jofret@inria.fr> +** +** Started on Thu Feb 8 10:12:17 2007 jofret +** Last update Thu Apr 26 17:10:23 2007 jofret +** +** Copyright INRIA 2007 +*/ + +#ifndef __IS_NAN_H__ +#define __IS_NAN_H__ + +#include <stdbool.h> +#include <math.h> + +#include "floatComplex.h" +#include "doubleComplex.h" + +/* +** \brief Float Is Nan function +*/ +bool sisnans(float x); + +/* +** \brief Double Is Nan function +*/ +bool disnans(double x); + +/* +** \brief Float Complex Is Nan function +*/ +bool cisnans(floatComplex z); + +/* +** \brief Double Complex Is Nan function +*/ +bool zisnans(doubleComplex z); +#endif /* !__IS_NAN_H__ */ diff --git a/src/auxiliaryFunctions/isnan/Makefile.am b/src/auxiliaryFunctions/isnan/Makefile.am index 362b987b..8195c7c2 100644 --- a/src/auxiliaryFunctions/isnan/Makefile.am +++ b/src/auxiliaryFunctions/isnan/Makefile.am @@ -5,7 +5,7 @@ ## Made by Bruno JOFRET <bruno.jofret@inria.fr> ## ## Started on Fri Jan 5 10:19:16 2007 jofret -## Last update Fri Apr 20 16:20:05 2007 jofret +## Last update Mon May 7 14:54:27 2007 jofret ## ## Copyright INRIA 2007 ## @@ -32,7 +32,7 @@ HEAD = ../includes/isnan.h # Checking Part #### -check_INCLUDES = -I $(top_builddir)/elementaryFunctions/includes \ +check_INCLUDES = -I $(top_builddir)/auxiliaryFunctions/includes \ -I $(top_builddir)/type check_PROGRAMS = testIsnan @@ -42,7 +42,7 @@ TESTS = testIsnan # # -*- Isnan Tests -*- # -testIsnan_SOURCES = testIsnan.c +testIsnan_SOURCES = testIsNan.c testIsnan_CFLAGS = $(check_INCLUDES) testIsnan_LDADD = $(top_builddir)/lib/libDoubleComplex.a \ $(top_builddir)/lib/libFloatComplex.a \ diff --git a/src/auxiliaryFunctions/isnan/Makefile.in b/src/auxiliaryFunctions/isnan/Makefile.in index a030716d..8c13124a 100644 --- a/src/auxiliaryFunctions/isnan/Makefile.in +++ b/src/auxiliaryFunctions/isnan/Makefile.in @@ -65,7 +65,7 @@ am__objects_2 = sisnans.$(OBJEXT) disnans.$(OBJEXT) cisnans.$(OBJEXT) \ zisnans.$(OBJEXT) am_libIsnan_a_OBJECTS = $(am__objects_1) $(am__objects_2) libIsnan_a_OBJECTS = $(am_libIsnan_a_OBJECTS) -am_testIsnan_OBJECTS = testIsnan-testIsnan.$(OBJEXT) +am_testIsnan_OBJECTS = testIsnan-testIsNan.$(OBJEXT) testIsnan_OBJECTS = $(am_testIsnan_OBJECTS) testIsnan_DEPENDENCIES = $(top_builddir)/lib/libDoubleComplex.a \ $(top_builddir)/lib/libFloatComplex.a \ @@ -194,7 +194,7 @@ HEAD = ../includes/isnan.h #### # Checking Part #### -check_INCLUDES = -I $(top_builddir)/elementaryFunctions/includes \ +check_INCLUDES = -I $(top_builddir)/auxiliaryFunctions/includes \ -I $(top_builddir)/type TESTS = testIsnan @@ -202,7 +202,7 @@ TESTS = testIsnan # # -*- Isnan Tests -*- # -testIsnan_SOURCES = testIsnan.c +testIsnan_SOURCES = testIsNan.c testIsnan_CFLAGS = $(check_INCLUDES) testIsnan_LDADD = $(top_builddir)/lib/libDoubleComplex.a \ $(top_builddir)/lib/libFloatComplex.a \ @@ -294,7 +294,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cisnans.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disnans.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sisnans.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testIsnan-testIsnan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testIsnan-testIsNan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zisnans.Po@am__quote@ .c.o: @@ -311,19 +311,19 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -testIsnan-testIsnan.o: testIsnan.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -MT testIsnan-testIsnan.o -MD -MP -MF "$(DEPDIR)/testIsnan-testIsnan.Tpo" -c -o testIsnan-testIsnan.o `test -f 'testIsnan.c' || echo '$(srcdir)/'`testIsnan.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/testIsnan-testIsnan.Tpo" "$(DEPDIR)/testIsnan-testIsnan.Po"; else rm -f "$(DEPDIR)/testIsnan-testIsnan.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsnan.c' object='testIsnan-testIsnan.o' libtool=no @AMDEPBACKSLASH@ +testIsnan-testIsNan.o: testIsNan.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -MT testIsnan-testIsNan.o -MD -MP -MF "$(DEPDIR)/testIsnan-testIsNan.Tpo" -c -o testIsnan-testIsNan.o `test -f 'testIsNan.c' || echo '$(srcdir)/'`testIsNan.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/testIsnan-testIsNan.Tpo" "$(DEPDIR)/testIsnan-testIsNan.Po"; else rm -f "$(DEPDIR)/testIsnan-testIsNan.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsNan.c' object='testIsnan-testIsNan.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -c -o testIsnan-testIsnan.o `test -f 'testIsnan.c' || echo '$(srcdir)/'`testIsnan.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -c -o testIsnan-testIsNan.o `test -f 'testIsNan.c' || echo '$(srcdir)/'`testIsNan.c -testIsnan-testIsnan.obj: testIsnan.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -MT testIsnan-testIsnan.obj -MD -MP -MF "$(DEPDIR)/testIsnan-testIsnan.Tpo" -c -o testIsnan-testIsnan.obj `if test -f 'testIsnan.c'; then $(CYGPATH_W) 'testIsnan.c'; else $(CYGPATH_W) '$(srcdir)/testIsnan.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/testIsnan-testIsnan.Tpo" "$(DEPDIR)/testIsnan-testIsnan.Po"; else rm -f "$(DEPDIR)/testIsnan-testIsnan.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsnan.c' object='testIsnan-testIsnan.obj' libtool=no @AMDEPBACKSLASH@ +testIsnan-testIsNan.obj: testIsNan.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -MT testIsnan-testIsNan.obj -MD -MP -MF "$(DEPDIR)/testIsnan-testIsNan.Tpo" -c -o testIsnan-testIsNan.obj `if test -f 'testIsNan.c'; then $(CYGPATH_W) 'testIsNan.c'; else $(CYGPATH_W) '$(srcdir)/testIsNan.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/testIsnan-testIsNan.Tpo" "$(DEPDIR)/testIsnan-testIsNan.Po"; else rm -f "$(DEPDIR)/testIsnan-testIsNan.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='testIsNan.c' object='testIsnan-testIsNan.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -c -o testIsnan-testIsnan.obj `if test -f 'testIsnan.c'; then $(CYGPATH_W) 'testIsnan.c'; else $(CYGPATH_W) '$(srcdir)/testIsnan.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testIsnan_CFLAGS) $(CFLAGS) -c -o testIsnan-testIsNan.obj `if test -f 'testIsNan.c'; then $(CYGPATH_W) 'testIsNan.c'; else $(CYGPATH_W) '$(srcdir)/testIsNan.c'; fi` uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) diff --git a/src/auxiliaryFunctions/isnan/cisnans.c b/src/auxiliaryFunctions/isnan/cisnans.c index d27117ff..9aef26f5 100644 --- a/src/auxiliaryFunctions/isnan/cisnans.c +++ b/src/auxiliaryFunctions/isnan/cisnans.c @@ -1 +1,17 @@ -/* FIXME : Implementation */ +/* +** -*- C -*- +** +** cisnans.c +** Made by Bruno JOFRET <bruno.jofret@inria.fr> +** +** Started on Thu Apr 26 15:56:35 2007 jofret +** Last update Mon May 7 15:44:29 2007 jofret +** +** Copyright INRIA 2007 +*/ + +#include "isnan.h" + +bool cisnans(floatComplex in) { + return (isnan(creals(in)) || isnan(cimags(in))); +} diff --git a/src/auxiliaryFunctions/isnan/disnans.c b/src/auxiliaryFunctions/isnan/disnans.c index d27117ff..e465c891 100644 --- a/src/auxiliaryFunctions/isnan/disnans.c +++ b/src/auxiliaryFunctions/isnan/disnans.c @@ -1 +1,18 @@ -/* FIXME : Implementation */ +/* +** -*- C -*- +** +** disnans.c +** Made by Bruno JOFRET <bruno.jofret@inria.fr> +** +** Started on Thu Apr 26 15:59:20 2007 jofret +** Last update Thu Apr 26 17:10:50 2007 jofret +** +** Copyright INRIA 2007 +*/ + +#include "isnan.h" + +bool disnans(double in) { + return isnan(in); +} + diff --git a/src/auxiliaryFunctions/isnan/sisnans.c b/src/auxiliaryFunctions/isnan/sisnans.c index d27117ff..558dafbe 100644 --- a/src/auxiliaryFunctions/isnan/sisnans.c +++ b/src/auxiliaryFunctions/isnan/sisnans.c @@ -1 +1,18 @@ -/* FIXME : Implementation */ +/* +** -*- C -*- +** +** sisnans.c +** Made by Bruno JOFRET <bruno.jofret@inria.fr> +** +** Started on Thu Apr 26 16:00:34 2007 jofret +** Last update Thu Apr 26 17:10:56 2007 jofret +** +** Copyright INRIA 2007 +*/ + +#include "isnan.h" + +bool sisnans(float in) { + return isnan(in); +} + 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 <bruno.jofret@inria.fr> +** +** 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; +} diff --git a/src/auxiliaryFunctions/isnan/testIsNan.h b/src/auxiliaryFunctions/isnan/testIsNan.h new file mode 100644 index 00000000..1b5e5292 --- /dev/null +++ b/src/auxiliaryFunctions/isnan/testIsNan.h @@ -0,0 +1,32 @@ +/* +** -*- C -*- +** +** testIsNan.c +** Made by Bruno JOFRET <bruno.jofret@inria.fr> +** +** Started on Wed Feb 14 16:07:57 2007 jofret +** Last update Mon May 7 11:29:30 2007 jofret +** +** Copyright INRIA 2007 +*/ + +#ifndef __TESTISNAN_H__ +#define __TESTISNAN_H__ + +#include <stdio.h> +#include <assert.h> +#include "isnan.h" + +#define ERROR 51 + +int sisnansTest(void); + +int disnansTest(void); + +int cisnansTest(void); + +int zisnansTest(void); + +int testIsNan(void); + +#endif /* ! __TESTISNAN_H__ */ diff --git a/src/auxiliaryFunctions/isnan/zisnans.c b/src/auxiliaryFunctions/isnan/zisnans.c index d27117ff..93a60b1c 100644 --- a/src/auxiliaryFunctions/isnan/zisnans.c +++ b/src/auxiliaryFunctions/isnan/zisnans.c @@ -1 +1,17 @@ -/* FIXME : Implementation */ +/* +** -*- C -*- +** +** zisnans.c +** Made by Bruno JOFRET <bruno.jofret@inria.fr> +** +** Started on Thu Apr 26 16:02:19 2007 jofret +** Last update Thu Apr 26 17:36:44 2007 jofret +** +** Copyright INRIA 2007 +*/ + +#include "isnan.h" + +bool zisnans(doubleComplex in) { + return (isnan(zreals(in)) || isnan(zimags(in))); +} |