50 CLAM_DEBUG_ASSERT(arg>=mLowerBound && arg<=mUpperBound,
"Tablulated functor argument out of bound");
52 int index =
int((arg-mLowerBound) / mIncr);
56 TData x1 = mLowerBound+mIncr*index;
57 TData yIncr = mTable[index+1]-mTable[index];
59 return mTable[index] + ((arg-x1) * yIncr) * mInvIncr;
64 mLowerBound(lowerBound),
65 mUpperBound(upperBound),
69 CLAM_ASSERT(tableSize>=2,
"Tabulating a function with less than 2 points.");
70 CLAM_ASSERT(lowerBound < upperBound,
"No interval left to calculate values");
79 mTable.reserve(mTableSize);
81 mIncr = (mUpperBound - mLowerBound) / (mTableSize-1);
84 TData arg = mLowerBound;
86 for (
int i=0; i<=mTableSize-1; arg+=mIncr, i++)
87 mTable[i] = OriginalFunction::operator() (arg);
95 TData mIncr, mInvIncr;
101 #endif // TabFunct.hxx