From fdb87cd437edaf9a53fa8b5de96d5ae8e4fd9644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Bobot?= <francois.bobot@cea.fr> Date: Thu, 9 Sep 2021 11:43:14 +0200 Subject: [PATCH] Import from Bin:a1af7a0 Src:c996ce084 farith:a93db57 --- Src/COLIBRI/col_solve.pl | 4 ++-- Src/COLIBRI/realarith.pl | 16 ++++++++++++---- Src/COLIBRI/solve.pl | 4 +--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Src/COLIBRI/col_solve.pl b/Src/COLIBRI/col_solve.pl index 06846a92f..edb8d1ab3 100644 --- a/Src/COLIBRI/col_solve.pl +++ b/Src/COLIBRI/col_solve.pl @@ -730,8 +730,8 @@ smt_test :- smt_test(TO,Size) :- %StrDir = "./colibri_tests/colibri/tests/", - %StrDir = "./colibri_tests/colibri/tests/sat/", %0 (sans real/float-> int!) - StrDir = "./colibri_tests/colibri/tests/unsat/", %0 + StrDir = "./colibri_tests/colibri/tests/sat/", %0 (sans real/float-> int!) + %StrDir = "./colibri_tests/colibri/tests/unsat/", %0 %StrDir = "./colibri_tests/colibri/tests/unknown/", %StrDir = "./colibri_tests/colibri/tests/timeout/", diff --git a/Src/COLIBRI/realarith.pl b/Src/COLIBRI/realarith.pl index 98e6cab84..a0eaff17e 100755 --- a/Src/COLIBRI/realarith.pl +++ b/Src/COLIBRI/realarith.pl @@ -12831,10 +12831,18 @@ idiv_mod_real(A,B,Q,R) :- set_priority(1), save_cstr_suspensions((A,B)), get_saved_cstr_suspensions(LSusp), - ((member((_,check_diff_real(BB,AA,QQ,RR)),LSusp), - BB == B, - AA == A) + ((member((Susp,check_divides_real(BB,AA,QQ,RR)),LSusp), + (BB == B -> + (AA == A; + QQ == Q, + RR == R) + ; AA == A, + QQ == Q, + RR == R)) -> + % Fact si arguments égaux ou 3 sur 4 communs + protected_unify(A,AA), + protected_unify(B,BB), protected_unify(Q,QQ), protected_unify(R,RR) ; set_lazy_domain(real,A), @@ -12853,7 +12861,7 @@ idiv_mod_real(A,B,Q,R) :- as(R,real) $>= 0.0, % R est borné par B en valeur absolue as(R,real) $< abs(as(B,real)), - % R = A-BQ, mais de lien direct sur A et B ? + % R = A-BQ, mais pas de lien direct sur A et B ? mult_real(real,B,Q,BQ), minus_real(real,A,BQ,R), % on teste la divisibilite pour forcer R à 0 ou <> 0 diff --git a/Src/COLIBRI/solve.pl b/Src/COLIBRI/solve.pl index 88c236260..c50d6c621 100644 --- a/Src/COLIBRI/solve.pl +++ b/Src/COLIBRI/solve.pl @@ -9818,8 +9818,6 @@ chk_undef_imod_real(Bool,Type,A,B,R) :- ; true), (nonvar(Bool) -> (Bool == 0 -> - % B <> 0.0 -% imod_real(A,B,R) idiv_mod_real(A,B,_,R) ; protected_unify(B,0.0), undef_imod_real(Type,A,R)) @@ -10459,7 +10457,7 @@ check_exists_cdiv_crem(A,B,Q,R,Suspend) :- -> (RelAX == op -> % A et R de même signe - op(R,RR), + op_real(real,R,RR), (RelBY == eq -> % A // B = Q et -A // B = -Q et R = -RR op_real(real,Q,QQ) -- GitLab