[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master c4f84b4 10/10: Never read specamt directly fr
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master c4f84b4 10/10: Never read specamt directly from LedgerInvariant |
Date: |
Fri, 4 Sep 2020 21:16:10 -0400 (EDT) |
branch: master
commit c4f84b46efbfa2fb9959682cce3c67b72658a464
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Never read specamt directly from LedgerInvariant
(Except, for now at least, in the implementation of the accessors
recently added.)
---
accountvalue.cpp | 8 ++++----
ihs_acctval.cpp | 34 +++++++++++++++++-----------------
ihs_avmly.cpp | 4 ++--
ihs_avsolve.cpp | 2 +-
ihs_avstrtgy.cpp | 2 +-
solve.cpp | 4 ++--
6 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/accountvalue.cpp b/accountvalue.cpp
index ac64f53..eaf2dde 100644
--- a/accountvalue.cpp
+++ b/accountvalue.cpp
@@ -291,7 +291,7 @@ void AccountValue::DoYear
pmt = stored_pmts[Year];
YearsPremLoadTgt = Loads_->target_premium_load(GenBasis_)[Year];
YearsMonthlyPolicyFee = Loads_->monthly_policy_fee(GenBasis_)[Year];
- ActualSpecAmt = InvariantValues().SpecAmt[Year];
+ ActualSpecAmt = base_specamt(Year);
// These variables are set for each pass independently.
pmt_mode = Outlay_->ee_premium_modes()[Year];
@@ -446,7 +446,7 @@ void AccountValue::PerformSpecAmtStrategy()
{
case mce_sa_input_scalar:
{
- SA = InvariantValues().SpecAmt[0];
+ SA = base_specamt(0);
}
break;
case mce_sa_maximum:
@@ -466,7 +466,7 @@ void AccountValue::PerformSpecAmtStrategy()
<< " Payment set to scalar input value."
<< LMI_FLUSH
;
- SA = InvariantValues().SpecAmt[0];
+ SA = base_specamt(0);
}
break;
case mce_sa_glp:
@@ -476,7 +476,7 @@ void AccountValue::PerformSpecAmtStrategy()
<< " Payment set to scalar input value."
<< LMI_FLUSH
;
- SA = InvariantValues().SpecAmt[0];
+ SA = base_specamt(0);
}
break;
case mce_sa_gsp: // fall through
diff --git a/ihs_acctval.cpp b/ihs_acctval.cpp
index 93f3f7a..29b6ff4 100644
--- a/ihs_acctval.cpp
+++ b/ihs_acctval.cpp
@@ -157,8 +157,8 @@ double AccountValue::term_specamt(int year) const
double AccountValue::specamt_for_7702(int year) const
{
return
- InvariantValues().SpecAmt [year]
- + (TermIsDbFor7702 ? InvariantValues().TermSpecAmt[year] : 0.0)
+ base_specamt(year)
+ + (TermIsDbFor7702 ? term_specamt(year) : 0.0)
;
}
@@ -167,8 +167,8 @@ double AccountValue::specamt_for_7702(int year) const
double AccountValue::specamt_for_7702A(int year) const
{
return
- InvariantValues().SpecAmt [year]
- + (TermIsDbFor7702A ? InvariantValues().TermSpecAmt[year] : 0.0)
+ base_specamt(year)
+ + (TermIsDbFor7702A ? term_specamt(year) : 0.0)
;
}
@@ -397,7 +397,7 @@ void AccountValue::InitializeLife(mcenum_run_basis a_Basis)
OldDBOpt = DeathBfts_->dbopt()[0];
// TAXATION !! 'OldSA' and 'OldDB' need to be distinguished for 7702 and
7702A,
// with inclusion of term dependent on 'TermIsDbFor7702' and
'TermIsDbFor7702A'.
- OldSA = InvariantValues().SpecAmt[0] + InvariantValues().TermSpecAmt[0];
+ OldSA = base_specamt(0) + term_specamt(0);
// TODO ?? TAXATION !! Shouldn't we increase initial SA if contract in
corridor at issue?
OldDB = OldSA;
@@ -407,7 +407,7 @@ void AccountValue::InitializeLife(mcenum_run_basis a_Basis)
double annual_target_premium = GetModalTgtPrem
(0
,mce_annual
- ,InvariantValues().SpecAmt[0]
+ ,base_specamt(0)
);
double sa = specamt_for_7702(0);
@@ -895,8 +895,8 @@ void AccountValue::InitializeYear()
void AccountValue::InitializeSpecAmt()
{
// TODO ?? These variables are set in current run and used in guar and
midpt.
- ActualSpecAmt = InvariantValues().SpecAmt[Year];
- TermSpecAmt = InvariantValues().TermSpecAmt[Year];
+ ActualSpecAmt = base_specamt(Year);
+ TermSpecAmt = term_specamt(Year);
set_modal_min_premium();
@@ -913,7 +913,7 @@ void AccountValue::InitializeSpecAmt()
// frequent mode (monthly for lmi), because no-lapse guarantees
// are offered for all modes.
//
- // Arguably InvariantValues().TermSpecAmt should be used in the
+ // Arguably the "supplemental" specamt should be included in the
// target or even the minimum calculation in the TermIsNotRider
// case; but that's used only with one family of exotic products
// for which these quantities don't matter anyway.
@@ -922,12 +922,12 @@ void AccountValue::InitializeSpecAmt()
MlyNoLapsePrem = GetModalMinPrem
(target_year
,mce_monthly
- ,InvariantValues().SpecAmt[target_year]
+ ,base_specamt(target_year)
);
UnusedTargetPrem = GetModalTgtPrem
(target_year
,mce_annual
- ,InvariantValues().SpecAmt[target_year]
+ ,base_specamt(target_year)
);
AnnualTargetPrem = UnusedTargetPrem;
@@ -970,7 +970,7 @@ void AccountValue::set_list_bill_premium()
auto const z = GetListBillPremMlyDed
(Year
,Outlay_->er_premium_modes()[Year]
- ,InvariantValues().SpecAmt[Year]
+ ,base_specamt(Year)
);
InvariantValues().ListBillPremium = z;
InvariantValues().ErListBillPremium = z;
@@ -980,8 +980,8 @@ void AccountValue::set_list_bill_premium()
auto const z = GetListBillPremMlyDedEx
(Year
,Outlay_->er_premium_modes()[Year]
- ,InvariantValues().SpecAmt[Year]
- ,InvariantValues().TermSpecAmt[Year]
+ ,base_specamt(Year)
+ ,term_specamt(Year)
);
InvariantValues().EeListBillPremium = z.first;
InvariantValues().ErListBillPremium = z.second;
@@ -1008,7 +1008,7 @@ void AccountValue::set_modal_min_premium()
auto const z = GetModalMinPrem
(Year
,Outlay_->er_premium_modes()[Year]
- ,InvariantValues().SpecAmt[Year]
+ ,base_specamt(Year)
);
InvariantValues().ModalMinimumPremium[Year] = z;
InvariantValues().ErModalMinimumPremium[Year] = z;
@@ -1018,8 +1018,8 @@ void AccountValue::set_modal_min_premium()
auto const z = GetModalPremMlyDedEx
(Year
,Outlay_->er_premium_modes()[Year]
- ,InvariantValues().SpecAmt[Year]
- ,InvariantValues().TermSpecAmt[Year]
+ ,base_specamt(Year)
+ ,term_specamt(Year)
);
InvariantValues().EeModalMinimumPremium[Year] = z.first;
InvariantValues().ErModalMinimumPremium[Year] = z.second;
diff --git a/ihs_avmly.cpp b/ihs_avmly.cpp
index fa959ae..22b1cc5 100644
--- a/ihs_avmly.cpp
+++ b/ihs_avmly.cpp
@@ -1528,13 +1528,13 @@ void AccountValue::TxSetBOMAV()
{
if(!yare_input_.TermRider && !TermIsNotRider)
{
- LMI_ASSERT(0.0 == InvariantValues().TermSpecAmt[0]);
+ LMI_ASSERT(0.0 == term_specamt(0));
}
LMI_ASSERT(yare_input_.InforceSpecAmtLoadBase <= SpecAmtLoadLimit);
SpecAmtLoadBase =
(0 == Year && 0 == Month)
? std::max
- (InvariantValues().TermSpecAmt[0] +
InvariantValues().SpecAmt[0]
+ (term_specamt(0) + base_specamt(0)
,NetPmts[0] * YearsCorridorFactor
)
: yare_input_.InforceSpecAmtLoadBase
diff --git a/ihs_avsolve.cpp b/ihs_avsolve.cpp
index 15411f4..d291757 100644
--- a/ihs_avsolve.cpp
+++ b/ihs_avsolve.cpp
@@ -221,7 +221,7 @@ double AccountValue::SolveTest(double a_CandidateValue)
{
// The input specified amount mustn't be used here because
// it wouldn't reflect dynamic adjustments.
- SolveTargetCsv_ = InvariantValues().SpecAmt[SolveTargetDuration_ - 1];
+ SolveTargetCsv_ = base_specamt(SolveTargetDuration_ - 1);
}
if(mce_solve_for_tax_basis == SolveTarget_)
diff --git a/ihs_avstrtgy.cpp b/ihs_avstrtgy.cpp
index 2196b74..44374fd 100644
--- a/ihs_avstrtgy.cpp
+++ b/ihs_avstrtgy.cpp
@@ -266,7 +266,7 @@ double AccountValue::DoPerformPmtStrategy
case mce_pmt_target:
{
int const target_year = TgtPremFixedAtIssue ? 0 : Year;
- double sa = InvariantValues().SpecAmt[target_year];
+ double sa = base_specamt(target_year);
return GetModalTgtPrem(Year, a_CurrentMode, sa);
}
case mce_pmt_mep:
diff --git a/solve.cpp b/solve.cpp
index b553bf4..f56d475 100644
--- a/solve.cpp
+++ b/solve.cpp
@@ -109,12 +109,12 @@ double SolveTest()
{
case mce_option1:
{
- y = ConstThat->InvariantValues().SpecAmt[ThatSolveTgtYear
- 1];
+ y = ConstThat->base_specamt(ThatSolveTgtYear - 1);
}
break;
case mce_option2:
{
- y = ConstThat->InvariantValues().SpecAmt[ThatSolveTgtYear
- 1];
+ y = ConstThat->base_specamt(ThatSolveTgtYear - 1);
}
break;
case mce_rop: // fall through
- [lmi-commits] [lmi] master updated (520bb97 -> c4f84b4), Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master f2e2cd7 01/10: Refactor to do less work, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master 9878b92 02/10: Refactor, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master 8fa4ca4 03/10: Reformat and append to commentary, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master 4f10238 05/10: Rename a local variable, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master 42f390d 06/10: Improve documentation, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master e8c4054 04/10: Localize a data member, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master e360e0d 07/10: Add some commentary on a marked defect, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master 6a54fd9 09/10: Never read 7702 or 7702A specamt directly from LedgerInvariant, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master f474d10 08/10: Prepare to abstract specified amount, Greg Chicares, 2020/09/04
- [lmi-commits] [lmi] master c4f84b4 10/10: Never read specamt directly from LedgerInvariant,
Greg Chicares <=