Skip to content

Commit b1da235

Browse files
author
Roger-luo
committed
add multi arg jacobian
1 parent f8b1878 commit b1da235

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

src/grad.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,19 @@ function jacobian(fdm, f, x::Vector{T}, D::Int) where {T<:Real}
3434
end
3535
jacobian(fdm, f, x::Vector{<:Real}) = jacobian(fdm, f, x, length(f(x)))
3636

37+
function jacobian(fdm, f, x::Real, D::Int)
38+
x_vec, vec_to_x = to_vec(x)
39+
return jacobian(fdm, f, x_vec, D)
40+
end
41+
42+
replace_arg(k, xs::Tuple, x) = (xs[1:k-1]..., x, xs[k+1:end]...)
43+
44+
function jacobian(fdm, f, xs...)
45+
D = length(f(xs...))
46+
N = length(xs)
47+
return ntuple(k->jacobian(fdm, x->f(replace_arg(k, xs, x)), xs[k], D), N)
48+
end
49+
3750
"""
3851
_jvp(fdm, f, x::Vector{<:Real}, ẋ::AbstractVector{<:Real})
3952

0 commit comments

Comments
 (0)