25#ifndef AAX_FASTINTERPOLATEDTABLELOOKUP_HPP
26#define AAX_FASTINTERPOLATEDTABLELOOKUP_HPP
32template<
class TFLOAT,
class DFLOAT>
35 const TFLOAT aScaledValue=(iValue - mMin)*mTableSizeM1DivMaxMinusMin;
39 const TFLOAT aScaledValueLimited = aScaledValue > mTableSizeM1 ? mTableSizeM1 : (aScaledValue > 0.0f ? aScaledValue : 0.0f);
43 TFLOAT aFracIndex=aScaledValueLimited - TFLOAT(aTableIndex);
44 TFLOAT aFracIndexM1=1.0f-aFracIndex;
46 return (DFLOAT)(iTable[aTableIndex]*aFracIndexM1 + iTable[aTableIndex+1]*aFracIndex);
51template<
class TFLOAT,
class DFLOAT>
54 TFLOAT aScaledValue=(iValue - mMin)*mTableSizeM1DivMaxMinusMin;
58 const TFLOAT aScaledValueLimited = aScaledValue > mTableSizeM1 ? mTableSizeM1 : (aScaledValue > 0.0f ? aScaledValue : 0.0f);
62 TFLOAT aFracIndex=aScaledValueLimited - TFLOAT(aTableIndex);
63 TFLOAT aFracIndexM1=1.0f-aFracIndex;
65 aTableIndex=aTableIndex*mNumTables;
66 int aTableIndexPlus1=aTableIndex+mNumTables;
68 for(
int i=0; i<mNumTables; i++)
70 oValues[i]=(DFLOAT)(iTable[aTableIndex++]*aFracIndexM1 + iTable[aTableIndexPlus1++]*aFracIndex);
75template<
class TFLOAT,
class DFLOAT>
78#if defined( _TMS320C6700 )
80 #pragma MUST_ITERATE(r, , r);
82 for (
int i = 0; i < blockSize; i++)
84 outBuf[i] = DoTableLookupExtraFast(iTable, inpBuf[i]);
int32_t FastTrunc2Int32(double iVal)
Float to Int conversion with truncation.
Definition: AAX_Quantize.h:137
void DoTableLookupExtraFastMulti(const TFLOAT *iTable, DFLOAT iValue, DFLOAT *oValues) const
Definition: AAX_FastInterpolatedTableLookup.hpp:52
DFLOAT DoTableLookupExtraFast(const TFLOAT *const iTable, DFLOAT iValue) const
Perform an extra fast table lookup :)
Definition: AAX_FastInterpolatedTableLookup.hpp:33