22#ifndef LSST_AFW_MATH_POLYNOMIALS_Function2d_h_INCLUDED
23#define LSST_AFW_MATH_POLYNOMIALS_Function2d_h_INCLUDED
41template <
typename Basis_>
57 _coefficients(Eigen::VectorXd::Zero(basis.
size()))
63 _coefficients(coefficients)
69 template <
typename Iterator>
72 _coefficients(basis.
size())
75 std::copy(first, last, &_coefficients[0]);
111 return _basis.sumWith(point, _coefficients, mode);
116 return _basis.sumWith(point, _coefficients, workspace, mode);
138 return _coefficients.head(
size());
150 Eigen::VectorXd _coefficients;
154template <
typename Basis>
160template <
typename Basis,
typename Iterator>
A 2-d function defined by a series expansion and its coefficients.
Function2d & operator=(Function2d &&)=default
Function2d & operator=(Function2d const &)=default
Function2d(Basis const &basis, Eigen::VectorXd const &coefficients)
Workspace makeWorkspace() const
Basis const & getBasis() const
Function2d(Function2d &&)=default
const_iterator end() const
const_iterator cbegin() const
double const * const_iterator
double & operator[](std::size_t n)
Chebyshev1Basis2d< packing > Basis
typename Basis::Workspace Workspace
double const & operator[](std::size_t n) const
auto getCoefficients() const
double operator()(geom::Point2D const &point, Workspace &workspace, SumMode mode=SumMode::FAST) const
const_iterator begin() const
Function2d< typename Basis::Scaled > scaled(Scaling2d const &scaling) const
double operator()(geom::Point2D const &point, SumMode mode=SumMode::FAST) const
Function2d(Basis const &basis)
Construct with zero-valued coefficients.
Function2d(Basis const &basis, Iterator first, Iterator last)
Function2d(Function2d const &)=default
const_iterator cend() const
PackedBasisWorkspace2d Workspace
std::size_t size() const noexcept
Return the number of basis functions.
A 2-d separable affine transform that can be used to map one interval to another.
Low-level polynomials (including special polynomials) in C++.
Function2d< Basis > makeFunction2d(Basis const &basis, Eigen::VectorXd const &coefficients)
Create a Function2d of the appropriate type from a Basis2d and an Eigen object containing coefficient...
SumMode
Enum used to control how to sum polynomial terms.
@ FAST
Summation using regular floating-point addition.
Point< double, 2 > Point2D