Skip to content

Commit

Permalink
MersenneTwister frule
Browse files Browse the repository at this point in the history
  • Loading branch information
willtebbutt committed Jul 1, 2020
1 parent a5762db commit a746a77
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/rulesets/Random/random.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
frule(Δargs, ::typeof(MersenneTwister), args...) = MersenneTwister(args...), Zero()

function rrule(::typeof(MersenneTwister), args...)
function MersenneTwister_rrule(ΔΩ)
return (NO_FIELDS, map(_ -> Zero(), args)...)
Expand Down
8 changes: 8 additions & 0 deletions test/rulesets/Random/random.jl
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
@testset "random" begin
@testset "MersenneTwister" begin
@testset "no args" begin
rng, dΩ = frule((5.0,), MersenneTwister)
@test rng isa MersenneTwister
@testisa Zero

rng, pb = rrule(MersenneTwister)
@test rng isa MersenneTwister
@test first(pb(10)) isa Zero
end
@testset "unary" begin
rng, dΩ = frule((5.0, 4.0), MersenneTwister, 123)
@test rng isa MersenneTwister
@testisa Zero

rng, pb = rrule(MersenneTwister, 123)
@test rng isa MersenneTwister
@test all(map(x -> x isa Zero, pb(10)))
Expand Down

0 comments on commit a746a77

Please sign in to comment.