Skip to content

Commit

Permalink
flip args for defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisRackauckas committed Nov 21, 2017
1 parent b7ad3fe commit 9226609
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 10 deletions.
13 changes: 9 additions & 4 deletions src/jacobians.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,22 @@ struct JacobianCache{CacheType,CacheType2,CacheType3,fdtype,RealOrComplex}
fx1::CacheType3
end

function JacobianCache(fdtype::DataType, RealOrComplex::DataType,x1,fx,fx1)
function JacobianCache(x1,fx,fx1,fdtype::DataType=Val{:central},
RealOrComplex::DataType =
fdtype==Val{:complex} ? Val{:Real} : eltype(x1) <: Complex ?
Val{:Complex} : Val{:Real})
JacobianCache{typeof(x1),typeof(fx),typeof(fx1),
fdtype,RealOrComplex}(x1,fx,fx1)
end

function finite_difference_jacobian(f,x,fdtype=Val{:central})
function finite_difference_jacobian(f,x,fdtype=Val{:central},
RealOrComplex::DataType =
fdtype==Val{:complex} ? Val{:Real} : eltype(x) <: Complex ?
Val{:Complex} : Val{:Real})
x1 = similar(x)
fx = similar(x)
fx1 = similar(x)
RealOrComplex = eltype(x) <: Complex ? Val{:Complex} : Val{:Real}
cache = JacobianCache(fdtype, RealOrComplex,x1,fx,fx1)
cache = JacobianCache(x1,fx,fx1,fdtype,RealOrComplex)
finite_difference_jacobian(f,x,cache)
end

Expand Down
12 changes: 6 additions & 6 deletions test/finitedifftests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@ J = zeros(J_ref)
df = zeros(x)
df_ref = diag(J_ref)
epsilon = zeros(x)
forward_cache = DiffEqDiffTools.JacobianCache(Val{:forward},Val{:Real},similar(x),similar(x),similar(x))
central_cache = DiffEqDiffTools.JacobianCache(Val{:central},Val{:Real},similar(x),similar(x),similar(x))
complex_cache = DiffEqDiffTools.JacobianCache(Val{:complex},Val{:Real},
forward_cache = DiffEqDiffTools.JacobianCache(similar(x),similar(x),similar(x),Val{:forward})
central_cache = DiffEqDiffTools.JacobianCache(similar(x),similar(x),similar(x))
complex_cache = DiffEqDiffTools.JacobianCache(
Complex{eltype(x)}.(similar(x)),Complex{eltype(x)}.(similar(x)),
Complex{eltype(x)}.(similar(x)))
Complex{eltype(x)}.(similar(x)),Val{:complex})

# Jacobian tests for real-valued callables
@time @testset "Jacobian StridedArray real-valued tests" begin
Expand All @@ -104,8 +104,8 @@ J = zeros(J_ref)
df = zeros(x)
df_ref = diag(J_ref)
epsilon = zeros(real.(x))
forward_cache = DiffEqDiffTools.JacobianCache(Val{:forward},Val{:Complex},similar(x),similar(x),similar(x))
central_cache = DiffEqDiffTools.JacobianCache(Val{:central},Val{:Complex},similar(x),similar(x),similar(x))
forward_cache = DiffEqDiffTools.JacobianCache(similar(x),similar(x),similar(x),Val{:forward})
central_cache = DiffEqDiffTools.JacobianCache(similar(x),similar(x),similar(x))

# Jacobian tests for complex-valued callables
@time @testset "Jacobian StridedArray complex-valued tests" begin
Expand Down

0 comments on commit 9226609

Please sign in to comment.