[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master ed9a11d 16/16: Address ledger members formerl
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master ed9a11d 16/16: Address ledger members formerly ignored in compositing |
Date: |
Sat, 11 Apr 2020 20:36:05 -0400 (EDT) |
branch: master
commit ed9a11d46b0f78064b725c4c47dea132128cf2d1
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Address ledger members formerly ignored in compositing
For each of the members noted in the last commit, viz.:
MaleProportion
NonsmokerProportion
SubstdTable
SpouseIssueAge
CurrentCoiMultiplier
implemented a plausible compositing method, and added a default value
as needed (i.e., for all but 'SubstdTable').
---
ledger_invariant.cpp | 47 +++++++++++++++++++++++------------------------
1 file changed, 23 insertions(+), 24 deletions(-)
diff --git a/ledger_invariant.cpp b/ledger_invariant.cpp
index 7783fdc..561c6b4 100644
--- a/ledger_invariant.cpp
+++ b/ledger_invariant.cpp
@@ -468,31 +468,30 @@ void LedgerInvariant::Init()
EeMode .assign(Length, mce_mode(mce_annual));
ErMode .assign(Length, mce_mode(mce_annual));
- InforceYear = Length;
- InforceMonth = 11;
-
- MecYear = Length;
- MecMonth = 11;
+ // Nonscalable scalars.
// TODO ?? Probably every member should be initialized.
-// MaleProportion // Default value unaffected by compositing.
-// NonsmokerProportion // Default value unaffected by compositing.
-// SubstdTable // Default value unaffected by compositing.
-// SpouseIssueAge // Default value unaffected by compositing.
-// CurrentCoiMultiplier // Default value unaffected by compositing.
-
+ MaleProportion = 0;
+ NonsmokerProportion = 0;
Age = 0;
EndtAge = 100;
+ NoLongerIssued = false;
+ AllowGroupQuote = true;
+ InforceYear = Length;
+ InforceMonth = 11;
+ MecYear = Length;
+ MecMonth = 11;
+ SpouseIssueAge = 100;
+ IsSinglePremium = oe_flexible_premium;
+ CurrentCoiMultiplier= 0;
+ NoLapseAlwaysActive = false;
NoLapseMinDur = 100;
NoLapseMinAge = 100;
- NoLapseAlwaysActive = false;
Has1035ExchCharge = false;
-
WriteTsvFile = false;
SupplementalReport = true;
- NoLongerIssued = false;
- AllowGroupQuote = true;
- IsSinglePremium = oe_flexible_premium;
+
+ // Private internals.
irr_precision_ = 0;
irr_initialized_ = false;
@@ -564,16 +563,16 @@ LedgerInvariant& LedgerInvariant::PlusEq(LedgerInvariant
const& a_Addend)
// Nonscalable scalars.
-// MaleProportion // Default value unaffected by compositing.
-// NonsmokerProportion // Default value unaffected by compositing.
- GuarMaxMandE = std::max(GuarMaxMandE ,
a_Addend.GuarMaxMandE );
- InitDacTaxRate = std::max(InitDacTaxRate ,
a_Addend.InitDacTaxRate );
- InitPremTaxRate = std::max(InitPremTaxRate,
a_Addend.InitPremTaxRate);
+ MaleProportion = std::max(MaleProportion ,
a_Addend.MaleProportion);
+ NonsmokerProportion = std::max(NonsmokerProportion,
a_Addend.NonsmokerProportion);
+ GuarMaxMandE = std::max(GuarMaxMandE ,
a_Addend.GuarMaxMandE);
+ InitDacTaxRate = std::max(InitDacTaxRate ,
a_Addend.InitDacTaxRate);
+ InitPremTaxRate = std::max(InitPremTaxRate ,
a_Addend.InitPremTaxRate);
GenderDistinct = a_Addend.GenderDistinct;
GenderBlended = a_Addend.GenderBlended;
SmokerDistinct = a_Addend.SmokerDistinct;
SmokerBlended = a_Addend.SmokerBlended;
-// SubstdTable // Default value unaffected by compositing.
+ SubstdTable = a_Addend.SubstdTable;
Age = std::min(Age, a_Addend.Age);
RetAge = std::min(RetAge, a_Addend.RetAge); // TODO
?? Does this make sense?
EndtAge = std::max(EndtAge, a_Addend.EndtAge);
@@ -615,7 +614,7 @@ LedgerInvariant& LedgerInvariant::PlusEq(LedgerInvariant
const& a_Addend)
HasSupplSpecAmt = HasSupplSpecAmt ||
a_Addend.HasSupplSpecAmt;
HasChildRider = HasChildRider ||
a_Addend.HasChildRider ;
HasSpouseRider = HasSpouseRider ||
a_Addend.HasSpouseRider ;
-// SpouseIssueAge // Default value unaffected by compositing.
+ SpouseIssueAge = std::min(SpouseIssueAge,
a_Addend.SpouseIssueAge);
HasHoneymoon = HasHoneymoon || a_Addend.HasHoneymoon ;
PostHoneymoonSpread = a_Addend.PostHoneymoonSpread ;
SplitMinPrem = SplitMinPrem || a_Addend.SplitMinPrem ;
@@ -631,7 +630,7 @@ LedgerInvariant& LedgerInvariant::PlusEq(LedgerInvariant
const& a_Addend)
// routine.
IsInforce = IsInforce || a_Addend.IsInforce ;
-// CurrentCoiMultiplier // Default value unaffected by compositing.
+ CurrentCoiMultiplier = std::max(a_Addend.CurrentCoiMultiplier ,
CurrentCoiMultiplier );
NoLapseAlwaysActive = a_Addend.NoLapseAlwaysActive||
NoLapseAlwaysActive;
NoLapseMinDur = std::min(a_Addend.NoLapseMinDur,
NoLapseMinDur);
NoLapseMinAge = std::min(a_Addend.NoLapseMinAge,
NoLapseMinAge);
- [lmi-commits] [lmi] master 5f5f3b5 01/16: Move a large comment block outside a function definition, (continued)
- [lmi-commits] [lmi] master 5f5f3b5 01/16: Move a large comment block outside a function definition, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master d888936 06/16: Move a comment to a more appropriate place, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master cbc0ec5 03/16: Sort string members together in declaration order, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master f7689a2 08/16: Regularize whitespace, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master 95c2f88 02/16: Declutter, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master ce9d6b8 04/16: Change compositing for some string members, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master df9c566 07/16: Sort nonscalable scalar members together in declaration order, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master a7a9404 05/16: Simplify [348], Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master 359c74c 09/16: Treat 'InitErMode' the same as any other ledger string, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master 255b816 15/16: Mark ledger members dubiously ignored in compositing, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master ed9a11d 16/16: Address ledger members formerly ignored in compositing,
Greg Chicares <=
- [lmi-commits] [lmi] master 2e134db 11/16: Add 'InitEeMode' to ledger, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master bb389e4 10/16: Alphabetize members of enumerative type, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master 5dfa890 13/16: Reorder and label for greater uniformity, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master db81cdc 12/16: Correct a guaranteed-premium footnote, Greg Chicares, 2020/04/11
- [lmi-commits] [lmi] master 1f6064d 14/16: Fix index-origin errors in port from XSL-FO, Greg Chicares, 2020/04/11