[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master d59b96b 5/8: Reimplement 7702 interest-rate d
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master d59b96b 5/8: Reimplement 7702 interest-rate determination |
Date: |
Sun, 14 Mar 2021 16:03:31 -0400 (EDT) |
branch: master
commit d59b96b4a56af66eccaecde183e8bc50bb045664
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Reimplement 7702 interest-rate determination
For the nonce, left the old implementation in place for testing.
---
i7702.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/i7702.cpp b/i7702.cpp
index cca706d..70a67da 100644
--- a/i7702.cpp
+++ b/i7702.cpp
@@ -403,8 +403,59 @@ i7702::i7702
,Max(Em_, theoretical_naar_discount)
);
ig_ = no_naar_discount ? zero : operative_naar_discount;
+
+ // Test old implementation against new.
+ initialize();
+ LMI_ASSERT(ic_usual_ == gross_ );
+ LMI_ASSERT(ic_glp_ == net_glp_);
+ LMI_ASSERT(ic_gsp_ == net_gsp_);
+ LMI_ASSERT(ig_usual_ == ig_ );
}
void i7702::initialize()
{
+ // max(A0, B, C)
+ ic_usual_ += Max
+ (Max
+ ((Max(A0_, Max(Bgen_, Cgen_)) ) * use_gen_
+ ,(Max(A0_, Max(Bsep_, Csep_)) ) * use_sep_
+ )
+ ,Max
+ ((Max(A0_, Max(Bflr_, Cflr_)) ) * use_flr_
+ ,(Max(A0_, Max(Bvlr_, Cvlr_)) ) * use_vlr_
+ )
+ );
+ // max(A0, B ) - D
+ ic_glp_ += Max
+ (Max
+ ((Max(A0_, Bgen_ ) - Dgen_) * use_gen_
+ ,(Max(A0_, Bsep_ ) - Dsep_) * use_sep_
+ )
+ ,Max
+ ((Max(A0_, Bflr_ ) - Dflr_) * use_flr_
+ ,(Max(A0_, Bvlr_ ) - Dvlr_) * use_vlr_
+ )
+ );
+ // max(A1, B, C) - D
+ ic_gsp_ += Max
+ (Max
+ ((Max(A1_, Max(Bgen_, Cgen_)) - Dgen_) * use_gen_
+ ,(Max(A1_, Max(Bsep_, Csep_)) - Dsep_) * use_sep_
+ )
+ ,Max
+ ((Max(A1_, Max(Bflr_, Cflr_)) - Dflr_) * use_flr_
+ ,(Max(A1_, Max(Bvlr_, Cvlr_)) - Dvlr_) * use_vlr_
+ )
+ );
+ // Convert all to monthly.
+ assign(ic_usual_, apply_unary(i_upper_12_over_12_from_i<double>(),
ic_usual_));
+ assign(ic_glp_ , apply_unary(i_upper_12_over_12_from_i<double>(), ic_glp_
));
+ assign(ic_gsp_ , apply_unary(i_upper_12_over_12_from_i<double>(), ic_gsp_
));
+
+ if(!each_equal(Em_, 0.0))
+ {
+ ig_usual_ += max(ic_usual_, Em_);
+ ig_glp_ += max(ic_glp_ , Em_);
+ ig_gsp_ += max(ic_gsp_ , Em_);
+ }
}
- [lmi-commits] [lmi] master updated (24e01a1 -> cd890b4), Greg Chicares, 2021/03/14
- [lmi-commits] [lmi] master 21d8366 4/8: Assign and use A1_, Greg Chicares, 2021/03/14
- [lmi-commits] [lmi] master 12df365 6/8: Mark some shortcomings to be remediated soon, Greg Chicares, 2021/03/14
- [lmi-commits] [lmi] master 258a675 1/8: Add and use a "length" data member, Greg Chicares, 2021/03/14
- [lmi-commits] [lmi] master 809d1c4 2/8: Add flags to enable or disable i7702 account-paths, Greg Chicares, 2021/03/14
- [lmi-commits] [lmi] master 6dd530d 3/8: Conditionally override use of loan rates for 7702 interest, Greg Chicares, 2021/03/14
- [lmi-commits] [lmi] master cd890b4 8/8: Mark old implementation for expunction, Greg Chicares, 2021/03/14
- [lmi-commits] [lmi] master d59b96b 5/8: Reimplement 7702 interest-rate determination,
Greg Chicares <=
- [lmi-commits] [lmi] master cc9b752 7/8: Remove redundant comments, Greg Chicares, 2021/03/14