Skip to content

Commit 6a37292

Browse files
Fix deprecations
1 parent 04bfbe9 commit 6a37292

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

src/finitediff.jl

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ Very heavily inspired by Calculus.jl, but with an emphasis on performance and Di
66
Compute the finite difference interval epsilon.
77
Reference: Numerical Recipes, chapter 5.7.
88
=#
9-
@inline function compute_epsilon{T<:Real}(::Type{Val{:forward}}, x::T, eps_sqrt::T=sqrt(eps(T)))
9+
@inline function compute_epsilon(::Type{Val{:forward}}, x::T, eps_sqrt::T=sqrt(eps(T))) where T<:Real
1010
eps_sqrt * max(one(T), abs(x))
1111
end
1212

13-
@inline function compute_epsilon{T<:Real}(::Type{Val{:central}}, x::T, eps_cbrt::T=cbrt(eps(T)))
13+
@inline function compute_epsilon(::Type{Val{:central}}, x::T, eps_cbrt::T=cbrt(eps(T))) where T<:Real
1414
eps_cbrt * max(one(T), abs(x))
1515
end
1616

17-
@inline function compute_epsilon_factor{T<:Real}(fdtype::DataType, ::Type{T})
17+
@inline function compute_epsilon_factor(fdtype::DataType, ::Type{T}) where T<:Real
1818
if fdtype==Val{:forward}
1919
return sqrt(eps(T))
2020
elseif fdtype==Val{:central}
@@ -30,12 +30,12 @@ Compute the derivative df of a real-valued callable f on a collection of points
3030
Generic fallbacks for AbstractArrays that are not StridedArrays.
3131
# TODO: test the fallbacks
3232
=#
33-
function finite_difference{T<:Real}(f, x::AbstractArray{T}, fdtype::DataType, fx::Union{Void,AbstractArray{T}}=nothing, funtype::DataType=Val{:Default})
33+
function finite_difference(f, x::AbstractArray{T}, fdtype::DataType, fx::Union{Void,AbstractArray{T}}=nothing, funtype::DataType=Val{:Default}) where T<:Real
3434
df = zeros(T, size(x))
3535
finite_difference!(df, f, x, fdtype, fx, funtype)
3636
end
3737

