8 #include <boost/range/algorithm/lower_bound.hpp> 9 #include <boost/range/algorithm/upper_bound.hpp> 23 template<
typename Value>
24 auto sqr(Value
const& value)
33 template<
typename Value>
34 auto cube(Value
const& value)
36 return value * value * value;
43 template <
typename Value_>
46 return (Value_(0) < value) - (value < Value_(0));
53 template <
typename Value_>
54 int LowerBound(std::vector<Value_>
const& vector, Value_ value)
56 auto position = boost::range::lower_bound(vector, value, [](
double value_1,
double value_2) {
57 return value_1 > value_2;
59 if (position == vector.end())
return 0;
60 return position - vector.begin();
67 template <
typename Value_>
68 int UpperBound(std::vector<Value_>
const& vector, Value_ value)
70 auto position = boost::range::upper_bound(vector, value, [](
double value_1,
double value_2) {
71 return value_1 > value_2;
73 if (position == vector.end())
return 0;
74 return position - vector.begin();
auto cube(Value const &value)
cube of value
Definition: Math.hh:34
int sgn(Value_ value)
sign of value
Definition: Math.hh:44
double RoundToError(double value, double error)
Round value to precision of error.
Definition: Math.cpp:45
double RoundError(double value)
round error two two digits
Definition: Math.cpp:34
double CeilToDigits(double value, int digits=2)
Ceiling to digits.
Definition: Math.cpp:28
auto sqr(Value const &value)
square of value
Definition: Math.hh:24
double FloorToDigits(double value, int digits=2)
Floor value to digits.
Definition: Math.cpp:22
int UpperBound(std::vector< Value_ > const &vector, Value_ value)
Upper bound of vector.
Definition: Math.hh:68
double RoundToDigits(double value, int digits=3)
Round value to digits.
Definition: Math.cpp:38
Boosted Collider Analysis.
Definition: Analysis.hh:15
int LowerBound(std::vector< Value_ > const &vector, Value_ value)
sign of value
Definition: Math.hh:54