let comparisons _info ~signed f e1 e2 =
let r =
try
let k1,v1 = find_lonely_key e1 in
let k2,v2 = find_lonely_key e2 in
if not (Base.equal k1 k2)
then begin
if (not signed)
then begin
let e1_zero = equal e1 singleton_zero in
let e2_zero = equal e2 singleton_zero in
if (e1_zero && (f == do_le || f == do_lt))
|| (e2_zero && (f == do_ge || f == do_gt))
then singleton_one
else if (e2_zero && (f == do_le || f == do_lt))
|| (e1_zero && (f == do_ge || f == do_gt))
then singleton_zero
else zero_or_one
end
else zero_or_one
end
else Ival.compare_C f v1 v2
with Not_found ->
zero_or_one
in
r