needs "arith/prove_lp.hl";;
needs "arith_test_data25.hl";;
needs "arith_test_data20.hl";;
needs "arith_test_data15.hl";;
needs "arith_test_data10.hl";;
needs "arith_test_data5.hl";;
let mul_op_num = `( * ):num->num->num` and
mul_op_real = `( * ):real->real->real` and
plus_op_num = `(+):num->num->num` and
plus_op_real = `(+):real->real->real` and
neg_op_real = `(--):real->real` and
amp_op_real = `(&):num->real`;;
let mul_data_int = map (fun (t1,t2) -> mk_binop mul_op_real t1 t2) data;;
let add_data_int = map (fun (t1,t2) -> mk_binop plus_op_real t1 t2) data;;
let sub_data_int = map (fun (t1,t2) -> mk_binop plus_op_real t1 (mk_comb(neg_op_real, t2))) data;;
let NUM_TO_NUMERAL = rand o concl o NUM_TO_NUMERAL_CONV;;
let data2 = map (fun (t1,t2) -> (mk_comb(amp_op_real, NUM_TO_NUMERAL(rand t1)),
mk_comb(amp_op_real, NUM_TO_NUMERAL(rand t2)))) data;;
let mul_data2 = map (fun (t1,t2) -> mk_binop mul_op_real t1 t2) data2;;
let add_data2 = map (fun (t1,t2) -> mk_binop plus_op_real t1 t2) data2;;
let sub_data2 = map (fun (t1,t2) -> mk_binop plus_op_real t1 (mk_comb(neg_op_real, t2))) data2;;
(**********************************)
(* data25 *)
(* 4: 10.645
8: 3.592
*)
test 1 (map REAL_BITS_MUL_CONV) mul_data_int;;
(* 4: 0.208
8: 0.132
*)
test 1 (map REAL_BITS_ADD_CONV) add_data_int;;
(* 4: 880
8: 0.524
*)
test 1 (map REAL_BITS_ADD_CONV) sub_data_int;;
(* 85.081 *)
test 1 (map REAL_INT_MUL_CONV) mul_data2;;
(* 0.808 *)
test 1 (map REAL_INT_ADD_CONV) add_data2;;
(* 2.588 *)
test 1 (map REAL_INT_ADD_CONV) sub_data2;;
(**********************************)
(* data20 *)
(* 4: 6.092
8: 2.256
*)
test 1 (map REAL_BITS_MUL_CONV) mul_data_int;;
(* 4: 0.176
8: 0.108
*)
test 1 (map REAL_BITS_ADD_CONV) add_data_int;;
(* 4: 0.728
8: 0.420
*)
test 1 (map REAL_BITS_ADD_CONV) sub_data_int;;
(* 59.160 *)
test 1 (map REAL_INT_MUL_CONV) mul_data2;;
(* 0.648 *)
test 1 (map REAL_INT_ADD_CONV) add_data2;;
(* 2.392 *)
test 1 (map REAL_INT_ADD_CONV) sub_data2;;
(**********************************)
(* data15 *)
(* 4: 3.880
8: 1.316
*)
test 1 (map REAL_BITS_MUL_CONV) mul_data_int;;
(* 4: 0.112
8: 0.096
*)
test 1 (map REAL_BITS_ADD_CONV) add_data_int;;
(* 4: 0.560
8: 0.340
*)
test 1 (map REAL_BITS_ADD_CONV) sub_data_int;;
(* 16.081 *)
test 1 (map REAL_INT_MUL_CONV) mul_data2;;
(* 0.492 *)
test 1 (map REAL_INT_ADD_CONV) add_data2;;
(* 1.792 *)
test 1 (map REAL_INT_ADD_CONV) sub_data2;;
(**********************************)
(* data10 *)
(* 4: 1.292
8: 0.376
*)
test 1 (map REAL_BITS_MUL_CONV) mul_data_int;;
(* 4: 0.100
8: 0.064
*)
test 1 (map REAL_BITS_ADD_CONV) add_data_int;;
(* 4: 0.328
8: 0.220
*)
test 1 (map REAL_BITS_ADD_CONV) sub_data_int;;
(* 7.216 *)
test 1 (map REAL_INT_MUL_CONV) mul_data2;;
(* 0.324 *)
test 1 (map REAL_INT_ADD_CONV) add_data2;;
(* 0.876 *)
test 1 (map REAL_INT_ADD_CONV) sub_data2;;
(**********************************)
(* data5 *)
(* 4: 0.428
8: 0.148
*)
test 1 (map REAL_BITS_MUL_CONV) mul_data_int;;
(* 4: 0.064
8: 0.052
*)
test 1 (map REAL_BITS_ADD_CONV) add_data_int;;
(* 4: 0.192
8: 0.132
*)
test 1 (map REAL_BITS_ADD_CONV) sub_data_int;;
(* 2.220 *)
test 1 (map REAL_INT_MUL_CONV) mul_data2;;
(* 0.188 *)
test 1 (map REAL_INT_ADD_CONV) add_data2;;
(* 0.568 *)
test 1 (map REAL_INT_ADD_CONV) sub_data2;;