Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

CoinFinite.hpp

00001 // Copyright (C) 2002, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 
00004 // Also put all base defines here e.g. VC++ pragmas
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 // Turn off compiler warning about long names
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 // Put standard min and max here
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

Generated on Wed Dec 3 14:34:18 2003 for Coin by doxygen 1.3.5