38-
function finite_difference!{T<:Real}(df::AbstractArray{T}, f, x::AbstractArray{T}, fdtype::DataType, fx::Union{Void,AbstractArray{T}}, ::Type{Val{:Default}})
38+
function finite_difference!(df::AbstractArray{T}, f, x::AbstractArray{T}, fdtype::DataType, fx::Union{Void,AbstractArray{T}}, ::Type{Val{:Default}}) where T<:Real
3939
if fdtype == Val{:forward}
4040
epsilon_factor = compute_epsilon_factor(fdtype, T)
4141
@. epsilon = compute_epsilon(fdtype, x, epsilon_factor)
@@ -55,7 +55,7 @@ function finite_difference!{T<:Real}(df::AbstractArray{T}, f, x::AbstractArray{T
5555
df
5656
end
5757

58-
function finite_difference!{T<:Real}(df::AbstractArray{T}, f, x::T, fdtype::DataType, fx::AbstractArray{T}, ::Type{Val{:DiffEqDerivativeWrapper}})
58+
function finite_difference!(df::AbstractArray{T}, f, x::T, fdtype::DataType, fx::AbstractArray{T}, ::Type{Val{:DiffEqDerivativeWrapper}}) where T<:Real
5959
fx1 = f.fx1
6060
if fdtype == Val{:forward}
6161
epsilon = compute_epsilon(fdtype, x)
@@ -79,7 +79,7 @@ end
7979
Compute the derivative df of a real-valued callable f on a collection of points x.
8080
Optimized implementations for StridedArrays.
8181
=#
82-
function finite_difference!{T<:Real}(df::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:central}}, ::Union{Void,StridedArray{T}}, ::Type{Val{:Default}})
82+
function finite_difference!(df::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:central}}, ::Union{Void,StridedArray{T}}, ::Type{Val{:Default}}) where T<:Real
8383
epsilon_factor = compute_epsilon_factor(Val{:central}, T)
8484
@inbounds for i in 1 : length(x)
8585
epsilon = compute_epsilon(Val{:central}, x[i], epsilon_factor)
@@ -90,7 +90,7 @@ function finite_difference!{T<:Real}(df::StridedArray{T}, f, x::StridedArray{T},
9090
df
9191
end
9292

93-
function finite_difference!{T<:Real}(df::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, ::Void, ::Type{Val{:Default}})
93+
function finite_difference!(df::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, ::Void, ::Type{Val{:Default}}) where T<:Real
9494
epsilon_factor = compute_epsilon_factor(Val{:forward}, T)
9595
@inbounds for i in 1 : length(x)
9696
epsilon = compute_epsilon(Val{:forward}, x[i], epsilon_factor)
@@ -101,7 +101,7 @@ function finite_difference!{T<:Real}(df::StridedArray{T}, f, x::StridedArray{T},
101101
df
102102
end
103103

104-
function finite_difference!{T<:Real}(df::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, fx::StridedArray{T}, ::Type{Val{:Default}})
104+
function finite_difference!(df::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, fx::StridedArray{T}, ::Type{Val{:Default}}) where T<:Real
105105
epsilon_factor = compute_epsilon_factor(Val{:forward}, T)
106106
@inbounds for i in 1 : length(x)
107107
epsilon = compute_epsilon(Val{:forward}, x[i], epsilon_factor)
@@ -116,7 +116,7 @@ end
116116
Compute the derivative df of a real-valued callable f on a collection of points x.
117117
Single point implementations.
118118
=#
119-
function finite_difference{T<:Real}(f, x::T, fdtype::DataType, f_x::Union{Void,T}=nothing)
119+
function finite_difference(f, x::T, fdtype::DataType, f_x::Union{Void,T}=nothing) where T<:Real
120120
if fdtype == Val{:complex}
121121
epsilon = eps(T)
122122
return imag(f(x+im*epsilon)) / epsilon
@@ -126,15 +126,15 @@ function finite_difference{T<:Real}(f, x::T, fdtype::DataType, f_x::Union{Void,T
126126
end
127127
end
128128

129-
@inline function finite_difference_kernel{T<:Real}(f, x::T, ::Type{Val{:forward}}, epsilon::T, fx::Union{Void,T})
129+
@inline function finite_difference_kernel(f, x::T, ::Type{Val{:forward}}, epsilon::T, fx::Union{Void,T}) where T<:Real
130130
if typeof(fx) == Void
131131
return (f(x+epsilon) - f(x)) / epsilon
132132
else
133133
return (f(x+epsilon) - fx) / epsilon
134134
end
135135
end
136136

137-
@inline function finite_difference_kernel{T<:Real}(f, x::T, ::Type{Val{:central}}, epsilon::T, ::Union{Void,T}=nothing)
137+
@inline function finite_difference_kernel(f, x::T, ::Type{Val{:central}}, epsilon::T, ::Union{Void,T}=nothing) where T<:Real
138138
(f(x+epsilon) - f(x-epsilon)) / (2 * epsilon)
139139
end
140140

@@ -144,7 +144,7 @@ end
144144
#=
145145
Compute the Jacobian matrix of a real-valued callable f: R^n -> R^m.
146146
=#
147-
function finite_difference_jacobian{T<:Real}(f, x::AbstractArray{T}, fdtype::DataType=Val{:central}, funtype::DataType=Val{:Default})
147+
function finite_difference_jacobian(f, x::AbstractArray{T}, fdtype::DataType=Val{:central}, funtype::DataType=Val{:Default}) where T<:Real
148148
if funtype==Val{:Default}
149149
fx = f.(x)
150150
elseif funtype==Val{:DiffEqJacobianWrapper}
@@ -156,7 +156,7 @@ function finite_difference_jacobian{T<:Real}(f, x::AbstractArray{T}, fdtype::Dat
156156
finite_difference_jacobian!(J, f, x, fdtype, fx, funtype)
157157
end
158158

159-
function finite_difference_jacobian!{T<:Real}(J::AbstractArray{T}, f, x::AbstractArray{T}, fdtype::DataType, fx::AbstractArray{T}, ::DataType)
159+
function finite_difference_jacobian!(J::AbstractArray{T}, f, x::AbstractArray{T}, fdtype::DataType, fx::AbstractArray{T}, ::DataType) where T<:Real
160160
# This is an inefficient fallback that only makes sense if setindex/getindex are unavailable, e.g. GPUArrays etc.
161161
m, n = size(J)
162162
epsilon_factor = compute_epsilon_factor(fdtype, T)
@@ -185,7 +185,7 @@ function finite_difference_jacobian!{T<:Real}(J::AbstractArray{T}, f, x::Abstrac
185185
J
186186
end
187187

188-
function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:central}}, fx::StridedArray{T}, ::Type{Val{:Default}})
188+
function finite_difference_jacobian!(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:central}}, fx::StridedArray{T}, ::Type{Val{:Default}}) where T<:Real
189189
m, n = size(J)
190190
epsilon_factor = compute_epsilon_factor(Val{:central}, T)
191191
@inbounds for i in 1:n
@@ -202,7 +202,7 @@ function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedA
202202
J
203203
end
204204

205-
function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, fx::StridedArray{T}, ::Type{Val{:Default}})
205+
function finite_difference_jacobian!(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, fx::StridedArray{T}, ::Type{Val{:Default}}) where T<:Real
206206
m, n = size(J)
207207
epsilon_factor = compute_epsilon_factor(Val{:forward}, T)
208208
@inbounds for i in 1:n
@@ -219,7 +219,7 @@ function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedA
219219
J
220220
end
221221

222-
function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:complex}}, fx::StridedArray{T}, ::Type{Val{:Default}})
222+
function finite_difference_jacobian!(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:complex}}, fx::StridedArray{T}, ::Type{Val{:Default}}) where T<:Real
223223
m, n = size(J)
224224
epsilon = eps(T)
225225
epsilon_inv = one(T) / epsilon
@@ -236,7 +236,7 @@ function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedA
236236
end
237237

238238
# efficient implementations for OrdinaryDiffEq Jacobian wrappers, assuming the system function supplies StridedArrays
239-
function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, fx::StridedArray{T}, ::Type{Val{:JacobianWrapper}})
239+
function finite_difference_jacobian!(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:forward}}, fx::StridedArray{T}, ::Type{Val{:JacobianWrapper}}) where T<:Real
240240
m, n = size(J)
241241
epsilon_factor = compute_epsilon_factor(Val{:forward}, T)
242242
x1, fx1 = f.x1, f.fx1
@@ -254,7 +254,7 @@ function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedA
254254
J
255255
end
256256

257-
function finite_difference_jacobian!{T<:Real}(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:central}}, fx::StridedArray{T}, ::Type{Val{:JacobianWrapper}})
257+
function finite_difference_jacobian!(J::StridedArray{T}, f, x::StridedArray{T}, ::Type{Val{:central}}, fx::StridedArray{T}, ::Type{Val{:JacobianWrapper}}) where T<:Real
258258
m, n = size(J)
259259
epsilon_factor = compute_epsilon_factor(Val{:central}, T)
260260
x1, fx1 = f.x1, f.fx1

0 commit comments

Comments
 (0)