00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "isinfnan.h"
00026
00027
00028
00029 #define SHOW_STRVAL(EXPR) \
00030 printf("NOTE: "); \
00031 for(int xprloop=0;xprloop<expr_func_level;xprloop++){ \
00032 printf(" "); \
00033 } \
00034 printf("%s = %s\n",#EXPR,(EXPR));
00035
00036 #define SHOW_VALUE_LABEL(EXPR,LABEL) \
00037 { \
00038 printf("NOTE: "); \
00039 for(int xprloop=0;xprloop<expr_func_level;xprloop++){ \
00040 printf(" "); \
00041 } \
00042 printf("%s = %8.5e\n",#LABEL,(Num)(EXPR)); \
00043 }
00044
00045 #define SHOW_VALUE(EXPR) SHOW_VALUE_LABEL((EXPR),(EXPR))
00046
00047
00048
00049 #define LOOP_SUM_FUNC(CLASSNAME,FUNCNAME,EXPR,LOOPMAX) \
00050 Num CLASSNAME::FUNCNAME(){ \
00051 Num s=0; \
00052 for(int i=0;i<LOOPMAX;i++){\
00053 s+=(EXPR); \
00054 } \
00055 return s; \
00056 }
00057
00058
00059
00060 #define LOOP_SUM_FUNC_OBJ(CLASSNAME,FUNCNAME,EXPR,LOOPMAX) \
00061 Num CLASSNAME::FUNCNAME(const SteamCalculator &c) const{ \
00062 Num s=0; \
00063 for(int i=0;i<LOOPMAX;i++){\
00064 s+=(EXPR); \
00065 } \
00066 ENSURE(!isnan(s)); \
00067 ENSURE(!isinf(s)); \
00068 return s; \
00069 }
00070
00071
00072 #define EXPR_FUNC(CLASSNAME,FUNC,EXPR) \
00073 Num CLASSNAME::FUNC() const{ \
00074 Num FUNC=0; \
00075 FUNC=(EXPR); \
00076 return FUNC; \
00077 }
00078
00079
00080
00081 #define EXPR_FUNC_OBJ(CLASSNAME,FUNC,EXPR,TYPE) \
00082 TYPE CLASSNAME::FUNC(const SteamCalculator &c) const{ \
00083 TYPE FUNC=(EXPR); \
00084 ENSURE(!isinf(FUNC)); \
00085 ENSURE(!isnan(FUNC)); \
00086 return FUNC; \
00087 }
00088
00089
00090 #define EXPR_LOOP_SUM_FUNC_OBJ(CLASSNAME,FUNCNAME,EXT_EXPR,LOOP_EXPR,LOOP_START,LOOPMAX) \
00091 Num CLASSNAME::FUNCNAME(const SteamCalculator &c) const{ \
00092 Num s=(EXT_EXPR); \
00093 for(int i=(LOOP_START);i<(LOOPMAX);i++){\
00094 s+=(LOOP_EXPR); \
00095 } \
00096 return s; \
00097 }