mirror of
https://github.com/aportelli/LatAnalyze.git
synced 2026-01-14 13:09:34 +00:00
overhaul of the function class
This commit is contained in:
@@ -27,10 +27,6 @@ using namespace Latan;
|
||||
* TabFunction implementation *
|
||||
******************************************************************************/
|
||||
// constructors ////////////////////////////////////////////////////////////////
|
||||
TabFunction::TabFunction(void)
|
||||
: DoubleFunction(1)
|
||||
{}
|
||||
|
||||
TabFunction::TabFunction(const DVec &x, const DVec &y)
|
||||
: TabFunction()
|
||||
{
|
||||
@@ -85,3 +81,33 @@ double TabFunction::operator()(const double *arg) const
|
||||
|
||||
return y_a + (x - x_a)*(y_b - y_a)/(x_b - x_a);
|
||||
}
|
||||
|
||||
// DoubleFunction factory //////////////////////////////////////////////////////
|
||||
DoubleFunction TabFunction::makeFunction(const bool makeHardCopy) const
|
||||
{
|
||||
DoubleFunction res;
|
||||
|
||||
if (makeHardCopy)
|
||||
{
|
||||
TabFunction copy(*this);
|
||||
|
||||
res.setFunction([copy](const double *x){return copy(x);}, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
res.setFunction([this](const double *x){return (*this)(x);}, 1);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
DoubleFunction Latan::interpolate(const DVec &x, const DVec &y)
|
||||
{
|
||||
return TabFunction(x,y).makeFunction();
|
||||
}
|
||||
|
||||
DoubleFunction Latan::interpolate(const XYStatData &data, const Index i,
|
||||
const Index j)
|
||||
{
|
||||
return TabFunction(data, i, j).makeFunction();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user