[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-24 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset 1b2611eb0283055835e5df632a7a735db8c894b8 by Victor Stinner in 
branch 'main':
bpo-46656: Remove Py_NO_NAN macro (GH-31160)
https://github.com/python/cpython/commit/1b2611eb0283055835e5df632a7a735db8c894b8


--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-24 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset 5f8b5e2f2150d2223ff9e286bd146de92ff16865 by Victor Stinner in 
branch 'main':
bpo-46656: Building Python now requires a C11 compiler (GH-31557)
https://github.com/python/cpython/commit/5f8b5e2f2150d2223ff9e286bd146de92ff16865


--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-24 Thread STINNER Victor


Change by STINNER Victor :


--
pull_requests: +29679
pull_request: https://github.com/python/cpython/pull/31557

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-08 Thread STINNER Victor


STINNER Victor  added the comment:

Requiring IEEE 754 support is being discussed on python-dev: 
https://mail.python.org/archives/list/python-...@python.org/thread/J5FSP6J4EITPY5C2UJI7HSL2GQCTCUWN/

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread Mark Dickinson


Mark Dickinson  added the comment:

> See the explanations in the source.

Hmm. Those explanations made more sense before PR GH-28882. :-(

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread Mark Dickinson


Mark Dickinson  added the comment:

> Is the macro PY_NO_SHORT_FLOAT_REPR also related to platforms which don't 
> support IEEE 754?

Yes, though it's a bit more than that: we also need the platform either not to 
have issues with double rounding for normal numbers, or we need to be able to 
control the x87 rounding mode in the case that double rounding might be an 
issue. See the explanations in the source.

https://github.com/python/cpython/blob/025cbe7a9b5d3058ce2eb8015d3650e396004545/Include/pyport.h#L345-L355

> In 2022, which platforms don't support IEEE 754?

None that CPython might plausibly run on that I'm aware of.

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread STINNER Victor


STINNER Victor  added the comment:

Is the macro PY_NO_SHORT_FLOAT_REPR also related to platforms which don't 
support IEEE 754?

In 2022, which platforms don't support IEEE 754?

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread Mark Dickinson


Mark Dickinson  added the comment:

Okay, the comments I made on #46640 still apply (even though they didn't 
properly apply on that issue). I think this needs a python-dev discussion 
before it can be moved forward - requiring the existence of NaNs is very close 
to requiring IEEE 754 floating-point, and that's something we've been 
historically reluctant to do.

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread STINNER Victor


STINNER Victor  added the comment:

See also bpo-46640 "Python can now use the C99 NAN constant or __builtin_nan()".

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread STINNER Victor


STINNER Victor  added the comment:

If someone suddenly requires platforms without NaN support, they can maintain a 
(downstream) patch, or we can revert the change in Python.

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread STINNER Victor


Change by STINNER Victor :


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

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread STINNER Victor


STINNER Victor  added the comment:

Python uses Py_NAN without "#ifdef Py_NAN" guard since 2008. Building Python 
with Py_NO_NAN never worked. Nobody reported such build failure in the last 14 
years...

IMO it's time to stop supporting platforms without NaN support.


> Objects/complexobject.c:120:27: error: use of undeclared identifier 'Py_NAN'

I only try a few Python versions: I reproduce this issue in Python 3.11, 3.5, 
3.2 and... even Python 2.7!

The Py_NO_NAN macro was introduced in Python 2.6 (2007) by bpo-1635 "Float 
patch for inf and nan on Windows (and other platforms)":
--
commit 0a8143f6462b491d3f12bfb899efd6e044e350be
Author: Christian Heimes 
Date:   Tue Dec 18 23:22:54 2007 +

Applied patch #1635: Float patch for inf and nan on Windows (and other 
platforms).

The patch unifies float("inf") and repr(float("inf")) on all platforms.

(...)

+#if !defined(Py_NAN) && !defined(Py_NO_NAN)
+#define Py_NAN (Py_HUGE_VAL * 0.)
+#endif
---

The following change started to use Py_NAN in many C files:

* Modules/cmathmodule.c
* Objects/complexobject.c
* Objects/floatobject.c
* Python/pymath.c 

---
commit 6f34109384f3a78d5f4f8bdd418a89caca19631e (HEAD)
Author: Christian Heimes 
Date:   Fri Apr 18 23:13:07 2008 +

I finally got the time to update and merge Mark's and my trunk-math branch. 
The patch is collaborated w
ork of Mark Dickinson and me. It was mostly done a few months ago. The patch 
fixes a lot of loose ends and 
edge cases related to operations with NaN, INF, very small values and complex 
math.

The patch also adds acosh, asinh, atanh, log1p and copysign to all 
platforms. Finally it fixes differen
ces between platforms like different results or exceptions for edge cases. Have 
fun :)
---

At this commit, floatobject.c and pymath.c use "#ifdef Py_NAN" carefully, 
whereas cmathmodule.c and complexobject.c use Py_NAN with no "#ifdef Py_NAN" 
guard.

--
nosy: +vstinner

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread Mark Dickinson


Mark Dickinson  added the comment:

Here's the first point of failure on my machine. Fixing this shows up more 
failures.

gcc -c -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall
-std=c99 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers 
-Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  
-I./Include/internal  -I. -I./Include-DPy_BUILD_CORE -o 
Objects/complexobject.o Objects/complexobject.c
Objects/complexobject.c:120:27: error: use of undeclared identifier 'Py_NAN'
r.real = r.imag = Py_NAN;
  ^
Objects/complexobject.c:206:16: error: use of undeclared identifier 'Py_NAN'
return Py_NAN;
   ^
2 errors generated.
make: *** [Objects/complexobject.o] Error 1

--

___
Python tracker 

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



[issue46656] Compile fails if Py_NO_NAN is defined

2022-02-06 Thread Mark Dickinson


New submission from Mark Dickinson :

The macro Py_NAN may or may not be defined: in particular, a platform that 
doesn't have NaNs is supposed to be able to define Py_NO_NAN in pyport.h to 
indicate that.

But not all of our uses of `Py_NAN` are guarded by suitable #ifdef 
conditionals. As a result, compilation fails if Py_NAN is not defined.

--
messages: 412620
nosy: mark.dickinson
priority: normal
severity: normal
status: open
title: Compile fails if Py_NO_NAN is defined
type: behavior
versions: Python 3.10, Python 3.11, Python 3.9

___
Python tracker 

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