lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] master 79741b1 01/13: Assert a precondition more con


From: Greg Chicares
Subject: [lmi-commits] [lmi] master 79741b1 01/13: Assert a precondition more consistently
Date: Fri, 9 Apr 2021 18:42:36 -0400 (EDT)

branch: master
commit 79741b1ed3d173db10b99bd144e69d65753d70b7
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Assert a precondition more consistently
    
    Reviewed all use of std::{min,max}_element() and added assertions in
    the few instances that weren't already guarded against segfaulting.
    
    Incidentally replaced 0<size() with !empty().
    
    A particular gcc binary had issued a warning for this nearby line:
         LMI_ASSERT(Bfts.begin() <= last_bft_in_test_period);
    but the warning was apparently invalid--see:
      https://lists.nongnu.org/archive/html/lmi/2021-04/msg00005.html
      https://lists.nongnu.org/archive/html/lmi/2021-04/msg00008.html
---
 ihs_irc7702a.cpp      | 3 ++-
 input_realization.cpp | 4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/ihs_irc7702a.cpp b/ihs_irc7702a.cpp
index 98aeb03..1088a32 100644
--- a/ihs_irc7702a.cpp
+++ b/ihs_irc7702a.cpp
@@ -188,7 +188,7 @@ void Irc7702A::Initialize7702A
     LMI_ASSERT(a_ContractYear <= a_PolicyYear);
     state_.B0_deduced_policy_year   = a_PolicyYear;
     state_.B1_deduced_contract_year = a_ContractYear;
-    LMI_ASSERT(0 < a_Bfts.size());
+    LMI_ASSERT(!a_Bfts.empty());
     double lowest_bft = *std::min_element(a_Bfts.begin(), a_Bfts.end());
     // Allow Bfts to be zero for solves.
     LMI_ASSERT(0.0 <= lowest_bft);
@@ -1304,6 +1304,7 @@ double Irc7702A::DetermineLowestBft() const
         ,Bfts.begin() + std::min(TestPeriodLen, TestPeriodDur)
         );
     LMI_ASSERT(Bfts.begin() <= last_bft_in_test_period);
+    LMI_ASSERT(!Bfts.empty());
 // TAXATION !! This is harmful for inforce if inforce history is unreliable:
     LowestBft = *std::min_element(Bfts.begin(), last_bft_in_test_period);
     return LowestBft;
diff --git a/input_realization.cpp b/input_realization.cpp
index d474413..b97eff9 100644
--- a/input_realization.cpp
+++ b/input_realization.cpp
@@ -298,6 +298,7 @@ std::string Input::RealizeExtraCompensationOnAssets()
         return s;
         }
 
+    LMI_ASSERT(!ExtraCompensationOnAssetsRealized_.empty());
     double highest = std::max_element
         (ExtraCompensationOnAssetsRealized_.begin()
         ,ExtraCompensationOnAssetsRealized_.end()
@@ -329,6 +330,7 @@ std::string Input::RealizeExtraCompensationOnPremium()
         return s;
         }
 
+    LMI_ASSERT(!ExtraCompensationOnPremiumRealized_.empty());
     double highest = std::max_element
         (ExtraCompensationOnPremiumRealized_.begin()
         ,ExtraCompensationOnPremiumRealized_.end()
@@ -384,6 +386,7 @@ std::string Input::RealizeCurrentCoiMultiplier()
         }
 
     double const z = database_->query<double>(DB_MinInputCoiMult);
+    LMI_ASSERT(!CurrentCoiMultiplierRealized_.empty());
     double lowest = std::min_element
         (CurrentCoiMultiplierRealized_.begin()
         ,CurrentCoiMultiplierRealized_.end()
@@ -790,6 +793,7 @@ std::string Input::RealizeSeparateAccountRate()
         // than twelve percent.
         max_sep_acct_rate = 1.0;
         }
+    LMI_ASSERT(!SeparateAccountRateRealized_.empty());
     double highest = std::max_element
         (SeparateAccountRateRealized_.begin()
         ,SeparateAccountRateRealized_.end()



reply via email to

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