diff -r -U 3 blitz-20001213/blitz/array/et.h wkspaces/blitz-20001213/blitz/array/et.h
--- blitz-20001213/blitz/array/et.h Mon Jun 19 07:26:14 2000
+++ wkspaces/blitz-20001213/blitz/array/et.h Thu Oct 25 15:44:12 2001
@@ -222,7 +222,9 @@
BZ_DECLARE_ARRAY_ET_UOP(erf, _bz_erf)
BZ_DECLARE_ARRAY_ET_UOP(erfc, _bz_erfc)
// BZ_DECLARE_ARRAY_ET_UOP(finite, _bz_finite)
+#ifdef BZ_HAVE_ISNAN_AND_ISNOT_MACRO
BZ_DECLARE_ARRAY_ET_UOP(isnan, _bz_isnan)
+#endif
BZ_DECLARE_ARRAY_ET_UOP(j0, _bz_j0)
BZ_DECLARE_ARRAY_ET_UOP(j1, _bz_j1)
BZ_DECLARE_ARRAY_ET_UOP(lgamma, _bz_lgamma)
diff -r -U 3 blitz-20001213/blitz/array/stencil-et.h wkspaces/blitz-20001213/blitz/array/stencil-et.h
--- blitz-20001213/blitz/array/stencil-et.h Mon Jun 19 07:26:15 2000
+++ wkspaces/blitz-20001213/blitz/array/stencil-et.h Thu Oct 25 15:20:31 2001
@@ -99,6 +99,7 @@
class name ## _et : public StencilExpr<P_numtype,N_rank,result>, \
public ETBase<name ## _et<P_numtype,N_rank> > \
{ \
+ typedef P_numtype T_numtype;\
public: \
name ## _et(const Array<T_numtype,N_rank>& A) \
: StencilExpr<T_numtype,N_rank,result>(A) \
@@ -129,6 +130,7 @@
TinyVector<P_numtype,rank> >, \
public ETBase<name ## _et<P_numtype,N_rank> > \
{ \
+ typedef P_numtype T_numtype;\
public: \
typedef TinyVector<T_numtype,rank> result; \
name ## _et(const Array<T_numtype,N_rank>& A) \
@@ -159,6 +161,7 @@
class name ## _et : public StencilExpr<P_numtype,N_rank,P_numtype>, \
public ETBase<name ## _et<P_numtype,N_rank> > \
{ \
+ typedef P_numtype T_numtype;\
public: \
name ## _et(const Array<T_numtype,N_rank>& A, int dim) \
: StencilExpr<T_numtype,N_rank,P_numtype>(A), dim_(dim) \
diff -r -U 3 blitz-20001213/blitz/array/uops.cc wkspaces/blitz-20001213/blitz/array/uops.cc
--- blitz-20001213/blitz/array/uops.cc Mon Jun 19 07:26:14 2000
+++ wkspaces/blitz-20001213/blitz/array/uops.cc Thu Oct 25 15:43:21 2001
@@ -2568,7 +2568,7 @@
* isnan
****************************************************************************/
-#ifdef BZ_HAVE_IEEE_MATH
+#ifdef BZ_HAVE_ISNAN_AND_ISNOT_MACRO
template<class T_numtype1, int N_rank1>
inline
_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
diff -r -U 3 blitz-20001213/blitz/vecuops.cc wkspaces/blitz-20001213/blitz/vecuops.cc
--- blitz-20001213/blitz/vecuops.cc Mon Jun 19 07:26:10 2000
+++ wkspaces/blitz-20001213/blitz/vecuops.cc Thu Oct 25 15:42:39 2001
@@ -1295,7 +1295,7 @@
* isnan
****************************************************************************/
-#ifdef BZ_HAVE_IEEE_MATH
+#ifdef BZ_HAVE_ISNAN_AND_ISNOT_MACRO
template<class P_numtype1>
inline
_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
diff -r -U 3 --unidirectional-new-file blitz-20001213/compiler/bzconfig wkspaces/blitz-20001213/compiler/bzconfig
--- blitz-20001213/compiler/bzconfig Mon Jun 19 07:26:15 2000
+++ wkspaces/blitz-20001213/compiler/bzconfig Thu Oct 25 15:39:09 2001
@@ -361,6 +361,7 @@
./bztest BZ_HAVE_VALARRAY valarray.cpp "Does it have valarray<T>?"
./bztest BZ_HAVE_COMPLEX_MATH compmath.cpp "Complex math functions?"
./bztest BZ_HAVE_IEEE_MATH ieeemath.cpp "IEEE Math library?"
+./bztest BZ_HAVE_ISNAN_AND_ISNOT_MACRO isnan.cpp "isnan exists and isn't a macro?"
./bztest BZ_HAVE_SYSTEM_V_MATH sysvmath.cpp "System V Math library?"
./bztest BZ_MATH_FN_IN_NAMESPACE_STD mathscop.cpp "Are C math functions in <cmath> and std::?"
./bztest BZ_COMPLEX_MATH_IN_NAMESPACE_STD cmthscop.cpp "Are complex math functions in std::?"
diff -r -U 3 --unidirectional-new-file blitz-20001213/compiler/ieeemath.cpp wkspaces/blitz-20001213/compiler/ieeemath.cpp
--- blitz-20001213/compiler/ieeemath.cpp Mon Jun 19 07:26:16 2000
+++ wkspaces/blitz-20001213/compiler/ieeemath.cpp Thu Oct 25 15:37:16 2001
@@ -31,7 +31,7 @@
erf(x);
erfc(x);
// finite(x);
- isnan(x);
+ //isnan(x);
j0(x);
j1(x);
lgamma(x);
diff -r -U 3 --unidirectional-new-file blitz-20001213/compiler/isnan.cpp wkspaces/blitz-20001213/compiler/isnan.cpp
--- blitz-20001213/compiler/isnan.cpp Wed Dec 31 19:00:00 1969
+++ wkspaces/blitz-20001213/compiler/isnan.cpp Thu Oct 25 15:21:24 2001
@@ -0,0 +1,33 @@
+#if !defined(__GNUC__)
+ #ifndef _ALL_SOURCE
+ #define _ALL_SOURCE
+ #endif
+
+ #ifndef _XOPEN_SOURCE
+ #define _XOPEN_SOURCE
+ #endif
+
+ #ifndef _XOPEN_SOURCE_EXTENDED
+ #define _XOPEN_SOURCE_EXTENDED 1
+ #endif
+#endif
+
+#include <math.h>
+
+#if defined isnan
+# error "isnan is a macro"
+#else
+namespace foo {
+ double isnan(double a) {
+ return ::isnan(a);
+ }
+#endif
+
+}
+
+int main() {
+
+ double bar = foo::isnan(1.0);
+
+ return 0;
+}
syntax highlighted by Code2HTML, v. 0.9.1