6 #ifndef SWIFT_MISC_MATH_MATHUTILS_H
7 #define SWIFT_MISC_MATH_MATHUTILS_H
9 #include <QtCore/qmath.h>
15 #include <QRandomGenerator>
19 namespace swift::misc::math
29 static double round(
double value,
int digits);
32 static double roundEpsilon(
double value,
double epsilon);
36 static bool epsilonEqual(
float v1,
float v2,
float epsilon = 1E-06f);
37 static bool epsilonEqual(
double v1,
double v2,
double epsilon = 1E-06);
40 return qAbs(v1 - v2) <= std::numeric_limits<double>::epsilon();
46 static bool epsilonZero(
double v,
double epsilon) {
return epsilonEqual(v, 0.0, epsilon); }
47 static bool epsilonZero(
double v) {
return epsilonEqual(v, 0.0, 1E-06); }
48 static inline bool epsilonZeroLimits(
double v) {
return qAbs(v) <= std::numeric_limits<double>::epsilon(); }
52 static inline double trunc(
double value,
double epsilon = 1e-10)
54 return value < 0 ? ceil(value - epsilon) : floor(value + epsilon);
58 static inline double fract(
double value)
61 return modf(value, &unused);
65 static double deg2rad(
double degree);
68 static double rad2deg(
double radians);
71 static double normalizeDegrees180(
double degrees);
74 static double normalizeDegrees360(
double degrees);
77 static QRandomGenerator &randomGenerator();
80 static int randomInteger(
int low,
int high);
83 static double randomDouble(
double max = 1);
86 static bool randomBool();
89 static int roundToMultipleOf(
int value,
int divisor);
93 static QString fractionalPartAsString(
double value,
int width = -1);
96 static double sum(
const QList<double> &values);
99 static double mean(
const QList<double> &values);
102 static double standardDeviation(
const QList<double> &values);
105 static QPair<double, double> standardDeviationAndMean(
const QList<double> &values);
109 static double variance(
const QList<double> &values);
112 static QList<double> squaredDifferences(
const QList<double> &values);
115 static QList<double> squaredDifferences(
const QList<double> &values,
double meanValue);
static double fract(double value)
Fractional part of value.
CMathUtils()=delete
No objects, just static.
static double trunc(double value, double epsilon=1e-10)
Nearest integer not greater in magnitude than value, correcting for epsilon.
static bool epsilonZeroLimits(double v)
Epsilon safe zero.
static bool epsilonZero(double v, double epsilon)
Epsilon safe zero.
static bool epsilonZero(double v)
Epsilon safe zero.
static bool epsilonEqualLimits(double v1, double v2)
Epsilon safe equal.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.