Extend Interval, Typing and Translate:
- Interval: - Not_an_integer -> Is_a_real|Not_a_number. - infer -> infer_with_real because Not_a_number has priority over Is_a_real - Ival.bottom when Is_a_real because the interval is for integers - Typing: - integer_ty -> number_ty=Cty|Gmpz|Libr|Nan - Other -> 'Other (Oreal|Onan)' - Translate: Encode real constants into strings: - **NO** conversion to float-point type - strnum_ty=StrZ|StrR|Not_a_strnum for tracking the type of the string Add Libr: - Gmpz -> Gmp=Gmpz+Gmpq - Libr=ref to Gmpq Add Gmpq builtins: - Custom mini-gmp -> libgmp because mini-gmp has no support for Q - Add arithmetic over Q in e_acsl_gmp_api.h Misc: - dec_to_frac: decimal expansion to fractional representation because decimal expansion is interpreted as double by Gmpq Tests: - BTS 1307 has an assertion wrongly evaluated, fixed - Add tests/gmp/reals.c THE MOST IMPORTANT TODO: - Completely hide the library for numbers (currently Gmp) inside Libr: Typing, Env and Translate should only know Libr and never directly call Gmp. This is crucial for extending E-ACSL in the future (eg: Gmp has no support for elementary functions), and also for using it as part of an abstract compiler (eg: with Fldlib) For the time being, in Translate, we have something as ugly as: let init_set = if Libr.is_t ty then Libr.init_set else Gmp.init_set
Showing
- src/plugins/e-acsl/Makefile.in 6 additions, 34 deletionssrc/plugins/e-acsl/Makefile.in
- src/plugins/e-acsl/at_with_lscope.ml 50 additions, 47 deletionssrc/plugins/e-acsl/at_with_lscope.ml
- src/plugins/e-acsl/contrib/libgmp/.gdbinit 0 additions, 43 deletionssrc/plugins/e-acsl/contrib/libgmp/.gdbinit
- src/plugins/e-acsl/contrib/libgmp/README 0 additions, 77 deletionssrc/plugins/e-acsl/contrib/libgmp/README
- src/plugins/e-acsl/contrib/libgmp/mini-gmp.c 0 additions, 4381 deletionssrc/plugins/e-acsl/contrib/libgmp/mini-gmp.c
- src/plugins/e-acsl/contrib/libgmp/mini-gmp.h 0 additions, 350 deletionssrc/plugins/e-acsl/contrib/libgmp/mini-gmp.h
- src/plugins/e-acsl/dup_functions.ml 5 additions, 5 deletionssrc/plugins/e-acsl/dup_functions.ml
- src/plugins/e-acsl/env.ml 94 additions, 87 deletionssrc/plugins/e-acsl/env.ml
- src/plugins/e-acsl/gmp.ml 213 additions, 0 deletionssrc/plugins/e-acsl/gmp.ml
- src/plugins/e-acsl/gmp.mli 34 additions, 14 deletionssrc/plugins/e-acsl/gmp.mli
- src/plugins/e-acsl/interval.ml 138 additions, 92 deletionssrc/plugins/e-acsl/interval.ml
- src/plugins/e-acsl/interval.mli 9 additions, 5 deletionssrc/plugins/e-acsl/interval.mli
- src/plugins/e-acsl/libr.ml 163 additions, 0 deletionssrc/plugins/e-acsl/libr.ml
- src/plugins/e-acsl/libr.mli 70 additions, 0 deletionssrc/plugins/e-acsl/libr.mli
- src/plugins/e-acsl/logic_functions.ml 11 additions, 7 deletionssrc/plugins/e-acsl/logic_functions.ml
- src/plugins/e-acsl/logic_functions.mli 1 addition, 1 deletionsrc/plugins/e-acsl/logic_functions.mli
- src/plugins/e-acsl/loops.ml 14 additions, 12 deletionssrc/plugins/e-acsl/loops.ml
- src/plugins/e-acsl/main.ml 2 additions, 2 deletionssrc/plugins/e-acsl/main.ml
- src/plugins/e-acsl/misc.ml 73 additions, 0 deletionssrc/plugins/e-acsl/misc.ml
- src/plugins/e-acsl/misc.mli 12 additions, 3 deletionssrc/plugins/e-acsl/misc.mli
Loading
Please register or sign in to comment