12#ifndef AAX_FASTINTERPOLATEDTABLELOOKUP_HPP
13#define AAX_FASTINTERPOLATEDTABLELOOKUP_HPP
19template<
class TFLOAT,
class DFLOAT>
22 const TFLOAT aScaledValue=(iValue - mMin)*mTableSizeM1DivMaxMinusMin;
26 const TFLOAT aScaledValueLimited = aScaledValue > mTableSizeM1 ? mTableSizeM1 : (aScaledValue > 0.0f ? aScaledValue : 0.0f);
30 TFLOAT aFracIndex=aScaledValueLimited - TFLOAT(aTableIndex);
31 TFLOAT aFracIndexM1=1.0f-aFracIndex;
33 return (DFLOAT)(iTable[aTableIndex]*aFracIndexM1 + iTable[aTableIndex+1]*aFracIndex);
38template<
class TFLOAT,
class DFLOAT>
41 TFLOAT aScaledValue=(iValue - mMin)*mTableSizeM1DivMaxMinusMin;
45 const TFLOAT aScaledValueLimited = aScaledValue > mTableSizeM1 ? mTableSizeM1 : (aScaledValue > 0.0f ? aScaledValue : 0.0f);
49 TFLOAT aFracIndex=aScaledValueLimited - TFLOAT(aTableIndex);
50 TFLOAT aFracIndexM1=1.0f-aFracIndex;
52 aTableIndex=aTableIndex*mNumTables;
53 int aTableIndexPlus1=aTableIndex+mNumTables;
55 for(
int i=0; i<mNumTables; i++)
57 oValues[i]=(DFLOAT)(iTable[aTableIndex++]*aFracIndexM1 + iTable[aTableIndexPlus1++]*aFracIndex);
62template<
class TFLOAT,
class DFLOAT>
65#if defined( _TMS320C6700 )
67 #pragma MUST_ITERATE(r, , r);
69 for (
int i = 0; i < blockSize; i++)
71 outBuf[i] = DoTableLookupExtraFast(iTable, inpBuf[i]);
int32_t FastTrunc2Int32(double iVal)
Float to Int conversion with truncation.
Definition: AAX_Quantize.h:124
void DoTableLookupExtraFastMulti(const TFLOAT *iTable, DFLOAT iValue, DFLOAT *oValues) const
Definition: AAX_FastInterpolatedTableLookup.hpp:39
DFLOAT DoTableLookupExtraFast(const TFLOAT *const iTable, DFLOAT iValue) const
Perform an extra fast table lookup :)
Definition: AAX_FastInterpolatedTableLookup.hpp:20