00001
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef OSPARAMETERS
00027 #define OSPARAMETERS
00028
00029 #include "OSConfig.h"
00030
00031
00032 #ifdef HAVE_CMATH
00033 # include <cmath>
00034 #else
00035 # ifdef HAVE_MATH_H
00036 # include <math.h>
00037 # else
00038 # error "don't have header file for math"
00039 # endif
00040 #endif
00041 #ifdef HAVE_CFLOAT
00042 # include <cfloat>
00043 #else
00044 # ifdef HAVE_FLOAT_H
00045 # include <float.h>
00046 # endif
00047 #endif
00048 #ifdef HAVE_CIEEEFP
00049 # include <cieeefp>
00050 #else
00051 # ifdef HAVE_IEEEFP_H
00052 # include <ieeefp.h>
00053 # endif
00054 #endif
00055
00056 #ifdef HAVE_CSTRING
00057 # include <cstring>
00058 #else
00059 # ifdef HAVE_STRING_H
00060 # include <string.h>
00061 # else
00062 # error "don't have header file for string"
00063 # endif
00064 #endif
00065
00066
00067 #ifdef HAVE_CSTDLIB
00068 # include <cstdlib>
00069 #else
00070 # ifdef HAVE_STDLIB_H
00071 # include <stdlib.h>
00072 # endif
00073 #endif
00074
00075 #include <string>
00076 #include <sstream>
00077 using std::string;
00078 using std::ostringstream;
00079
00080 #define OS_PLUS 1001
00081 #define OS_SUM 1002
00082 #define OS_MINUS 1003
00083 #define OS_NEGATE 1004
00084 #define OS_TIMES 1005
00085 #define OS_DIVIDE 1006
00086 #define OS_POWER 1009
00087 #define OS_PRODUCT 1010
00088 #define OS_ABS 2001
00089 #define OS_SQUARE 2005
00090 #define OS_SQRT 2006
00091 #define OS_LN 2007
00092 #define OS_EXP 2010
00093 #define OS_SIN 3001
00094 #define OS_COS 3002
00095 #define OS_MIN 4010
00096 #define OS_MAX 4011
00097 #define OS_ERF 4625
00098 #define OS_NUMBER 5001
00099 #define OS_PI 5003
00100 #define OS_E 5004
00101 #define OS_VARIABLE 6001
00102 #define OS_IF 7001
00103 #define OS_ALLDIF 7016
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 #define OS_E_VALUE exp(1.0)
00117 #define OS_PI_VALUE 2*asin(1.0)
00118
00119 #define OS_SCHEMA_VERSION "2.0"
00120
00121
00122
00127 #define OS_NEAR_EQUAL 1e-2
00128
00129 #define OS_EPS 1e-12
00130
00131 inline double nanKludge(){
00132 double zero = 0.0;
00133 return 0.0/zero;
00134 }
00135
00136 #ifdef NAN
00137 #define OSNAN NAN
00138 #elif defined NaN
00139 #define OSNAN NaN
00140 #elif defined nan
00141 #define OSNAN nan
00142 #elif defined (_MSC_VER)
00143 #include <ymath.h>
00144 #define OSNAN _Nan._Double
00145 #else
00146 #define OSNAN nanKludge() // wow, what a last resort, I don't like this!
00147 #endif
00148
00149
00150
00151
00152
00153 #ifdef DBL_MAX
00154 #define OSDBL_MAX DBL_MAX
00155 #elif defined HUGE_VAL
00156
00157 #define OSDBL_MAX HUGE_VAL
00158 #else
00159 #define OSDBL_MAX 1e30
00160 #endif
00161
00162
00163 #ifdef INT_MAX
00164 #define OSINT_MAX INT_MAX
00165 #else
00166 #define OSINT_MAX 2147483647
00167 #endif
00168
00169 #ifndef XSLT_LOCATION
00170 #define XSLT_LOCATION OSSRCDIR;
00171 #endif
00172
00173
00174
00175
00176
00177 inline std::string getVersionInfo(){
00178 ostringstream versionInfo;
00179 versionInfo << std::endl << std::endl;
00180 versionInfo << "Optimization Services Solver";
00181 versionInfo << std::endl;
00182 versionInfo << "Main Authors: Horand Gassmann, Jun Ma, and Kipp Martin";
00183 versionInfo << std::endl;
00184 versionInfo << "Distributed under the Common Public License 1.0" ;
00185 versionInfo << std::endl;
00186 versionInfo << "OS Version: ";
00187 versionInfo << OS_VERSION;
00188 versionInfo << std::endl;
00189 versionInfo << "Build Date: ";
00190 versionInfo << __DATE__;
00191 versionInfo << std::endl;
00192
00193 #ifdef OS_SVN_REV
00194 versionInfo << "SVN Version: ";
00195 versionInfo << OS_SVN_REV;
00196 #endif
00197
00198 versionInfo << std::endl << std::endl;
00199 return versionInfo.str() ;
00200 }
00201
00202
00203 #endif
00204
00205
00206