export @evalpoly macro (née @chorner) #7146
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This exports the
@evalpoly(z, c...)
macro for efficient inline evaluation of polynomials (either by Horner's rule or, for complexz
, using a more efficient algorithmdue todescribed by Knuth). Discussed in #7033 and commit 76a7335.This should probably not be merged until
isa(x, Complex)
is evaluated statically, as discussed in #7060, as otherwise it will cause a performance regression.In Matlab, the analogous function is called polyval, but I intentionally did not use that name since the arguments are different: in Matlab you call
polyval(c, z)
, and the coefficients are in reverse order.It might also be worth providing an
evalpoly(z, c)
function that does the same thing but at runtime.cc: @StefanKarpinski, @jiahao