[issue45440] [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() is not defined

2021-10-15 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset 00ffc4513df7b89a168e88da4d1e3ac367f7682f by Victor Stinner in 
branch 'main':
bpo-45440: Remove pymath.c fallbacks (GH-28977)
https://github.com/python/cpython/commit/00ffc4513df7b89a168e88da4d1e3ac367f7682f


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45440] [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() is not defined

2021-10-15 Thread STINNER Victor


Change by STINNER Victor :


--
pull_requests: +27265
pull_request: https://github.com/python/cpython/pull/28977

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45440] [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() is not defined

2021-10-13 Thread STINNER Victor


STINNER Victor  added the comment:

> [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() 
> is not defined

Well, the final fix is to remove the code path when isinf() is not available 
and require it to build Python ;-)

--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45440] [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() is not defined

2021-10-13 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset 194a9526d8ee6abbbe58ef48520ec87a7e83f327 by Victor Stinner in 
branch 'main':
bpo-45440: Require math.h isinf() to build (GH-28894)
https://github.com/python/cpython/commit/194a9526d8ee6abbbe58ef48520ec87a7e83f327


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45440] [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() is not defined

2021-10-11 Thread STINNER Victor


Change by STINNER Victor :


--
keywords: +patch
pull_requests: +27189
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/28894

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45440] [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() is not defined

2021-10-11 Thread STINNER Victor


STINNER Victor  added the comment:

The Py_FORCE_DOUBLE() macro was added in bpo-5724 by the change:

commit e05e8409e1b47a2c018ad8a67016546217165c60
Author: Mark Dickinson 
Date:   Mon May 4 13:30:43 2009 +

Issue #5724: Fix cmath failures on Solaris 10.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue45440] [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if isinf() is not defined

2021-10-11 Thread STINNER Victor


New submission from STINNER Victor :

If the HAVE_DECL_ISINF macro is not defined in pyconfig.h, the Py_IS_INFINITY 
macro is defined as:

#define Py_IS_INFINITY(X) \
((X) && (Py_FORCE_DOUBLE(X)*0.5 == Py_FORCE_DOUBLE(X)))

Problem: Py_FORCE_DOUBLE() is excluded from the limited C API (and the stable 
ABI).

I see different options:

* Implement Py_IS_INFINITY() as an opaque function if the HAVE_DECL_ISINF macro 
is not defined. I did something similar in Py_INCREF() to support the limited C 
API with a debug build of Python: call _Py_IncRef() opaque function.

* Make Py_FORCE_DOUBLE() private and add it to the limited C API as an 
implementation detail.

* Add Py_FORCE_DOUBLE() macro to the limited C API: the current implementation 
is fragile, it depends on how Python.h is included. Also, I dislike macros in 
the limited C API.

I would prefer to *remove* Py_FORCE_DOUBLE() to all APIs, than adding it to the 
limited C API.

--
components: C API
messages: 403704
nosy: vstinner
priority: normal
severity: normal
status: open
title: [C API] Py_IS_INFINITY() macro doesn't work in the limited C API if 
isinf() is not defined
versions: Python 3.11

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com