15 #ifndef AAX_FASTINTERPOLATEDTABLELOOKUP_HPP
16 #define AAX_FASTINTERPOLATEDTABLELOOKUP_HPP
22 template<
class TFLOAT,
class DFLOAT>
25 const TFLOAT aScaledValue=(iValue - mMin)*mTableSizeM1DivMaxMinusMin;
29 const TFLOAT aScaledValueLimited = aScaledValue > mTableSizeM1 ? mTableSizeM1 : (aScaledValue > 0.0f ? aScaledValue : 0.0f);
33 TFLOAT aFracIndex=aScaledValueLimited - TFLOAT(aTableIndex);
34 TFLOAT aFracIndexM1=1.0f-aFracIndex;
36 return (DFLOAT)(iTable[aTableIndex]*aFracIndexM1 + iTable[aTableIndex+1]*aFracIndex);
41 template<
class TFLOAT,
class DFLOAT>
44 TFLOAT aScaledValue=(iValue - mMin)*mTableSizeM1DivMaxMinusMin;
48 const TFLOAT aScaledValueLimited = aScaledValue > mTableSizeM1 ? mTableSizeM1 : (aScaledValue > 0.0f ? aScaledValue : 0.0f);
52 TFLOAT aFracIndex=aScaledValueLimited - TFLOAT(aTableIndex);
53 TFLOAT aFracIndexM1=1.0f-aFracIndex;
55 aTableIndex=aTableIndex*mNumTables;
56 int aTableIndexPlus1=aTableIndex+mNumTables;
58 for(
int i=0; i<mNumTables; i++)
60 oValues[i]=(DFLOAT)(iTable[aTableIndex++]*aFracIndexM1 + iTable[aTableIndexPlus1++]*aFracIndex);
65 template<
class TFLOAT,
class DFLOAT>
68 #if defined( _TMS320C6700 )
70 #pragma MUST_ITERATE(r, , r);
72 for (
int i = 0; i < blockSize; i++)
74 outBuf[i] = DoTableLookupExtraFast(iTable, inpBuf[i]);
int32_t FastTrunc2Int32(double iVal)
Float to Int conversion with truncation.
Definition: AAX_Quantize.h:126
void DoTableLookupExtraFastMulti(const TFLOAT *iTable, DFLOAT iValue, DFLOAT *oValues) const
Definition: AAX_FastInterpolatedTableLookup.hpp:42
DFLOAT DoTableLookupExtraFast(const TFLOAT *const iTable, DFLOAT iValue) const
Perform an extra fast table lookup :)
Definition: AAX_FastInterpolatedTableLookup.hpp:23