let double_double_fun name caml_fun state actuals =
match actuals with
[_, arg, _] ->
begin
let r =
try
let i = Cvalue.V.project_ival arg in
let f = Ival.project_float i in
Cvalue.V.inject_ival
(Ival.inject_float (caml_fun f))
with Cvalue.V.Not_based_on_null ->
Value_parameters.result ~once:true ~current:true "%s"
("Builtin " ^ name ^ " applied to address");
Cvalue.V.topify_arith_origin arg
in
(wrap_double r), state, Location_Bits.Top_Param.bottom
end
| _ ->
Value_parameters.error "%s"
("Invalid argument for " ^ name ^ " function");
do_degenerate None;
raise Db.Value.Aborted