diff --git a/src/TaylorTest.jl b/src/TaylorTest.jl index 807b9b9..c965828 100644 --- a/src/TaylorTest.jl +++ b/src/TaylorTest.jl @@ -3,6 +3,20 @@ module TaylorTest import LinearAlgebra: norm, dot import TensorOperations: @tensor +""" + `check(f, Jf, x[, constant_components]; f_kwargs...)` + +Returns true if `Jf` approximates the derivative/gradient/Jacobian of `f` at point `x` (along a random direction). +`f_kwargs` are keywords arguments to be passed to `f` and `Jf`. +`constant_components` is an optional `Vector{Int}` corresponding to components of the direction which should be set to zero, +effectively ignoring the dependency of `f` on these components. + +# Examples +```julia-repl +julia> f = x -> cos(x); Jf = x -> -sin(x); check(f, Jf, rand()) +true +``` +""" function check(f, Jf, x, constant_components::Vector{Int}=Int[]; f_kwargs...) direction = 2 * (rand(size(x)...) .- 0.5) for cst in constant_components