From 5b850f78752a7660dea47b877056f0b85f3d41ed Mon Sep 17 00:00:00 2001 From: David Widmann Date: Fri, 6 May 2022 11:07:10 +0200 Subject: [PATCH 1/3] Add definition for `logabsgamma` --- Project.toml | 2 +- src/dual.jl | 9 +++++++++ test/DualTest.jl | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 9dfe8592..cb0abdb0 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "ForwardDiff" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.28" +version = "0.10.29" [deps] CommonSubexpressions = "bbf7d656-a473-5ed7-a52c-81e309532950" diff --git a/src/dual.jl b/src/dual.jl index c3dc48a0..999c4a55 100644 --- a/src/dual.jl +++ b/src/dual.jl @@ -742,6 +742,15 @@ function LinearAlgebra.eigen(A::SymTridiagonal{<:Dual{Tg,T,N}}) where {Tg,T<:Rea Eigen(λ,Dual{Tg}.(Q, tuple.(parts...))) end +# SpecialFunctions.logabsgamma # +# Derivative is not defined in DiffRules # +#----------------------------------------# + +function SpecialFunctions.logabsgamma(d::Dual{T,<:Real}) where {T} + x = value(d) + y, s = SpecialFunctions.logabsgamma(x) + return (Dual{T}(y, SpecialFunctions.digamma(x) * partials(d)), s) +end ################### # Pretty Printing # diff --git a/test/DualTest.jl b/test/DualTest.jl index fd5ac210..21dd9e0d 100644 --- a/test/DualTest.jl +++ b/test/DualTest.jl @@ -539,6 +539,8 @@ for N in (0,3), M in (0,4), V in (Int, Float32) @test dual_isapprox(f(FDNUM, PRIMAL2, PRIMAL3), Dual{TestTag()}(f(PRIMAL, PRIMAL2, PRIMAL3), PRIMAL2*PARTIALS)) @test dual_isapprox(f(PRIMAL, PRIMAL2, FDNUM3), Dual{TestTag()}(f(PRIMAL, PRIMAL2, PRIMAL3), PARTIALS3)) end + + @test all(map(dual_isapprox, logabsgamma(FDNUM), (loggamma(abs(FDNUM)), sign(gamma(FDNUM))))) end @testset "Exponentiation of zero" begin From 271ffff3e40e9dbb947374f8384f0611a3e6775c Mon Sep 17 00:00:00 2001 From: David Widmann Date: Sat, 14 May 2022 23:18:13 +0200 Subject: [PATCH 2/3] Update test/DualTest.jl Co-authored-by: Frames Catherine White --- test/DualTest.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/DualTest.jl b/test/DualTest.jl index 21dd9e0d..66a1866a 100644 --- a/test/DualTest.jl +++ b/test/DualTest.jl @@ -540,7 +540,8 @@ for N in (0,3), M in (0,4), V in (Int, Float32) @test dual_isapprox(f(PRIMAL, PRIMAL2, FDNUM3), Dual{TestTag()}(f(PRIMAL, PRIMAL2, PRIMAL3), PARTIALS3)) end - @test all(map(dual_isapprox, logabsgamma(FDNUM), (loggamma(abs(FDNUM)), sign(gamma(FDNUM))))) + @test dual_isapprox(logabsgamma(FDNUM)[1], loggamma(abs(FDNUM))) + @test dual_isapprox(logabsgamma(FDNUM)[2], sign(gamma(FDNUM))) end @testset "Exponentiation of zero" begin From 5b9c038871fb6f1f354db1465aa013bf92af6d51 Mon Sep 17 00:00:00 2001 From: David Widmann Date: Thu, 19 May 2022 01:35:43 +0200 Subject: [PATCH 3/3] Update Project.toml --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index cb0abdb0..2930dc3b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "ForwardDiff" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.29" +version = "0.10.30" [deps] CommonSubexpressions = "bbf7d656-a473-5ed7-a52c-81e309532950"