Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
prevent run-time dispatch in roots(::AbstractVector)
findlast does not necessarily return an Integer, it may also return Nothing, depending on the value of its arguments. The latter case needs to be handled to prevent run-time dispatch for the slicing operation. Additionally, the truncated coefficients slice is now a view instead of a copy. This should make things slightly more performant, apart from making the code simpler. JET warnings before this commit: ``` julia> @report_opt PolynomialRoots.roots(rand(5)) ═════ 1 possible error found ═════ ┌ @ /home/nsajko/.julia/packages/PolynomialRoots/1iZQh/src/PolynomialRoots.jl:610 PolynomialRoots.:(var"#roots#2")(PolynomialRoots.NaN, false, #self#, poly) │┌ @ /home/nsajko/.julia/packages/PolynomialRoots/1iZQh/src/PolynomialRoots.jl:617 1 PolynomialRoots.:(:) %28 ││ runtime dispatch detected: (1 PolynomialRoots.:(:) %28::Union{Nothing, Int64})::UnitRange{Int64} │└───────────────────────────────────────────────────────────────────────────────── ``` After this commit: ``` julia> using JET, PolynomialRoots julia> PolynomialRoots.roots(rand(5)) 4-element Vector{ComplexF64}: -31.46526111710419 - 1.6981590262940853e-16im -0.13020601478750077 - 0.8162149121849699im -0.13020601478750077 + 0.81621491218497im -0.48806837350069937 + 2.350988701644575e-38im julia> @report_opt PolynomialRoots.roots(rand(5)) No errors detected ```
- Loading branch information