9 # pragma warning( disable : 4127 )
11 # ifndef WIN32_LEAN_AND_MEAN
12 # define WIN32_LEAN_AND_MEAN
74 #define float PLEASE_USE_REALNUM_NOT_FLOAT
207 const double TEMP_STOP_DEFAULT = 4000.;
209 const double TEMP_LIMIT_HIGH = 1e10;
211 const double TEMP_LIMIT_LOW = 2.8;
366 double fudge(
long int ipnt);
388 void *
MyMalloc(
size_t size,
const char *file,
int line);
394 void *
MyCalloc(
size_t num,
size_t size);
406 void MyAssert(
const char *file,
int line);
420 cloudy_exit(
const char* routine,
const char* file,
long line,
int exit_code)
432 const char* routine()
const throw()
436 const char* file()
const throw()
444 int exit_status()
const
451 #define cdEXIT( FAIL ) throw cloudy_exit( __func__, __FILE__, __LINE__, FAIL )
454 #define puts( STR ) Using_puts_before_cdEXIT_is_no_longer_needed
477 int dbg_printf(
int debug,
const char *fmt, ...);
480 int dprintf(FILE *fp,
const char *format, ...);
514 #ifndef PARALLEL_MODE
515 #define PARALLEL_MODE false
522 # define MALLOC(exp) (malloc(exp))
525 # define MALLOC(exp) (MyMalloc(exp,__FILE__, __LINE__))
531 # define CALLOC calloc
534 # define CALLOC MyCalloc
540 # define REALLOC realloc
543 # define REALLOC MyRealloc
555 int sig()
const throw()
575 const char* file()
const throw()
579 long line()
const throw()
588 bad_mpi(
long failMode) : p_failMode(failMode) {}
596 # define ASSERT(exp) ((void)0)
597 # elif defined ASSERTDEBUG
598 # define ASSERT(exp) if (!(exp)) MyAssert(__FILE__, __LINE__)
606 # define ASSERT(exp) \
610 if( cpu.lgAssertAbort() ) \
613 throw bad_assert(__FILE__,__LINE__); \
618 # define ASSERT(exp) (assert(exp))
626 throw out_of_range( str );
633 #define isnan MyIsnan
649 void enter(
const char *name)
652 fprintf(p_fp,
"%*c%s\n",p_callLevel,
'>',name);
654 void leave(
const char *name)
656 fprintf(p_fp,
"%*c%s\n",p_callLevel,
'<',name);
661 template<
bool lgTrace>
671 # pragma warning( disable : 4127 )
680 # pragma warning( disable : 4127 )
686 const char* name()
const
693 #define DEBUG_ENTRY( funcname ) debugtrace<true> DEBUG_ENTRY( funcname )
696 #define DEBUG_ENTRY( funcname ) ((void)0)
698 #define DEBUG_ENTRY( funcname ) debugtrace<false> DEBUG_ENTRY( funcname )
703 inline char TorF(
bool l ) {
return l ?
'T' :
'F'; }
707 inline bool is_odd(
int j ) {
return (j&1) == 1; }
708 inline bool is_odd(
long j ) {
return (j&1L) == 1L; }
712 inline long nint(
double x ) {
return static_cast<long>( (x < 0.) ? x-0.5 : x+0.5 ); }
716 inline long min(
int a,
long b ) {
long c = a;
return ( (c < b) ? c : b ); }
717 inline long min(
long a,
int b ) {
long c = b;
return ( (a < c) ? a : c ); }
718 inline double min(
sys_float a,
double b ) {
double c = a;
return ( (c < b) ? c : b ); }
719 inline double min(
double a,
sys_float b ) {
double c = b;
return ( (a < c) ? a : c ); }
728 #define MIN3(a,b,c) (min(min(a,b),c))
733 #define MIN4(a,b,c,d) (min(min(a,b),min(c,d)))
737 inline long max(
int a,
long b ) {
long c = a;
return ( (c > b) ? c : b ); }
738 inline long max(
long a,
int b ) {
long c = b;
return ( (a > c) ? a : c ); }
739 inline double max(
sys_float a,
double b ) {
double c = a;
return ( (c > b) ? c : b ); }
740 inline double max(
double a,
sys_float b ) {
double c = b;
return ( (a > c) ? a : c ); }
749 #define MAX3(a,b,c) (max(max(a,b),c))
754 #define MAX4(a,b,c,d) (max(max(a,b),max(c,d)))
764 return ( y < T() ) ? -abs(x) : abs(x);
770 inline int sign3( T x ) {
return ( x < T() ) ? -1 : ( ( x > T() ) ? 1 : 0 ); }
778 # pragma warning( disable : 4127 )
787 if( sx == 0 && sy == 0 )
797 inline bool fp_equal(
double x,
double y,
int n=3 )
806 if( sx == 0 && sy == 0 )
813 return ( 1. -
min(x,y)/
max(x,y) < ((
double)n+0.1)*DBL_EPSILON );
823 ASSERT( tol >= FLT_EPSILON*
max(abs(x),abs(y)) );
824 return ( abs( x-y ) <= tol );
834 ASSERT( tol >= DBL_EPSILON*
max(abs(x),abs(y)) );
835 return ( abs( x-y ) <= tol );
842 inline T
pow2(T a) {
return a*a; }
849 inline T
pow3(T a) {
return a*a*a; }
854 #define POW4(X) (pow2(X)*pow2(X))
863 inline double SDIV(
double x ) {
return ( fabs(x) < (
double)
SMALLFLOAT ) ? (double)SMALLFLOAT : x; }
878 if( sx == 0 && sy == 0 )
883 return ( sx < 0 ) ? -FLT_MAX : FLT_MAX;
891 if( abs(x) < ay*FLT_MAX )
894 return ( sx*sy < 0 ) ? -FLT_MAX : FLT_MAX;
909 if( sx == 0 && sy == 0 )
914 return ( sx < 0 ) ? -DBL_MAX : DBL_MAX;
922 if( abs(x) < ay*DBL_MAX )
925 return ( sx*sy < 0 ) ? -DBL_MAX : DBL_MAX;
935 #define HMRATE(a,b,c) hmrate4(a,b,c,phycon.te)
937 inline double hmrate4(
double a,
double b,
double c,
double te )
939 if( b == 0. && c == 0. )
942 return a*pow(te/300.,b);
944 return ( c/te <= 50. ) ? a*exp(-c/te) : 0.;
946 return ( c/te <= 50. ) ? a*pow(te/300.,b)*exp(-c/te) : 0.;
952 memset( p, -1, size );
957 set_NaN( p, (
long)(size/
sizeof(
double)) );
1021 reset( p.release() );
1362 void Split(
const string& str,
1364 vector<string>& lst,
1370 const string& substr,
1371 const string& newstr)
1373 string::size_type ptr = str.find( substr );
1374 if( ptr != string::npos )
1375 str.replace( ptr, substr.length(), newstr );
1376 return ptr != string::npos;
1382 const string& substr)
1392 double csphot(
long int inu,
long int ithr,
long int iofset);
1398 double RandGauss(
double xMean,
double s );
1412 void cap4(
char *chCAP ,
char *chLab);
1416 void uncaps(
char *chCard );
1420 void caps(
char *chCard );
1429 double ee1(
double x);
1442 double FFmtRead(
const char *chCard,
1452 long nMatch(
const char *chKey,
1453 const char *chCard);
1460 long int GetElem(
char *chCARD_CAPS );
1475 double powi(
double ,
long int );
1480 long int ipow(
long,
long );
1497 char *
PrintEfmt(
const char *fmt,
double val );
1503 double sexp(
double x);
1509 double dsexp(
double x);
1515 double plankf(
long int ip);
1523 double qg32(
double,
double,
double(*)(
double) );
1537 void spsort(
realnum x[],
long int n,
long int iperm[],
int kflag,
int *ier);
1543 return sexp(x*x) + damp/1.772453850905516027298167/(1. + x*x);
1555 # pragma warning( disable : 4127 )
1557 # pragma warning( disable : 4996 )
1559 # pragma warning( disable : 4056 )
1561 # pragma warning( disable : 4514 )
1564 # pragma warning( disable : 4512 )
1566 #ifdef __INTEL_COMPILER
1567 # pragma warning( disable : 1572 )