From 1a61f09b6a6698a039927c8bf5f3c5be4471b17a Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Mon, 3 Dec 2018 10:36:29 -0700 Subject: [PATCH] Add copy assignment operators for T2 and DualNumber --- src/numerics/include/metaphysicl/dualnumber.h | 22 +++++++++++++++++++ .../include/metaphysicl/dualnumber_decl.h | 6 +++++ 2 files changed, 28 insertions(+) diff --git a/src/numerics/include/metaphysicl/dualnumber.h b/src/numerics/include/metaphysicl/dualnumber.h index d3345944..b6067bd4 100644 --- a/src/numerics/include/metaphysicl/dualnumber.h +++ b/src/numerics/include/metaphysicl/dualnumber.h @@ -72,6 +72,17 @@ inline DualNumber DualNumber::operator! () const { return DualNumber(!_val, !_deriv); } +template +template +inline +DualNumber & +DualNumber::operator=(const DualNumber & dn) +{ + _val = dn.value(); + _deriv = dn.derivatives(); + return *this; +} + template template inline @@ -106,6 +117,17 @@ DualNumber::operator=(const DualNumberSurrogate & dns) return *this; } +template +template +inline +DualNumber & +DualNumber::operator=(const T2 & scalar) +{ + _val = scalar; + _deriv = 0; + return *this; +} + // // Member function definitions // diff --git a/src/numerics/include/metaphysicl/dualnumber_decl.h b/src/numerics/include/metaphysicl/dualnumber_decl.h index 2da2326e..d2fa49cb 100644 --- a/src/numerics/include/metaphysicl/dualnumber_decl.h +++ b/src/numerics/include/metaphysicl/dualnumber_decl.h @@ -74,6 +74,9 @@ class DualNumber : public safe_bool > DualNumber& operator= (const DualNumber & /*src*/) = default; #endif + template + DualNumber & operator=(const DualNumber & dn); + template DualNumber & operator=(const NotADuckDualNumber & nd_dn); @@ -83,6 +86,9 @@ class DualNumber : public safe_bool > template DualNumber & operator= (const DualNumberSurrogate & dns); + template + DualNumber & operator= (const T2 & scalar); + T& value(); const T& value() const;