I tried the CVS and CVI functions which I hadn't noticed before. On 64 bit linux they seem a bit messed up because they assume 32 bit Integers. I tried replacing the Integer type which is 64 bits in linux 64 with a 32 bit long or ulong and that didn't help.
Here's the code I tried from the FB documentation:
I think the CVI keyword is meant to be a Single to raw bits function. Allowing you to access and manipulate the actual floating point format.
There are other ways of doing that with pointer casting
dim as single s=1f
dim as ulong x=*cast(ulong ptr,@s)
Or something like that.
CVI is dependent on the INTEGER size (whether 16, 32 or 64 bits), while CVSHORT, CVL and CVLONGINT aren't. In QBASIC, CVI returned a 16-bit INTEGER.
Really, there aren't many use cases for a function like this, whose behaviour changes depending on the INTEGER size. The other CV_ functions should usually be recommended instead.