8#pragma qt_class(QtMath)
11#include <QtCore/qglobal.h>
12#include <QtCore/qalgorithms.h>
14#if __has_include(<bit>) && __cplusplus > 201703L
18#ifndef _USE_MATH_DEFINES
19# define _USE_MATH_DEFINES
20# define undef_USE_MATH_DEFINES
25#ifdef undef_USE_MATH_DEFINES
26# undef _USE_MATH_DEFINES
27# undef undef_USE_MATH_DEFINES
32#define QT_SINE_TABLE_SIZE 256
54template <
typename T>
auto qSin(T
v)
60template <
typename T>
auto qCos(T
v)
66template <
typename T>
auto qTan(T
v)
90template <
typename T1,
typename T2>
auto qAtan2(T1
y, T2
x)
103template <
typename R,
typename F>
118 template<
typename F,
typename ...Fs>
122 template<typename F, typename R = typename QHypotType<T, F>::type>
144template<
typename F,
typename ...Fs>
151template <
typename Tx,
typename Ty>
159#if defined(__cpp_lib_hypot) && __cpp_lib_hypot >= 201603L
160template <
typename Tx,
typename Ty,
typename Tz>
164 return hypot(
x,
y,
z);
168template <
typename T>
auto qLn(T
v)
180template <
typename T1,
typename T2>
auto qPow(T1
x, T2
y)
189#define M_E (2.7182818284590452354)
193#define M_LOG2E (1.4426950408889634074)
197#define M_LOG10E (0.43429448190325182765)
201#define M_LN2 (0.69314718055994530942)
205#define M_LN10 (2.30258509299404568402)
209#define M_PI (3.14159265358979323846)
213#define M_PI_2 (1.57079632679489661923)
217#define M_PI_4 (0.78539816339744830962)
221#define M_1_PI (0.31830988618379067154)
225#define M_2_PI (0.63661977236758134308)
229#define M_2_SQRTPI (1.12837916709551257390)
233#define M_SQRT2 (1.41421356237309504880)
237#define M_SQRT1_2 (0.70710678118654752440)
262 return degrees * float(
M_PI / 180);
267 return degrees * (
M_PI / 180);
272 return degrees * (
M_PI / 180);
275template <
typename T, std::enable_if_t<std::is_
integral_v<T>,
bool> = true>
283 return radians * float(180 /
M_PI);
288 return radians * (180 /
M_PI);
293 return radians * (180 /
M_PI);
338#if defined(__cpp_lib_int_pow2) && __cpp_lib_int_pow2 >= 202002L
339 return std::bit_ceil(
v + 1);
340#elif defined(QT_HAS_BUILTIN_CLZ)
343 return 2U << (31 ^ QAlgorithmsPrivate::qt_builtin_clz(
v));
352#if defined(__cpp_lib_int_pow2) && __cpp_lib_int_pow2 >= 202002L
353 return std::bit_ceil(
v + 1);
354#elif defined(QT_HAS_BUILTIN_CLZLL)
357 return Q_UINT64_C(2) << (63 ^ QAlgorithmsPrivate::qt_builtin_clzll(
v));
QHypotHelper< R > add(F next) const
friend class QHypotHelper
auto add(F first, Fs... rest) const
Combined button and popup list for selecting options.
constexpr quint32 qConstexprNextPowerOfTwo(quint32 v)
bool qIsFinite(qfloat16 f) noexcept
bool qIsNaN(qfloat16 f) noexcept
bool qIsInf(qfloat16 f) noexcept
qfloat16 qSqrt(qfloat16 f)
Q_CORE_EXPORT const qreal qt_sine_table[QT_SINE_TABLE_SIZE]
#define QT_SINE_TABLE_SIZE
constexpr float qRadiansToDegrees(float radians)
constexpr quint32 qNextPowerOfTwo(quint32 v)
constexpr float qDegreesToRadians(float degrees)
auto qHypot(F first, Fs... rest)
constexpr T qAbs(const T &t)
GLsizei const GLfloat * v
[13]
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat z
GLint GLint GLint GLint GLint x
[0]
GLenum GLenum GLenum GLenum GLenum scale
unsigned long long quint64
decltype(std::hypot(R(1), F(1))) type