10#ifndef _BASICMATH_X_H_
11#define _BASICMATH_X_H_ 1
27extern const double PI;
40inline double Abs(
double x) {
return (x >= 0) ? x : -x; }
42inline short Abs(
short x) {
return abs(x); }
43inline char Abs(
char x) {
return abs(x); }
44inline signed char Abs(
signed char x) {
return abs(x); }
64 modf(fromValue, &toValue);
66 modff(fromValue, &toValue);
89 modf(fromValue, &toValue);
109 return (floor(value + (
float)0.5));
127 return (floor(value + 0.5));
131inline long double Round(
long double value)
145 return (floor(value + 0.5));
131inline long double Round(
long double value) {
…}
163 return (floor(value*100000 + 0.5)/100000);
182 return (floor(value* pow(10, decimal_places))/pow(10, decimal_places));
201 return (ceil(value* pow(10, decimal_places))/pow(10, decimal_places));
207template<
class T>
inline T
Max(T a, T b) {
return( a > b ? a : b ); }
208template<
class T>
inline T
Min(T a, T b) {
return( a < b ? a : b ); }
209template<
class T>
inline T
Max(T a, T b, T c) {
return Max(
Max(a,b), c); }
210template<
class T>
inline T
Min(T a, T b, T c) {
return Min(
Min(a,b), c); }
211template<
class T>
inline T
Max(T a, T b, T c, T d) {
return Max(
Max(a,b),
Max(c,d)); }
212template<
class T>
inline T
Min(T a, T b, T c, T d) {
return Min(
Min(a,b),
Min(c,d)); }
213template<
class T>
inline T
Max(T a, T b, T c, T d, T e) {
return Max(
Max(a,b),
Max(c,d,e)); }
214template<
class T>
inline T
Min(T a, T b, T c, T d, T e) {
return Min(
Min(a,b),
Min(c,d,e)); }
215template<
class T>
inline T
Max(T a, T b, T c, T d, T e, T f) {
return Max(
Max(a,b),
Max(c,d),
Max(e,f)); }
216template<
class T>
inline T
Min(T a, T b, T c, T d, T e, T f) {
return Min(
Min(a,b),
Min(c,d),
Min(e,f)); }
226 inline Sint32 ASR(
Sint32 x,
short shiftBy) {
return (x < 0 ? -((-x)>>shiftBy) : x >> shiftBy); }
238inline double sqr(
double x) {
return x*x; }
239inline double xpwr2(
double x) {
return x*x; }
240inline double xpwr3(
double x) {
return x*x*x; }
241inline double xpwr4(
double x) {
return x*x*x*x; }
243inline double Sqrt(
double x) {
return sqrt(fastFabs(x)); }
252 return fmod(num, denom);
254 return remainder(num, denom);
266 else if (a >= 360.0) {
277template <
class Type>
inline bool
280 return Abs(x-y) <= fudgeFactor;
283template <
class NumericType>
inline bool
292template <
class NumType>
inline NumType
295 return ( base == modulo-1 ? 0 : base+1 );
298template <
class NumType>
inline NumType
301 return ( base == 0 ? modulo-1 : base-1 );
const double kRadiansPerDegree
double NormalizeAngle(double a)
Definition BasicMath.X.h:258
double Sqrt(double x)
Definition BasicMath.X.h:243
NumType DecModulo(NumType base, NumType modulo)
Definition BasicMath.X.h:299
double xpwr4(double x)
Definition BasicMath.X.h:241
double sqr(double x)
Definition BasicMath.X.h:238
const double kDegreesPerGradian
double xpwr2(double x)
Definition BasicMath.X.h:239
Real32 Truncate(const Real32 fromValue)
Definition BasicMath.X.h:48
T Min(T a, T b)
Definition BasicMath.X.h:208
Real64 RoundDown(Real64 value, int decimal_places)
Definition BasicMath.X.h:167
Sint32 Div2(Sint32 x)
Definition BasicMath.X.h:230
double FPRemainder(double_param num, double_param denom)
Definition BasicMath.X.h:249
double xpwr3(double x)
Definition BasicMath.X.h:240
NumType IncModulo(NumType base, NumType modulo)
Definition BasicMath.X.h:293
Real64 Round5Digits(Real64 value)
Definition BasicMath.X.h:149
const double kGradiansPerDegree
double Abs(double x)
Definition BasicMath.X.h:40
const double kThreePiOver2
Real32 Round(Real32 value)
Definition BasicMath.X.h:95
bool NotApproxEqual(NumericType x, NumericType y, NumericType fudgeFactor)
Definition BasicMath.X.h:284
const double kDegreesPerRadian
bool ApproxEqual(Type x, Type y, Type fudgeFactor)
Definition BasicMath.X.h:278
Sint32 ASR(Sint32 x, short shiftBy)
Definition BasicMath.X.h:232
Sint32 Div4(Sint32 x)
Definition BasicMath.X.h:231
Real64 RoundUp(Real64 value, int decimal_places)
Definition BasicMath.X.h:186
T Max(T a, T b)
Definition BasicMath.X.h:207
int32_t Sint32
Definition GSTypes.h:36
float Real32
Definition GSTypes.h:65
double Real64
Definition GSTypes.h:66