X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Freal.h;h=7f29ca87a4b0bee02e92262f7fff7082a060ca36;hp=adb9503369456988997f67118b027da00c20cfe3;hb=58a6719da2337b3e6e20b581885f170bbe5fc480;hpb=03cc1b0a0d0705e0b1d92e13fdb18608c7a00272 diff --git a/src/real.h b/src/real.h index adb9503..7f29ca8 100644 --- a/src/real.h +++ b/src/real.h @@ -128,7 +128,14 @@ namespace IPDF inline double Double(long double f) {return (double)(f);} inline double Sqrt(double f) {return sqrt(f);} inline double Abs(double a) {return fabs(a);} - inline int64_t Int64(double a){return (int64_t)a;} + inline int64_t Int64(double a) + { + if (a < INT64_MIN) + return INT64_MIN; + if (a > INT64_MAX) + return INT64_MAX; + return (int64_t)(a); + } inline Real Power(const Real & a, int n) { @@ -178,7 +185,15 @@ namespace IPDF inline Real RealFromStr(const std::string & str) {return RealFromStr(str.c_str());} - inline void DebugRealInfo() {Debug("Compiled with REAL = %d => \"%s\" sizeof(Real) == %d bytes", REALTYPE, g_real_name[REALTYPE], sizeof(Real));} + inline void DebugRealInfo() + { + Debug("Compiled with REAL = %d => \"%s\" sizeof(Real) == %d bytes", REALTYPE, g_real_name[REALTYPE], sizeof(Real)); + #if REALTYPE == REAL_PARANOIDNUMBER + #ifdef PARANOID_SIZE_LIMIT + Debug("Size limit of %d is being enforced", PARANOID_SIZE_LIMIT); + #endif + #endif + } }