let cast_to_float value =
        match value with
        | RFloatValue(f) -> f
        | RIntegerValue(i) -> float_of_int i
        | _ -> raise (EInvalidCast (string_of_value_type value,"float"))