sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.45k stars 482 forks source link

32-bit failure in src/sage/symbolic/expression.pyx #34254

Closed vbraun closed 2 years ago

vbraun commented 2 years ago

Possibly caused by the Singular to 4.3.1 update

sage -t --random-seed=210332952936240496895287497988069989916 src/sage/symbolic/expression.pyx
**********************************************************************
File "src/sage/symbolic/expression.pyx", line 12881, in sage.symbolic.expression.Expression._plot_fast_callable
Failed example:
    f(10) == abs((I*10+1)^4)
Expected:
    True
Got:
    False
**********************************************************************
1 item had failures:
   1 of   9 in sage.symbolic.expression.Expression._plot_fast_callable
    [3072 tests, 1 failure, 39.49 s]
----------------------------------------------------------------------
sage -t --random-seed=210332952936240496895287497988069989916 src/sage/symbolic/expression.pyx  # 1 doctest failed
----------------------------------------------------------------------

Apparently numerical noise:

sage: x = var('x', domain='real')
....: s = abs((1+I*x)^4)
....: f = s._plot_fast_callable(x)
....: f(10) == abs((I*10+1)^4)
....: 
False
sage: f(10)
10200.999999999998
sage: abs((I*10+1)^4)
....: 
10201

CC: @orlitzky @dimpase

Component: numerical

Author: Volker Braun

Branch/Commit: 6ba1084

Reviewer: Matthias Koeppe

Issue created by migration from https://trac.sagemath.org/ticket/34254

vbraun commented 2 years ago

Description changed:

--- 
+++ 
@@ -1,3 +1,4 @@
+Possibly caused by the Singular to 4.3.1 update

sage -t --random-seed=210332952936240496895287497988069989916 src/sage/symbolic/expression.pyx

vbraun commented 2 years ago

Branch: u/vbraun/32_bit_failure_in_src_sage_symbolic_expression_pyx

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 2 years ago

Commit: 6ba1084

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 2 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

6ba1084Use fuzzy zero in doctest
mkoeppe commented 2 years ago
comment:4

Which platform did you see this on?

vbraun commented 2 years ago
comment:5

Ubuntu 18.04 32 bit, Debian 11 64 bit

Might be caused by another ticket but its much easier to fix than to isolate the ticket as incremental builds are quite broken.

mkoeppe commented 2 years ago
comment:6

So it's not 32-bit specific?

vbraun commented 2 years ago
comment:7

sorry, copy & paste mistake: Debian 11 32 bit

vbraun commented 2 years ago

Author: Volker Braun

vbraun commented 2 years ago
comment:9

Merge failure on top of:

cb4643843b Trac #34169: Fix docstring markup in sage/interacts and sage/rings

2ffe6f97ea Trac #34165: Fix docstring markup in sage/tests/book_stein_modform.py

ceb0dee2df Trac #34162: Fix docstring markup in sage/doctest

2e801c610a Trac #34161: Fix docstring markup in sage/databases

c8b3b99229 Trac #34159: Fix docstring markup in sage/modular

f0a716b4d3 Trac #34158: Fix docstring markup in sage/manifolds

567f64d7be Trac #34156: Fix docstring markup in sage/game_theory

d0601cd2a1 Trac #34153: pycodestyle cleanup in sage/geometry/hyperplane_arrangement/hyperplane.py

dcfe7886a7 Trac #34146: Modernize super in coding/

9c4e7e0729 Trac #34143: three-argument pow() on integers returns IntegerMod

50b0d6ace7 Trac #34101: cutwidth_dyn use after free

c07b548d64 Trac #34086: E231 in src/sage/graphs/strongly_regular_db.pyx - part 1

3b7946f75a Trac #34079: pycodestyle cleanup in 6 files of src/sage/graphs/

b953cdf5ad Trac #34078: pycodestyle cleanup in src/sage/graphs/graph_plot.py

09d53a9283 Trac #34077: pycodestyle cleanup in src/sage/graphs/graph_input.py

b75dedc3c6 Trac #34073: pycodestyle cleanup in src/sage/graphs/graph_coloring.pyx

ee450caa5f Trac #34068: pycodestyle cleanup in src/sage/graphs/connectivity.pyx

c90eb5c688 Trac #33971: Height of a dynamical system is wrong

e55ae6773e Trac #22857: Using symbolic variables in domain 'positive' makes Sage crash

39dd747664 Trac #10980: Make sure symbolic gridline values are okay

c89955d2e5 Trac #34227: Compute the similarity class type of a given matrix; compute invariant subspace generating function from similarity class type

8b0adc2da8 Trac #34218: Implement longest_increasing_subsequence_number

b0107b91e9 Trac #34216: configure: Use --with-system-{gfortran,openssl,python3}=force on Cygwin

d9568109f7 Trac #34214: Faster version of longest_increasing_subsequence_length

1b0314ac79 Trac #34208: Remove package sip

79199e67bb Trac #34200: Add importlib_metadata to Sphinx's dependencies

7ec4ff6b19 Trac #34189: Remove imports from sage.all and sage.rings.all in sage.rings

