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