From: notoria Date: Sun, 7 Jan 2024 19:19:40 +0000 (+0100) Subject: Fix bound computation in `(^)/2` X-Git-Tag: v0.9.4~38^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=1f3de74cbd7e744692700e9fbb75ae989dd4e1f8;p=scryer-prolog.git Fix bound computation in `(^)/2` ?- A in 0..1, B in-1..0, A^2 #= B. false. % unexpected. ?- A^2 #= B, A in 0..1, B in-1..0. A = 0, B = 0. --- diff --git a/src/lib/clpz.pl b/src/lib/clpz.pl index d699cad1..505a4f64 100644 --- a/src/lib/clpz.pl +++ b/src/lib/clpz.pl @@ -5542,7 +5542,7 @@ run_propagator(pexp(X,Y,Z,Morph), MState) --> fd_put(Z, ZD2, ZPs), { ( even(Y), ZU = n(Num) -> integer_kth_root_leq(Num, Y, RU), - ( XL cis_geq n(0), ZL = n(Num1) -> + ( XL cis_geq n(0), ZL = n(Num1), Num1 >= 0 -> integer_kth_root_leq(Num1, Y, RL0), ( RL0^Y < Num1 -> RL is RL0 + 1 ; RL = RL0