|
| LookupTableTransform () |
| Creates an uninitialised LookupTableTransform object. More...
|
|
| LookupTableTransform (const std::function< FloatType(FloatType)> &functionToApproximate, FloatType minInputValueToUse, FloatType maxInputValueToUse, size_t numPoints) |
| Creates and initialises a LookupTableTransform object. More...
|
|
void | initialise (const std::function< FloatType(FloatType)> &functionToApproximate, FloatType minInputValueToUse, FloatType maxInputValueToUse, size_t numPoints) |
| Initialises or changes the parameters of a LookupTableTransform object. More...
|
|
FloatType | operator() (FloatType index) const noexcept |
|
FloatType | operator[] (FloatType index) const noexcept |
|
void | process (const FloatType *input, FloatType *output, size_t numSamples) const noexcept |
| Processes an array of input values with range checking. More...
|
|
FloatType | processSample (FloatType value) const noexcept |
| Calculates the approximated value for the given input value with range checking. More...
|
|
FloatType | processSampleUnchecked (FloatType value) const noexcept |
| Calculates the approximated value for the given input value without range checking. More...
|
|
void | processUnchecked (const FloatType *input, FloatType *output, size_t numSamples) const noexcept |
| Processes an array of input values without range checking. More...
|
|
template<typename FloatType>
class LookupTableTransform< FloatType >
Class for approximating expensive arithmetic operations.
Once initialised, this class can be used just like the function it approximates via operator().
Example:
LookupTableTransform<float> tanhApprox ([] (float x) { return std::tanh (x); }, -5.0f, 5.0f, 64);
auto outValue = tanhApprox (4.2f);
Note : if you try to call the function with an input outside the provided range, it will return either the first or the last recorded LookupTable value.
- See also
- LookupTable
template<typename FloatType>
static double LookupTableTransform< FloatType >::calculateMaxRelativeError |
( |
const std::function< FloatType(FloatType)> & |
functionToApproximate, |
|
|
FloatType |
minInputValue, |
|
|
FloatType |
maxInputValue, |
|
|
size_t |
numPoints, |
|
|
size_t |
numTestPoints = 0 |
|
) |
| |
|
static |
Calculates the maximum relative error of the approximation for the specified parameter set.
The closer the returned value is to zero the more accurate the approximation is.
This function compares the approximated output of this class to the function it approximates at a range of points and returns the maximum relative error. This can be used to determine if the approximation is suitable for the given problem. The accuracy of the approximation can generally be improved by increasing numPoints.
- Parameters
-
functionToApproximate | The approximated function. This should be a mapping from a FloatType to FloatType. |
minInputValue | The lowest input value used. |
maxInputValue | The highest input value used. |
numPoints | The number of pre-calculated values stored. |
numTestPoints | The number of input values used for error calculation. Higher numbers can increase the accuracy of the error calculation. If it's zero then 100 * numPoints will be used. |
template<typename FloatType>
Calculates the approximated value for the given input value with range checking.
This can be called with any input values. Out-of-range input values will be clipped to the specified input range.
If the index is guaranteed to be in range use the faster processSampleUnchecked() instead.
- Parameters
-
value | The approximation is calculated for this input value. |
- Returns
- The approximated value for the provided input value.
- See also
- processSampleUnchecked, operator(), operator[]
References juce::isPositiveAndBelow(), jassert, and jlimit().