1
1
allapprox (x,y,tol= 1e-8 ) = all (isapprox .(x,y,atol= tol))
2
+ FDM = central_fdm (5 ,1 )
3
+
2
4
3
5
function kappa_AD (:: Val{:Zygote} ,k:: Kernel ,d:: Real )
4
6
first (Zygote. gradient (x-> kappa (k,x),d))
@@ -9,29 +11,29 @@ function kappa_AD(::Val{:ForwardDiff},k::Kernel,d::Real)
9
11
end
10
12
11
13
function kappa_fdm (k:: Kernel ,d:: Real )
12
- central_fdm ( 5 , 1 )( x-> kappa (k,x),d)
14
+ first (FiniteDifferences . grad (FDM, x-> kappa (k,x),d) )
13
15
end
14
16
15
17
16
18
function transform_AD (:: Val{:Zygote} ,t:: Transform ,A)
17
19
ps = KernelFunctions. params (t)
18
- @test allisapprox (first (Zygote. gradient (p-> transform_with_duplicate (p,t,A),ps)),
19
- central_fdm ( 5 , 1 )( p-> transform_with_duplicate (p,t,A),ps))
20
- @test allisapprox (first (Zygote. gradient (X-> sum (transform (t,X,2 )),A))
21
- .≈ central_fdm ( 5 , 1 )( X-> sum (transform (t,X,2 )),A))
20
+ @test allapprox (first (Zygote. gradient (p-> transform_with_duplicate (p,t,A),ps)),
21
+ first (FiniteDifferences . grad (FDM, p-> transform_with_duplicate (p,t,A),ps) ))
22
+ @test allapprox (first (Zygote. gradient (X-> sum (transform (t,X,2 )),A)),
23
+ first (FiniteDifferences . grad (FDM, X-> sum (transform (t,X,2 )),A) ))
22
24
end
23
25
24
26
function transform_AD (:: Val{:ForwardDiff} ,t:: Transform ,A)
25
27
ps = KernelFunctions. params (t)
26
28
if t isa ScaleTransform
27
- @test allisapprox (first (ForwardDiff. gradient (p-> transform_with_duplicate (first (p),t,A),[ps])),
28
- central_fdm ( 5 , 1 )( p-> transform_with_duplicate (p,t,A),ps))
29
+ @test allapprox (first (ForwardDiff. gradient (p-> transform_with_duplicate (first (p),t,A),[ps])),
30
+ first (FiniteDifferences . grad (FDM, p-> transform_with_duplicate (p,t,A),ps) ))
29
31
else
30
- @test allisapprox (ForwardDiff. gradient (p-> transform_with_duplicate (p,t,A),ps),
31
- central_fdm ( 5 , 1 )( p-> transform_with_duplicate (p,t,A),ps))
32
+ @test allapprox (ForwardDiff. gradient (p-> transform_with_duplicate (p,t,A),ps),
33
+ first (FiniteDifferences . grad (FDM, p-> transform_with_duplicate (p,t,A),ps) ))
32
34
end
33
- @test allisapprox (ForwardDiff. gradient (X-> sum (transform (t,X,2 )),A),
34
- central_fdm ( 5 , 1 )( X-> sum (transform (t,X,2 )),A))
35
+ @test allapprox (ForwardDiff. gradient (X-> sum (transform (t,X,2 )),A),
36
+ first (FiniteDifferences . grad (FDM, X-> sum (transform (t,X,2 )),A) ))
35
37
end
36
38
37
39
transform_with_duplicate (p,t,A) = sum (transform (KernelFunctions. duplicate (t,p),A,2 ))
0 commit comments