13#include "qwt_global.h"
23#ifndef _USE_MATH_DEFINES
24#define _USE_MATH_DEFINES
25#define undef_USE_MATH_DEFINES
30#ifdef undef_USE_MATH_DEFINES
31#undef _USE_MATH_DEFINES
32#undef undef_USE_MATH_DEFINES
36#define M_E ( 2.7182818284590452354 )
40#define M_LOG2E ( 1.4426950408889634074 )
44#define M_LOG10E ( 0.43429448190325182765 )
48#define M_LN2 ( 0.69314718055994530942 )
52#define M_LN10 ( 2.30258509299404568402 )
56#define M_PI ( 3.14159265358979323846 )
60#define M_PI_2 ( 1.57079632679489661923 )
64#define M_PI_4 ( 0.78539816339744830962 )
68#define M_1_PI ( 0.31830988618379067154 )
72#define M_2_PI ( 0.63661977236758134308 )
76#define M_2_SQRTPI ( 1.12837916709551257390 )
80#define M_SQRT2 ( 1.41421356237309504880 )
84#define M_SQRT1_2 ( 0.70710678118654752440 )
87#if defined( QT_WARNING_PUSH )
93 QT_WARNING_DISABLE_CLANG(
"-Wdouble-promotion")
94 QT_WARNING_DISABLE_GCC("-Wdouble-promotion")
103QWT_CONSTEXPR
inline float qwtMinF(
float a,
float b )
105 return ( a < b ) ? a : b;
109QWT_CONSTEXPR
inline double qwtMinF(
double a,
double b )
111 return ( a < b ) ? a : b;
115QWT_CONSTEXPR
inline qreal qwtMinF(
float a,
double b )
117 return ( a < b ) ? a : b;
121QWT_CONSTEXPR
inline qreal qwtMinF(
double a,
float b )
123 return ( a < b ) ? a : b;
127QWT_CONSTEXPR
inline float qwtMaxF(
float a,
float b )
129 return ( a < b ) ? b : a;
133QWT_CONSTEXPR
inline double qwtMaxF(
double a,
double b )
135 return ( a < b ) ? b : a;
139QWT_CONSTEXPR
inline qreal qwtMaxF(
float a,
double b )
141 return ( a < b ) ? b : a;
145QWT_CONSTEXPR
inline qreal qwtMaxF(
double a,
float b )
147 return ( a < b ) ? b : a;
150#if defined( QT_WARNING_POP )
154QWT_EXPORT
double qwtNormalizeRadians(
double radians );
155QWT_EXPORT
double qwtNormalizeDegrees(
double degrees );
156QWT_EXPORT quint32 qwtRand();
170inline int qwtFuzzyCompare(
double value1,
double value2,
double intervalSize )
172 const double eps = qAbs( 1.0e-6 * intervalSize );
174 if ( value2 - value1 > eps )
177 if ( value1 - value2 > eps )
184inline int qwtSign(
double x )
195inline double qwtSqr(
double x )
201inline double qwtFastAtan(
double x )
204 return -M_PI_2 - x / ( x * x + 0.28 );
207 return M_PI_2 - x / ( x * x + 0.28 );
209 return x / ( 1.0 + x * x * 0.28 );
213inline double qwtFastAtan2(
double y,
double x )
216 return qwtFastAtan( y / x );
220 const double d = qwtFastAtan( y / x );
221 return ( y >= 0 ) ? d + M_PI : d - M_PI;
244inline double qwtCubicPolynomial(
double x,
245 double a,
double b,
double c,
double d )
247 return ( ( ( a * x ) + b ) * x + c ) * x + d;
251inline double qwtRadians(
double degrees )
253 return degrees * M_PI / 180.0;
257inline double qwtDegrees(
double degrees )
259 return degrees * 180.0 / M_PI;
266inline int qwtCeil( qreal value )
269 return int( ceil( value ) );
275inline int qwtFloor( qreal value )
278 return int( floor( value ) );