This commit is contained in:
Gaspard Jankowiak 2025-02-10 13:08:52 +01:00
commit df83c79e20

View file

@ -3,6 +3,20 @@ module TaylorTest
import LinearAlgebra: norm, dot import LinearAlgebra: norm, dot
import TensorOperations: @tensor 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...) function check(f, Jf, x, constant_components::Vector{Int}=Int[]; f_kwargs...)
direction = 2 * (rand(size(x)...) .- 0.5) direction = 2 * (rand(size(x)...) .- 0.5)
for cst in constant_components for cst in constant_components