From 2462184c64a201ac159c5618d9aa10ac794dfb97 Mon Sep 17 00:00:00 2001 From: Shuhei Kadowaki Date: Thu, 13 Jul 2023 23:31:17 +0900 Subject: [PATCH] add .gitattributes to ignore changes in Manifest.toml --- .gitattributes | 1 + test/rules.jl | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 .gitattributes create mode 100644 test/rules.jl diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..233a73cc --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +Manifest.toml linguist-generated=true diff --git a/test/rules.jl b/test/rules.jl new file mode 100644 index 00000000..71328c5e --- /dev/null +++ b/test/rules.jl @@ -0,0 +1,40 @@ +module rules + +using Test, Diffractor, ChainRulesCore +using Diffractor: var"'" + +# invalidation for rrule +rrule_demo(x) = sin(x) +function rrule_demo_pullback(x) + return function (Δx) + return NoTangent(), Δx*cos(x) + end +end +function ChainRulesCore.rrule(::typeof(rrule_demo), x) + return rrule_demo(x), rrule_demo_pullback(x) +end +@test cos(42) == rrule_demo'(42) +function rrule_demo_pullback(x) + return function (Δx) + return NoTangent(), Δx*sin(x) + end +end +@test sin(42) == rrule_demo'(42) + +# invalidation for frule +frule_demo(x) = sin(x) +function frule_demo_impl(Δx, x) + sinx, cosx = sincos(x) + return (sinx, sinx * Δx) +end +function ChainRulesCore.frule((_, Δx), ::typeof(frule_demo), x) + return frule_demo_impl(Δx, x) +end +@test cos(42) == frule_demo'(42) +function frule_demo_impl(Δx, x) + sinx, cosx = sincos(x) + return (sinx, sinx * Δx) +end +@test sin(42) == frule_demo'(42) + +end # module rules