[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master cb16682 10/14: Make i7702 vector assignments
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master cb16682 10/14: Make i7702 vector assignments idempotent |
Date: |
Thu, 1 Apr 2021 18:15:18 -0400 (EDT) |
branch: master
commit cb16682324113f265e625d9b73ec4ec1c769e003
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Make i7702 vector assignments idempotent
This is a compelling use case for operator<<=() instead of operator+().
---
i7702.cpp | 12 ++++++------
i7702_init.cpp | 8 ++++----
i7702_test.cpp | 4 ++++
3 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/i7702.cpp b/i7702.cpp
index b3b70f7..808b661 100644
--- a/i7702.cpp
+++ b/i7702.cpp
@@ -267,7 +267,7 @@ void i7702::initialize()
{
assert_preconditions();
// max(A0, B, C)
- ic_usual_ += Max
+ ic_usual_ <<= Max
(Max
((Max(A0_, Max(Bgen_, Cgen_)) ) * use_gen_
,(Max(A0_, Max(Bsep_, Csep_)) ) * use_sep_
@@ -278,7 +278,7 @@ void i7702::initialize()
)
);
// max(A0, B ) - D
- ic_glp_ += Max
+ ic_glp_ <<= Max
(Max
((Max(A0_, Bgen_ ) - Dgen_) * use_gen_
,(Max(A0_, Bsep_ ) - Dsep_) * use_sep_
@@ -289,7 +289,7 @@ void i7702::initialize()
)
);
// max(A1, B, C) - D
- ic_gsp_ += Max
+ ic_gsp_ <<= Max
(Max
((Max(A1_, Max(Bgen_, Cgen_)) - Dgen_) * use_gen_
,(Max(A1_, Max(Bsep_, Csep_)) - Dsep_) * use_sep_
@@ -347,9 +347,9 @@ void i7702::initialize()
if(!each_equal(Em_, 0.0))
{
- ig_usual_ += Max(ic_usual_, Em_);
- ig_glp_ += Max(ic_glp_ , Em_);
- ig_gsp_ += Max(ic_gsp_ , Em_);
+ ig_usual_ <<= Max(ic_usual_, Em_);
+ ig_glp_ <<= Max(ic_glp_ , Em_);
+ ig_gsp_ <<= Max(ic_gsp_ , Em_);
}
if(trace_)
diff --git a/i7702_init.cpp b/i7702_init.cpp
index 49438d7..fcabe4c 100644
--- a/i7702_init.cpp
+++ b/i7702_init.cpp
@@ -148,12 +148,12 @@ i7702::i7702
database.query_into(DB_NaarDiscount, Em_);
bool const no_naar_discount = zero == Em_;
- std::vector<double> theoretical_naar_discount(length_);
- theoretical_naar_discount +=
+ std::vector<double> theoretical_naar_discount {};
+ theoretical_naar_discount <<=
apply_unary(i_upper_12_over_12_from_i<double>(), Bgen_);
- std::vector<double> diff(length_);
- diff += fabs(Em_ - theoretical_naar_discount);
+ std::vector<double> diff {};
+ diff <<= fabs(Em_ - theoretical_naar_discount);
minmax<double> const mm(diff);
constexpr double tolerance {0.0000001};
LMI_ASSERT(no_naar_discount || mm < tolerance);
diff --git a/i7702_test.cpp b/i7702_test.cpp
index e5e6981..949e882 100644
--- a/i7702_test.cpp
+++ b/i7702_test.cpp
@@ -126,6 +126,10 @@ void i7702_test::test1()
LMI_TEST(materially_equal(0.0032738 , z.ig_usual()[1]));
std::cout<< std::setprecision(DECIMAL_DIG) << z.ig_usual()[0] << std::endl;
std::cout<< std::setprecision(DECIMAL_DIG) << z.ig_usual()[1] << std::endl;
+
+ z.initialize();
+ LMI_TEST(materially_equal(0.00407412378364830143895, z.ig_usual()[0]));
+ LMI_TEST(materially_equal(0.0032738 , z.ig_usual()[1]));
}
int test_main(int, char*[])
- [lmi-commits] [lmi] master updated (8d18fa1 -> 29b2ad4), Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 98a214c 01/14: Rule of three <<< five < zero, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master c309291 02/14: Factor out precondition assertions, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 218e02a 03/14: Reflect short-term guarantees in 7702 interest rates, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 2d10858 06/14: Use DB_AnnIntRateGspDelta instead of hard-coding two percent, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 8a9085a 08/14: Reflect DB_GenAcctIntBonus in 7702 interest, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 836c6f9 09/14: Refactor unit test, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 637f0de 12/14: Reorder unit-test functions, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master c291b59 05/14: Assert more preconditions, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master cb16682 10/14: Make i7702 vector assignments idempotent,
Greg Chicares <=
- [lmi-commits] [lmi] master 8723736 11/14: Make bland1() truly bland, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 36266d1 13/14: Don't echo unneeded values in unit test, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 29b2ad4 14/14: Measure i7702 speed, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master ad538f7 07/14: Fix defect introduced 20210314T2207Z: wrong VLR, Greg Chicares, 2021/04/01
- [lmi-commits] [lmi] master 26db3ec 04/14: Move an assertion upstream, and generalize it, Greg Chicares, 2021/04/01