The evaluator at the type level is obnoxious and bleeds everywhere. And really it's not a characteristic of the type.
We know that we have polynomials (e.g., in elliptic integrals) where the evaluation scheme needs to be Horner for numerical stability, so passing the evaluator at construction with the coefficients is logical.
While the evaluator is only used at evaluation time (doh!) it would not make sense to pick a different one for different arguments.
The evaluator is passed as a tag object (because constructors have to deduce their template parameters). If omitted, Horner is used for small degrees and Estrin for large degrees.
This is only touching polynomials. The other classes that know about evaluators will be handled in future PRs.
The evaluator is passed as a tag object (because constructors have to deduce their template parameters). If omitted, Horner is used for small degrees and Estrin for large degrees.
This is only touching polynomials. The other classes that know about evaluators will be handled in future PRs.
A modest contribution to #1922.