let cast_float_to_int ~with_alarms v =
try
let v1 = project_ival v in
let f = Ival.project_float v1 in
inject_ival (Ival.cast_float_to_int f)
with Ival.Float_abstract.Nan_or_infinite | Not_based_on_null ->
(match with_alarms.imprecision_tracing with
| Aignore -> ()
| Acall f -> f ()
| Alog -> warn_once "cast float to int : alarm (TODO)");
topify_arith_origin v