Classes | Namespaces | Macros | Typedefs | Functions
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::UnsignedTypeWithSize< bytes >
 These templates are designed to take an integer type, and return an unsigned int version with the same size. More...
 

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

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

Functions

template<typename Type >
constexpr Type jmax (Type a, Type b)
 Returns the larger of two values. More...
 
template<typename Type >
constexpr Type jmax (Type a, Type b, Type c)
 Returns the larger of three values. More...
 
template<typename Type >
constexpr Type jmax (Type a, Type b, Type c, Type d)
 Returns the larger of four values. More...
 
template<typename Type >
constexpr Type jmin (Type a, Type b)
 Returns the smaller of two values. More...
 
template<typename Type >
constexpr Type jmin (Type a, Type b, Type c)
 Returns the smaller of three values. More...
 
template<typename Type >
constexpr Type jmin (Type a, Type b, Type c, Type d)
 Returns the smaller of four values. More...
 
template<typename Type >
constexpr 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 mapToLog10 (Type value0To1, Type logRangeMin, Type logRangeMax)
 Remaps a normalised value (between 0 and 1) to a logarithmic target range. More...
 
template<typename Type >
Type mapFromLog10 (Type valueInLogRange, Type logRangeMin, Type logRangeMax)
 Remaps a logarithmic value in a target range to a normalised value (between 0 and 1). 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 Type >
bool isWithin (Type a, Type b, Type tolerance) noexcept
 Computes the absolute difference between two values and returns true if it is less than or equal to a given tolerance, otherwise it returns false. More...
 
template<typename Type >
bool approximatelyEqual (Type a, Type b) noexcept
 Returns true if the two numbers are approximately equal. More...
 
template<typename... Types>
void ignoreUnused (Types &&...) noexcept
 Handy function for avoiding unused variables warning. More...
 
template<typename Type , size_t N>
constexpr int numElementsInArray (Type(&)[N]) noexcept
 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...
 
template<typename FloatType >
constexpr FloatType degreesToRadians (FloatType degrees) noexcept
 Converts an angle in degrees to radians. More...
 
template<typename FloatType >
constexpr FloatType radiansToDegrees (FloatType 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...
 
template<typename FloatType >
unsigned int truncatePositiveToUnsignedInt (FloatType value) noexcept
 Truncates a positive floating-point number to an unsigned int. More...
 
template<typename IntegerType >
constexpr 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 >
constexpr 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...