@@ -11,12 +11,28 @@ module stage2_fwd
11
11
end
12
12
13
13
myminus (a, b) = a - b
14
+ self_minus (a) = myminus (a, a)
14
15
ChainRulesCore. @scalar_rule myminus (x, y) (true , - 1 )
16
+ let self_minus′ = Diffractor. dontuse_nth_order_forward_stage2 (Tuple{typeof (self_minus), Float64})
17
+ @test isa (self_minus′, Core. OpaqueClosure{Tuple{Float64}, Float64})
18
+ @test self_minus′ (1.0 ) == 0.
19
+ end
20
+ ChainRulesCore. @scalar_rule myminus (x, y) (true , true ) # frule for `x - y`
21
+ let self_minus′ = Diffractor. dontuse_nth_order_forward_stage2 (Tuple{typeof (self_minus), Float64})
22
+ @test isa (self_minus′, Core. OpaqueClosure{Tuple{Float64}, Float64})
23
+ @test self_minus′ (1.0 ) == 2.
24
+ end
15
25
16
- self_minus (a) = myminus (a, a)
17
- let self_minus′′ = Diffractor. dontuse_nth_order_forward_stage2 (Tuple{typeof (self_minus), Float64}, 2 )
18
- @test isa (self_minus′′, Core. OpaqueClosure{Tuple{Float64}, Float64})
19
- @test self_minus′′ (1.0 ) == 0.
26
+ myminus2 (a, b) = a - b
27
+ self_minus2 (a) = myminus2 (a, a)
28
+ let self_minus2′ = Diffractor. dontuse_nth_order_forward_stage2 (Tuple{typeof (self_minus2), Float64})
29
+ @test isa (self_minus2′, Core. OpaqueClosure{Tuple{Float64}, Float64})
30
+ @test self_minus2′ (1.0 ) == 0.
31
+ end
32
+ ChainRulesCore. @scalar_rule myminus2 (x, y) (true , true ) # frule for `x - y`
33
+ let self_minus2′ = Diffractor. dontuse_nth_order_forward_stage2 (Tuple{typeof (self_minus2), Float64})
34
+ @test isa (self_minus2′, Core. OpaqueClosure{Tuple{Float64}, Float64})
35
+ @test self_minus2′ (1.0 ) == 2.
20
36
end
21
37
22
38
@testset " structs" begin
@@ -43,4 +59,4 @@ module stage2_fwd
43
59
g (x) = Diffractor.∂☆ {1} ()(Diffractor. ZeroBundle {1} (f), Diffractor. TaylorBundle {1} (x, (1.0 ,)))
44
60
Diffractor.∂☆ {1} ()(Diffractor. ZeroBundle {1} (g), Diffractor. TaylorBundle {1} (10f0 , (1.0 ,)))
45
61
end
46
- end
62
+ end
0 commit comments