juce_MathsFunctions.h File Reference

Classes

struct  MathConstants< FloatType >
 Commonly used mathematical constants. More...
 
struct  TypeHelpers::ParameterType< Type >
 The ParameterType struct is used to find the best type to use when passing some kind of object as a parameter. More...
 
struct  TypeHelpers::SmallestFloatType< Type >
 These templates are designed to take a type, and if it's a double, they return a double type; for anything else, they return a float type. More...
 
struct  TypeHelpers::SmallestFloatType< double >
 
struct  TypeHelpers::UnsignedTypeWithSize< bytes >
 These templates are designed to take an integer type, and return an unsigned int version with the same size. More...
 
struct  TypeHelpers::UnsignedTypeWithSize< 1 >
 
struct  TypeHelpers::UnsignedTypeWithSize< 2 >
 
struct  TypeHelpers::UnsignedTypeWithSize< 4 >
 
struct  TypeHelpers::UnsignedTypeWithSize< 8 >
 

Namespaces

 TypeHelpers
 This namespace contains a few template classes for helping work out class type variations.
 

Macros

#define JUCE_UNDENORMALISE(x)   { (x) += 0.1f; (x) -= 0.1f; }
 This macro can be applied to a float variable to check whether it contains a denormalised value, and to normalise it if necessary. More...
 

Typedefs

typedef signed char int8
 A platform-independent 8-bit signed integer type. More...
 
typedef unsigned char uint8
 A platform-independent 8-bit unsigned integer type. More...
 
typedef signed short int16
 A platform-independent 16-bit signed integer type. More...
 
typedef unsigned short uint16
 A platform-independent 16-bit unsigned integer type. More...
 
typedef signed int int32
 A platform-independent 32-bit signed integer type. More...
 
typedef unsigned int uint32
 A platform-independent 32-bit unsigned integer type. More...
 
typedef long long int64
 A platform-independent 64-bit integer type. More...
 
typedef unsigned long long uint64
 A platform-independent 64-bit unsigned integer type. More...
 
typedef int pointer_sized_int
 A signed integer type that's guaranteed to be large enough to hold a pointer without truncating it. More...
 
typedef unsigned int pointer_sized_uint
 An unsigned integer type that's guaranteed to be large enough to hold a pointer without truncating it. More...
 

Functions

template<typename Type >
Type jmax (const Type a, const Type b)
 Returns the larger of two values. More...
 
template<typename Type >
Type jmax (const Type a, const Type b, const Type c)
 Returns the larger of three values. More...
 
template<typename Type >
Type jmax (const Type a, const Type b, const Type c, const Type d)
 Returns the larger of four values. More...
 
template<typename Type >
Type jmin (const Type a, const Type b)
 Returns the smaller of two values. More...
 
template<typename Type >
Type jmin (const Type a, const Type b, const Type c)
 Returns the smaller of three values. More...
 
template<typename Type >
Type jmin (const Type a, const Type b, const Type c, const Type d)
 Returns the smaller of four values. More...
 
template<typename Type >
Type jmap (Type value0To1, Type targetRangeMin, Type targetRangeMax)
 Remaps a normalised value (between 0 and 1) to a target range. More...
 
template<typename Type >
Type jmap (Type sourceValue, Type sourceRangeMin, Type sourceRangeMax, Type targetRangeMin, Type targetRangeMax)
 Remaps a value from a source range to a target range. More...
 
template<typename Type >
Type findMinimum (const Type *data, int numValues)
 Scans an array of values, returning the minimum value that it contains. More...
 
template<typename Type >
Type findMaximum (const Type *values, int numValues)
 Scans an array of values, returning the maximum value that it contains. More...
 
template<typename Type >
void findMinAndMax (const Type *values, int numValues, Type &lowest, Type &highest)
 Scans an array of values, returning the minimum and maximum values that it contains. More...
 
template<typename Type >
Type jlimit (Type lowerLimit, Type upperLimit, Type valueToConstrain) noexcept
 Constrains a value to keep it within a given range. More...
 
template<typename Type1 , typename Type2 >
bool isPositiveAndBelow (Type1 valueToTest, Type2 upperLimit) noexcept
 Returns true if a value is at least zero, and also below a specified upper limit. More...
 
template<typename Type >
bool isPositiveAndBelow (int valueToTest, Type upperLimit) noexcept
 
