Re: [m-users.] How to convert float to uint64?
M McDonough <[email protected]>
| Newsgroups | gmane.comp.lang.mercury.general |
|---|---|
| Message-ID | <CAJpH_7J6WT13cZQLhVO7_YyOC4=0=Vdod2oGwzRPYp_qNCf5Kw@mail.gmail.com> |
On Tue, 17 Jan 2023, [email protected] 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. _______________________________________________ users mailing list [email protected] https://lists.mercurylang.org/listinfo/users