summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog34
-rw-r--r--src/auxiliaryFunctions/includes/isnan.h41
-rw-r--r--src/auxiliaryFunctions/isnan/Makefile.am6
-rw-r--r--src/auxiliaryFunctions/isnan/Makefile.in28
-rw-r--r--src/auxiliaryFunctions/isnan/cisnans.c18
-rw-r--r--src/auxiliaryFunctions/isnan/disnans.c19
-rw-r--r--src/auxiliaryFunctions/isnan/sisnans.c19
-rw-r--r--src/auxiliaryFunctions/isnan/testIsNan.c157
-rw-r--r--src/auxiliaryFunctions/isnan/testIsNan.h32
-rw-r--r--src/auxiliaryFunctions/isnan/zisnans.c18
10 files changed, 350 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 5b2710b4..d2811a8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)));
+}