From 1bb99466bcfa188bca00855f80bd6098b0882419 Mon Sep 17 00:00:00 2001 From: couriersud Date: Thu, 24 Sep 2020 07:53:11 +0200 Subject: netlist: code refactoring * use default move and copy constructors * various minor edits like adding noexcept * removed a lot of inline keywords - you can't beat the compiler --- src/lib/netlist/plib/pmath.h | 106 +++++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 53 deletions(-) (limited to 'src/lib/netlist/plib/pmath.h') diff --git a/src/lib/netlist/plib/pmath.h b/src/lib/netlist/plib/pmath.h index 02d634529a0..01912dd2183 100644 --- a/src/lib/netlist/plib/pmath.h +++ b/src/lib/netlist/plib/pmath.h @@ -30,50 +30,50 @@ namespace plib template struct constants { - static inline constexpr T zero() noexcept { return static_cast(0); } // NOLINT - static inline constexpr T half() noexcept { return static_cast(0.5); } // NOLINT - static inline constexpr T one() noexcept { return static_cast(1); } // NOLINT - static inline constexpr T two() noexcept { return static_cast(2); } // NOLINT - static inline constexpr T three() noexcept { return static_cast(3); } // NOLINT - static inline constexpr T four() noexcept { return static_cast(4); } // NOLINT - static inline constexpr T hundred()noexcept { return static_cast(100); } // NOLINT - - static inline constexpr T one_thirds() noexcept { return fraction(one(), three()); } - static inline constexpr T two_thirds() noexcept { return fraction(two(), three()); } - - static inline constexpr T ln2() noexcept { return static_cast(0.6931471805599453094172321214581766L); } // NOLINT - static inline constexpr T sqrt2() noexcept { return static_cast(1.4142135623730950488016887242096982L); } // NOLINT - static inline constexpr T sqrt3() noexcept { return static_cast(1.7320508075688772935274463415058723L); } // NOLINT - static inline constexpr T sqrt3_2() noexcept { return static_cast(0.8660254037844386467637231707529362L); } // NOLINT - static inline constexpr T pi() noexcept { return static_cast(3.1415926535897932384626433832795029L); } // NOLINT + static constexpr T zero() noexcept { return static_cast(0); } // NOLINT + static constexpr T half() noexcept { return static_cast(0.5); } // NOLINT + static constexpr T one() noexcept { return static_cast(1); } // NOLINT + static constexpr T two() noexcept { return static_cast(2); } // NOLINT + static constexpr T three() noexcept { return static_cast(3); } // NOLINT + static constexpr T four() noexcept { return static_cast(4); } // NOLINT + static constexpr T hundred()noexcept { return static_cast(100); } // NOLINT + + static constexpr T one_thirds() noexcept { return fraction(one(), three()); } + static constexpr T two_thirds() noexcept { return fraction(two(), three()); } + + static constexpr T ln2() noexcept { return static_cast(0.6931471805599453094172321214581766L); } // NOLINT + static constexpr T sqrt2() noexcept { return static_cast(1.4142135623730950488016887242096982L); } // NOLINT + static constexpr T sqrt3() noexcept { return static_cast(1.7320508075688772935274463415058723L); } // NOLINT + static constexpr T sqrt3_2() noexcept { return static_cast(0.8660254037844386467637231707529362L); } // NOLINT + static constexpr T pi() noexcept { return static_cast(3.1415926535897932384626433832795029L); } // NOLINT /// \brief Electric constant of vacuum /// - static inline constexpr T eps_0() noexcept { return static_cast(8.854187817e-12); } // NOLINT + static constexpr T eps_0() noexcept { return static_cast(8.854187817e-12); } // NOLINT // \brief Relative permittivity of Silicon dioxide /// - static inline constexpr T eps_SiO2() noexcept { return static_cast(3.9); } // NOLINT + static constexpr T eps_SiO2() noexcept { return static_cast(3.9); } // NOLINT /// \brief Relative permittivity of Silicon /// - static inline constexpr T eps_Si() noexcept { return static_cast(11.7); } // NOLINT + static constexpr T eps_Si() noexcept { return static_cast(11.7); } // NOLINT /// \brief Boltzmann constant /// - static inline constexpr T k_b() noexcept { return static_cast(1.38064852e-23); } // NOLINT + static constexpr T k_b() noexcept { return static_cast(1.38064852e-23); } // NOLINT /// \brief room temperature (gives VT = 0.02585 at T=300) /// - static inline constexpr T T0() noexcept { return static_cast(300); } // NOLINT + static constexpr T T0() noexcept { return static_cast(300); } // NOLINT /// \brief Elementary charge /// - static inline constexpr T Q_e() noexcept { return static_cast(1.6021765314e-19); } // NOLINT + static constexpr T Q_e() noexcept { return static_cast(1.6021765314e-19); } // NOLINT /// \brief Intrinsic carrier concentration in 1/m^3 of Silicon /// - static inline constexpr T NiSi() noexcept { return static_cast(1.45e16); } // NOLINT + static constexpr T NiSi() noexcept { return static_cast(1.45e16); } // NOLINT /// \brief clearly identify magic numbers in code /// @@ -82,10 +82,10 @@ namespace plib /// later. /// template - static inline constexpr T magic(V &&v) noexcept { return static_cast(v); } + static constexpr T magic(V &&v) noexcept { return static_cast(v); } template - static inline constexpr T fraction(V &&v1, V &&v2) noexcept { return static_cast(v1 / v2); } + static constexpr T fraction(V &&v1, V &&v2) noexcept { return static_cast(v1 / v2); } }; /// \brief typesafe reciprocal function @@ -95,7 +95,7 @@ namespace plib /// \return reciprocal of argument /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> reciprocal(T v) noexcept { return constants::one() / v; @@ -108,7 +108,7 @@ namespace plib /// \return absolute value of argument /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> abs(T v) noexcept { return std::abs(v); @@ -121,7 +121,7 @@ namespace plib /// \return absolute value of argument /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> sqrt(T v) noexcept { return std::sqrt(v); @@ -135,7 +135,7 @@ namespace plib /// \return sqrt(v1*v1+v2*v2) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> hypot(T v1, T v2) noexcept { return std::hypot(v1, v2); @@ -148,7 +148,7 @@ namespace plib /// \return exp(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> exp(T v) noexcept { return std::exp(v); @@ -161,7 +161,7 @@ namespace plib /// \return log(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> log(T v) noexcept { return std::log(v); @@ -174,7 +174,7 @@ namespace plib /// \return tanh(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> tanh(T v) noexcept { return std::tanh(v); @@ -187,7 +187,7 @@ namespace plib /// \return floor(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> floor(T v) noexcept { return std::floor(v); @@ -200,7 +200,7 @@ namespace plib /// \return log(1 + v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> log1p(T v) noexcept { return std::log1p(v); @@ -213,7 +213,7 @@ namespace plib /// \return sin(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> sin(T v) noexcept { return std::sin(v); @@ -226,7 +226,7 @@ namespace plib /// \return cos(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> cos(T v) noexcept { return std::cos(v); @@ -239,7 +239,7 @@ namespace plib /// \return trunc(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> trunc(T v) noexcept { return std::trunc(v); @@ -253,7 +253,7 @@ namespace plib /// \return signum(v) /// template - static inline constexpr std::enable_if_t::value, T> + static constexpr std::enable_if_t::value, T> signum(T v, T r = static_cast(1)) { constexpr const auto z(static_cast(0)); @@ -271,80 +271,80 @@ namespace plib /// FIXME: limited implementation /// template - static inline + static auto pow(T1 v, T2 p) noexcept -> decltype(std::pow(v, p)) { return std::pow(v, p); } #if (PUSE_FLOAT128) - static inline constexpr FLOAT128 reciprocal(FLOAT128 v) noexcept + static constexpr FLOAT128 reciprocal(FLOAT128 v) noexcept { return constants::one() / v; } - static inline FLOAT128 abs(FLOAT128 v) noexcept + static FLOAT128 abs(FLOAT128 v) noexcept { return fabsq(v); } - static inline FLOAT128 sqrt(FLOAT128 v) noexcept + static FLOAT128 sqrt(FLOAT128 v) noexcept { return sqrtq(v); } - static inline FLOAT128 hypot(FLOAT128 v1, FLOAT128 v2) noexcept + static FLOAT128 hypot(FLOAT128 v1, FLOAT128 v2) noexcept { return hypotq(v1, v2); } - static inline FLOAT128 exp(FLOAT128 v) noexcept + static FLOAT128 exp(FLOAT128 v) noexcept { return expq(v); } - static inline FLOAT128 log(FLOAT128 v) noexcept + static FLOAT128 log(FLOAT128 v) noexcept { return logq(v); } - static inline FLOAT128 tanh(FLOAT128 v) noexcept + static FLOAT128 tanh(FLOAT128 v) noexcept { return tanhq(v); } - static inline FLOAT128 floor(FLOAT128 v) noexcept + static FLOAT128 floor(FLOAT128 v) noexcept { return floorq(v); } - static inline FLOAT128 log1p(FLOAT128 v) noexcept + static FLOAT128 log1p(FLOAT128 v) noexcept { return log1pq(v); } - static inline FLOAT128 sin(FLOAT128 v) noexcept + static FLOAT128 sin(FLOAT128 v) noexcept { return sinq(v); } - static inline FLOAT128 cos(FLOAT128 v) noexcept + static FLOAT128 cos(FLOAT128 v) noexcept { return cosq(v); } - static inline FLOAT128 trunc(FLOAT128 v) noexcept + static FLOAT128 trunc(FLOAT128 v) noexcept { return truncq(v); } template - static inline FLOAT128 pow(FLOAT128 v, T p) noexcept + static FLOAT128 pow(FLOAT128 v, T p) noexcept { return powq(v, static_cast(p)); } - static inline FLOAT128 pow(FLOAT128 v, int p) noexcept + static FLOAT128 pow(FLOAT128 v, int p) noexcept { if (p==2) return v*v; -- cgit v1.2.3-70-g09d2