47template<
typename T,
int size>
48inline typename std::enable_if<size == 1, T>::type
nextPower2(T x) {
54template<
typename T,
int size>
55inline typename std::enable_if<size != 1, T>::type
nextPower2(T x) {
57 return x | (x >> size / 2);
63constexpr double pi = 3.14159265358979323846;
66constexpr double pi_2 = 1.57079632679489661923;
69constexpr double pi_180 = 0.01745329251994329576;
72constexpr double one_rad = 57.29577951308232087679;
78constexpr double gamma = 0.57721566490153286061;
83 return internal::nextPower2<T, sizeof(T) * 8>(x - 1) + 1;
87template<
typename T,
typename... Args>
88inline static T
nextPower2(T arg1, T arg2, Args... args) {
89 return nextPower2(std::max(arg1, arg2, args...));
103 if (min > newValue) {
125 return (T(0) < val) - (val < T(0));
147inline
int factorial(
int n) {
return (
int)std::tgamma(n + 1); }
169 return std::ilogb(v);
186template<
class T,
class INDEX =
int>
188 T current_gcd = numbers[numbers.
low()];
189 for (INDEX i = numbers.
low() + 1; i <= numbers.
high(); i++) {
190 current_gcd =
gcd(current_gcd, numbers[i]);
204inline void getFraction(
double d,
int& num,
int& denom,
const double epsilon = 5e-10,
205 const int count = 10) {
210 continuedFrac.
push(z);
213 while (d > epsilon && i++ < count) {
216 continuedFrac.
push(z);
223 while (!continuedFrac.
empty()) {
224 int last = continuedFrac.
popRet();
225 std::swap(num, denom);
231template<
class Container>
232inline typename Container::value_type
minValue(
const Container& values) {
234 return *std::min_element(values.begin(), values.end());
238template<
class Container>
239inline typename Container::value_type
maxValue(
const Container& values) {
241 return *std::max_element(values.begin(), values.end());
245template<
class Container>
246inline typename Container::value_type
sum(
const Container& values) {
247 return std::accumulate(values.begin(), values.end(),
248 static_cast<typename Container::value_type
>(0));
252template<
class Container>
253inline double mean(
const Container& values) {
255 return sum(values) /
static_cast<double>(values.size());
260template<
class Container>
264 for (
auto value : values) {
265 double d = value -
mean;
268 return sqrt(
sum / values.size());
272template<
class Container>
Declaration and implementation of Array class and Array algorithms.
Declaration and implementation of ArrayBuffer class.
Basic declarations, included by all source files.
An array that keeps track of the number of inserted elements; also usable as an efficient stack.
E popRet()
Removes the newest element from the buffer and returns it.
void push(E e)
Puts a new element in the buffer.
bool empty() const
Returns true if the buffer is empty, false otherwise.
The parameterized class Array implements dynamic arrays of type E.
INDEX high() const
Returns the maximal array index.
INDEX low() const
Returns the minimal array index.
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
#define OGDF_DEPRECATED(reason)
Mark a class / member / function as deprecated.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
std::enable_if< size==1, T >::type nextPower2(T x)
double harmonic(unsigned n)
Returns the n-th harmonic number or 1.0 if n < 1.
void updateMin(T &min, const T &newValue)
Stores the minimum of min and newValue in min.
const double log_of_4
The constant log(4.0).
double standardDeviation(const Container &values, double mean)
Returns the standard deviation of an iterable container of given values.
constexpr double gamma
The Euler-Mascheroni constant gamma.
int floorLog2(int v)
A method to obtain the rounded down binary logarithm of v.
constexpr double pi
The constant .
constexpr double pi_180
The constant .
T lcm(T a, T b)
Returns the least common multipler of two numbers.
int sgn(T val)
Returns +1 for val > 0, 0 for val = 0, and -1 for val < 0.
double log4(double x)
Returns the logarithm of x to the base 4.
int factorial(int n)
Returns n!.
T gcd(T a, T b)
Returns the greatest common divisor of two numbers.
double degreesToRadians(const double &angleInDegrees)
Converts an angle from degrees to radians.
void updateMax(T &max, const T &newValue)
Stores the maximum of max and newValue in max.
Container::value_type minValue(const Container &values)
Returns the minimum of an iterable container of given values.
T log2(T x)
Returns the logarithm of x to the base 2.
constexpr double one_rad
The constant .
double binomial_d(int n, int k)
Returns .
constexpr double pi_2
The constant .
void getFraction(double d, int &num, int &denom, const double epsilon=5e-10, const int count=10)
Converts a double to a fraction.
int binomial(int n, int k)
Returns .
double factorial_d(int n)
Returns n!.
double radiansToDegrees(const double &angleInRadians)
Converts an angle from radians to degrees.
Container::value_type maxValue(const Container &values)
Returns the maximum of an iterable container of given values.
T nextPower2(T x)
Returns the smallest power of 2 that is no less than the given (integral) argument.
double mean(const Container &values)
Returns the mean of an iterable container of given values.
The namespace for all OGDF objects.