[squeakdev] Floats
Alan Pinch
alan.c.pinch at gmail.com
Thu Oct 12 09:59:06 UTC 2017
Here is the spec they are referencing in this thread:
https://stackoverflow.com/questions/4975005/howshouldiinterprettheasn1berstandardforreals
https://www.itu.int/ITUT/studygroups/com17/languages/X.6900207.pdf#%5B%7B%22num%22%3A41%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22FitH%22%7D%2C519%5D
On 10/12/2017 05:36 AM, Alan Pinch wrote:
>
> The same issue exists in ASN1 support, none for float type tag 9. I
> would love to add this support but I am unsure how to breakdown a
> float into mantissa, base and exponent. Here is a description of how
> ASN1 formats a REAL into the stream of bytes:
>
> Type REAL takes values that are the machine representation of a
> real number, namely the triplet (m, b, e), where m is the mantissa
> (a signed number), b the base (2 or 10), and e the exponent (a
> signed number). For example, the representation of the value 3.14
> for the variable Pi, declared as Pi ::= REAL, can be (314, 10,
> 2). Three special values, PLUSINFINITY, 0, and MINUSINFINITY,
> are also allowed.
>
> Here are some sample values:
>
> * 09 00 = 0 (zero)
> * 09 01 40 = +INF (infinity)
> * 09 01 41 = INF
> * 09 08 03 2b 31 2e 30 65 2b 30 = "+1.0e+0" = 1.0 (exact decimal)
> * 09 05 80 fe 55 55 55 = 1398101.25 (binary, 0x555555 * 2^2)
> * 09 06 83 00 fc 00 00 01 = 0.0625 (binary, 0x000001 * 2^4)
>
> I have not parsed out these samples into these components so it's greek.
>
> Alan
>
> On 10/11/2017 02:18 PM, Bert Freudenberg wrote:
>> On Wed, Oct 11, 2017 at 8:07 PM, Tobias Pape <Das.Linux at gmx.de
>> <mailto:Das.Linux at gmx.de>>wrote:
>>
>>
>> > On 11.10.2017, at 19:59, Bert Freudenberg <bert at freudenbergs.de
>> <mailto:bert at freudenbergs.de>> wrote:
>> >
>> > On Wed, Oct 11, 2017 at 5:24 PM, Tobias Pape <Das.Linux at gmx.de
>> <mailto:Das.Linux at gmx.de>> wrote:
>> > Hi all
>> >
>> > I'm a bit stumped…
>> >
>> > What is our canonical way to put a Float onto a (binary) stream?
>> > To be precise a IEEE754 double precision 64bit float onto a
>> stream, of which I only know that it is a binary one.
>> >
>> > I found ByteArray>>doubleAt:{put:}bigEndian:, but they have
>> neither senders nor test _and_ it is not a stream.
>> >
>> > What do y'all use?
>> >
>> > You write them as two words, like e.g. in DataStream>>writeFloat:.
>>
>> Quite. yes.
>>
>> But I find it strange that our read/write streams support various
>> integer and string reading/writing helpers, but none for floats…
>>
>> Best regards
>> Tobias
>>
>>
>> I guess file formats using integers and strings are way more common
>> than ones storing binary floats.
>>
>>  Bert 
>>
>>
>
> 
> Thank you for your consideration,
> Alan

Thank you for your consideration,
Alan
 next part 
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeakdev/attachments/20171012/6dc138f3/attachment.html>
More information about the Squeakdev
mailing list
