Skip to content
Snippets Groups Projects
Commit d80a7cbe authored by davean's avatar davean
Browse files

Range checking.

parent 36c48d0d
No related branches found
No related tags found
No related merge requests found
......@@ -24,14 +24,13 @@ search r j' (rmin, rmax) t =
traceShowM (l, h)
vl <- r l
vh <- r h
let m = (l%1) + (((j t) - (j vl)) * ((h%1) - (l%1)) / ((j vh) - (j vl)))
let m = max l $ min h $ floor $ (l%1) + (((j t) - (j vl)) * ((h%1) - (l%1)) / ((j vh) - (j vl)))
-- This reads the m value even if we can't find the result there.
let mi = floor m
vm <- r mi
traceShowM [ ("l", show l), ("m", show m), ("mi", show mi), ("h", show h)
vm <- r m
traceShowM [ ("l", show l), ("m", show m), ("h", show h)
, ("vl", show vl), ("vm", show vm), ("vh", show vh)]
if | not ((vh /= vl) && (t >= vl) && (t <= vh)) -> pure Nothing
| vm < t -> go (mi+1) h
| t < vm -> go l (mi-1)
| vm == t -> pure $ Just mi
| vm < t -> go (m+1) h
| t < vm -> go l (m-1)
| vm == t -> pure $ Just m
| vm /= t -> pure Nothing
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment