Skip to content

Commit

Permalink
Fix warnings (#143)
Browse files Browse the repository at this point in the history
* Remove duplicated method definitions

This PR fixes the following warning
```julia
[ Info: Precompiling ForwardDiff2 [994df76e-a4c1-5e1f-bd5c-23b9b5303d4f]
WARNING: Method definition rrule(typeof(Base.sum), AbstractArray{#s695, N} where N where #s695<:Real) in module ChainRules at /home/scheme/.julia/dev/ChainRules/src/rulesets/Base/mapreduce.jl:61 overwritten at /home/scheme/.julia/dev/ChainRules/src/rulesets/Base/mapreduce.jl:76.
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition rrule(typeof(Base.sum), AbstractArray{#s695, N} where N where #s695<:Real) in module ChainRules at /home/scheme/.julia/dev/ChainRules/src/rulesets/Base/mapreduce.jl:61 overwritten at /home/scheme/.julia/dev/ChainRules/src/rulesets/Base/mapreduce.jl:76.
  ** incremental compilation may be fatally broken for this module **
```

* Fix NaNMath and SpecialFunctions warnings

```julia
julia> using NaNMath, SpecialFunctions
┌ Warning: Error requiring NaNMath from ChainRules:
│ LoadError: UndefVarError: SpecialFunctions not defined
│ Stacktrace:
│  [1] include at ./boot.jl:328 [inlined]
│  [2] include_relative(::Module, ::String) at ./loading.jl:1105
│  [3] include at ./Base.jl:31 [inlined]
│  [4] include(::String) at /home/scheme/.julia/dev/ChainRules/src/ChainRules.jl:1
│  [5] top-level scope at /home/scheme/.julia/dev/ChainRules/src/ChainRules.jl:45
│  [6] eval at ./boot.jl:330 [inlined]
│  [7] eval at /home/scheme/.julia/dev/ChainRules/src/ChainRules.jl:1 [inlined]
│  [8] (::ChainRules.var"#867#873")() at /home/scheme/.julia/packages/Requires/9Jse8/src/require.jl:67
│  [9] err(::ChainRules.var"#867#873", ::Module, ::String) at /home/scheme/.julia/packages/Requires/9Jse8/src/require.jl:38
│  [10] #866 at /home/scheme/.julia/packages/Requires/9Jse8/src/require.jl:66 [inlined]
│  [11] withpath(::ChainRules.var"#866#872", ::String) at /home/scheme/.julia/packages/Requires/9Jse8/src/require.jl:28
│  [12] (::ChainRules.var"#865#871")() at /home/scheme/.julia/packages/Requires/9Jse8/src/require.jl:65
│  [13] #invokelatest#1 at ./essentials.jl:709 [inlined]
│  [14] invokelatest at ./essentials.jl:708 [inlined]
│  [15] #3 at /home/scheme/.julia/packages/Requires/9Jse8/src/require.jl:19 [inlined]
│  [16] iterate at ./generator.jl:47 [inlined]
│  [17] _collect(::Array{Function,1}, ::Base.Generator{Array{Function,1},Requires.var"#3#4"}, ::Base.EltypeUnknown, ::Base.HasShape{1}) at ./array.jl:635
│  [18] map at ./array.jl:564 [inlined]
│  [19] loadpkg(::Base.PkgId) at /home/scheme/.julia/packages/Requires/9Jse8/src/require.jl:19
│  [20] #invokelatest#1 at ./essentials.jl:709 [inlined]
│  [21] invokelatest at ./essentials.jl:708 [inlined]
│  [22] require(::Base.PkgId) at ./loading.jl:925
│  [23] require(::Module, ::Symbol) at ./loading.jl:917
│  [24] eval(::Module, ::Any) at ./boot.jl:330
│  [25] eval_user_input(::Any, ::REPL.REPLBackend) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/REPL/src/REPL.jl:86
│  [26] run_backend(::REPL.REPLBackend) at /home/scheme/.julia/packages/Revise/S7mrl/src/Revise.jl:1057
│  [27] (::Revise.var"#85#87"{REPL.REPLBackend})() at ./task.jl:333
│ in expression starting at /home/scheme/.julia/dev/ChainRules/src/rulesets/packages/NaNMath.jl:4
└ @ Requires ~/.julia/packages/Requires/9Jse8/src/require.jl:40
```

* New patch release

* Add NaNMath.tan rule back

* Revert "Fix NaNMath and SpecialFunctions warnings"

This reverts commit 40382c6.

* Remove glue modules
  • Loading branch information
YingboMa committed Dec 25, 2019
1 parent d39e82c commit 146d031
Show file tree
Hide file tree
Showing 5 changed files with 3 additions and 21 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "ChainRules"
uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2"
version = "0.2.4"
version = "0.2.5"

[deps]
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
Expand Down
2 changes: 0 additions & 2 deletions src/ChainRules.jl
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,10 @@ include("rulesets/LinearAlgebra/factorization.jl")
function __init__()
@require NaNMath="77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" begin
include("rulesets/packages/NaNMath.jl")
using .NaNMathGlue
end

@require SpecialFunctions="276daf66-3868-5448-9aa4-cd146d93841b" begin
include("rulesets/packages/SpecialFunctions.jl")
using .SpecialFunctionsGlue
end
end

Expand Down
9 changes: 1 addition & 8 deletions src/rulesets/Base/mapreduce.jl
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,6 @@ function frule(::typeof(sum), x)
return sum(x), sum_pushforward
end

function rrule(::typeof(sum), x::AbstractArray{<:Real})
function sum_pullback(ȳ)
return (NO_FIELDS, @thunk(fill(ȳ, size(x))))
end
return sum(x), sum_pullback
end

function rrule(::typeof(sum), f, x::AbstractArray{<:Real}; dims=:)
y, mr_pullback = rrule(mapreduce, f, Base.add_sum, x; dims=dims)
function sum_pullback(ȳ)
Expand All @@ -73,7 +66,7 @@ function rrule(::typeof(sum), f, x::AbstractArray{<:Real}; dims=:)
end

function rrule(::typeof(sum), x::AbstractArray{<:Real}; dims=:)
y, inner_pullback = rrule(sum, identity, x; dims=dims)
y, inner_pullback = rrule(sum, identity, x; dims=dims)
function sum_pullback(ȳ)
return NO_FIELDS, last(inner_pullback(ȳ))
end
Expand Down
6 changes: 1 addition & 5 deletions src/rulesets/packages/NaNMath.jl
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
module NaNMathGlue
using ChainRulesCore
using ..NaNMath
using ..SpecialFunctions

@scalar_rule(NaNMath.sin(x), NaNMath.cos(x))
@scalar_rule(NaNMath.cos(x), -NaNMath.sin(x))
@scalar_rule(NaNMath.asin(x), inv(NaNMath.sqrt(1 - NaNMath.pow(x, 2))))
@scalar_rule(NaNMath.acos(x), -inv(NaNMath.sqrt(1 - NaNMath.pow(x, 2))))
@scalar_rule(NaNMath.acosh(x), inv(NaNMath.sqrt(NaNMath.pow(x, 2) - 1)))
@scalar_rule(NaNMath.tan(x), 1 + Ω^2)
@scalar_rule(NaNMath.atanh(x), inv(1 - NaNMath.pow(x, 2)))
@scalar_rule(NaNMath.log(x), inv(x))
@scalar_rule(NaNMath.log2(x), inv(x) / NaNMath.log(oftype(x, 2)))
Expand All @@ -22,5 +20,3 @@ using ..SpecialFunctions
@scalar_rule(NaNMath.min(x, y),
(ifelse((y < x) | (signbit(y) > signbit(x)), ifelse(isnan(y), One(), Zero()), ifelse(isnan(x), Zero(), One())),
ifelse((y < x) | (signbit(y) > signbit(x)), ifelse(isnan(y), Zero(), One()), ifelse(isnan(x), One(), Zero()))))

end #module
5 changes: 0 additions & 5 deletions src/rulesets/packages/SpecialFunctions.jl
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
module SpecialFunctionsGlue
using ChainRulesCore
using ..SpecialFunctions


@scalar_rule(SpecialFunctions.erf(x), (2 / sqrt(π)) * exp(-x * x))
@scalar_rule(SpecialFunctions.erfc(x), -(2 / sqrt(π)) * exp(-x * x))
Expand Down Expand Up @@ -78,5 +75,3 @@ end
if isdefined(SpecialFunctions, :loggamma)
@scalar_rule(SpecialFunctions.loggamma(x), SpecialFunctions.digamma(x))
end

end #module

2 comments on commit 146d031

@YingboMa
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register()

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/7147

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if Julia TagBot is installed, or can be done manually through the github interface, or via:

git tag -a v0.2.5 -m "<description of version>" 146d031235b28265772b8c0b98ed54b812c39316
git push origin v0.2.5

Please sign in to comment.