[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [6200] Refactor
From: |
Greg Chicares |
Subject: |
[lmi-commits] [6200] Refactor |
Date: |
Sun, 31 May 2015 18:03:42 +0000 |
Revision: 6200
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=6200
Author: chicares
Date: 2015-05-31 18:03:40 +0000 (Sun, 31 May 2015)
Log Message:
-----------
Refactor
Modified Paths:
--------------
lmi/trunk/account_value.hpp
lmi/trunk/ihs_avstrtgy.cpp
Modified: lmi/trunk/account_value.hpp
===================================================================
--- lmi/trunk/account_value.hpp 2015-05-31 17:26:31 UTC (rev 6199)
+++ lmi/trunk/account_value.hpp 2015-05-31 18:03:40 UTC (rev 6200)
@@ -212,8 +212,10 @@
void PerformSpecAmtStrategy();
double CalculateSpecAmtFromStrategy
- (int actual_year
- ,int reference_year
+ (int actual_year
+ ,int reference_year
+ ,double explicit_value
+ ,mcenum_sa_strategy strategy
) const;
void PerformPmtStrategy(double* a_Pmt); // Antediluvian.
Modified: lmi/trunk/ihs_avstrtgy.cpp
===================================================================
--- lmi/trunk/ihs_avstrtgy.cpp 2015-05-31 17:26:31 UTC (rev 6199)
+++ lmi/trunk/ihs_avstrtgy.cpp 2015-05-31 18:03:40 UTC (rev 6200)
@@ -61,34 +61,23 @@
/// No minimum is imposed here; see PerformSpecAmtStrategy().
double AccountValue::CalculateSpecAmtFromStrategy
- (int actual_year
- ,int reference_year
+ (int actual_year
+ ,int reference_year
+ ,double explicit_value
+ ,mcenum_sa_strategy strategy
) const
{
- double r = DeathBfts_->specamt()[actual_year];
-
- // Don't override a specamt that's being solved for.
- if
- (
- mce_solve_specamt == yare_input_.SolveType
- && yare_input_.SolveBeginYear <= actual_year
- && actual_year < std::min(yare_input_.SolveEndYear,
BasicValues::Length)
- )
- {
- return r;
- }
-
double annualized_pmt =
InvariantValues().EeMode[reference_year].value()
* InvariantValues().EePmt [reference_year]
+ InvariantValues().ErMode[reference_year].value()
* InvariantValues().ErPmt [reference_year]
;
- switch(yare_input_.SpecifiedAmountStrategy[actual_year])
+ switch(strategy)
{
case mce_sa_input_scalar:
{
- return r;
+ return explicit_value;
}
case mce_sa_maximum:
{
@@ -120,12 +109,7 @@
}
default:
{
- fatal_error()
- << "Case "
- << yare_input_.SpecifiedAmountStrategy[actual_year]
- << " not found."
- << LMI_FLUSH
- ;
+ fatal_error() << "Case " << strategy << " not found." << LMI_FLUSH;
throw "Unreachable--silences a compiler diagnostic.";
}
}
@@ -156,12 +140,24 @@
{
bool t = yare_input_.TermRider && 0.0 != yare_input_.TermRiderAmount;
double m = minimum_specified_amount(0 == j, t);
- double z = CalculateSpecAmtFromStrategy(j, 0);
+ double explicit_value = DeathBfts_->specamt()[j];
+ mcenum_sa_strategy strategy = yare_input_.SpecifiedAmountStrategy[j];
+ // Don't override a specamt that's being solved for.
+ if
+ (
+ mce_solve_specamt == yare_input_.SolveType
+ && yare_input_.SolveBeginYear <= j
+ && j < std::min(yare_input_.SolveEndYear, BasicValues::Length)
+ )
+ {
+ strategy = mce_sa_input_scalar;
+ }
+ double z = CalculateSpecAmtFromStrategy(j, 0, explicit_value,
strategy);
DeathBfts_->set_specamt(round_specamt()(std::max(m, z)), j, 1 + j);
if
( j == InforceYear
&& !(0 == InforceYear && 0 == InforceMonth)
- && mce_sa_input_scalar == yare_input_.SpecifiedAmountStrategy[j]
+ && mce_sa_input_scalar == strategy
&& inforce_specamt < m
&& !Solving
)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [6200] Refactor,
Greg Chicares <=