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 ) );