@@ -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
411411end
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
414440f (x) = sin (x[1 ]) + cos (x[2 ])
0 commit comments