Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
COLIBRI
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
pub
COLIBRI
Commits
c3565e59
Commit
c3565e59
authored
3 years ago
by
François Bobot
Browse files
Options
Downloads
Patches
Plain Diff
Import from Bin:a1af7a0 Src:7d7d01bcb farith:a93db57
parent
e23901fe
No related branches found
No related tags found
1 merge request
!13
Fix bug25
Pipeline
#34001
failed
3 years ago
Stage: test
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Src/COLIBRI/col_solve.pl
+11
-12
11 additions, 12 deletions
Src/COLIBRI/col_solve.pl
Src/COLIBRI/realarith.pl
+19
-40
19 additions, 40 deletions
Src/COLIBRI/realarith.pl
with
30 additions
and
52 deletions
Src/COLIBRI/col_solve.pl
+
11
−
12
View file @
c3565e59
...
@@ -800,12 +800,10 @@ smt_test(TO,Size) :-
...
@@ -800,12 +800,10 @@ smt_test(TO,Size) :-
%StrDir = "./QF_FPLRA/schanda/", % 0 TO (cvc4 0)
%StrDir = "./QF_FPLRA/schanda/", % 0 TO (cvc4 0)
%----------------------------------------------------------------
%----------------------------------------------------------------
%StrDir = "./QF_FP/20170501-Heizmann-UltimateAutomizer/", % 0
%StrDir = "./QF_FP/20170501-Heizmann-UltimateAutomizer/", % 0
% A VOIR
%StrDir = "./QF_FP/20190429-UltimateAutomizerSvcomp2019/",% 0 (bitwuzla 0)
%StrDir = "./QF_FP/20190429-UltimateAutomizerSvcomp2019/",% 0 (bitwuzla 0)
%StrDir = "./QF_FP/ramalho/", % 4 (4 min_solve)(cvc4 19)(bitwuzla 17)
%StrDir = "./QF_FP/ramalho/", % 4 (min_solve)(cvc4 19)(bitwuzla 17)
%StrDir = "./QF_FP/griggio/", % 43 TO (42/41 min_solve)(cast float-double, delta 0) (cvc4 89)(bitwuzla 74)
StrDir
=
"./QF_FP/griggio/"
,
% 43 (min_solve, cast float-double, delta 0) (cvc4 89)(bitwuzla 74)
%StrDir = "./QF_FP/schanda/spark/", % 5 TO (5 min_solve) (avec (X+Y)/2 = X/2+Y/2
%StrDir = "./QF_FP/schanda/spark/", % 7 (min_solve avec X =< (X+Y)/2 =< Y) (ncvc4 8)(bitwuzla 3)
% quand c'est correcte, pas de inf/0 pour le resultat) (ncvc4 8)(bitwuzla 3)
%StrDir = "./QF_FP/wintersteiger/", % tout OK
%StrDir = "./QF_FP/wintersteiger/", % tout OK
%-----------------------------------------------------------------
%-----------------------------------------------------------------
...
@@ -823,12 +821,12 @@ smt_test(TO,Size) :-
...
@@ -823,12 +821,12 @@ smt_test(TO,Size) :-
%StrDir = "./QF_ABV/bmc-arrays/",
%StrDir = "./QF_ABV/bmc-arrays/",
%-----------------------------------------------------------------
%-----------------------------------------------------------------
%StrDir = "QF_AX/",
%StrDir = "QF_AX/",
%StrDir = "QF_AX/storeinv/",
%StrDir = "QF_AX/storeinv/",
% 3
%StrDir = "QF_AX/swap/",
%StrDir = "QF_AX/swap/",
% 8
%StrDir = "QF_AX/storecomm/",
%StrDir = "QF_AX/storecomm/",
% 0
%StrDir = "QF_AX/cvc/",
%StrDir = "QF_AX/cvc/",
% 0
StrDir
=
"QF_ALIA/qlock2/"
,
% Des TO et core dump
%
StrDir = "QF_ALIA/qlock2/", % Des TO et core dump
%StrDir = "QF_ALIA/cvc/", % TOUT OK
%StrDir = "QF_ALIA/cvc/", % TOUT OK
%StrDir = "QF_ALIA/UltimateAutomizer2/",% des TO
%StrDir = "QF_ALIA/UltimateAutomizer2/",% des TO
%StrDir = "QF_ALIA/piVC/", % TOUT OK
%StrDir = "QF_ALIA/piVC/", % TOUT OK
...
@@ -1035,12 +1033,13 @@ smt_unit_test(TO) :-
...
@@ -1035,12 +1033,13 @@ smt_unit_test(TO) :-
%StrDir = "./QF_FP/ramalho/",% 6-2 T0
%StrDir = "./QF_FP/ramalho/",% 6-2 T0
%StrDir = "./QF_FP/griggio/", % 59 TO en 24s, 51 en 60s (cvc4 90 en 60s)
%StrDir = "./QF_FP/griggio/", % 59 TO en 24s, 51 en 60s (cvc4 90 en 60s)
%StrDir = "./QF_FP/schanda/spark/",% 7 TO
%StrDir = "./QF_FP/schanda/spark/",% 7 TO
StrDir
=
"./QF_FP/wintersteiger/"
,
% 0 TO
%
StrDir = "./QF_FP/wintersteiger/", % 0 TO
%------------------------------------------------------------------------
%------------------------------------------------------------------------
%
StrDir = "QF_AX/",
StrDir
=
"QF_AX/"
,
%StrDir = "QF_AX/storeinv/",
%StrDir = "QF_AX/storeinv/",
%StrDir = "QF_AX/swap/",
%StrDir = "QF_AX/swap/",
%StrDir = "QF_AX/storecomm/",
%StrDir = "QF_AX/storecomm/",
%StrDir = "QF_AX/cvc/",
%----------------------------------------------------------------------
%----------------------------------------------------------------------
%StrDir = "./QF_BV/",
%StrDir = "./QF_BV/",
%StrDir = "./QF_BV/20170501-Heizmann-UltimateAutomizer/",
%StrDir = "./QF_BV/20170501-Heizmann-UltimateAutomizer/",
...
...
This diff is collapsed.
Click to expand it.
Src/COLIBRI/realarith.pl
+
19
−
40
View file @
c3565e59
...
@@ -12792,6 +12792,7 @@ div_real_bis(Type,A,B,C) :-
...
@@ -12792,6 +12792,7 @@ div_real_bis(Type,A,B,C) :-
true
true
; div_real_rec(Type,A,B,C),
; div_real_rec(Type,A,B,C),
div_real_ineqs(Type,A,B,C),
div_real_ineqs(Type,A,B,C),
average_real_ineqs(Type,A,B,C),
div_real_inst(Type,A,B,C,Continue3),
div_real_inst(Type,A,B,C,Continue3),
check_div_mult_exact(Type,A,B,C,Continue3,Continue4),
check_div_mult_exact(Type,A,B,C,Continue3,Continue4),
(var(Continue4) ->
(var(Continue4) ->
...
@@ -12800,8 +12801,7 @@ div_real_bis(Type,A,B,C) :-
...
@@ -12800,8 +12801,7 @@ div_real_bis(Type,A,B,C) :-
set_prio_inst([A,B,C],4,5,Prio),
set_prio_inst([A,B,C],4,5,Prio),
NewGoal = div_real1(Type,A,B,C),
NewGoal = div_real1(Type,A,B,C),
my_suspend(NewGoal,Prio,(A,B,C)->suspend:constrained),
my_suspend(NewGoal,Prio,(A,B,C)->suspend:constrained)))).
saturate_div_real_two(Type,A,B,C)))).
check_div_mult_exact(Type,A,B,C,Continue,NContinue) :-
check_div_mult_exact(Type,A,B,C,Continue,NContinue) :-
var(Continue),
var(Continue),
...
@@ -12828,52 +12828,31 @@ check_div_mult_exact(Type,A,B,C,_,Continue) :-
...
@@ -12828,52 +12828,31 @@ check_div_mult_exact(Type,A,B,C,_,Continue) :-
% permet de capturer certains calculs de moyenne
% permet de capturer certains calculs de moyenne
% Ex A =< (A+B)/2 =< B et A < B
% Ex A =< (A+B)/2 =< B et A < B
% pour les average_(1,2,3) de schanda
% pour les average_(1,2,3) de schanda
%
satu
ra
t
e_
div_
real_
two
(Type,A,B,C) :- !.
%
ave
ra
g
e_real_
ineqs
(Type,A,B,C) :- !.
% Bizarre !!
% Bizarre !!
satu
ra
t
e_
div_
real_
two
(Type,A,B,C) :-
ave
ra
g
e_real_
ineqs
(Type,A,B,C) :-
((B == 2.0,
((B == 2.0,
not_inf_bounds(A),
not_zero(C),
get_saved_cstr_suspensions(LSusp),
get_saved_cstr_suspensions(LSusp),
member((S,add_real1(Type,X,Y,AA)),LSusp),
member((S,add_real1(Type,X,Y,AA)),LSusp),
% (X+Y)/2 = C
AA == A,
% dans ce cas (X+Y)/2 = X/2 + Y/2
var(X),
var(X),
var(Y))
var(Y),
get_rel_between_real_args(X,Y,Rel),
occurs(Rel,(<,=<,>,>=)))
->
->
% on sature en creant X/2 + Y/2 = C
(getval(use_delta,1)@eclipse ->
get_cstr_suspensions(X,LSX),
(occurs(Rel,(=<,<)) ->
((member(SX,LSX),
launch_real_ineq(=<,Type,X,C),
get_suspension_data(SX,goal,div_real1(Type,XX,X2,Xd2)),
launch_real_ineq(=<,Type,C,Y)
X2 == 2.0,
; launch_real_ineq(=<,Type,Y,C),
XX == X)
launch_real_ineq(=<,Type,C,X))
->
; (occurs(Rel,(=<,<)) ->
Goals1 = []
launch_geq_real(Type,Y,C),
; Goals1 = [div_real(Type,X,2.0,Xd2)]),
launch_geq_real(Type,C,X)
get_cstr_suspensions(Y,LSY),
; launch_geq_real(Type,X,C),
((member(SY,LSY),
launch_geq_real(Type,C,Y)))
get_suspension_data(SY,goal,div_real1(Type,YY,Y2,Yd2)),
Y2 == 2.0,
YY == Y)
->
Goals2 = Goals1
; append(Goals1,[div_real(Type,Y,2.0,Yd2)],Goals2)),
(Goals2 == [] ->
((member((_,add_real1(Type,Ud2,Vd2,CC)),LSusp),
CC == C,
(Ud2 == Xd2 ->
Vd2 == Yd2
; Ud2 == Yd2,
Vd2 == Xd2))
->
Goals = []
; Goals = [add_real(Type,Xd2,Yd2,C)])
; append(Goals2,[add_real(Type,Xd2,Yd2,C)],Goals)),
(foreach(G,Goals) do
call_priority(G,2))
; true).
; true).
%% PMO si les 3 args sont des float_int entre -2^53 et 2^53 on peut
%% PMO si les 3 args sont des float_int entre -2^53 et 2^53 on peut
%% deleguer le calcul de mult_real aux entiers
%% deleguer le calcul de mult_real aux entiers
check_launch_div_int(Type,A,B,C,Continue,_) :-
check_launch_div_int(Type,A,B,C,Continue,_) :-
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment