2#define _USE_MATH_DEFINES
6#include <QtCore/QtNumeric>
17 if ((angle > (-20*M_PI)) && (angle < (20*M_PI)))
19 while (angle > ((
float)M_PI+FLT_EPSILON))
21 angle -= 2.0f * (float)M_PI;
24 while (angle <= -((
float)M_PI+FLT_EPSILON))
26 angle += 2.0f * (float)M_PI;
32 angle = fmodf(angle, (
float)M_PI);
40 if ((angle > (-20*M_PI)) && (angle < (20*M_PI)))
49 else if (angle > M_PI)
60 angle = fmod(angle, M_PI);
66quint32
crc32(
const quint8 *src,
unsigned len,
unsigned state)
73 if (qIsNaN(value1) && qIsNaN(value2)) {
75 }
else if (qIsNaN(value1) || qIsNaN(value2)) {
77 }
else if (value1 == value2) {
80 return qFuzzyCompare(value1, value2);
86 if (qIsNaN(value1) && qIsNaN(value2)) {
88 }
else if (qIsNaN(value1) || qIsNaN(value2)) {
91 return fabs(value1 - value2) <= tolerance;
97 if (qIsNaN(value1) && qIsNaN(value2)) {
99 }
else if (qIsNaN(value1) || qIsNaN(value2)) {
101 }
else if (value1 == value2) {
104 return qFuzzyCompare(value1, value2);
110 if (qIsNaN(value1) && qIsNaN(value2)) {
112 }
else if (qIsNaN(value1) || qIsNaN(value2)) {
115 return fabsf(value1 - value2) <= tolerance;
quint32 crc32(const quint8 *src, unsigned len, unsigned state)
double limitAngleToPMPId(double angle)
bool fuzzyCompare(double value1, double value2)
Returns true if the two values are equal or close. Correctly handles 0 and NaN values.
constexpr uint32_t crc32Update(std::span< const uint8_t > bytes, uint32_t state=0)
Reflected CRC-32 update; the caller supplies the initial state and final complement policy.
float limitAngleToPMPIf(double angle)