let bitwise_extraction first_bit last_bit x =
assert (first_bit <= last_bit);(* first_bit <= last_bit *)
assert (first_bit >= 0); (* first_bit >= 0 *)
let q = Big_int.div_big_int x (Big_int.power_int_positive_int 2 first_bit)
in let r = Big_int.mod_big_int q (Big_int.power_int_positive_int 2 (1 + last_bit - first_bit))
in r