1
0
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:
2015-02-24 17:00:19 +00:00
parent b061e9093f
commit 465499626b
23 changed files with 326 additions and 103 deletions

View File

@@ -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();
}