Math
The Math component provides a wrapper around several math functions normally defined in the standard C library. This component was implemented primarily due to undiagosed incompatiblities when trying to access C++ math libraries from within OpenXDS.
Usage
Linkage:
-lopenxds_core_base
To use the Math component:
#include <openxds.core.base/Math.h>
Function Summary
Returns | Method-name | Parameters | ||
---|---|---|---|---|
long | Math_contrainBetween | long aNumber | long lower | long upper |
bool | Math_isAlmostEqual | double a | double b | |
bool | Math_isBetween | long aNumber | long lower | long upper |
double | Math_floor | double aValue | ||
long | Math_max | long a | long b | |
long | Math_min | long a | long b | |
double | Math_pi | |||
long | Math_sizeOfRange | double first | double last | double increment |
double | Math_squareroot | double aValue | ||
double | Math_toPower | double base | double power | |
long double | Math_toPower_long_double | long double base | long double power | |
float | Math_toPower_float | float base | float power |
Dependencies
#include "openxds.core.base/Math.h" #include <math.h>
Functions
constrain Between
EXPORT long Math_constrainBetween( long aNumber, long lower, long upper );
Parameters
aNumber, that should be constrained between the bounds lower and upper;
lower, the lower bound;
upper, the upper bound;
Returns
aNumber if it lies between lower and upper; otherwise returns either lower if less than lower, or upper if greater than upper.
Implementation
long Math_constrainBetween( long aNumber, long lower, long upper ) { if ( aNumber < lower ) { aNumber = lower; } else if ( upper < aNumber ) { aNumber = upper; } return aNumber; }
is Almost Equal
EXPORT bool Math_isAlmostEqual( double a, double b );
Parameters
a;
b;
Returns
TRUE if |a - b| < 0.1
Implementation
bool Math_isAlmostEqual( double a, double b ) { return ( (a == b) || (0.00001 > fabs( a - b )) ); }
is Between
EXPORT bool Math_isBetween( long aNumber, long lower, long upper );
Parameters
aNumber;
lower;
upper;
Returns
TRUE if lower < aNumber < upper; otherwise FALSE.
Implementation
bool Math_isBetween( long aNumber, long lower, long upper ) { return ((lower < aNumber) && (aNumber < upper )); }
floor
EXPORT double Math_floor( double aValue );
Parameters
aValue;
Returns
aValue, rounded down to the nearest integer.
Implementation
double Math_floor( double aValue ) { int anInteger = (int) aValue; double aDouble = (double) anInteger; if ( aDouble > aValue ) { anInteger -= 1; aDouble = (double) anInteger; } return aDouble; }
max
EXPORT long Math_max( long a, long b );
Parameters
a;
b;
Returns
a, if a > b; otherwise b.
Implementation
long Math_max( long a, long b ) { return (a > b) ? a : b; }
min
EXPORT long Math_min( long a, long b );
Parameters
a;
b;
Returns
a, if a < b; otherwise b;
Implementation
long Math_min( long a, long b ) { return (a < b) ? a : b; }
pi
EXPORT double Math_pi(void);
Returns
The value of pi to 8 decimal places.
Implementation
double Math_pi() { return 3.14159265; }
size Of Range
EXPORT long Math_sizeOfRange( double first, double last, double increment );
Parameters
first;
last;
increment;
Returns
The number of times that first can be incremented by increment before reaching last.
Implementation
long Math_sizeOfRange( double first, double last, double increment ) { int size = 0; double i; if ( Math_isAlmostEqual( first, last ) ) { size++; } else { for ( i=first; i < last; i += increment ) { size++; } if ( Math_isAlmostEqual( i, last ) ) { size++; } } return size; }
squareroot
EXPORT double Math_squareroot( double aValue );
Parameters
aValue;
Returns
The square root of aValue.
Implementation
double Math_squareroot( double aValue ) { return sqrt( aValue ); }
to Power (double)
EXPORT double Math_toPower( double base, double power );
Returns
base raised to power.
Implementation
double Math_toPower( double base, double power ) { return pow( base, power ); }
to Power (long double)
EXPORT long double Math_toPower_long_double( long double base, long double power );
Returns
Returns base raised to power.
long double Math_toPower_long_double( long double base, long double power ) { return powl( base, power ); }
to Power (float)
EXPORT float Math_toPower_float( float base, float power );
Returns
base raised to power.
float Math_toPower_float( float base, float power ) { return powf( base, power ); }