lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master d584c2a 1/2: Document a MinGW-w64 gcc-7.2.0 a


From: Greg Chicares
Subject: [lmi-commits] [lmi] master d584c2a 1/2: Document a MinGW-w64 gcc-7.2.0 anomaly
Date: Mon, 12 Mar 2018 08:28:44 -0400 (EDT)

branch: master
commit d584c2a02d7dae9e847e5992c2e815beab230f4b
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Document a MinGW-w64 gcc-7.2.0 anomaly
    
    For integral N, log10(10^N) is not an exact integer.
---
 ledger_base.cpp | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/ledger_base.cpp b/ledger_base.cpp
index 54659da..3a1842d 100644
--- a/ledger_base.cpp
+++ b/ledger_base.cpp
@@ -355,7 +355,21 @@ namespace
         double power = -std::log10(a_ScalingFactor);
         // Assert absolute equality of two floating-point quantities, because
         // they must both have integral values.
-        LMI_ASSERT(power == std::floor(power));
+        // PDF !! Fails with MinGW-w64 gcc-7.2.0 .
+        if(power != std::floor(power))
+            {
+            long double discrepancy0 = power - std::floor(power);
+            long double discrepancy1 = power - std::ceil (power);
+            warning()
+                << "Scaling factor is not an integral power of ten."
+                << "\n  " << value_cast<std::string>(power)             << " 
logarithm"
+                << "\n  " << value_cast<std::string>(std::floor(power)) << " 
integer"
+                << "\n  " << value_cast<std::string>(discrepancy0) << " lower 
difference"
+                << "\n  " << value_cast<std::string>(discrepancy1) << " upper 
difference"
+                << LMI_FLUSH
+                ;
+            }
+//      LMI_ASSERT(power == std::floor(power));
         int z = static_cast<int>(power);
 
         // US names are used; UK names are different.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]