Skip to content

Commit

Permalink
fix Jacobian tests for functions with general output dimension
Browse files Browse the repository at this point in the history
  • Loading branch information
jrevels committed Dec 8, 2016
1 parent b10712b commit a181a11
Showing 1 changed file with 27 additions and 26 deletions.
53 changes: 27 additions & 26 deletions test/api/JacobianTests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ tic()
############################################################################################

function test_unary_jacobian(f, x)
test = ForwardDiff.jacobian!(DiffBase.JacobianResult(x), f, x, ForwardDiff.JacobianConfig(x))
test_val = f(x)
test = ForwardDiff.jacobian!(DiffBase.JacobianResult(test_val, x), f, x, ForwardDiff.JacobianConfig(x))

# without JacobianConfig

Expand All @@ -20,7 +21,7 @@ function test_unary_jacobian(f, x)
ReverseDiff.jacobian!(out, f, x)
@test_approx_eq_eps out DiffBase.jacobian(test) EPS

result = DiffBase.JacobianResult(x)
result = DiffBase.JacobianResult(test_val, x)
ReverseDiff.jacobian!(result, f, x)
@test_approx_eq_eps DiffBase.value(result) DiffBase.value(test) EPS
@test_approx_eq_eps DiffBase.jacobian(result) DiffBase.jacobian(test) EPS
Expand All @@ -35,7 +36,7 @@ function test_unary_jacobian(f, x)
ReverseDiff.jacobian!(out, f, x, cfg)
@test_approx_eq_eps out DiffBase.jacobian(test) EPS

result = DiffBase.JacobianResult(x)
result = DiffBase.JacobianResult(test_val, x)
ReverseDiff.jacobian!(result, f, x, cfg)
@test_approx_eq_eps DiffBase.value(result) DiffBase.value(test) EPS
@test_approx_eq_eps DiffBase.jacobian(result) DiffBase.jacobian(test) EPS
Expand All @@ -50,7 +51,7 @@ function test_unary_jacobian(f, x)
ReverseDiff.jacobian!(out, tp, x)
@test_approx_eq_eps out DiffBase.jacobian(test) EPS

result = DiffBase.JacobianResult(x)
result = DiffBase.JacobianResult(test_val, x)
ReverseDiff.jacobian!(result, tp, x)
@test_approx_eq_eps DiffBase.value(result) DiffBase.value(test) EPS
@test_approx_eq_eps DiffBase.jacobian(result) DiffBase.jacobian(test) EPS
Expand All @@ -71,12 +72,12 @@ function test_unary_jacobian(f, x)
Jf!(out, x)
@test_approx_eq_eps out DiffBase.jacobian(test) EPS

result = DiffBase.JacobianResult(x)
result = DiffBase.JacobianResult(test_val, x)
ReverseDiff.jacobian!(result, ctp, x)
@test_approx_eq_eps DiffBase.value(result) DiffBase.value(test) EPS
@test_approx_eq_eps DiffBase.jacobian(result) DiffBase.jacobian(test) EPS

result = DiffBase.JacobianResult(x)
result = DiffBase.JacobianResult(test_val, x)
Jf!(result, x)
@test_approx_eq_eps DiffBase.value(result) DiffBase.value(test) EPS
@test_approx_eq_eps DiffBase.jacobian(result) DiffBase.jacobian(test) EPS
Expand Down Expand Up @@ -186,14 +187,14 @@ function test_binary_jacobian(f, a, b)
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = similar(a, length(a), length(b))
Jb = copy(Ja)
Ja = similar(a, length(test_val), length(a))
Jb = similar(b, length(test_val), length(b))
ReverseDiff.jacobian!((Ja, Jb), f, (a, b))
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = DiffBase.JacobianResult(a, b)
Jb = copy(Ja)
Ja = DiffBase.JacobianResult(test_val, a)
Jb = DiffBase.JacobianResult(test_val, b)
ReverseDiff.jacobian!((Ja, Jb), f, (a, b))
@test_approx_eq_eps DiffBase.value(Ja) test_val EPS
@test_approx_eq_eps DiffBase.value(Jb) test_val EPS
Expand All @@ -208,14 +209,14 @@ function test_binary_jacobian(f, a, b)
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = similar(a, length(a), length(b))
Jb = copy(Ja)
Ja = similar(a, length(test_val), length(a))
Jb = similar(b, length(test_val), length(b))
ReverseDiff.jacobian!((Ja, Jb), f, (a, b), cfg)
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = DiffBase.JacobianResult(a, b)
Jb = copy(Ja)
Ja = DiffBase.JacobianResult(test_val, a)
Jb = DiffBase.JacobianResult(test_val, b)
ReverseDiff.jacobian!((Ja, Jb), f, (a, b), cfg)
@test_approx_eq_eps DiffBase.value(Ja) test_val EPS
@test_approx_eq_eps DiffBase.value(Jb) test_val EPS
Expand All @@ -230,14 +231,14 @@ function test_binary_jacobian(f, a, b)
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = similar(a, length(a), length(b))
Jb = copy(Ja)
Ja = similar(a, length(test_val), length(a))
Jb = similar(b, length(test_val), length(b))
ReverseDiff.jacobian!((Ja, Jb), tp, (a, b))
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = DiffBase.JacobianResult(a, b)
Jb = copy(Ja)
Ja = DiffBase.JacobianResult(test_val, a)
Jb = DiffBase.JacobianResult(test_val, b)
ReverseDiff.jacobian!((Ja, Jb), tp, (a, b))
@test_approx_eq_eps DiffBase.value(Ja) test_val EPS
@test_approx_eq_eps DiffBase.value(Jb) test_val EPS
Expand All @@ -254,28 +255,28 @@ function test_binary_jacobian(f, a, b)
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = similar(a, length(a), length(b))
Jb = copy(Ja)
Ja = similar(a, length(test_val), length(a))
Jb = similar(b, length(test_val), length(b))
ReverseDiff.jacobian!((Ja, Jb), ctp, (a, b))
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = similar(a, length(a), length(b))
Jb = copy(Ja)
Ja = similar(a, length(test_val), length(a))
Jb = similar(b, length(test_val), length(b))
Jf!((Ja, Jb), (a, b))
@test_approx_eq_eps Ja test_a EPS
@test_approx_eq_eps Jb test_b EPS

Ja = DiffBase.JacobianResult(a, b)
Jb = copy(Ja)
Ja = DiffBase.JacobianResult(test_val, a)
Jb = DiffBase.JacobianResult(test_val, b)
ReverseDiff.jacobian!((Ja, Jb), ctp, (a, b))
@test_approx_eq_eps DiffBase.value(Ja) test_val EPS
@test_approx_eq_eps DiffBase.value(Jb) test_val EPS
@test_approx_eq_eps DiffBase.gradient(Ja) test_a EPS
@test_approx_eq_eps DiffBase.gradient(Jb) test_b EPS

Ja = DiffBase.JacobianResult(a, b)
Jb = copy(Ja)
Ja = DiffBase.JacobianResult(test_val, a)
Jb = DiffBase.JacobianResult(test_val, b)
Jf!((Ja, Jb), (a, b))
@test_approx_eq_eps DiffBase.value(Ja) test_val EPS
@test_approx_eq_eps DiffBase.value(Jb) test_val EPS
Expand Down

0 comments on commit a181a11

Please sign in to comment.