
Module: ppl/ppl Branch: master Commit: aadc083b812f6bc477ad2c4bd08155f04992d310 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=aadc083b812f6...
Author: Patricia Hill p.m.hill@leeds.ac.uk Date: Thu Mar 26 10:44:57 2009 +0000
Fixed a bug where the tokens for widening were not being updated.
---
.../OCaml/ppl_interface_generator_ocaml_cc_code.m4 | 12 +++--- interfaces/OCaml/tests/test1.ml | 36 ++++++++++++++++--- 2 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 b/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 index bcb359a..aecad4f 100644 --- a/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 +++ b/interfaces/OCaml/ppl_interface_generator_ocaml_cc_code.m4 @@ -605,11 +605,11 @@ ppl_@CLASS@_@WIDEN@_widening_assign_with_tokens CAMLparam3(ph1, ph2, integer); @CPP_CLASS@& pph1 = *p_@CLASS@_val(ph1); @CPP_CLASS@& pph2 = *p_@CLASS@_val(ph2); - int cpp_int = Val_int(integer); + int cpp_int = Int_val(integer); check_int_is_unsigned(cpp_int); unsigned int unsigned_value = cpp_int; pph1.@WIDEN@_widening_assign(pph2, &unsigned_value); - CAMLreturn(Int_val(unsigned_value)); + CAMLreturn(Val_int(unsigned_value)); } CATCH_ALL
@@ -640,11 +640,11 @@ ppl_@CLASS@_widening_assign_with_tokens(value ph1, value ph2, CAMLparam3(ph1, ph2, integer); @CPP_CLASS@& pph1 = *p_@CLASS@_val(ph1); @CPP_CLASS@& pph2 = *p_@CLASS@_val(ph2); - int cpp_int = Val_int(integer); + int cpp_int = Int_val(integer); check_int_is_unsigned(cpp_int); unsigned int unsigned_value = cpp_int; pph1.widening_assign(pph2, &unsigned_value); - CAMLreturn(Int_val(unsigned_value)); + CAMLreturn(Val_int(unsigned_value)); } CATCH_ALL
@@ -662,12 +662,12 @@ ppl_@CLASS@_@LIMITEDBOUNDED@_@WIDENEXPN@_extrapolation_assign_with_tokens(value @CPP_CLASS@& pph1 = *p_@CLASS@_val(ph1); @CPP_CLASS@& pph2 = *p_@CLASS@_val(ph2); @!CONSTRAINER@_System ppl_cs = build_ppl_@!CONSTRAINER@_System(caml_cs); - int cpp_int = Val_int(integer); + int cpp_int = Int_val(integer); check_int_is_unsigned(cpp_int); unsigned int unsigned_value = cpp_int; pph1.@LIMITEDBOUNDED@_@WIDENEXPN@_extrapolation_assign(pph2, ppl_cs, &unsigned_value); - CAMLreturn(Int_val(unsigned_value)); + CAMLreturn(Val_int(unsigned_value)); } CATCH_ALL
diff --git a/interfaces/OCaml/tests/test1.ml b/interfaces/OCaml/tests/test1.ml index 8a69ebc..5b1d06b 100644 --- a/interfaces/OCaml/tests/test1.ml +++ b/interfaces/OCaml/tests/test1.ml @@ -203,7 +203,6 @@ let e3 = -/ (linear_expression_of_int 7) ;; - print_linear_expression e3; print_string_if_noisy "\n" ;;
(* Probably the most convenient thing for the user will be to use the @@ -248,6 +247,16 @@ for i = 6 downto 0 do done;; print_string_if_noisy "\n";;
+let c1 = (a >=/ linear_expression_of_int 0);; +let c2 = (a <=/ linear_expression_of_int 2);; +let c2a = (a <=/ linear_expression_of_int 3);; +let c3 = (b >=/ linear_expression_of_int 0);; +let c4 = (b <=/ linear_expression_of_int 2);; +let cs1 = [c1; c2; c3; c4];; +let cs2 = [c1; c2a; c3; c4];; +let poly1 = ppl_new_C_Polyhedron_from_constraints(cs1);; +let poly2 = ppl_new_C_Polyhedron_from_constraints(cs2);; + let polyhedron1 = ppl_new_C_Polyhedron_from_constraints(constraints1);; let polyhedron2 = ppl_new_C_Polyhedron_from_generators(generators1);; let result = ppl_Polyhedron_bounds_from_above polyhedron1 e2;; @@ -267,17 +276,32 @@ ppl_Polyhedron_concatenate_assign polyhedron1 polyhedron2;; let congruences = ppl_Polyhedron_get_congruences polyhedron1 in List.iter print_congruence congruences;; print_string_if_noisy "\n";; + +print_string_if_noisy "\nTesting affine transformations \n";; ppl_Polyhedron_bounded_affine_preimage polyhedron1 1 e1 e2 (Z.from_int 10);; ppl_Polyhedron_bounded_affine_preimage polyhedron1 1 e1 e2 (Z.from_int 10);; ppl_Polyhedron_affine_image polyhedron1 1 e1 (Z.from_int 10);; -let a = ppl_Polyhedron_limited_BHRZ03_extrapolation_assign_with_tokens + +print_string_if_noisy "\nTesting widenings and extrapolations \n";; +let tokens_l_BHRZ03 = + ppl_Polyhedron_limited_BHRZ03_extrapolation_assign_with_tokens polyhedron1 polyhedron1 constraints1 10;; -let b = ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign_with_tokens +let tokens_b_BHRZ03 = + ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign_with_tokens polyhedron1 polyhedron1 constraints1 10;; -let b = ppl_Polyhedron_bounded_H79_extrapolation_assign_with_tokens +let tokens_b_H79 = ppl_Polyhedron_bounded_H79_extrapolation_assign_with_tokens polyhedron1 polyhedron1 constraints1 10;; - ppl_Polyhedron_H79_widening_assign polyhedron1 ;; -print_int_if_noisy b;; +let tokens_H79 = ppl_Polyhedron_H79_widening_assign_with_tokens poly2 poly1 2;; +ppl_Polyhedron_H79_widening_assign polyhedron1 polyhedron1 ;; +print_string_if_noisy "tokens b_H79 = ";; +print_int_if_noisy tokens_b_H79;; +print_string_if_noisy "\n";; +print_string_if_noisy "tokens b_BHRZ03 = ";; +print_int_if_noisy tokens_b_BHRZ03;; +print_string_if_noisy "\n";; +print_string_if_noisy "tokens H79 = ";; +print_int_if_noisy tokens_H79;; +print_string_if_noisy "\n";;
let b = ppl_Polyhedron_OK polyhedron1;; ppl_Polyhedron_generalized_affine_preimage_lhs_rhs