Made some CygWIN related changes
authorJoris Mooij <joris.mooij@tuebingen.mpg.de>
Mon, 12 Apr 2010 19:16:14 +0000 (21:16 +0200)
committerJoris Mooij <joris.mooij@tuebingen.mpg.de>
Mon, 12 Apr 2010 19:16:14 +0000 (21:16 +0200)
Makefile.CYGWIN
include/dai/prob.h
include/dai/util.h

index 6ad12d4..c79ef32 100644 (file)
@@ -40,16 +40,16 @@ CCDEBUGFLAGS=-O3 -g -DDAI_DEBUG
 # Flags to add in non-debugging mode (if DEBUG=false)
 CCNODEBUGFLAGS=-O3
 # Standard include directories
-CCINC=-Iinclude -I/usr/local/include/boost-1_37
+CCINC=-Iinclude -I/cygdrive/e/cygwin/boost_1_42_0
 
 # LINKER
 # Standard libraries to include
 LIBS=-ldai
 # For linking with BOOST libraries
-BOOSTLIBS_PO=-lboost_program_options-gcc34-mt
-BOOSTLIBS_UTF=-lboost_unit_test_framework-gcc34-mt
+BOOSTLIBS_PO=-lboost_program_options
+BOOSTLIBS_UTF=-lboost_unit_test_framework
 # Additional library search paths for linker
-CCLIB=-Llib
+CCLIB=-Llib -L/cygdrive/e/cygwin/boost_1_42_0/stage/lib
 
 # MATLAB
 # Replace the following by the directory where MatLab has been installed
@@ -69,4 +69,4 @@ SWIG=swig
 # Location of Python header files
 INCLUDE_PYTHON=/usr/include/python2.5
 # Location of Boost C++ library header files
-INCLUDE_BOOST=/usr/local/include/boost-1_37
+INCLUDE_BOOST=/cygdrive/e/cygwin/boost_1_42_0
index 9a72416..90b457b 100644 (file)
@@ -150,7 +150,7 @@ template<typename T> struct fo_pow : public std::binary_function<T, T, T> {
     /// Returns (\a x ^ \a y)
     T operator()( const T &x, const T &y ) const {
         if( y != 1 )
-            return std::pow( x, y );
+            return pow( x, y );
         else
             return x;
     }
index a5bc03c..96e7887 100644 (file)
@@ -25,6 +25,9 @@
 #include <boost/foreach.hpp>
 #include <boost/functional/hash.hpp>
 #include <algorithm>
+#include <cerrno>
+
+#include <dai/exceptions.h>
 
 
 #if defined(WINDOWS)
 #define DAI_IFVERB(n, stmt) if(props.verbose>=n) { std::cerr << stmt; }
 
 
+#ifdef CYGWIN
+    /// Returns true if argument is NAN (Not A Number)
+    bool isnan( double x );
+#endif
+
+
 #ifdef WINDOWS
     /// Returns true if argument is NAN (Not A Number)
     bool isnan( double x );
@@ -96,6 +105,14 @@ inline Real exp( Real x ) {
     return std::exp(x);
 }
 
+/// Returns \a to the power \a y
+inline Real pow( Real x, Real y ) {
+    errno = 0;
+    Real result = std::pow(x, y);
+    DAI_DEBASSERT( errno == 0 );
+    return result;
+}
+
 
 /// hash_map is an alias for \c std::tr1::unordered_map.
 /** We use the (experimental) TR1 unordered_map implementation included in modern GCC distributions or in boost versions 1.37 and higher.