summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qnumeric.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/global/qnumeric.h')
-rw-r--r--src/corelib/global/qnumeric.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/corelib/global/qnumeric.h b/src/corelib/global/qnumeric.h
index 24fa782f06..2238c13da0 100644
--- a/src/corelib/global/qnumeric.h
+++ b/src/corelib/global/qnumeric.h
@@ -8,7 +8,10 @@
#pragma qt_class(QtNumeric)
#endif
-#include <QtCore/qglobal.h>
+#include <QtCore/qtconfigmacros.h>
+#include <QtCore/qtcoreexports.h>
+#include <QtCore/qtypes.h>
+
#include <cmath>
#include <limits>
#include <type_traits>
@@ -316,6 +319,8 @@ template <typename T, T V2> bool qMulOverflow(T v1, std::integral_constant<T, V2
template <auto V2, typename T> bool qMulOverflow(T v1, T *r)
{
+ if constexpr (V2 == 2)
+ return qAddOverflow(v1, v1, r);
return qMulOverflow(v1, std::integral_constant<T, V2>{}, r);
}
@@ -356,14 +361,19 @@ constexpr inline qint64 qRound64(float d)
{ return d >= 0.0f ? qint64(d + 0.5f) : qint64(d - 0.5f); }
#endif
+namespace QtPrivate {
+template <typename T>
+constexpr inline const T &min(const T &a, const T &b) { return (a < b) ? a : b; }
+}
+
[[nodiscard]] constexpr bool qFuzzyCompare(double p1, double p2)
{
- return (qAbs(p1 - p2) * 1000000000000. <= qMin(qAbs(p1), qAbs(p2)));
+ return (qAbs(p1 - p2) * 1000000000000. <= QtPrivate::min(qAbs(p1), qAbs(p2)));
}
[[nodiscard]] constexpr bool qFuzzyCompare(float p1, float p2)
{
- return (qAbs(p1 - p2) * 100000.f <= qMin(qAbs(p1), qAbs(p2)));
+ return (qAbs(p1 - p2) * 100000.f <= QtPrivate::min(qAbs(p1), qAbs(p2)));
}
[[nodiscard]] constexpr bool qFuzzyIsNull(double d)