69 const int n =
static_cast<int>(m_coefficients.size());
73 if (n == 1)
return m_coefficients[0];
80 for (
int k = n - 1; k >= 1; --k)
82 const value_type b_k = m_coefficients[k] + two_x * b_kplus1 - b_kplus2;
88 return m_coefficients[0] + x * b_kplus1 - b_kplus2;
101 template <
typename InputIt,
typename OutputIt>
104 OutputIt out)
const noexcept
106 for (; begin != end; ++begin, ++out)
119 return static_cast<int>(m_coefficients.size()) - 1;
129 return m_coefficients;
133 std::vector<value_type> m_coefficients;
Evaluates a Chebyshev polynomial series using Clenshaw recurrence.
Definition chebyshev.hpp:31
value_type evaluate(value_type x) const noexcept
Evaluate the polynomial series at x.
Definition chebyshev.hpp:67
ChebyshevEvaluator()=default
Default constructor.
void set_coefficients(std::vector< value_type > coefficients)
Set Chebyshev coefficients.
Definition chebyshev.hpp:53
const std::vector< value_type > & coefficients() const noexcept
Get series coefficients.
Definition chebyshev.hpp:127
void evaluate_batch(InputIt begin, InputIt end, OutputIt out) const noexcept
Evaluate the series on a range of input values.
Definition chebyshev.hpp:102
ChebyshevEvaluator(std::vector< value_type > coefficients)
Construct from Chebyshev coefficients.
Definition chebyshev.hpp:44
int degree() const noexcept
Get polynomial degree.
Definition chebyshev.hpp:117
float value_type
Definition chebyshev.hpp:33
Definition algebra.hpp:23