472,374 Members | 1,555 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,374 software developers and data experts.

Python 2.4 does not marshal infinity floating point properly under Win32

Hi all,

When using Python 2.4.x on a Win32 box,
marshal.loads(marshal.dumps(1e66666)) returns 1.0 instead of infinity
as it should and does under Python 2.5 (also running on Win32 ).

This problem was reported in another thread here by Peter Hansen
http://groups-beta.google.com/group/...16739705c9304f

Is this considered an important enough bug to fix it in Python 2.4?

The following script exercise the problem when executed::

#---------------------------test_marshal.py--------------------------------------------------
import marshal

INFINITY = 1e66666
inf = 1e300 * 1e300
nan = inf - inf
def show(title, msg):
print '%-10s : ' % title,
msg2 = ''
count = 0
for chr in msg:
count += 1
val = ord(chr)
print hex(val),
if 31 < val < 128:
msg2 += chr
else:
msg2 += '.'
print ' ' * (9-count), ' : ', msg2

show('Nan', marshal.dumps(nan))
show('Infinity', marshal.dumps(INFINITY))
show('Infinity', marshal.dumps(inf))
show('Infinity', marshal.dumps(1e666))

val = marshal.loads(marshal.dumps(1e666))
print val
val = marshal.loads(marshal.dumps(INFINITY))
print val
assert val==INFINITY
#-------------------------------------------------------------------------------------------------------

When running the script on Win32 box with Python 2.4.3 or 2.4.4 I get::

D:\dev\python\test>t_marshal
Nan : 0x66 0x7 0x2d 0x31 0x2e 0x23 0x49 0x4e 0x44 :
f.-1.#IND
Infinity : 0x66 0x6 0x31 0x2e 0x23 0x49 0x4e 0x46 : f.1.#INF
Infinity : 0x66 0x6 0x31 0x2e 0x23 0x49 0x4e 0x46 : f.1.#INF
Infinity : 0x66 0x6 0x31 0x2e 0x23 0x49 0x4e 0x46 : f.1.#INF
1.0
1.0
Traceback (most recent call last):
File "D:\dev\python\test\t_marshal.py", line 33, in ?
assert val==INFINITY
AssertionError

But when running the same script on a Win32 box, using Python 2.5, I
get::

C:\dev\python\test>t_marshal
Nan : 0x67 0x0 0x0 0x0 0x0 0x0 0x0 0xf8 0xff : g........
Infinity : 0x67 0x0 0x0 0x0 0x0 0x0 0x0 0xf0 0x7f : g.......¦
Infinity : 0x67 0x0 0x0 0x0 0x0 0x0 0x0 0xf0 0x7f : g.......¦
Infinity : 0x67 0x0 0x0 0x0 0x0 0x0 0x0 0xf0 0x7f : g.......¦
1.#INF
1.#INF
#-------------------------------------------------

--

Pierre Rouleau

Nov 30 '06 #1
2 1792
On 2006-11-30, Pierre Rouleau <pr*********@gmail.comwrote:
When using Python 2.4.x on a Win32 box,
marshal.loads(marshal.dumps(1e66666)) returns 1.0 instead of infinity
as it should and does under Python 2.5 (also running on Win32 ).

This problem was reported in another thread here by Peter Hansen
http://groups-beta.google.com/group/...16739705c9304f

Is this considered an important enough bug to fix it in Python 2.4?
This must be at least the third thread on this topic so far
this week. And I didn't start _any_ of them (this week).

:)

--
Grant Edwards grante Yow! Imagine--a WORLD
at without POODLES...
visi.com
Nov 30 '06 #2
Pierre Rouleau schrieb:
Is this considered an important enough bug to fix it in Python 2.4?
To the contrary - it's not considered a bug at all. Python didn't
make any promises about "unregular" floating point values, so things
like that just may happen.

The fix that made Python offer stronger guarantees in 2.5 cannot
be ported back to 2.4, since it would break the marshal format of
that release.

Finally, it's not very likely that *any* additional 2.4.x releases
are made at all; only 2.5.x is still actively maintained.

Regards,
Martin
Nov 30 '06 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Andreas Neudecker | last post by:
Hi. Is there anything like +infinity and -infinity available in Python, and can it be used in comparisons together with int or float numbers? Regards Andreas
89
by: Radioactive Man | last post by:
In python 2.3 (IDLE 1.0.3) running under windows 95, I get the following types of errors whenever I do simple arithmetic: 1st example: >>> 12.10 + 8.30 20.399999999999999 >>> 1.1 - 0.2...
28
by: Grant Edwards | last post by:
I finally figured out why one of my apps sometimes fails under Win32 when it always works fine under Linux: Under Win32, the pickle module only works with a subset of floating point values. In...
14
by: Nils Grimsmo | last post by:
Why did round() change in Python 2.4? $ python2.3 Python 2.3.5 (#2, Jun 19 2005, 13:28:00) on linux2 >>> round(0.0225, 3) 0.023 >>> "%.3f" % round(0.0225, 3) '0.023' >>>
2
by: Kemmylinns12 | last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and efficiency. While initially associated with cryptocurrencies...
0
by: Naresh1 | last post by:
What is WebLogic Admin Training? WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge required to effectively administer and manage Oracle...
0
hi
by: WisdomUfot | last post by:
It's an interesting question you've got about how Gmail hides the HTTP referrer when a link in an email is clicked. While I don't have the specific technical details, Gmail likely implements measures...
1
by: Matthew3360 | last post by:
Hi, I have been trying to connect to a local host using php curl. But I am finding it hard to do this. I am doing the curl get request from my web server and have made sure to enable curl. I get a...
0
Oralloy
by: Oralloy | last post by:
Hello Folks, I am trying to hook up a CPU which I designed using SystemC to I/O pins on an FPGA. My problem (spelled failure) is with the synthesis of my design into a bitstream, not the C++...
0
by: Carina712 | last post by:
Setting background colors for Excel documents can help to improve the visual appeal of the document and make it easier to read and understand. Background colors can be used to highlight important...
0
BLUEPANDA
by: BLUEPANDA | last post by:
At BluePanda Dev, we're passionate about building high-quality software and sharing our knowledge with the community. That's why we've created a SaaS starter kit that's not only easy to use but also...
1
by: Johno34 | last post by:
I have this click event on my form. It speaks to a Datasheet Subform Private Sub Command260_Click() Dim r As DAO.Recordset Set r = Form_frmABCD.Form.RecordsetClone r.MoveFirst Do If...
0
DizelArs
by: DizelArs | last post by:
Hi all) Faced with a problem, element.click() event doesn't work in Safari browser. Tried various tricks like emulating touch event through a function: let clickEvent = new Event('click', {...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.