From 4e3daf3f02bfcdfa3310403bbbc2f6b1edccfce4 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Mon, 13 Feb 2023 18:42:48 +0100 Subject: [PATCH] fix: quantity construction in `random.h` fixed --- src/utility/include/mp_units/random.h | 144 +++++++++++++------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/src/utility/include/mp_units/random.h b/src/utility/include/mp_units/random.h index 2972f139..9affe598 100644 --- a/src/utility/include/mp_units/random.h +++ b/src/utility/include/mp_units/random.h @@ -93,14 +93,14 @@ struct uniform_int_distribution : public std::uniform_int_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q a() const { return Q(base::a()); } - Q b() const { return Q(base::b()); } + Q a() const { return base::a() * Q::reference; } + Q b() const { return base::b() * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -115,14 +115,14 @@ struct uniform_real_distribution : public std::uniform_real_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q a() const { return Q(base::a()); } - Q b() const { return Q(base::b()); } + Q a() const { return base::a() * Q::reference; } + Q b() const { return base::b() * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -137,13 +137,13 @@ struct binomial_distribution : public std::binomial_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q t() const { return Q(base::t()); } + Q t() const { return base::t() * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -158,13 +158,13 @@ struct negative_binomial_distribution : public std::negative_binomial_distributi template Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q k() const { return Q(base::k()); } + Q k() const { return base::k() * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -179,11 +179,11 @@ struct geometric_distribution : public std::geometric_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -198,11 +198,11 @@ struct poisson_distribution : public std::poisson_distribution template Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -217,11 +217,11 @@ struct exponential_distribution : public std::exponential_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -236,11 +236,11 @@ struct gamma_distribution : public std::gamma_distribution { template Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -255,11 +255,11 @@ struct weibull_distribution : public std::weibull_distribution template Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -277,10 +277,10 @@ struct extreme_value_distribution : public std::extreme_value_distribution @@ -298,11 +298,11 @@ struct normal_distribution : public std::normal_distribution { return Q(base::operator()(g)); } - Q mean() const { return Q(base::mean()); } - Q stddev() const { return Q(base::stddev()); } + Q mean() const { return base::mean() * Q::reference; } + Q stddev() const { return base::stddev() * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -317,14 +317,14 @@ struct lognormal_distribution : public std::lognormal_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q m() const { return Q(base::m()); } - Q s() const { return Q(base::s()); } + Q m() const { return base::m() * Q::reference; } + Q s() const { return base::s() * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -339,11 +339,11 @@ struct chi_squared_distribution : public std::chi_squared_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -358,14 +358,14 @@ struct cauchy_distribution : public std::cauchy_distribution { template Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q a() const { return Q(base::a()); } - Q b() const { return Q(base::b()); } + Q a() const { return base::a() * Q::reference; } + Q b() const { return base::b() * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -380,11 +380,11 @@ struct fisher_f_distribution : public std::fisher_f_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -399,11 +399,11 @@ struct student_t_distribution : public std::student_t_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -430,11 +430,11 @@ struct discrete_distribution : public std::discrete_distribution Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -470,14 +470,14 @@ public: template piecewise_constant_distribution(std::size_t nw, const Q& xmin, const Q& xmax, UnaryOperation fw) : - base(nw, xmin.number(), xmax.number(), [fw](rep val) { return fw(Q(val)); }) + base(nw, xmin.number(), xmax.number(), [fw](rep val) { return fw(val * Q::reference); }) { } template Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } std::vector intervals() const @@ -486,13 +486,13 @@ public: std::vector intervals_qty; intervals_qty.reserve(intervals_rep.size()); for (const rep& val : intervals_rep) { - intervals_qty.push_back(Q(val)); + intervals_qty.push_back(val * Q::reference); } return intervals_qty; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; template @@ -528,14 +528,14 @@ public: template piecewise_linear_distribution(std::size_t nw, const Q& xmin, const Q& xmax, UnaryOperation fw) : - base(nw, xmin.number(), xmax.number(), [fw](rep val) { return fw(Q(val)); }) + base(nw, xmin.number(), xmax.number(), [fw](rep val) { return fw(val * Q::reference); }) { } template Q operator()(Generator& g) { - return Q(base::operator()(g)); + return base::operator()(g) * Q::reference; } std::vector intervals() const @@ -544,13 +544,13 @@ public: std::vector intervals_qty; intervals_qty.reserve(intervals_rep.size()); for (const rep& val : intervals_rep) { - intervals_qty.push_back(Q(val)); + intervals_qty.push_back(val * Q::reference); } return intervals_qty; } - Q min() const { return Q(base::min()); } - Q max() const { return Q(base::max()); } + Q min() const { return base::min() * Q::reference; } + Q max() const { return base::max() * Q::reference; } }; } // namespace mp_units