Skip to content

Commit 4b80ee8

Browse files
committed
Add tests for OOP finite_difference_jacobian with range input
1 parent 8dae64e commit 4b80ee8

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

test/finitedifftests.jl

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,32 @@ J_ref = Matrix{Float64}(I,4,4)
409409
@test err_func(test_iipJac(J_ref, iipf, x, Val{:central}, eltype(x), iipf(similar(x),x)), J_ref) < 1e-8
410410
@test err_func(test_iipJac(J_ref, iipf, x, Val{:complex}, eltype(x), iipf(similar(x),x)), J_ref) < 1e-8
411411
end
412+
413+
# Range input for out-of-place function
414+
x = range(rand(), rand(); length=2)
415+
z = copy(x)
416+
y = similar(x)
417+
oopf(x) = @. x^2 + sin(x)
418+
J_ref = [2*x[1] + cos(x[1]) 0.0; 0.0 2*x[2] + cos(x[2])]
419+
J = zero(J_ref)
420+
oopff(x) = !all(x .<= z) ? error() : oopf(x)
421+
epsilon = zero(x)
422+
forward_cache = FiniteDiff.JacobianCache(x,Val{:forward},eltype(x))
423+
central_cache = FiniteDiff.JacobianCache(x,Val{:central},eltype(x))
424+
complex_cache = FiniteDiff.JacobianCache(x,Val{:complex},eltype(x))
425+
f_in = oopf(x)
426+
427+
@time @testset "Out-of-Place Jacobian real-valued tests with range input" begin
428+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache), J_ref) < 1e-4
429+
@test err_func(FiniteDiff.finite_difference_jacobian(oopff, x, forward_cache, dir=-1), J_ref) < 1e-4
430+
@test_throws Any err_func(FiniteDiff.finite_difference_jacobian(oopff, x, forward_cache), J_ref) < 1e-4
431+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache, relstep=sqrt(eps())), J_ref) < 1e-4
432+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, forward_cache, f_in), J_ref) < 1e-4
433+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, central_cache), J_ref) < 1e-8
434+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, Val{:central}), J_ref) < 1e-8
435+
@test err_func(FiniteDiff.finite_difference_jacobian(oopf, x, complex_cache), J_ref) < 1e-14
436+
end
437+
412438
# Hessian tests
413439

414440
f(x) = sin(x[1]) + cos(x[2])

0 commit comments

Comments
 (0)