Compare commits

...

2 commits

Author SHA1 Message Date
32c8806169 bump version 2025-02-12 11:21:46 +01:00
66cb9f6555 more documentation 2025-02-12 11:21:19 +01:00
3 changed files with 29 additions and 7 deletions

View file

@ -1,7 +1,7 @@
name = "TaylorTest"
uuid = "967b12e5-70be-421a-a124-e33167727e0a"
authors = ["Gaspard Jankowiak <gaspard.jankowiak@uni-graz.at>"]
version = "0.2.0"
version = "0.2.1"
[deps]
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"

View file

@ -5,15 +5,23 @@ Simple package to check derivatives
# Usage
```
check(f, Jf, x[, constant_components]; f_kwargs...)
check(f, Jf, x[, constant_components]; taylortestplot=false, taylortestdirection=nothing, f_kwargs...)
```
Returns true if `Jf` approximates the derivative/gradient/Jacobian of `f` at point `x` (along a random direction).
Returns true if `Jf` approximates the derivative/gradient/Jacobian of `f` at point `x` (along a random direction unless specified using `taylortestdirection`).
`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.
If `taylortestplot` is `true`, a log-log plot of the error against the perturbation size will be shown.
## Examples
```
check!(f!, Jf!, x, size_f_x, size_Jf_x, [, constant_components]; taylortestplot=false, taylortestdirection=nothing, f_kwargs...)
```
Like `check` but handling non-allocating functions. Output size for both `f!` and the Jacobian `Jf!` must be provided (as `Tuple`s) via `size_f_x` and `size_Jf_x`.
## Examples (see `test` directory for more)
```julia
import TaylorTest

View file

@ -7,12 +7,17 @@ import TensorOperations: @tensor
import UnicodePlots
"""
`check(f, Jf, x[, constant_components]; f_kwargs...)`
```
check(f, Jf, x[, constant_components]; taylortestplot=false, taylortestdirection=nothing, f_kwargs...)
```
Returns true if `Jf` approximates the derivative/gradient/Jacobian of `f` at point `x` (along a random direction).
Returns true if `Jf` approximates the derivative/gradient/Jacobian of `f` at point `x` (along a random direction unless specified using `taylortestdirection`).
`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.
If `taylortestplot` is `true`, a log-log plot of the error against the perturbation size will be shown.
See also: `check!`
# Examples
```julia-repl
@ -70,7 +75,16 @@ function check(f, Jf, x, constant_components::Vector{Int}=Int[]; taylortestplot:
return isapprox(order, 1; atol=0.5)
end
function check!(f!, Jf!, x, size_f_x, size_Jf_x, constant_components::Vector{Int}=Int[];
"""
```
check!(f!, Jf!, x, size_f_x, size_Jf_x, [, constant_components]; taylortestplot=false, taylortestdirection=nothing, f_kwargs...)
```
Like `check` but handling non-allocating functions. Output size for both `f!` and the Jacobian `Jf!` must be provided (as `Tuple`s) via `size_f_x` and `size_Jf_x`.
See also: `check`
"""
function check!(f!, Jf!, x, size_f_x::Tuple, size_Jf_x::Tuple, constant_components::Vector{Int}=Int[];
taylortestdirection=nothing, taylortestplot::Bool=false, f_kwargs...)
f = x -> begin