Against PEP 240
bokr at accessone.com
Fri Jun 1 18:51:27 CEST 2001
On 31 May 2001 16:49:34 -0700, aahz at panix.com (Aahz Maruch) wrote:
>In article <3b16a154.9545695 at wa.news.verio.net>,
>Bengt Richter <bokr at accessone.com> wrote:
>>On 31 May 2001 10:28:32 -0700, aahz at panix.com (Aahz Maruch) wrote:
>>>One can have floating-point BCD, which is what I'm currently working on.
>>>It's a real pleasure to write
>>> 1.2e2346257231235019862340987162305961293865 * 2.0
>>>Note carefully the mantissa with its trailing zero.
>>Just curious, is that based on something like [ <long>, <long> ]
>>with the second being a decimal exponent, analogous to binary fp?
>>Or, are you maintaining a decimal digit sequence representation
>>with some decimal "digit" radix like 10^4 or 10^9 (with each "digit"
>>represented in binary)? Or?
>The exponent is a long, but the digits are a tuple. See
Interesting. I note that Cowlishaw's proposed single precision format
fits exactly into the bit fields of a double. I'd bet you could get
mileage out of that, but I don't have time to play with it now...
At least sign tests, negate, absolute value, equality tests (ok, since
all bits are accounted for).
Ok, here's a thing to encode and decode a decimal tuple (v,x10) into
a float, where v is an integer up to 15 digits and x10 is an exponent
dec() decodes it back (well, I should have done a long() on the first
"enc(v,x10) encode up to 15-digit integer signed v and 10-bit
signed x10 in float"
if v < 0:
" decode float that was encoded with enc() above"
z = math.frexp(d) # (f,x2)
if d < 0:
return z*2L**53 + 2L**52, z-53
return z*2L**53 - 2L**52, z-53
Maybe someone will find this a useful take-off point...
No warranty, this is hot OTTOMH ;-)
More information about the Python-list