aae8d2dd33 Trac #34187: Remove src/sage/init.py

5bfd77d7d3 Trac #34177: Update setuptools to 63.2.0

0e5ef88d17 Trac #34176: update curl to version 7.84

9b6a99a720 Trac #33817: GH Actions: Add test of the modularized distributions

fd93be8851 Trac #32406: Make "./configure --enable-editable" the default

dcd778b1a9 Trac #31568: Add commands "sage --lldb", "sage -t --lldb"

7f0a555ccb Trac #31451: Faster version of longest_increasing_subsequences

b5baa7d3f9 Trac #34115: tox.yml: Refactor using reusable workflows, update Linux platforms

be272221fa Trac #33627: Remove sage-gdb-commands from src/bin

c19c47fd63 Trac #34174: insufficient precision in scaling elliptic curves over number fields by units

aa8a4647f9 Trac #34172: Fix docstring markup in sage/groups and sage/misc

4142099591 Trac #34168: Fix docstring markup in sage/categories

e9be1728bb Trac #34166: Fix docstring markup in sage/tests except sage/tests/book_stein_modform.py

6e41b53b09 Trac #34164: Fix docstring markup in sage/plot and sage/graphs

b03229e112 Trac #34163: Fix docstring markup in sage/interfaces

46849b8d41 Trac #34160: Fix docstring markup in sage/schemes

984137bbb8 Trac #34155: OpenSSL 3.0.5 security update

ced8f29e11 Trac #34151: get rid of Oops messages in quadratic forms

b0456638af Trac #34149: make documentation building compatible with sphinx 5

07d4b909f0 Trac #34105: ZeroDivisionError while reducing a polynomial w.r.t. the zero ideal

db21903ace Trac #33798: Implement the Links-Gould polynomial invariant for links

04ad7f9577 Trac #33705: "make doc-clean" should remove inventory, doctrees

977e691dc1 Trac #33636: replace loadable_module_extension() by importlib.machinery.EXTENSION_SUFFIXES

c744d7c09c Trac #29097: build/make/Makefile.in: Rename make targets SPKG-clean to SPKG-uninstall

8312ee1e90 Trac #33530: Upgrade ipython to 8.x

067a66c7e9 Trac #33428: prompt_toolkit 3.0.25+ breaks Ctrl-C

79ed9e5ddb Trac #33160: update Singular to 4.3.1

4cc4817aeb Trac #32088: gfan testsuite hangs on 32bit

10247d5f2a Trac #31049: "setup.py develop" rewrites the installed sage-version.sh as if it is a Python script

7f7149489c Updated SageMath version to 9.7.beta6

reviewer '' does not look right

mkoeppe commented 2 years ago
comment:10

Note that on Debian 11 (bullseye) we have had severe numerical issues for a long time, see #31621 ("ubuntu-groovy-standard, debian-bullseye-standard: numerics-related sage testsuite errors"), reported multiple times since the 9.3 series. I don't if it's related

mkoeppe commented 2 years ago
comment:11

Can you share config.log from the affected platforms please?

vbraun commented 2 years ago
comment:12

well the rest of the testsuite passes, thats the only fail

config.log is here: http://sagepad.org/pub/config.log.bu18_32s02

mkoeppe commented 2 years ago
comment:14

This version of the doctest is from #8450, Sage 9.6 series, which made this change:

-            sage: s = abs((1+I*x)^4); s
-            abs(I*x + 1)^4
-            sage: f = s._plot_fast_callable(x); f
-            <sage.ext.interpreters.wrapper_py.Wrapper_py object at ...>
-            sage: f(10)
-            10201
-            sage: abs((I*10+1)^4)
-            10201
+            sage: s = abs((1+I*x)^4)
+            sage: f = s._plot_fast_callable(x)
+            sage: f(10) == abs((I*10+1)^4)
+            True
             sage: plot(s)
             Graphics object consisting of 1 graphics primitive

That was apparently too strict. So positive review.

mkoeppe commented 2 years ago

Reviewer: Matthias Koeppe

mkoeppe commented 2 years ago
comment:15

Volker, on the affected systems, what does grep fast-math logs/pkgs/* give?

mkoeppe commented 2 years ago
comment:16

I have been able to reproduce this. The changed behavior is coming from the switch to editable builds (#32406). It has nothing to do with the Singular upgrade.

mkoeppe commented 2 years ago
comment:17

More precisely I think it's coming from some Cython extension being built with std=c++11 vs std=gnu++11.

mkoeppe commented 2 years ago
comment:18

In any case, the fix of the doctest here on the ticket is correct.

mkoeppe commented 2 years ago
comment:19

Replying to @mkoeppe:

More precisely I think it's coming from some Cython extension being built with std=c++11 vs std=gnu++11.

Confirmed. I've opened #34258 for removing the code responsible for this difference from our old build system for non-editable builds

vbraun commented 2 years ago

Changed branch from u/vbraun/32_bit_failure_in_src_sage_symbolic_expression_pyx to 6ba1084