Open stevengj opened 1 year ago
(Very slightly) reduced example:
julia> p(s) = exp(1im*s);
julia> p′(s) = ForwardDiff.derivative(p, s);
julia> p″(s) = ForwardDiff.derivative(p′, s);
julia> p″(prevfloat(0.0))
-1.0 + 5.0e-324im
julia> p″(0.0)
0.0 + 0.0im
x^(1im*s)
appears to exhibit this problem for any x
.
expm1(1im*s)
has this problem.
exp2(1im*s)
and exp10(1im*s)
are mysteriously correct.
I believe this is one more case fixed by #481:
julia> p″(0.2499999999999)
-39.47841760435743 + 2.4807694081270598e-11im
julia> p″(0.25)
-39.47841760435743 + 0.0im
(jl_aRIFuW) pkg> st ForwardDiff
Status `/private/var/folders/yq/4p2zwd614y59gszh7y9ypyhh0000gn/T/jl_aRIFuW/Project.toml`
[f6369f11] ForwardDiff v0.11.0-DEV `https://github.com/JuliaDiff/ForwardDiff.jl.git#master`
This, from discourse, looks like a bug:
I don't think mere floating-point error can explain why
p″(0.25)
is suddenly zero — looks like a misplaced conditional or something. Note that the correct answer forp″(0.25)
is exactly-(2π)² ≈ -39.47841760435743
.(The first derivative
p′
looks okay.)