[m-users.] How to convert float to uint64?
M McDonough
foolkingcrown at gmail.com
Wed Jan 18 14:37:13 AEDT 2023
On Tue, 17 Jan 2023, dram.wang at gmail.com wrote:
> While uint64 can be converted to float using float.cast_from_uint64/1 in Mercury, but I can not find a way to convert float to
> uint64.
>
> Am I missing something?
A quick hack you could use to make this work by "doing whatever C does":
:- func uint64_to_float(uint64) = float.
% Somewhere later...
:- pragma foreign_proc("C", uint64_to_float(U::in) = (F::out),
[will_not_call_mercury, promise_pure, thread_safe,
will_not_throw_exception, may_duplicate, does_not_affect_liveness],
" F = U; ").
Similar code could be used for Java and C#. This method is going to
cause weird or unexpected stuff to happen with very large integer
values, which will be particularly easy on single-precision-float
grades.
More information about the users
mailing list