#ifndef CONSTANTH #define CONSTANTH // // // // // // // // // // // // // // // // // // // // // // OS type goes here!!!! Should do this in makefile/build process // #define NT // #define SOLARIS // #define MPI #define LINUX // #define BITS32 #define BITS64 // // // // // // // // // // // // // // // // // // // // // #ifdef MPI #include "constants-mpi.h" #endif // MPI #include #include // extensions to the language #define loop for(;;) #define streq(a, b) (strcmp((a), (b))==0) #define strgt(a, b) (strcmp((a), (b))>0) #define strneq(a, b) (strcmp((a), (b))!=0) #define streqcf(a, b) (strcasecmp((a), (b))==0) #define strgtcf(a, b) (strcasecmp((a), (b))>0) #define strneqcf(a, b) (strcasecmp((a), (b))!=0) // values to init undefined vars to #define BADINT 666 #define BADUINT 0xffffffffU #define BADDOUBLE 666.0 #define BADPNTR 0 #define BOOLEAN bool #define UCHAR unsigned char #define ALLONES32 0xffffffffU #define ALLONES64 0xffffffffffffffffllU #ifdef BITS32 #define UINT unsigned int #define WORDBITSIZE 5 #define WORDSIZEM1 31 #define WORDSIZE 32 #define WORDSIZE1 33 #define WORDSIZEMASK 0x1f #define ALLONES 0xffffffffU #define HIGHBIT 0x80000000U #define MAXUINT 4294967296.0 #endif #ifdef BITS64 #define UINT unsigned long long int #define WORDBITSIZE 6 #define WORDSIZEM1 63 #define WORDSIZE 64 #define WORDSIZE1 65 #define WORDSIZEMASK 0x3f #define ALLONES 0xffffffffffffffffllU #define HIGHBIT 0x8000000000000000llU #define MAXUINT 18446744073709551616.0 #endif #define SUCCESS 1 #define TRUE 1 #define YES 1 #define ON 1 #define LIVE 1 #define YESPRINT 1 #define FAIL 0 #define FAILURE 0 #define FALSE 0 #define NO 0 #define OFF 0 #define NONE 0 #define DIE 0 #define NOARG 0 #define NOPARMS 0 #define NOPRINT 0 #define MAXENUMERATEBITS 25 #define MAXENUMERATEBITS1 26 #define EOS '\0' #ifndef NULL #define NULL 0 #endif #define READ "r" #define WRITE "w" // useful small constants #define EPSILONOFZERO 1E-12 // 1234567890123456789012345678901234567890 #define INV256 0.00390625L #define INV128 0.0078125L #define INV64 0.015625L #define DEG2RAD 0.01745329251994329576923690768488612713443L #define INV32 0.03215L #define INV16 0.0625L #define INVPI2 0.1013211836423377714438794632097276389044L #define INVE2 0.1353352832366126918939994949724844034076L #define ANEIGTH 0.125L #define ASEVENTH 0.1428571428571428571428571428571428571429L #define INV2PI 0.1591549430918953357688837633725143620345L #define ASIXTH 0.1666666666666666666666666666666666666666L #define LOG10_2 0.3010299956639811952137388947244930267682L #define INVPI 0.3183098861837906715377675267450287240689L #define ATHIRD 0.3333333333333333333333333333333333333333L #define INVE 0.3678794411714423215955237701614608674458L #define INVSQR2PI 0.3989422804014326779399460599343818684759L #define LOG10E 0.4342944819032518276511289189166050822944L #define INVSQRPI 0.5641895835477562869480794515607725858441L #define EULERGAMMA 0.5772156649015328606065120900824024310422L #define INVSQR3 0.5773502691896257645091487805019574556476L #define INVSQRE 0.6065306597126334236037995349911804534419L #define INVGOLDEN 0.6180339887498948482045868343656381177203L #define PIDIV5 0.6283185307179586476925286766559005768394L #define TWODIVPI 0.6366197723675813430755350534900574481378L #define TWOTHIRDS 0.6666666666666666666666666666666666666667L #define LN2 0.6931471805599453094172321214581765680755L #define INVSQR2 0.7071067811865475244008443621048490392848L #define PIDIV4 0.7853981633974483096156608458198757210493L #define SQRTWODIVPI 0.7978845608028653558798921198687637369517L #define GOLDENDIV2 0.8090169943749474241022934171828190588602L #define SQR3DIV2 0.8660254037844386467637231707529361834714L #define CATALAN 0.9159655941772190150546035149323841107741L #define PIDIV3 1.047197551196597746154214461093167628066L #define TWODIVSQRPI 1.128379167095512573896158903121545171688L #define SQRPIDIV2 1.253314137315500251207882642405522626503L #define CBRT2 1.259921049894873164767210607278228350570L #define CBRTE 1.395612425086089528628125319602586837598L #define SQR2 1.414213562373095048801688724209698078570L #define CBRT3 1.442249570307408382321638310780109588392L #define LOG2E 1.442695040888963407359924681001892137427L #define INVLN2 1.442695040888963407359924681001892137427L #define CBRTPI 1.464591887561523263020142527263790391739L #define PIDIV2 1.570796326794896619231321691639751442099L #define LOG23 1.584962500721156181453738943947816508760L #define GOLDEN 1.618033988749894848204586834365638117720L #define SQRE 1.648721270700128146848650787814163571654L #define SQR3 1.732050807568877293527446341505872366943L #define SQRPI 1.772453850905516027298167483341145182798L #define SQR5 2.236067977499789696409173668731276235441L #define LN10 2.302585092994045684017991454684364207601L #define LOG25 2.321928094887362347870319429489390175865L #define SQR2PI 2.506628274631000502415765284811045253007L #define SQR7 2.645751311064590590501615753639260425710L #define E 2.718281828459045235360287471352662497757L #define PI 3.141592653589793238462643383279502884197L #define SQR10 3.162277660168379331998893544432718533720L #define LOG2_10 3.321928094887362347870319429489390175865L #define TWOPI 6.283185307179586476925286766559005768394L #define ESQRD 7.389056098930650227230427460575007813180L #define PISQRD 9.869604401089358618834490999876151135314L #define ETO3 20.08553692318766774092852965458171789699L #define PITOE 22.45915771836104547342715220454373502759L #define ETOPI 23.14069263277926900572908636794854738027L #define PITO3 31.00627668029982017547631506710139520223L #define RAD2DEG 57.29577951308232087679815481410517033241L #define NEARZERO(x) (fabs(x)=EPSILONOFZERO) #define NEARZERODISP(x) (NEARZERO(x)? 0.0 : (x)) #define RELNEARZERO(x, mag) (fabs(x)=EPSILONOFZERO*mag) // define binary constants for readability #define B0 0 #define B1 1 #define B00 0 #define B01 1 #define B10 2 #define B11 3 #define B000 0 #define B001 1 #define B010 2 #define B011 3 #define B100 4 #define B101 5 #define B110 6 #define B111 7 #define B0000 0 #define B0001 1 #define B0010 2 #define B0011 3 #define B0100 4 #define B0101 5 #define B0110 6 #define B0111 7 #define B1000 8 #define B1001 9 #define B1010 10 #define B1011 11 #define B1100 12 #define B1101 13 #define B1110 14 #define B1111 15 #define B00000 0 #define B00001 1 #define B00010 2 #define B00011 3 #define B00100 4 #define B00101 5 #define B00110 6 #define B00111 7 #define B01000 8 #define B01001 9 #define B01010 10 #define B01011 11 #define B01100 12 #define B01101 13 #define B01110 14 #define B01111 15 #define B10000 16 #define B10001 17 #define B10010 18 #define B10011 19 #define B10100 20 #define B10101 21 #define B10110 22 #define B10111 23 #define B11000 24 #define B11001 25 #define B11010 26 #define B11011 27 #define B11100 28 #define B11101 29 #define B11110 30 #define B11111 31 #define B(n) \ ((((n / 1) % 8) << 0) + \ (((n / 8) % 8) << 1) + \ (((n / 64) % 8) << 2) + \ (((n / 512) % 8) << 3) + \ (((n / 4096) % 8) << 4) + \ (((n / 32768) % 8) << 5) + \ (((n / 262144) % 8) << 6) + \ (((n / 2097152) % 8) << 7)) #endif