00001
00002
00003
00004
00005 #ifndef CoinFinite_H
00006 #define CoinFinite_H
00007
00008 #include <algorithm>
00009 #include <cmath>
00010
00011
00012
00013 #if defined(__GNUC__) && defined(_AIX)
00014 inline int CoinFinite(double d) { return d != DBL_MAX; }
00015 # define CoinIsnan isnan
00016 #endif
00017
00018
00019
00020 #if !defined(__GNUC__) && defined(_AIX)
00021 extern "C" {
00022 int isnan(double);
00023 }
00024 # define CoinFinite finite
00025 # define CoinIsnan isnan
00026 #endif
00027
00028
00029
00030 #if defined(sun)
00031 extern "C" {
00032 int finite(double);
00033 int isnan(double);
00034 }
00035 # define CoinFinite finite
00036 # define CoinIsnan isnan
00037 #endif
00038
00039
00040
00041 #if defined(_MSC_VER)
00042 # include<float.h>
00043 # define CoinIsnan _isnan
00044 # define CoinFinite _finite
00045
00046 # pragma warning(disable:4786)
00047 #if !defined(min)
00048 #define min(a,b) (((a) < (b)) ? (a) : (b))
00049 #endif
00050 #if !defined(max)
00051 #define max(a,b) (((a) > (b)) ? (a) : (b))
00052 #endif
00053 #else
00054
00055 using std::min;
00056 using std::max;
00057 #endif
00058
00059
00060
00061 #if defined(__linux__)
00062 # define CoinFinite finite
00063 # define CoinIsnan isnan
00064 #endif
00065
00066
00067
00068 #if defined(__CYGWIN32__)
00069 # define CoinFinite finite
00070 # define CoinIsnan isnan
00071 #endif
00072
00073
00074
00075 #if defined(__GNUC__) && defined(__MACH__)
00076 extern "C" {
00077 int isnan(double);
00078 }
00079 inline int CoinFinite(double d);
00080 # define CoinFinite finite
00081 # define CoinIsnan isnan
00082 #endif
00083
00084
00085
00086 #if defined(__FreeBSD__)
00087 extern "C" {
00088 int finite(double);
00089 int isnan(double);
00090 }
00091 # define CoinFinite finite
00092 # define CoinIsnan isnan
00093 #endif
00094
00095
00096 #endif