template<typename Type1 , typename Type2 >
bool isPositiveAndNotGreaterThan (Type1 valueToTest, Type2 upperLimit) noexcept
 Returns true if a value is at least zero, and also less than or equal to a specified upper limit. More...
 
template<typename Type >
bool isPositiveAndNotGreaterThan (int valueToTest, Type upperLimit) noexcept
 
template<typename Type1 >
void ignoreUnused (const Type1 &) noexcept
 Handy function for avoiding unused variables warning. More...
 
template<typename Type1 , typename Type2 >
void ignoreUnused (const Type1 &, const Type2 &) noexcept
 
template<typename Type1 , typename Type2 , typename Type3 >
void ignoreUnused (const Type1 &, const Type2 &, const Type3 &) noexcept
 
template<typename Type1 , typename Type2 , typename Type3 , typename Type4 >
void ignoreUnused (const Type1 &, const Type2 &, const Type3 &, const Type4 &) noexcept
 
template<typename Type , int N>
int numElementsInArray (Type(&array)[N])
 Handy function for getting the number of elements in a simple const C array. More...
 
template<typename Type >
Type juce_hypot (Type a, Type b) noexcept
 Using juce_hypot is easier than dealing with the different types of hypot function that are provided by the various platforms and compilers. More...
 
int64 abs64 (const int64 n) noexcept
 64-bit abs function. More...
 
float degreesToRadians (float degrees) noexcept
 Converts an angle in degrees to radians. More...
 
double degreesToRadians (double degrees) noexcept
 Converts an angle in degrees to radians. More...
 
float radiansToDegrees (float radians) noexcept
 Converts an angle in radians to degrees. More...
 
double radiansToDegrees (double radians) noexcept
 Converts an angle in radians to degrees. More...
 
template<typename NumericType >
bool juce_isfinite (NumericType) noexcept
 The isfinite() method seems to vary between platforms, so this is a platform-independent function for it. More...
 
template<>
bool juce_isfinite (float value) noexcept
 
template<>
bool juce_isfinite (double value) noexcept
 
template<typename FloatType >
int roundToInt (const FloatType value) noexcept
 Fast floating-point-to-integer conversion. More...
 
int roundToInt (int value) noexcept
 
int roundToIntAccurate (double value) noexcept
 Fast floating-point-to-integer conversion. More...
 
int roundDoubleToInt (double value) noexcept
 Fast floating-point-to-integer conversion. More...
 
int roundFloatToInt (float value) noexcept
 Fast floating-point-to-integer conversion. More...
 
template<typename FloatType >
unsigned int truncatePositiveToUnsignedInt (FloatType value) noexcept
 Truncates a positive floating-point number to an unsigned int. More...
 
template<typename IntegerType >
bool isPowerOfTwo (IntegerType value)
 Returns true if the specified integer is a power-of-two. More...
 
int nextPowerOfTwo (int n) noexcept
 Returns the smallest power-of-two which is equal to or greater than the given integer. More...
 
int findHighestSetBit (uint32 n) noexcept
 Returns the index of the highest set bit in a (non-zero) number. More...
 
int countNumberOfBits (uint32 n) noexcept
 Returns the number of bits in a 32-bit integer. More...
 
int countNumberOfBits (uint64 n) noexcept
 Returns the number of bits in a 64-bit integer. More...
 
template<typename IntegerType >
IntegerType negativeAwareModulo (IntegerType dividend, const IntegerType divisor) noexcept
 Performs a modulo operation, but can cope with the dividend being negative. More...
 
template<typename NumericType >
NumericType square (NumericType n) noexcept
 Returns the square of its argument. More...
 
void writeLittleEndianBitsInBuffer (void *targetBuffer, uint32 startBit, uint32 numBits, uint32 value) noexcept
 Writes a number of bits into a memory buffer at a given bit index. More...
 
uint32 readLittleEndianBitsInBuffer (const void *sourceBuffer, uint32 startBit, uint32 numBits) noexcept
 Reads a number of bits from a buffer at a given bit index. More...
 

Variables

const double double_Pi = MathConstants<double>::pi
 A predefined value for Pi, at double-precision. More...
 
const float float_Pi = MathConstants<float>::pi
 A predefined value for Pi, at single-precision. More...