From 133a9eb4067381881e901dc342ef8f39494017c9 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Fri, 19 Mar 2021 17:38:15 +0000 Subject: [PATCH] Extend AccuracyFactory.valueAndAccuracyFromInterval to work for Inf. --- prism/src/prism/AccuracyFactory.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/prism/src/prism/AccuracyFactory.java b/prism/src/prism/AccuracyFactory.java index f47625ca..1638f298 100644 --- a/prism/src/prism/AccuracyFactory.java +++ b/prism/src/prism/AccuracyFactory.java @@ -115,8 +115,16 @@ public class AccuracyFactory double lo = loAcc == null ? loVal : loAcc.getResultLowerBound(loVal); double hi = hiAcc == null ? hiVal : hiAcc.getResultLowerBound(hiVal); // Compute new mid point value and error bound - double mid = (lo + hi) / 2.0; - double err = (hi - lo) / 2.0; + double mid, err; + if (Double.isFinite(lo) && Double.isFinite(hi)) { + mid = (lo + hi) / 2.0; + err = (hi - lo) / 2.0; + } else if (Double.isInfinite(lo) && Double.isInfinite(hi)) { + mid = lo == hi ? lo : 0.0; + err = lo == hi ? 0.0 : Double.POSITIVE_INFINITY; + } else { + mid = err = Double.NaN; + } // Compute accuracy of new result value: // "bounded" if lower/upper bounds were provided with bounded accuracy; // "estimated bounded" if either bound was estimated or missing;