mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-07 22:24:27 +02:00
fix: quantity construction in random.h
fixed
This commit is contained in:
@@ -93,14 +93,14 @@ struct uniform_int_distribution : public std::uniform_int_distribution<typename
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -115,14 +115,14 @@ struct uniform_real_distribution : public std::uniform_real_distribution<typenam
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -137,13 +137,13 @@ struct binomial_distribution : public std::binomial_distribution<typename Q::rep
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -158,13 +158,13 @@ struct negative_binomial_distribution : public std::negative_binomial_distributi
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -179,11 +179,11 @@ struct geometric_distribution : public std::geometric_distribution<typename Q::r
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -198,11 +198,11 @@ struct poisson_distribution : public std::poisson_distribution<typename Q::rep>
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -217,11 +217,11 @@ struct exponential_distribution : public std::exponential_distribution<typename
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -236,11 +236,11 @@ struct gamma_distribution : public std::gamma_distribution<typename Q::rep> {
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -255,11 +255,11 @@ struct weibull_distribution : public std::weibull_distribution<typename Q::rep>
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -277,10 +277,10 @@ struct extreme_value_distribution : public std::extreme_value_distribution<typen
|
||||
return Q(base::operator()(g));
|
||||
}
|
||||
|
||||
Q a() const { return Q(base::a()); }
|
||||
Q a() const { return base::a() * 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<Quantity Q>
|
||||
@@ -298,11 +298,11 @@ struct normal_distribution : public std::normal_distribution<typename Q::rep> {
|
||||
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<Quantity Q>
|
||||
@@ -317,14 +317,14 @@ struct lognormal_distribution : public std::lognormal_distribution<typename Q::r
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -339,11 +339,11 @@ struct chi_squared_distribution : public std::chi_squared_distribution<typename
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -358,14 +358,14 @@ struct cauchy_distribution : public std::cauchy_distribution<typename Q::rep> {
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -380,11 +380,11 @@ struct fisher_f_distribution : public std::fisher_f_distribution<typename Q::rep
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -399,11 +399,11 @@ struct student_t_distribution : public std::student_t_distribution<typename Q::r
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -430,11 +430,11 @@ struct discrete_distribution : public std::discrete_distribution<typename Q::rep
|
||||
template<typename Generator>
|
||||
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<Quantity Q>
|
||||
@@ -470,14 +470,14 @@ public:
|
||||
|
||||
template<typename UnaryOperation>
|
||||
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<typename Generator>
|
||||
Q operator()(Generator& g)
|
||||
{
|
||||
return Q(base::operator()(g));
|
||||
return base::operator()(g) * Q::reference;
|
||||
}
|
||||
|
||||
std::vector<Q> intervals() const
|
||||
@@ -486,13 +486,13 @@ public:
|
||||
std::vector<Q> 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<Quantity Q>
|
||||
@@ -528,14 +528,14 @@ public:
|
||||
|
||||
template<typename UnaryOperation>
|
||||
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<typename Generator>
|
||||
Q operator()(Generator& g)
|
||||
{
|
||||
return Q(base::operator()(g));
|
||||
return base::operator()(g) * Q::reference;
|
||||
}
|
||||
|
||||
std::vector<Q> intervals() const
|
||||
@@ -544,13 +544,13 @@ public:
|
||||
std::vector<Q> 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
|
||||
|
Reference in New Issue
Block a user