Skip to content

Commit

Permalink
better conversion for GradientNums
Browse files Browse the repository at this point in the history
  • Loading branch information
jrevels committed Aug 7, 2015
1 parent b20a54a commit 3255855
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/GradientNum.jl
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
immutable GradientNum{N,T,C} <: ForwardDiffNum{N,T,C}
value::T
grad::C
GradientNum(value, grad::Tuple) = new(value, grad)
GradientNum(value, grad::Vector) = new(value, grad)
GradientNum(value::T, grad::NTuple{N,T}) = new(value, grad)
GradientNum(value::T, grad::Vector{T}) = new(value, grad)
GradientNum(value, grad::Tuple) = GradientNum{N,T,C}(convert(T,value), convert(NTuple{N,T}, grad))
GradientNum(value, grad::Vector) = GradientNum{N,T,C}(convert(T,value), convert(Vector{T}, grad))
end

typealias GradNumTup{N,T} GradientNum{N,T,NTuple{N,T}}
typealias GradNumVec{N,T} GradientNum{N,T,Vector{T}}

function GradientNum{N,T}(value, grad::NTuple{N,T})
S = promote_type(typeof(value), T)
return GradientNum{N,S,NTuple{N,S}}(convert(S, value), convert(NTuple{N,S},grad))
end

GradientNum{N,T}(value::T, grad::NTuple{N,T}) = GradientNum{N,T,NTuple{N,T}}(value, grad)
GradientNum{T}(value::T, grad::T...) = GradientNum(value, grad)

Expand Down

0 comments on commit 3255855

Please sign in to comment.