Skip to content

Commit 9646748

Browse files
authored
fix issue with measurements (#454)
1 parent 18354b0 commit 9646748

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ CommonSolve = "0.1, 0.2"
3232
ForwardDiff = "0.10"
3333
IntervalRootFinding = "0.5, 0.6"
3434
JSON = "0.21"
35+
Measurements = "2.11"
3536
Polynomials = "1,2,3,4"
3637
Printf = "<0.0.1, 1"
3738
SpecialFunctions = "1,2"
@@ -50,6 +51,7 @@ ChainRulesTestUtils = "cdddcdb0-9152-4a09-a978-84456f9df70a"
5051
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
5152
IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807"
5253
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
54+
Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7"
5355
Polynomials = "f27b6e38-b328-58d1-80ce-0feddd5e7a45"
5456
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
5557
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
@@ -60,4 +62,4 @@ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
6062
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
6163

6264
[targets]
63-
test = ["Aqua", "ChainRulesTestUtils", "JSON", "SpecialFunctions", "Statistics", "Test", "BenchmarkTools", "ForwardDiff", "Polynomials", "Unitful", "Zygote"]
65+
test = ["Aqua", "ChainRulesTestUtils", "JSON", "SpecialFunctions", "Statistics", "Test", "BenchmarkTools", "ForwardDiff", "Measurements", "Polynomials", "Unitful", "Zygote"]

src/Bracketing/alefeld_potra_shi.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ function update_state(
107107
options,
108108
l=NullTracks(),
109109
) where {T,S}
110+
110111
atol, rtol = options.xabstol, options.xreltol
111112
μ, λ = oftype(rtol, 0.5), oftype(rtol, 0.7)
112113
tols = (; λ=λ, atol=atol, rtol=rtol)
@@ -144,7 +145,10 @@ function update_state(
144145

145146
ā, b̄, d, fā, fb̄, fd = bracket(a, b, x, fa, fb, fx)
146147

147-
if iszero(fx) || (b̄ - ā) <= tolₑ(ā, b̄, fā, fb̄, atol, rtol)
148+
149+
if ((b̄ - ā) <= tolₑ(ā, b̄, fā, fb̄, atol, rtol) ||
150+
iszero(fx) || # exact zero
151+
!isbracket(fā,fb̄)) # catch non bracket?, issue #453
148152
@reset o.xn0 =
149153
@reset o.xn1 =
150154
@reset o.fxn0 = fā

test/test_composable.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ using Test
77
using Unitful
88
using Polynomials
99
using ForwardDiff
10+
using Measurements
1011

1112
@testset "Test composability with other packages" begin
1213
orders = [
@@ -82,4 +83,18 @@ using ForwardDiff
8283
α = find_zero(D(h), (0, 1)) # find lowest point on loop
8384
@test h(α) h+ 0.1)
8485
@test h(α) h- 0.1)
86+
87+
88+
# Measurements # issue #453
89+
@testset "Measurements.jl" begin
90+
a = measurement(1.0 , 0.1)
91+
b = measurement(-3.0 , 0.1)
92+
c = measurement(-10.0, 0.1)
93+
f(x) = a*x^2 + b*x + c
94+
x₀ = (measurement(-3.0, 0.1), measurement(0.0, 0.1))
95+
for M (A42(), AlefeldPotraShi(), Bisection())
96+
@test find_zero(f,x₀, M) -2.0
97+
end
98+
@test find_zero(f, measurement(0.0, 0.1)) -2.0
99+
end
85100
end

0 commit comments

Comments
 (0)