Skip to content

Commit

Permalink
Revert "Add DiffResult for MArray (#18)" (#32)
Browse files Browse the repository at this point in the history
This reverts commit f80602e.
  • Loading branch information
gdalle authored Mar 19, 2024
1 parent f80602e commit 91614bb
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 83 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "DiffResults"
uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5"
version = "1.2.0"
version = "1.1.0"

[deps]
StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
Expand Down
8 changes: 4 additions & 4 deletions src/DiffResults.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module DiffResults

using StaticArraysCore: StaticArray, similar_type, Size, SArray
using StaticArraysCore: StaticArray, similar_type, Size

#########
# Types #
Expand Down Expand Up @@ -36,7 +36,7 @@ Return `r::DiffResult`, with output value storage provided by `value` and output
storage provided by `derivs`.
In reality, `DiffResult` is an abstract supertype of two concrete types, `MutableDiffResult`
and `ImmutableDiffResult`. If all `value`/`derivs` are all `Number`s or `StaticArrays.SArray`s,
and `ImmutableDiffResult`. If all `value`/`derivs` are all `Number`s or `StaticArray`s,
then `r` will be immutable (i.e. `r::ImmutableDiffResult`). Otherwise, `r` will be mutable
(i.e. `r::MutableDiffResult`).
Expand All @@ -45,8 +45,8 @@ Note that `derivs` can be provide in splatted form, i.e. `DiffResult(value, deri
DiffResult

DiffResult(value::Number, derivs::Tuple{Vararg{Number}}) = ImmutableDiffResult(value, derivs)
DiffResult(value::Number, derivs::Tuple{Vararg{SArray}}) = ImmutableDiffResult(value, derivs)
DiffResult(value::SArray, derivs::Tuple{Vararg{SArray}}) = ImmutableDiffResult(value, derivs)
DiffResult(value::Number, derivs::Tuple{Vararg{StaticArray}}) = ImmutableDiffResult(value, derivs)
DiffResult(value::StaticArray, derivs::Tuple{Vararg{StaticArray}}) = ImmutableDiffResult(value, derivs)
DiffResult(value::Number, derivs::Tuple{Vararg{AbstractArray}}) = MutableDiffResult(value, derivs)
DiffResult(value::AbstractArray, derivs::Tuple{Vararg{AbstractArray}}) = MutableDiffResult(value, derivs)
DiffResult(value::Union{Number,AbstractArray}, derivs::Union{Number,AbstractArray}...) = DiffResult(value, derivs)
Expand Down
78 changes: 0 additions & 78 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,9 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
n0, n1, n2 = rand(), rand(), rand()
x0, x1, x2 = rand(k), rand(k, k), rand(k, k, k)
s0, s1, s2 = SVector{k}(rand(k)), SMatrix{k,k}(rand(k, k)), SArray{Tuple{k,k,k}}(rand(k, k, k))
m0, m1, m2 = MVector{k}(rand(k)), MMatrix{k,k}(rand(k, k)), MArray{Tuple{k,k,k}}(rand(k, k, k))

rn = DiffResult(n0, n1, n2)
rx = DiffResult(x0, x1, x2)
rs = DiffResult(s0, s1, s2)
rm = DiffResult(m0, m1, m2)
rsmix = DiffResult(n0, s0, s1)

issimilar(x, y) = typeof(x) == typeof(y) && size(x) == size(y)
Expand All @@ -25,7 +22,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test rn === DiffResult(n0, n1, n2)
@test rx == DiffResult(x0, x1, x2)
@test rs === DiffResult(s0, s1, s2)
@test rm == DiffResult(m0, m1, m2)
@test rsmix === DiffResult(n0, s0, s1)

@test issimilar(GradientResult(x0), DiffResult(first(x0), x0))
Expand All @@ -38,15 +34,9 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test JacobianResult(SVector{k+1}(vcat(s0, 0.0)), s0) === DiffResult(SVector{k+1}(vcat(s0, 0.0)), zeros(SMatrix{k+1,k,Float64}))
@test HessianResult(s0) === DiffResult(first(s0), s0, zeros(SMatrix{k,k,Float64}))

@test issimilar(GradientResult(m0), DiffResult(first(m0), m0))
@test issimilar(JacobianResult(m0), DiffResult(m0, zeros(MMatrix{k,k,Float64})))
@test issimilar(JacobianResult(MVector{k + 1}(vcat(m0, 0.0)), m0), DiffResult(MVector{k + 1}(vcat(m0, 0.0)), zeros(MMatrix{k + 1,k,Float64})))
@test issimilar(HessianResult(m0), DiffResult(first(m0), m0, zeros(MMatrix{k,k,Float64})))

@test eltype(rn) === typeof(n0)
@test eltype(rx) === eltype(x0)
@test eltype(rs) === eltype(s0)
@test eltype(rm) === eltype(m0)

rn_copy = copy(rn)
@test rn == rn_copy
Expand All @@ -60,10 +50,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test rs == rs_copy
@test rs === rs_copy

rm_copy = copy(rm)
@test rm == rm_copy
@test rm !== rm_copy

rsmix_copy = copy(rsmix)
@test rsmix == rsmix_copy
@test rsmix === rsmix_copy
Expand All @@ -73,7 +59,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test value(rn) === n0
@test value(rx) === x0
@test value(rs) === s0
@test value(rm) === m0
@test value(rsmix) === n0

rn = value!(rn, n1)
Expand All @@ -91,11 +76,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(value(rs)) === typeof(s0)
rs = value!(rs, s0)

m0_new, m0_copy = rand(k), copy(m0)
rm = value!(rm, m0_new)
@test value(rm) === m0 == m0_new
rm = value!(rm, m0_copy)

rsmix = value!(rsmix, n1)
@test value(rsmix) === n1
rsmix = value!(rsmix, n0)
Expand All @@ -115,11 +95,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(value(rs)) === typeof(s0)
rs = value!(rs, s0)

m0_new, m0_copy = rand(k), copy(m0)
rm = value!(exp, rm, m0_new)
@test value(rm) === m0 == exp.(m0_new)
rm = value!(rm, m0_copy)

rsmix = value!(exp, rsmix, n1)
@test value(rsmix) === exp(n1)
rsmix = value!(rsmix, n0)
Expand All @@ -141,9 +116,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test derivative(rs) === s1
@test derivative(rs, Val{2}) === s2

@test derivative(rm) === m1
@test derivative(rm, Val{2}) === m2

@test derivative(rsmix) === s0
@test derivative(rsmix, Val{2}) === s1

Expand All @@ -168,11 +140,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(derivative(rsmix)) === typeof(s0)
rsmix = derivative!(rsmix, s0)

m1_new, m1_copy = rand(k, k), copy(m1)
rm = derivative!(rm, m1_new)
@test derivative(rm) === m1 == m1_new
rm = derivative!(rm, m1_copy)

rn = derivative!(rn, n1, Val{2})
@test derivative(rn, Val{2}) === n1
rn = derivative!(rn, n2, Val{2})
Expand All @@ -194,11 +161,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(derivative(rsmix, Val{2})) === typeof(s1)
rsmix = derivative!(rsmix, s1, Val{2})

m2_new, m2_copy = rand(k, k, k), copy(m2)
rm = derivative!(rm, m2_new, Val{2})
@test derivative(rm, Val{2}) === m2 == m2_new
rm = derivative!(rm, m2_copy, Val{2})

rn = derivative!(exp, rn, n0)
@test derivative(rn) === exp(n0)
rn = derivative!(rn, n1)
Expand All @@ -220,11 +182,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(derivative(rsmix)) === typeof(s0)
rsmix = derivative!(exp, rsmix, s0)

m1_new, m1_copy = rand(k, k), copy(m1)
rm = derivative!(exp, rm, m1_new)
@test derivative(rm) === m1 == exp.(m1_new)
rm = derivative!(exp, rm, m1_copy)

rn = derivative!(exp, rn, n1, Val{2})
@test derivative(rn, Val{2}) === exp(n1)
rn = derivative!(rn, n2, Val{2})
Expand All @@ -245,11 +202,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test derivative(rsmix, Val{2}) == exp.(s1_new)
@test typeof(derivative(rsmix, Val{2})) === typeof(s1)
rsmix = derivative!(exp, rsmix, s1, Val{2})

m2_new, m2_copy = rand(k, k, k), copy(m2)
rm = derivative!(exp, rm, m2_new, Val{2})
@test derivative(rm, Val{2}) === m2 == exp.(m2_new)
rm = derivative!(exp, rm, m2_copy, Val{2})
end

@testset "gradient/gradient!" begin
Expand All @@ -265,11 +217,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(gradient(rs)) === typeof(s1)
rs = gradient!(rs, s1)

m1_new, m1_copy = rand(k, k), copy(m1)
rm = gradient!(rm, m1_new)
@test gradient(rm) === m1 == m1_new
rm = gradient!(rm, m1_copy)

x1_new, x1_copy = rand(k, k), copy(x1)
rx = gradient!(exp, rx, x1_new)
@test gradient(rx) === x1 == exp.(x1_new)
Expand All @@ -281,11 +228,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(gradient(rsmix)) === typeof(s0)
rsmix = gradient!(exp, rsmix, s0)

m1_new, m1_copy = rand(k, k), copy(m1)
rm = gradient!(exp, rm, m1_new)
@test gradient(rm) === m1 == exp.(m1_new)
rm = gradient!(exp, rm, m1_copy)

T = typeof(SVector{k*k}(rand(k*k)))
rs_new = gradient!(rs, convert(T, gradient(rs)))
@test rs_new === rs
Expand All @@ -304,11 +246,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(jacobian(rs)) === typeof(s1)
rs = jacobian!(rs, s1)

m1_new, m1_copy = rand(k, k), copy(m1)
rm = jacobian!(rm, m1_new)
@test jacobian(rm) === m1 == m1_new
rm = jacobian!(rm, m1_copy)

x1_new, x1_copy = rand(k, k), copy(x1)
rx = jacobian!(exp, rx, x1_new)
@test jacobian(rx) === x1 == exp.(x1_new)
Expand All @@ -320,11 +257,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(jacobian(rsmix)) === typeof(s0)
rsmix = jacobian!(exp, rsmix, s0)

m1_new, m1_copy = rand(k, k), copy(m1)
rm = jacobian!(exp, rm, m1_new)
@test jacobian(rm) === m1 == exp.(m1_new)
rm = jacobian!(exp, rm, m1_copy)

T = typeof(SVector{k*k}(rand(k*k)))
rs_new = jacobian!(rs, convert(T, jacobian(rs)))
@test rs_new === rs
Expand All @@ -343,11 +275,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(hessian(rs)) === typeof(s2)
rs = hessian!(rs, s2)

m2_new, m2_copy = rand(k, k, k), copy(m2)
rm = hessian!(rm, m2_new)
@test hessian(rm) === m2 == m2_new
rm = hessian!(rm, m2_copy)

x2_new, x2_copy = rand(k, k, k), copy(x2)
rx = hessian!(exp, rx, x2_new)
@test hessian(rx) === x2 == exp.(x2_new)
Expand All @@ -359,11 +286,6 @@ using DiffResults: DiffResult, GradientResult, JacobianResult, HessianResult,
@test typeof(hessian(rsmix)) === typeof(s1)
rsmix = hessian!(exp, rsmix, s1)

m2_new, m2_copy = rand(k, k, k), copy(m2)
rm = hessian!(exp, rm, m2_new)
@test hessian(rm) === m2 == exp.(m2_new)
rm = hessian!(exp, rm, m2_copy)

T = typeof(SVector{k*k*k}(rand(k*k*k)))
rs_new = hessian!(rs, convert(T, hessian(rs)))
@test rs_new === rs
Expand Down

0 comments on commit 91614bb

Please sign in to comment.