// Copyright (c) 2004 David Muse
// See the COPYING file for more information.
#ifndef RUDIMENTS_MATH_H
#define RUDIMENTS_MATH_H
#include <rudiments/private/mathincludes.h>
#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif
class math {
public:
static int absoluteValue(int j);
static div_t divide(int numer, int denom);
static long absoluteValue(long j);
static ldiv_t divide(long numer, long denom);
static long long absoluteValue(long long j);
static lldiv_t divide(long long numer,
long long denom);
static bool isFinite(float x);
static bool isInfinite(float x);
static bool isNaN(float x);
static bool areNaN(float x, float y);
static bool isNormal(float x);
static bool isSubNormal(float x);
static bool isGreater(float x, float y);
static bool isGreaterOrEqual(float x, float y);
static bool isLess(float x, float y);
static bool isLessOrEqual(float x, float y);
static bool isLessOrGreater(float x, float y);
static bool isSignBitSet(float x);
static float copySignBit(float x, float y);
static float arcCosine(float x);
static float arcSine(float x);
static float arcTangent(float x);
static float arcTangent(float y, float x);
static float cosine(float x);
static float sine(float x);
static float tangent(float x);
static float hyperbolicArcCosine(float x);
static float hyperbolicArcSine(float x);
static float hyperbolicArcTangent(float x);
static float hyperbolicCosine(float x);
static float hyperbolicSine(float x);
static float hyperbolicTangent(float x);
static float naturalExponent(float x);
static float naturalLog(float x);
static float naturalExponentMinusOne(float x);
static float naturalLogOfPlusOne(float x);
static float normalize(float x, int *exp);
static float logBase10(float x);
static float exponentBase2(float x);
static float logBase2(float x);
static float power(float x, float y);
static float squareRoot(float x);
static float cubeRoot(float x);
static float hypotenuse(float x, float y);
static float computeExponent(float x);
static int integralExponent(float x);
static float loadExponent(float x, int exp);
static float ceiling(float x);
static float floor(float x);
static float absoluteValue(float x);
static float remainder(float x, float y);
static float remainder(float x, float y, int *quo);
static float truncate(float x);
static float nearbyInteger(float x);
static float round(float x);
static float roundInexact(float x);
static long roundToLong(float x);
static long long roundToLongLong(float x);
static long roundAwayFromZeroToLong(float x);
static long long roundAwayFromZeroToLongLong(float x);
static float nextAfter(float x, float y);
static float nextToward(float x, float y);
static float errorFunction(float x);
static float complementaryErrorFunction(float x);
static float trueGamma(float x);
static float naturalLogGamma(float x);
static float scaleByRadixToPower(float x, float n);
static float scaleByRadixToPower(float x, int n);
static float scaleByRadixToPower(float x, long n);
static float larger(float x, float y);
static float smaller(float x, float y);
static float multiplyAndAdd(float x, float y, float z);
static float positiveDifference(float x, float y);
static float argument(float complex z);
static float conjugate(float complex z);
static float project(float complex z);
static float imaginary(float complex z);
static float real(float complex z);
// double methods
static bool isFinite(double x);
static bool isInfinite(double x);
static bool isNaN(double x);
static bool areNaN(double x, double y);
static bool isNormal(double x);
static bool isSubNormal(double x);
static bool isGreater(double x, double y);
static bool isGreaterOrEqual(double x, double y);
static bool isLess(double x, double y);
static bool isLessOrEqual(double x, double y);
static bool isLessOrGreater(double x, double y);
static bool isSignBitSet(double x);
static double copySignBit(double x, double y);
static double arcCosine(double x);
static double arcSine(double x);
static double arcTangent(double x);
static double arcTangent(double y, double x);
static double cosine(double x);
static double sine(double x);
static double tangent(double x);
static double hyperbolicArcCosine(double x);
static double hyperbolicArcSine(double x);
static double hyperbolicArcTangent(double x);
static double hyperbolicCosine(double x);
static double hyperbolicSine(double x);
static double hyperbolicTangent(double x);
static double naturalExponent(double x);
static double naturalLog(double x);
static double naturalExponentMinusOne(double x);
static double naturalLogOfPlusOne(double x);
static double normalize(double x, int *exp);
static double logBase10(double x);
static double exponentBase2(double x);
static double logBase2(double x);
static double power(double x, double y);
static double squareRoot(double x);
static double cubeRoot(double x);
static double hypotenuse(double x, double y);
static double computeExponent(double x);
static int integralExponent(double x);
static double loadExponent(double x, int exp);
static double ceiling(double x);
static double floor(double x);
static double absoluteValue(double x);
static double remainder(double x, double y);
static double remainder(double x, double y, int *quo);
static double truncate(double x);
static double nearbyInteger(double x);
static double round(double x);
static double roundInexact(double x);
static long roundToLong(double x);
static long long roundToLongLong(double x);
static long roundAwayFromZeroToLong(double x);
static long long roundAwayFromZeroToLongLong(double x);
static double nextAfter(double x, double y);
static double nextToward(double x, double y);
static double errorFunction(double x);
static double complementaryErrorFunction(double x);
static double trueGamma(double x);
static double naturalLogGamma(double x);
static double scaleByRadixToPower(double x, double n);
static double scaleByRadixToPower(double x, int n);
static double scaleByRadixToPower(double x, long n);
static double larger(double x, double y);
static double smaller(double x, double y);
static double multiplyAndAdd(double x, double y, double z);
static double positiveDifference(double x, double y);
static double argument(double complex z);
static double conjugate(double complex z);
static double project(double complex z);
static double imaginary(double complex z);
static double real(double complex z);
// long double methods
static bool isFinite(long double x);
static bool isInfinite(long double x);
static bool isNaN(long double x);
static bool areNaN(long double x, long double y);
static bool isNormal(long double x);
static bool isSubNormal(long double x);
static bool isGreater(long double x, long double y);
static bool isGreaterOrEqual(long double x, long double y);
static bool isLess(long double x, long double y);
static bool isLessOrEqual(long double x, long double y);
static bool isLessOrGreater(long double x, long double y);
static bool isSignBitSet(long double x);
static long double copySignBit(long double x,
long double y);
static long double arcCosine(long double x);
static long double arcSine(long double x);
static long double arcTangent(long double x);
static long double arcTangent(long double y,
long double x);
static long double cosine(long double x);
static long double sine(long double x);
static long double tangent(long double x);
static long double hyperbolicArcCosine(long double x);
static long double hyperbolicArcSine(long double x);
static long double hyperbolicArcTangent(long double x);
static long double hyperbolicCosine(long double x);
static long double hyperbolicSine(long double x);
static long double hyperbolicTangent(long double x);
static long double naturalExponent(long double x);
static long double naturalLog(long double x);
static long double naturalExponentMinusOne(long double x);
static long double naturalLogOfPlusOne(long double x);
static long double normalize(long double x, int *exp);
static long double logBase10(long double x);
static long double exponentBase2(long double x);
static long double logBase2(long double x);
static long double power(long double x, long double y);
static long double squareRoot(long double x);
static long double cubeRoot(long double x);
static long double hypotenuse(long double x,
long double y);
static long double computeExponent(long double x);
static int integralExponent(long double x);
static long double loadExponent(long double x, int exp);
static long double ceiling(long double x);
static long double floor(long double x);
static long double absoluteValue(long double x);
static long double remainder(long double x,
long double y);
static long double remainder(long double x,
long double y,
int *quo);
static long double truncate(long double x);
static long double nearbyInteger(long double x);
static long double round(long double x);
static long double roundInexact(long double x);
static long roundToLong(long double x);
static long long roundToLongLong(long double x);
static long roundAwayFromZeroToLong(long double x);
static long long roundAwayFromZeroToLongLong(
long double x);
static long double nextAfter(long double x,
long double y);
static long double nextToward(long double x,
long double y);
static long double errorFunction(long double x);
static long double complementaryErrorFunction(
long double x);
static long double trueGamma(long double x);
static long double naturalLogGamma(long double x);
static long double scaleByRadixToPower(long double x,
long double n);
static long double scaleByRadixToPower(long double x,
int n);
static long double scaleByRadixToPower(long double x,
long n);
static long double larger(long double x, long double y);
static long double smaller(long double x, long double y);
static long double multiplyAndAdd(long double x,
long double y,
long double z);
static long double positiveDifference(long double x,
long double y);
static long double argument(long double complex z);
static long double conjugate(long double complex z);
static long double project(long double complex z);
static long double imaginary(long double complex z);
static long double real(long double complex z);
// may not be in solaris -
// inttypes.h - some integer math functions
// imaxabs(),imaxdiv()
// strtoimax(),strtoumax(),wcstoimax(),wcstoumax()
// not in solaris -
// sys/param.h - howmany(),roundup(),powerof2(),MIN(),MAX()
};
#ifdef RUDIMENTS_NAMESPACE
}
#endif
#ifdef ENABLE_RUDIMENTS_INLINES
#include <rudiments/private/mathinlines.h>
#endif
#endif