STINNER Victor <[email protected]> added the comment:
> $grep -r '#define Py_IS_INF' .
> PC/pyconfig.h:#define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X))
The PC/ directory is specific to Windows. Py_IS_INFINITY should be defined in
Include/pymath.h (at least, in the 3.2 branch)
> Breakpoint 2, __isinf (d=1.0604798301039825e-314)
> ...
> #1 0x8fe528d8 in ffi_call_SYSV () from /usr/local/lib/libffi.so.0.0
Ah, you ran gdb on ctypes. I forgot to specify that you should run gdb on
"int(float('inf'))" instruction in Python, sorry. I would like to check
int(float), not ctypes ;-)
If gdb has an endian issue, you may also try "print /x d" in the gdb shell.
Example on x86_64:
---------------------------------------------
$ gdb ./python
GNU gdb (GDB) 7.1-ubuntu
...
(gdb) run
<press ^C>
(gdb) b isinf
Breakpoint 1 at 0xb7f94f16: file ../sysdeps/ieee754/dbl-64/s_isinf.c, line 23.
(2 locations)
(gdb) cont
>>> int(float('inf'))
Breakpoint 1, *__GI___isinf (x=inf) at ../sysdeps/ieee754/dbl-64/s_isinf.c:23
23 ../sysdeps/ieee754/dbl-64/s_isinf.c: Aucun fichier ou dossier de ce
type.
in ../sysdeps/ieee754/dbl-64/s_isinf.c
(gdb) print /x x
$1 = 0x8000000000000000
(gdb) where
#0 *__GI___isinf (x=inf) at ../sysdeps/ieee754/dbl-64/s_isinf.c:23
#1 0x0819b03e in PyLong_FromDouble (dval=inf) at Objects/longobject.c:280
#2 0x0818d660 in float_trunc (v=<float at remote 0x826fb44>) at
Objects/floatobject.c:896
#3 0x081619c6 in PyNumber_Long (o=<float at remote 0x826fb44>) at
Objects/abstract.c:1348
#4 0x081a4823 in long_new (type=0x824b420, args=(<float at remote
0x826fb44>,), kwds=0x0) at Objects/longobject.c:4130
...
(gdb) frame 1
#1 0x0819b03e in PyLong_FromDouble (dval=inf) at Objects/longobject.c:280
280 if (Py_IS_INFINITY(dval)) {
(gdb) print /x dval
$2 = 0x8000000000000000
---------------------------------------------
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue12589>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com