Skip to content

Commit 02286bc

Browse files
committed
add tests
1 parent 7d4dfdb commit 02286bc

File tree

1 file changed

+40
-10
lines changed

1 file changed

+40
-10
lines changed

test/finitedifftests.jl

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -382,38 +382,68 @@ df = zero(x)
382382
df_ref = diag(J_ref)
383383
epsilon = zero(x)
384384
forward_cache = FiniteDiff.JacobianCache(x, Val{:forward}, eltype(x))
385+
forward_jvp_cache = FiniteDiff.JVPCache(x, Val{:forward})
385386
@test forward_cache.colorvec == 1:length(x)
386387
central_cache = FiniteDiff.JacobianCache(x, Val{:central}, eltype(x))
388+
central_jvp_cache = FiniteDiff.JVPCache(x, Val{:central})
387389
complex_cache = FiniteDiff.JacobianCache(x, Val{:complex}, eltype(x))
388390
f_in = copy(y)
391+
vdir = rand(2)
392+
jvp_ref = J_ref*vdir
389393

390394
@time @testset "Out-of-Place Jacobian StridedArray real-valued tests" begin
391-
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache), J_ref) < 1e-4
392-
@test err_func(FiniteDiff.finite_difference_jacobian(oopff, x, forward_cache, dir=-1), J_ref) < 1e-4
393-
@test_throws Any err_func(FiniteDiff.finite_difference_jacobian(oopff, x, forward_cache), J_ref) < 1e-4
394-
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache, relstep=sqrt(eps())), J_ref) < 1e-4
395-
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache, f_in), J_ref) < 1e-4
395+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache), J_ref) < 1e-6
396+
@test err_func(FiniteDiff.finite_difference_jacobian(oopff, x, forward_cache, dir=-1), J_ref) < 1e-6
397+
@test_throws Any err_func(FiniteDiff.finite_difference_jacobian(oopff, x, forward_cache), J_ref) < 1e-6
398+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache, relstep=sqrt(eps())), J_ref) < 1e-6
399+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache, f_in), J_ref) < 1e-6
396400
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, central_cache), J_ref) < 1e-8
397401
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, Val{:central}), J_ref) < 1e-8
398402
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, complex_cache), J_ref) < 1e-14
399403
end
400404

405+
@time @testset "Out-of-Place JVP StridedArray real-valued tests" begin
406+
@test err_func(FiniteDiff.finite_difference_jvp(oopf, x, vdir, forward_jvp_cache), jvp_ref) < 1e-6
407+
@test err_func(FiniteDiff.finite_difference_jvp(oopff, x, vdir, forward_jvp_cache, dir=-1), jvp_ref) < 1e-6
408+
@test_throws Any err_func(FiniteDiff.finite_difference_jvp(oopff, x, vdir, forward_jvp_cache), jvp_ref) < 1e-6
409+
@test err_func(FiniteDiff.finite_difference_jvp(oopf, x, vdir, forward_jvp_cache, relstep=sqrt(eps())), jvp_ref) < 1e-6
410+
@test err_func(FiniteDiff.finite_difference_jvp(oopf, x, vdir, forward_jvp_cache, f_in), jvp_ref) < 1e-6
411+
@test err_func(FiniteDiff.finite_difference_jvp(oopf, x, vdir, central_jvp_cache), jvp_ref) < 1e-8
412+
@test err_func(FiniteDiff.finite_difference_jvp(oopf, x, vdir, Val{:central}), jvp_ref) < 1e-8
413+
end
414+
401415
function test_iipJac(J_ref, args...; kwargs...)
402416
_J = zero(J_ref)
403417
FiniteDiff.finite_difference_jacobian!(_J, args...; kwargs...)
404418
_J
405419
end
406420
@time @testset "inPlace Jacobian StridedArray real-valued tests" begin
407-
@test err_func(test_iipJac(J_ref, iipf, x, forward_cache), J_ref) < 1e-4
408-
@test err_func(test_iipJac(J_ref, iipff, x, forward_cache, dir=-1), J_ref) < 1e-4
409-
@test_throws Any err_func(test_iipJac(J_ref, iipff, x, forward_cache), J_ref) < 1e-4
410-
@test err_func(test_iipJac(J_ref, iipf, x, forward_cache, relstep=sqrt(eps())), J_ref) < 1e-4
411-
@test err_func(test_iipJac(J_ref, iipf, x, forward_cache, f_in), J_ref) < 1e-4
421+
@test err_func(test_iipJac(J_ref, iipf, x, forward_cache), J_ref) < 1e-6
422+
@test err_func(test_iipJac(J_ref, iipff, x, forward_cache, dir=-1), J_ref) < 1e-6
423+
@test_throws Any err_func(test_iipJac(J_ref, iipff, x, forward_cache), J_ref) < 1e-6
424+
@test err_func(test_iipJac(J_ref, iipf, x, forward_cache, relstep=sqrt(eps())), J_ref) < 1e-6
425+
@test err_func(test_iipJac(J_ref, iipf, x, forward_cache, f_in), J_ref) < 1e-6
412426
@test err_func(test_iipJac(J_ref, iipf, x, central_cache), J_ref) < 1e-8
413427
@test err_func(test_iipJac(J_ref, iipf, x, Val{:central}), J_ref) < 1e-8
414428
@test err_func(test_iipJac(J_ref, iipf, x, complex_cache), J_ref) < 1e-14
415429
end
416430

431+
function test_iipJVP(jvp_ref, args...; kwargs...)
432+
_jvp = zero(jvp_ref)
433+
FiniteDiff.finite_difference_jvp!(_jvp, args...; kwargs...)
434+
_jvp
435+
end
436+
437+
@time @testset "inPlace JVP StridedArray real-valued tests" begin
438+
@test err_func(test_iipJVP(jvp_ref, iipf, x, vdir, forward_jvp_cache), jvp_ref) < 1e-6
439+
@test err_func(test_iipJVP(jvp_ref, iipff, x, vdir, forward_jvp_cache, dir=-1), jvp_ref) < 1e-6
440+
@test_throws Any err_func(test_iipJVP(jvp_ref, iipff, x, vdir, forward_jvp_cache), jvp_ref) < 1e-6
441+
@test err_func(test_iipJVP(jvp_ref, iipf, x, vdir, forward_jvp_cache, relstep=sqrt(eps())), jvp_ref) < 1e-6
442+
@test err_func(test_iipJVP(jvp_ref, iipf, x, vdir, forward_jvp_cache, f_in), jvp_ref) < 1e-6
443+
@test err_func(test_iipJVP(jvp_ref, iipf, x, vdir, central_jvp_cache), jvp_ref) < 1e-8
444+
@test err_func(test_iipJVP(jvp_ref, iipf, x, vdir, Val{:central}), jvp_ref) < 1e-8
445+
end
446+
417447
function iipf(fvec, x)
418448
fvec[1] = (im * x[1] + 3) * (x[2]^3 - 7) + 18
419449
fvec[2] = sin(x[2] * exp(x[1]) - 1)

0 commit comments

Comments
 (0)