From f72ed13459c85f95893b627e50bd5d8b053058c2 Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Mon, 10 Feb 2025 16:13:26 -0500 Subject: [PATCH 1/3] fix `extract_derivative` when derivative is 0 ``` g(x) = [1.0, 2.0] TaylorDiff.derivative(g, 0.0, Val(1)) ``` Before gave `false`, now gives `[0.0, 0.0]` --- src/primitive.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/primitive.jl b/src/primitive.jl index 8ade8f2..7966255 100644 --- a/src/primitive.jl +++ b/src/primitive.jl @@ -13,7 +13,7 @@ Taylor = Union{TaylorScalar, TaylorArray} $(factorial(P))) @inline extract_derivative(a::AbstractArray{<:TaylorScalar}, p) = map( t -> extract_derivative(t, p), a) -@inline extract_derivative(_, p) = false +@inline extract_derivative(result, p) = zero(result) @inline extract_derivative!(result, a::AbstractArray{<:TaylorScalar}, p) = map!( t -> extract_derivative(t, p), result, a) From ef5277f4a53dcc025a34361506b31b643d89e3a2 Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Mon, 10 Feb 2025 16:53:35 -0500 Subject: [PATCH 2/3] add test --- test/derivative.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/derivative.jl b/test/derivative.jl index d8b68ab..316f4df 100644 --- a/test/derivative.jl +++ b/test/derivative.jl @@ -26,6 +26,8 @@ end @testset "O-function, I-derivative" begin g(x) = x .^ 2 @test derivative!(zeros(2), g, [1.0, 2.0], [1.0, 0.0], Val(1)) ≈ [2.0, 0.0] + gzero(x) = [1.0, 1.0] + @test derivative!(zeros(2), gzero, [1.0, 2.0], [1.0, 0.0], Val(1)) == [0.0, 0.0] end @testset "I-function, I-derivative" begin From 6f993ec8e22ae9f7efd3dc29e6f07c71897641e1 Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Mon, 10 Feb 2025 16:57:51 -0500 Subject: [PATCH 3/3] fix test --- test/derivative.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/derivative.jl b/test/derivative.jl index 316f4df..5ac7c7c 100644 --- a/test/derivative.jl +++ b/test/derivative.jl @@ -27,7 +27,7 @@ end g(x) = x .^ 2 @test derivative!(zeros(2), g, [1.0, 2.0], [1.0, 0.0], Val(1)) ≈ [2.0, 0.0] gzero(x) = [1.0, 1.0] - @test derivative!(zeros(2), gzero, [1.0, 2.0], [1.0, 0.0], Val(1)) == [0.0, 0.0] + @test derivative(gzero, [1.0, 2.0], [1.0, 0.0], Val(1)) == [0.0, 0.0] end @testset "I-function, I-derivative" begin