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 = div_big_int x (power_int_positive_int 2 first_bit) in
let r = mod_big_int q (power_int_positive_int 2 (1 + last_bit - first_bit)) in
r