let get_operator_i = function
CTTbinTimes -> mult_big_int | CTTbinDiv -> div_big_int
| CTTbinPlusVV -> add_big_int | CTTbinPlusPV -> add_big_int
| CTTbinMinusVV -> sub_big_int | CTTbinMinusPP -> sub_big_int | CTTbinMinusPV -> sub_big_int
| CTTbinModulo -> mod_big_int
| CTTbinLshift -> lsl_big_int | CTTbinRshift -> asr_big_int
| CTTbinLogAnd ->
let f n1 n2 =
if n1 = zero_big_int || n2 = zero_big_int then
zero_big_int
else
unit_big_int
in
f
| CTTbinLogOr ->
let f n1 n2 =
if n1 = zero_big_int && n2 = zero_big_int then
zero_big_int
else
unit_big_int
in
f
| CTTbinIntAnd -> land_big_int
| CTTbinIntOr -> lor_big_int
| CTTbinIntXor -> lxor_big_int
| CTTbinLessThan ->
let f n1 n2 = if lt_big_int n1 n2 then unit_big_int else zero_big_int in f
| CTTbinLessEqual ->
let f n1 n2 = if le_big_int n1 n2 then unit_big_int else zero_big_int in f
| CTTbinGtrThan ->
let f n1 n2 = if gt_big_int n1 n2 then unit_big_int else zero_big_int in f
| CTTbinGtrEqual ->
let f n1 n2 = if ge_big_int n1 n2 then unit_big_int else zero_big_int in f
| CTTbinEqual ->
let f n1 n2 = if eq_big_int n1 n2 then unit_big_int else zero_big_int in f
| CTTbinNotEqual ->
let f n1 n2 = if not (eq_big_int n1 n2) then unit_big_int else zero_big_int in f
| _ -> assert false