diff --git a/Project.toml b/Project.toml index 41a69ab5d..53f1921e8 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "ApproxFun" uuid = "28f2ccd6-bb30-5033-b560-165f7b14dc2f" -version = "0.11.12" +version = "0.11.13" [deps] AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c" diff --git a/src/Extras/autodifferentiation.jl b/src/Extras/autodifferentiation.jl index 7d5d000c2..6be4af7a5 100644 --- a/src/Extras/autodifferentiation.jl +++ b/src/Extras/autodifferentiation.jl @@ -12,8 +12,9 @@ domain(df::DualFun) = domain(df.f) differentiate(d::DualFun) = DualFun(d.f',Derivative(rangespace(d.J))*d.J) integrate(d::DualFun) = DualFun(integrate(d.f),Integral(rangespace(d.J))*d.J) function cumsum(d::DualFun) - Q=Integral(rangespace(d.J))*d.J - DualFun(cumsum(d.f),(I-Evaluation(rangespace(Q),leftendpoint))*Q) + Q = Integral(rangespace(d.J))*d.J + rs = rangespace(Q) + DualFun(cumsum(d.f),Q-ones(rs)*Evaluation(rs,leftendpoint)*Q) end # total definite integral of a function diff --git a/test/ExtrasTest.jl b/test/ExtrasTest.jl index ab3cab03b..d372018dc 100644 --- a/test/ExtrasTest.jl +++ b/test/ExtrasTest.jl @@ -1,5 +1,5 @@ using ApproxFun, Test, DualNumbers - import ApproxFun: eigs +import ApproxFun: eigs @testset "Extras" begin @testset "Dual numbers" begin @@ -123,6 +123,10 @@ using ApproxFun, Test, DualNumbers u = 0.5*one(x) u = newton(N_single, [u]) @test norm(u - u1) < 1e-15 + end + @testset "cumsum (#701)" begin + d = ApproxFun.DualFun(Fun()) + @test cumsum(d).J*Fun() ≈ Fun(x -> (x^2-1)/2) end end