diff --git a/Project.toml b/Project.toml index 1f12c7ba..12497280 100644 --- a/Project.toml +++ b/Project.toml @@ -38,9 +38,10 @@ julia = "1.6" Calculus = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" DiffTests = "de460e47-3fe3-5279-bb4a-814414816d5d" InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Calculus", "DiffTests", "SparseArrays", "StaticArrays", "Test", "InteractiveUtils"] +test = ["Calculus", "DiffTests", "SparseArrays", "StaticArrays", "Test", "InteractiveUtils", "Measurements"] diff --git a/src/partials.jl b/src/partials.jl index a5316e3e..ddec4ebc 100644 --- a/src/partials.jl +++ b/src/partials.jl @@ -7,7 +7,7 @@ end ############################## @generated function single_seed(::Type{Partials{N,V}}, ::Val{i}) where {N,V,i} - ex = Expr(:tuple, [ifelse(i === j, :(one(V)), :(zero(V))) for j in 1:N]...) + ex = Expr(:tuple, [ifelse(i === j, :(oneunit(V)), :(zero(V))) for j in 1:N]...) return :(Partials($(ex))) end diff --git a/test/MiscTest.jl b/test/MiscTest.jl index 0ed8039a..cb5b0ef3 100644 --- a/test/MiscTest.jl +++ b/test/MiscTest.jl @@ -6,6 +6,7 @@ using Test using ForwardDiff using DiffTests using SparseArrays: sparse +using Measurements: Measurements include(joinpath(dirname(@__FILE__), "utils.jl")) @@ -161,4 +162,9 @@ end # example from https://github.com/JuliaDiff/DiffRules.jl/pull/98#issuecomment-1574420052 @test only(ForwardDiff.hessian(t -> abs(t[1])^2, [0.0])) == 2 +#issue 651, using Measurements +#one(x::Measurement{T}) where T = one(T) != oneunit(x) +f651(x) = 2.1*x + 1 +@test ForwardDiff.derivative(f651,Measurements.measurement(1.0, 0.001)) == 2.1 + end # module