From 3d86d5f530612092a70236abb258eb9254650a6a Mon Sep 17 00:00:00 2001 From: "Michael K. Borregaard" Date: Wed, 4 Oct 2017 11:38:32 +0200 Subject: [PATCH 1/3] Apply automatic limits for vectors of functions --- src/series.jl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/series.jl b/src/series.jl index 52b672a1..7e7729ea 100644 --- a/src/series.jl +++ b/src/series.jl @@ -371,6 +371,13 @@ end end # try some intervals over which the function may be defined +function tryrange(F::T, vec) where T <: AbstractArray + rets = [tryrange(f, vec) for f in F] # get the preferred for each + inds = indexin(rets, vec) # get the last attempt (most likely to fit all) + rets .= [tryrange(f, vec[maximum(inds):maximum(inds)]) for f in F] # ensure that all functions compute there + rets[1] +end + function tryrange(F, vec) for v in vec try @@ -379,7 +386,7 @@ function tryrange(F, vec) catch end end - error("Function not defined over the given interval, $vec") + error("$F is not a Function, or is not defined at any of the values $vec") end # # # -------------------------------------------------------------------- From 0327c9101e63848338c73c318b66bf26885c6e11 Mon Sep 17 00:00:00 2001 From: "Michael K. Borregaard" Date: Wed, 4 Oct 2017 11:44:20 +0200 Subject: [PATCH 2/3] slight refactor for clarity --- src/series.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/series.jl b/src/series.jl index 7e7729ea..84f3cc21 100644 --- a/src/series.jl +++ b/src/series.jl @@ -373,8 +373,8 @@ end # try some intervals over which the function may be defined function tryrange(F::T, vec) where T <: AbstractArray rets = [tryrange(f, vec) for f in F] # get the preferred for each - inds = indexin(rets, vec) # get the last attempt (most likely to fit all) - rets .= [tryrange(f, vec[maximum(inds):maximum(inds)]) for f in F] # ensure that all functions compute there + maxind = maximum(indexin(rets, vec)) # get the last attempt that succeeded (most likely to fit all) + rets .= [tryrange(f, vec[maxind:maxind]) for f in F] # ensure that all functions compute there rets[1] end From 5567038cec70f6eae82f2b9ef8bb450b7e3d5749 Mon Sep 17 00:00:00 2001 From: "Michael K. Borregaard" Date: Wed, 4 Oct 2017 11:47:20 +0200 Subject: [PATCH 3/3] simplify --- src/series.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/series.jl b/src/series.jl index 84f3cc21..c0d7d4c2 100644 --- a/src/series.jl +++ b/src/series.jl @@ -371,7 +371,7 @@ end end # try some intervals over which the function may be defined -function tryrange(F::T, vec) where T <: AbstractArray +function tryrange(F::AbstractArray, vec) rets = [tryrange(f, vec) for f in F] # get the preferred for each maxind = maximum(indexin(rets, vec)) # get the last attempt that succeeded (most likely to fit all) rets .= [tryrange(f, vec[maxind:maxind]) for f in F] # ensure that all functions compute there