From: Daniel Dickman Subject: Re: numpy 1.26.4 (python 3.12 and cython 3 support) To: Daniel Dickman , Theo Buehler , ports@openbsd.org Date: Tue, 27 Aug 2024 20:39:20 -0400 On Tue, 27 Aug 2024, Stuart Henderson wrote: > On 2024/08/21 21:32, Daniel Dickman wrote: > > > > > > On Sat, 17 Aug 2024, Theo Buehler wrote: > > > > > On Tue, Aug 13, 2024 at 06:20:27PM -0400, Daniel Dickman wrote: > > > > Here's a possible update of numpy to 1.26.4. > > > > > > > > The build switches to meson in this release. And this release is the first > > > > one to support Python 3.12 and also the first to officialy support Cython > > > > 3. > > > > > > > > This should probably be put into bulks on multiple amd64 and other archs > > > > before being committed. > > > > > > After working around a debug package issue in numpy itself, this > > > completed a bulk without fallout. Further testing on other > > > architectures should probably wait until this and issues with > > > regress is sorted. > > > > > > > Thanks to feedback from tb@, new diff below with 2 changes: > > > > - add "DWZ=:" to fix the build of debug packages, this is an issue on both > > Python 3.11 and 3.12 likely due to 128 bit math. > > > > - disable tests. The regress tests work fine under Python 3.12 but fail > > under Python 3.11 due to what looks to me like incomplete refactoring > > of code after numpy.distutils was removed from numpy. > > > > Believe tb@ ran a bulk on amd64 with no issues, so !amd64 bulks would be > > very useful at this point. > > Bulk builds on the archs which are most likely to have problems is > really unlikely to happen - few people have the type of machines > suitable for running them in any reasonable timeframe. Makes sense, but... > > Results from building and "make test" on other archs (especially > sparc64) are easier and would be useful. That's definitely a useful minimum, but the thing that worries me is runtime breakage that wouldn't be detected at build time of numpy (or direct deps). In 2018 I remember the numpy update took out boost but only on powerpc, which then took out a big chunk of the tree on that platform. I don't know how to prevent that without doing bulks. But as you say, given realities, it may not get done... > > The extra patches below fix things so tests can run on 3.11 (remove > NO_TEST from Makefile too). "make test" on amd64 Py 3.11 results below > the diff (summary: 31 failed, 35649 passed, 2372 skipped, 1305 > deselected, 33 xfailed, 1 xpassed, 21 warnings in 207.79s"; I'll run > it on aarch64 when my machine's free and reply if there are many > differences. Maybe i386 too when the current bulk finishes (a day or > two). No objection for this tactical fix. I thought about doing the same thing, but tests will theoretically break if we ever go to Python 3.13. I think what they were trying to do here is to only use distutils in earlier versions of Python since distutils was removed in 3.12 (and I think deprecated in 3.11?). But since numpy.distutils itself is now gone, I think the right fix is to remove references to that package (so the test of the Python version for whether we call numpy.distutils feels wrong to me). > > > Index: patches/patch-numpy__pytesttester_py > =================================================================== > RCS file: patches/patch-numpy__pytesttester_py > diff -N patches/patch-numpy__pytesttester_py > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-numpy__pytesttester_py 27 Aug 2024 15:50:18 -0000 > @@ -0,0 +1,14 @@ > +1.26.4 no longer has numpy.distutils but tests still reference it > + > +Index: numpy/_pytesttester.py > +--- numpy/_pytesttester.py.orig > ++++ numpy/_pytesttester.py > +@@ -135,7 +135,7 @@ class PytestTester: > + # offset verbosity. The "-q" cancels a "-v". > + pytest_args += ["-q"] > + > +- if sys.version_info < (3, 12): > ++ if sys.version_info < (3, 11): > + with warnings.catch_warnings(): > + warnings.simplefilter("always") > + # Filter out distutils cpu warnings (could be localized to > Index: patches/patch-numpy_tests_test_public_api_py > =================================================================== > RCS file: patches/patch-numpy_tests_test_public_api_py > diff -N patches/patch-numpy_tests_test_public_api_py > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-numpy_tests_test_public_api_py 27 Aug 2024 15:50:18 -0000 > @@ -0,0 +1,41 @@ > +1.26.4 no longer has numpy.distutils but tests still reference it > + > +Index: numpy/tests/test_public_api.py > +--- numpy/tests/test_public_api.py.orig > ++++ numpy/tests/test_public_api.py > +@@ -159,7 +159,7 @@ PUBLIC_MODULES = ['numpy.' + s for s in [ > + "typing.mypy_plugin", > + "version" # Should be removed for NumPy 2.0 > + ]] > +-if sys.version_info < (3, 12): > ++if sys.version_info < (3, 11): > + PUBLIC_MODULES += [ > + 'numpy.' + s for s in [ > + "distutils", > +@@ -240,7 +240,7 @@ PRIVATE_BUT_PRESENT_MODULES = ['numpy.' + s for s in [ > + "random.bit_generator", > + "testing.print_coercion_tables", > + ]] > +-if sys.version_info < (3, 12): > ++if sys.version_info < (3, 11): > + PRIVATE_BUT_PRESENT_MODULES += [ > + 'numpy.' + s for s in [ > + "distutils.armccompiler", > +@@ -335,7 +335,7 @@ SKIP_LIST = [ > + "numpy.core.generate_numpy_api", > + "numpy.core.umath_tests", > + ] > +-if sys.version_info < (3, 12): > ++if sys.version_info < (3, 11): > + SKIP_LIST += ["numpy.distutils.msvc9compiler"] > + > + > +@@ -380,7 +380,7 @@ SKIP_LIST_2 = [ > + 'numpy.matlib.ctypeslib', > + 'numpy.matlib.ma', > + ] > +-if sys.version_info < (3, 12): > ++if sys.version_info < (3, 11): > + SKIP_LIST_2 += [ > + 'numpy.distutils.log.sys', > + 'numpy.distutils.log.logging', > Index: patches/patch-numpy_typing_tests_test_isfile_py > =================================================================== > RCS file: patches/patch-numpy_typing_tests_test_isfile_py > diff -N patches/patch-numpy_typing_tests_test_isfile_py > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-numpy_typing_tests_test_isfile_py 27 Aug 2024 15:50:18 -0000 > @@ -0,0 +1,14 @@ > +1.26.4 no longer has numpy.distutils but tests still reference it > + > +Index: numpy/typing/tests/test_isfile.py > +--- numpy/typing/tests/test_isfile.py.orig > ++++ numpy/typing/tests/test_isfile.py > +@@ -21,7 +21,7 @@ FILES = [ > + ROOT / "random" / "__init__.pyi", > + ROOT / "testing" / "__init__.pyi", > + ] > +-if sys.version_info < (3, 12): > ++if sys.version_info < (3, 11): > + FILES += [ROOT / "distutils" / "__init__.pyi"] > + > + > > $ make test > ===> Regression tests for py3-numpy-1.26.4 > cd /pobj/py-numpy-1.26.4-python3 && CC=cc PYTHONUSERBASE= PORTSDIR="/usr/ports" LIBTOOL="/usr/bin/libtool" CCACHE_DIR=/usr/obj/ports/.ccache CCACHE_SLOPPINESS=pch_defines,time_macros PATH='/pobj/py-numpy-1.26.4-python3/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11R6/bin' PREFIX='/usr/local' LOCALBASE='/usr/local' X11BASE='/usr/X11R6' CFLAGS='-O2 -pipe -g' TRUEPREFIX='/usr/local' DESTDIR='' HOME='/py-numpy-1.26.4_writes_to_HOME' PICFLAG="-fpic" BINGRP=bin BINOWN=root BINMODE=755 NONBINMODE=644 DIRMODE=755 INSTALL_COPY=-c INSTALL_STRIP= MANGRP=bin MANOWN=root MANMODE=644 BSD_INSTALL_PROGRAM="/pobj/py-numpy-1.26.4-python3/bin/install -c -m 755" BSD_INSTALL_SCRIPT="/pobj/py-numpy-1.26.4-python3/bin/install -c -m 755" BSD_INSTALL_DATA="/pobj/py-numpy-1.26.4-python3/bin/install -c -m 644" BSD_INSTALL_MAN="/pobj/py-numpy-1.26.4-python3/bin/install -c -m 644" BSD_INSTALL_PROGRAM_DIR="/pobj/py-numpy-1.26.4-python3/bin/install -d -m 755" BSD_INSTALL_SCRIPT_DIR="/pobj/py-numpy-1.26.4-python3/bin/install -d -m 755" BSD_INSTALL_DATA_DIR="/pobj/py-numpy-1.26.4-python3/bin/install -d -m 755" BSD_INSTALL_MAN_DIR="/pobj/py-numpy-1.26.4-python3/bin/install -d -m 755" /usr/local/bin/python3.11 -c 'import numpy ; numpy.test(verbose=2)' > NumPy version 1.26.4 > NumPy relaxed strides checking option: True > NumPy CPU features: SSE SSE2 SSE3 SSSE3* SSE41* POPCNT* SSE42* AVX* F16C* FMA3* AVX2* AVX512F? AVX512CD? AVX512_KNL? AVX512_KNM? AVX512_SKX? AVX512_CLX? AVX512_CNL? AVX512_ICL? > ============================= test session starts ============================== > platform openbsd7 -- Python 3.11.9, pytest-8.2.0, pluggy-1.5.0 > benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) > rootdir: /usr/obj/ports/py-numpy-1.26.4-python3 > plugins: subtests-0.12.1, benchmark-4.0.0, flaky-3.8.1, filter-subpackage-0.2.0, timeout-1.4.2, typeguard-4.3.0, hypothesis-6.47.1, anyio-3.7.1, cov-5.0.0, mock-3.14.0, doctestplus-1.2.1 > collected 39391 items / 1305 deselected / 38086 selected > > array_api/tests/test_array_object.py ........................ [ 0%] > array_api/tests/test_creation_functions.py .............. [ 0%] > array_api/tests/test_data_type_functions.py ..... [ 0%] > array_api/tests/test_elementwise_functions.py .. [ 0%] > array_api/tests/test_indexing_functions.py .... [ 0%] > array_api/tests/test_manipulation_functions.py ... [ 0%] > array_api/tests/test_set_functions.py .. [ 0%] > array_api/tests/test_sorting_functions.py .... [ 0%] > array_api/tests/test_validation.py ... [ 0%] > compat/tests/test_compat.py . [ 0%] > core/tests/test__exceptions.py ........... [ 0%] > core/tests/test_abc.py ..... [ 0%] > core/tests/test_api.py ................................................. [ 0%] > ........... [ 0%] > core/tests/test_argparse.py ..... [ 0%] > core/tests/test_array_coercion.py ...................................... [ 0%] > .......................x................................................ [ 0%] > ........................................................................ [ 0%] > .......................... [ 0%] > core/tests/test_arraymethod.py ........................................ [ 1%] > core/tests/test_arrayprint.py ..x....................................... [ 1%] > ..................... [ 1%] > core/tests/test_casting_floatingpoint_errors.py ........................ [ 1%] > ........................................................................ [ 1%] > ........................................................................ [ 1%] > ............... [ 1%] > core/tests/test_casting_unittests.py ................................... [ 1%] > ........................................................................ [ 1%] > ........................................................................ [ 2%] > ........................................................................ [ 2%] > ................................................................ [ 2%] > core/tests/test_conversion_utils.py ........................... [ 2%] > core/tests/test_cpu_dispatcher.py . [ 2%] > core/tests/test_cpu_features.py .......ssss [ 2%] > core/tests/test_custom_dtypes.py ................................... [ 2%] > core/tests/test_cython.py ....... [ 2%] > core/tests/test_datetime.py ............................................ [ 2%] > ........................................................................ [ 3%] > ........................................................................ [ 3%] > ...........................................x..........x..x..........x... [ 3%] > . [ 3%] > core/tests/test_defchararray.py ........................................ [ 3%] > ................................................. [ 3%] > core/tests/test_deprecations.py ........................................ [ 3%] > ........................................................................ [ 3%] > ........... [ 3%] > core/tests/test_dlpack.py .............................................. [ 4%] > ............. [ 4%] > core/tests/test_dtype.py ............................................... [ 4%] > ................................................ssss.................... [ 4%] > ........................................................................ [ 4%] > ........................................................................ [ 4%] > ........................................................................ [ 4%] > ........................................................................ [ 5%] > ........................................................................ [ 5%] > ........................................................................ [ 5%] > ........................................................................ [ 5%] > ........................................................................ [ 5%] > ........................................................................ [ 6%] > ........................................................................ [ 6%] > ........................................................................ [ 6%] > ........................................................................ [ 6%] > ................................................. [ 6%] > core/tests/test_einsum.py .............................................. [ 6%] > ..................... [ 6%] > core/tests/test_errstate.py .... [ 7%] > core/tests/test_extint128.py ............ [ 7%] > core/tests/test_function_base.py ..................................... [ 7%] > core/tests/test_getlimits.py ................ [ 7%] > core/tests/test_half.py ..................................... [ 7%] > core/tests/test_hashtable.py ......... [ 7%] > core/tests/test_indexerrors.py ........ [ 7%] > core/tests/test_indexing.py ............................................ [ 7%] > ....................................... [ 7%] > core/tests/test_item_selection.py ...................................... [ 7%] > ........................................................................ [ 7%] > ........................................................................ [ 8%] > ........................................................................ [ 8%] > ............ [ 8%] > core/tests/test_limited_api.py . [ 8%] > core/tests/test_longdouble.py .Fsssss.s......ssss.sss...........s. [ 8%] > core/tests/test_machar.py . [ 8%] > core/tests/test_mem_overlap.py .................. [ 8%] > core/tests/test_mem_policy.py .....s.... [ 8%] > core/tests/test_memmap.py ................... [ 8%] > core/tests/test_multiarray.py .......................................... [ 8%] > ........................................................................ [ 8%] > .......................xx............................................... [ 8%] > ........................................................................ [ 9%] > ........................................................................ [ 9%] > ...........................................s............................ [ 9%] > ........................................................................ [ 9%] > ........................................................................ [ 9%] > ........................................................................ [ 10%] > ........................................................................ [ 10%] > ........................................................................ [ 10%] > ........................................................................ [ 10%] > ........................................................................ [ 10%] > ........................................................................ [ 11%] > ........................................................................ [ 11%] > ........................................................................ [ 11%] > ........................................................................ [ 11%] > ........................................................................ [ 11%] > ........................................................................ [ 11%] > ........................................................................ [ 12%] > ........................................................................ [ 12%] > ........................................................................ [ 12%] > ........................................................................ [ 12%] > ........................................................................ [ 12%] > ........................................................................ [ 13%] > ........................................................................ [ 13%] > ........................................................................ [ 13%] > ........................................................................ [ 13%] > ........................................................................ [ 13%] > ........................................................................ [ 14%] > ........................................................................ [ 14%] > ........................................................................ [ 14%] > ........................................................................ [ 14%] > ........................................................................ [ 14%] > ........................................................................ [ 14%] > ........................................................................ [ 15%] > ........................................................................ [ 15%] > ........................................................................ [ 15%] > ........................................................................ [ 15%] > ........................................................................ [ 15%] > ........................................................................ [ 16%] > ........................................................................ [ 16%] > ........................................................................ [ 16%] > ........................................................................ [ 16%] > ........................................................................ [ 16%] > ........................................................................ [ 17%] > ........................................................................ [ 17%] > ........................................................................ [ 17%] > ........................................................................ [ 17%] > ........................................................................ [ 17%] > ........................................................................ [ 18%] > ........................................................................ [ 18%] > ........................................................................ [ 18%] > ........................................................................ [ 18%] > ........................................................................ [ 18%] > ........................................................................ [ 18%] > ........................................................................ [ 19%] > ........................................................................ [ 19%] > ........................................................................ [ 19%] > ........................................................................ [ 19%] > ........................................................................ [ 19%] > ........................................................................ [ 20%] > ........................................................................ [ 20%] > ........................................................................ [ 20%] > ........................................................................ [ 20%] > ........................................................................ [ 20%] > ........................................................................ [ 21%] > ........................................................................ [ 21%] > ........................................................................ [ 21%] > ........................................................................ [ 21%] > ........................................................................ [ 21%] > ........................................................................ [ 21%] > ........................................................................ [ 22%] > ........................................................................ [ 22%] > ........................................................................ [ 22%] > ........................................................................ [ 22%] > ........................................................................ [ 22%] > ........................................................................ [ 23%] > ........................................................................ [ 23%] > ........................................................................ [ 23%] > ........................................................................ [ 23%] > ........................................................................ [ 23%] > ........................................................................ [ 24%] > ........................................................................ [ 24%] > ........................................................................ [ 24%] > ........................................................................ [ 24%] > ........................................................................ [ 24%] > ........................................................................ [ 25%] > ........................................................................ [ 25%] > ........................................................................ [ 25%] > ........................................................................ [ 25%] > ........................................................................ [ 25%] > ........................................................................ [ 25%] > ........................................................................ [ 26%] > ........................................................................ [ 26%] > ........................................................................ [ 26%] > ........................................................................ [ 26%] > ........................................................................ [ 26%] > ........................................................................ [ 27%] > ........................................................................ [ 27%] > ........................................................................ [ 27%] > ........................................................................ [ 27%] > ........................................................................ [ 27%] > ........................................................................ [ 28%] > ........................................................................ [ 28%] > ........................................................................ [ 28%] > ........................................................................ [ 28%] > ........................................................................ [ 28%] > ........................................................................ [ 28%] > ........................................................................ [ 29%] > ........................................................................ [ 29%] > ........................................................................ [ 29%] > ........................................................................ [ 29%] > ........................................................................ [ 29%] > ........................................................................ [ 30%] > ........................................................................ [ 30%] > ........................................................................ [ 30%] > ........................................................................ [ 30%] > ........................................................................ [ 30%] > ........................................................................ [ 31%] > ........................................................................ [ 31%] > ........................................................................ [ 31%] > ........................................................................ [ 31%] > ........................................................................ [ 31%] > ........................................................................ [ 32%] > ........................................................................ [ 32%] > ........................................................................ [ 32%] > ........................................................................ [ 32%] > ................................ [ 32%] > core/tests/test_nditer.py .............................................. [ 32%] > ........................................................................ [ 32%] > ........................................................................ [ 33%] > ........................................................................ [ 33%] > ........................................................................ [ 33%] > ........................................................................ [ 33%] > ........................................................................ [ 33%] > ........................................................................ [ 34%] > ........................................................................ [ 34%] > ........................................................................ [ 34%] > ........................................................................ [ 34%] > .................................... [ 34%] > core/tests/test_nep50_promotions.py ................s............... [ 34%] > core/tests/test_numeric.py ..............................x...x.......... [ 34%] > ..................s..s.................................................. [ 35%] > ........................................................................ [ 35%] > ...........................................................X............ [ 35%] > ........................................................................ [ 35%] > .................... [ 35%] > core/tests/test_numerictypes.py ........................................ [ 35%] > ........................................................................ [ 36%] > ...... [ 36%] > core/tests/test_numpy_2_0_compat.py ... [ 36%] > core/tests/test_overrides.py ........................................... [ 36%] > ........................................................................ [ 36%] > ....................... [ 36%] > core/tests/test_print.py .....................F [ 36%] > core/tests/test_protocols.py .. [ 36%] > core/tests/test_records.py ......................................... [ 36%] > core/tests/test_regression.py .......................................... [ 36%] > ........................................................................ [ 36%] > ........................................................................ [ 37%] > ........................................................................ [ 37%] > .........s.............................................................. [ 37%] > ........................................................................ [ 37%] > ............. [ 37%] > core/tests/test_scalar_ctors.py ........................................ [ 37%] > ........................................................................ [ 38%] > .................................................. [ 38%] > core/tests/test_scalar_methods.py ............................s......... [ 38%] > ........................................................................ [ 38%] > . [ 38%] > core/tests/test_scalarbuffer.py ........................................ [ 38%] > ...................................... [ 38%] > core/tests/test_scalarinherit.py ..... [ 38%] > core/tests/test_scalarmath.py .........................s................ [ 38%] > ........................................................................ [ 38%] > ........................................................................ [ 39%] > ......................ssssss............................................ [ 39%] > ........................................................................ [ 39%] > ...... [ 39%] > core/tests/test_scalarprint.py ....Fs [ 39%] > core/tests/test_shape_base.py .......................................... [ 39%] > ........................................................................ [ 39%] > ........................................................................ [ 40%] > ........................ [ 40%] > core/tests/test_simd.py ................................................ [ 40%] > ........................................................................ [ 40%] > ........................................................................ [ 40%] > ........................................................................ [ 40%] > ........................................................................ [ 40%] > ........................................................................ [ 41%] > ........................................................................ [ 41%] > ........................................................................ [ 41%] > ........................................................................ [ 41%] > ........................................................................ [ 41%] > ........................................................................ [ 42%] > ........................................................................ [ 42%] > ........................................................................ [ 42%] > ........................................................................ [ 42%] > ........................................................................ [ 42%] > ........................................................................ [ 43%] > ........................................................................ [ 43%] > ........................................................................ [ 43%] > ........................................................................ [ 43%] > ........................................................................ [ 43%] > ........................................................................ [ 44%] > ........................................................................ [ 44%] > ........................................................................ [ 44%] > ........................................................................ [ 44%] > ........................................................................ [ 44%] > ........................................................................ [ 44%] > ........................................................................ [ 45%] > ........................................................................ [ 45%] > ........................................................................ [ 45%] > ........................................................................ [ 45%] > ........................................................................ [ 45%] > ........................................................................ [ 46%] > ........................................................................ [ 46%] > ........................................................................ [ 46%] > ........................................................................ [ 46%] > ........................................................................ [ 46%] > ........................................................................ [ 47%] > ........................................................................ [ 47%] > ........................................................................ [ 47%] > ................................ssssssssssssssssssssssssssssssssssssssss [ 47%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 47%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 47%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 48%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 48%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 48%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 48%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 48%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 49%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 49%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 49%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 49%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 49%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 50%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 50%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 50%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 50%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 50%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 51%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 51%] > ........................................................................ [ 51%] > ........................................................................ [ 51%] > ........................................................................ [ 51%] > ........................................................................ [ 51%] > ........................................................................ [ 52%] > ........................................................................ [ 52%] > ........................................................................ [ 52%] > ........................................................................ [ 52%] > ........................................................................ [ 52%] > ........................................................ [ 53%] > core/tests/test_simd_module.py .................................... [ 53%] > core/tests/test_strings.py ............................................. [ 53%] > ........................................................................ [ 53%] > ................. [ 53%] > core/tests/test_ufunc.py ............................................... [ 53%] > ........................................................................ [ 53%] > .........................s.............................................. [ 53%] > ........................................................................ [ 54%] > ........................................................................ [ 54%] > ........................................................................ [ 54%] > ........................................................................ [ 54%] > ........................................................................ [ 54%] > ........................................................................ [ 55%] > .......................................................................x [ 55%] > xxxxxx.............. [ 55%] > core/tests/test_umath.py ............................................... [ 55%] > ........................................................................ [ 55%] > ........................................................................ [ 55%] > ........................................................................ [ 56%] > ........................................................................ [ 56%] > ........................................................................ [ 56%] > ........................................................................ [ 56%] > .F............F................................................s...FF... [ 56%] > ........................................................................ [ 56%] > ........................................................................ [ 57%] > ........................................................................ [ 57%] > ........................................................................ [ 57%] > ........................................................................ [ 57%] > ........................................................................ [ 57%] > ........................................................................ [ 58%] > ........................................................................ [ 58%] > ........................................................................ [ 58%] > ........................................................................ [ 58%] > ........................................................................ [ 58%] > ........................................................................ [ 59%] > ........................................................................ [ 59%] > ........................................................................ [ 59%] > ........................................................................ [ 59%] > ........................................................................ [ 59%] > ...................................................................F.... [ 60%] > ...................................F.................................... [ 60%] > ...F.......................................F............................ [ 60%] > ...........F.......................................F.................... [ 60%] > ...................F.......................................F............ [ 60%] > ...........................F.......................................F.... [ 60%] > ...................................F.................................... [ 61%] > ...F.......................................F............................ [ 61%] > ...........F.......................................F.................... [ 61%] > ...................F.......................................F............ [ 61%] > ...........................F............................................ [ 61%] > ........................................................................ [ 62%] > ........................................................................ [ 62%] > ........................................................................ [ 62%] > ........................................................................ [ 62%] > ........................................................................ [ 62%] > ........................................................................ [ 63%] > ........................................................................ [ 63%] > ........................................................................ [ 63%] > ........................................................................ [ 63%] > ........................................................................ [ 63%] > ........................................................................ [ 63%] > ........................................................................ [ 64%] > ........................................................................ [ 64%] > ........................................................................ [ 64%] > ........................................................................ [ 64%] > ........................................................................ [ 64%] > ........................................................................ [ 65%] > ........................................................................ [ 65%] > ........................................................................ [ 65%] > ........................................................................ [ 65%] > .....ssssssssssss...F................................................... [ 65%] > ........................................................................ [ 66%] > ........FF.FFF.......................................................... [ 66%] > ........................................................................ [ 66%] > ............................s........................................... [ 66%] > ........................................................................ [ 66%] > .................................................................sssssss [ 67%] > sssssss................................................................. [ 67%] > ............................................................... [ 67%] > core/tests/test_umath_accuracy.py s..................................... [ 67%] > ... [ 67%] > core/tests/test_umath_complex.py .ss.s..s.......s....................... [ 67%] > ........................................................................ [ 67%] > ........................................................................ [ 67%] > ........................................................................ [ 68%] > ........................................................................ [ 68%] > ...... [ 68%] > core/tests/test_unicode.py ............................................. [ 68%] > ............................... [ 68%] > f2py/tests/test_abstract_interface.py ss [ 68%] > f2py/tests/test_array_from_pyobj.py ssssssssssssssssssssssssssssssssssss [ 68%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 68%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%] > ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%] > sssssssssssssssssssssssssssssssssssssssss [ 70%] > f2py/tests/test_block_docstring.py s [ 70%] > f2py/tests/test_callback.py sssssssssssssssss [ 70%] > f2py/tests/test_character.py sssssssssssssssssssssssssssssssssssssssssss [ 70%] > ssss [ 70%] > f2py/tests/test_common.py ss [ 70%] > f2py/tests/test_compile_function.py sssssss [ 70%] > f2py/tests/test_crackfortran.py s......sss....ssssssssssssssssss.ssssss. [ 70%] > ..ss. [ 70%] > f2py/tests/test_data.py ssssss [ 70%] > f2py/tests/test_docs.py sss [ 70%] > f2py/tests/test_f2cmap.py s [ 70%] > f2py/tests/test_f2py2e.py ......ssx..............x.........x............ [ 70%] > ...... [ 70%] > f2py/tests/test_isoc.py ssss. [ 70%] > f2py/tests/test_kind.py sss [ 70%] > f2py/tests/test_mixed.py ss [ 70%] > f2py/tests/test_module_doc.py s [ 70%] > f2py/tests/test_pyf_src.py . [ 70%] > f2py/tests/test_quoted_character.py s [ 70%] > f2py/tests/test_regression.py . [ 70%] > f2py/tests/test_return_character.py sssssssssssssss [ 70%] > f2py/tests/test_return_complex.py ssssssssssssssss [ 70%] > f2py/tests/test_return_integer.py ssssssssssssssssssss [ 70%] > f2py/tests/test_return_real.py ssssssssssssssssssss [ 70%] > f2py/tests/test_semicolon_split.py ss [ 70%] > f2py/tests/test_string.py sss [ 70%] > f2py/tests/test_symbolic.py sssssssssss [ 70%] > f2py/tests/test_value_attrspec.py s [ 70%] > fft/tests/test_helper.py ........ [ 70%] > fft/tests/test_pocketfft.py ............................................ [ 70%] > .................................... [ 71%] > lib/tests/test__datasource.py .......................... [ 71%] > lib/tests/test__iotools.py ........................ [ 71%] > lib/tests/test__version.py ........ [ 71%] > lib/tests/test_arraypad.py ............................................. [ 71%] > ..................................x..................................... [ 71%] > ........................................................................ [ 71%] > ........................................................................ [ 71%] > ........................................................................ [ 72%] > ........................................................................ [ 72%] > ........................................................................ [ 72%] > ........................................................................ [ 72%] > .................................... [ 72%] > lib/tests/test_arraysetops.py .......................................... [ 72%] > ................................ [ 72%] > lib/tests/test_arrayterator.py . [ 72%] > lib/tests/test_financial_expired.py . [ 72%] > lib/tests/test_format.py .................................s....... [ 73%] > lib/tests/test_function_base.py ........................................ [ 73%] > ........................................................................ [ 73%] > ......................................................x................. [ 73%] > ........................................................................ [ 73%] > ........................................................................ [ 73%] > ........................................................................ [ 74%] > ........................................................................ [ 74%] > ........................................................................ [ 74%] > ........................................................................ [ 74%] > ........................................................................ [ 74%] > ........................................................................ [ 75%] > ........................................................................ [ 75%] > ........................................................................ [ 75%] > ...................... [ 75%] > lib/tests/test_histograms.py .........................s................. [ 75%] > ................ [ 75%] > lib/tests/test_index_tricks.py ......................................... [ 75%] > ...... [ 75%] > lib/tests/test_io.py ................................................... [ 75%] > ........................................................................ [ 76%] > ........................................................................ [ 76%] > ............... [ 76%] > lib/tests/test_loadtxt.py .............................................. [ 76%] > ........................................................................ [ 76%] > ........................................................................ [ 76%] > ........................x...x.............s.....x....................... [ 77%] > ................... [ 77%] > lib/tests/test_mixins.py ........... [ 77%] > lib/tests/test_nanfunctions.py .....................ss.ss.ss.ss.ss.ss.ss [ 77%] > ..........................................ss.ss.ss.ss.ss.ss.ss.......... [ 77%] > ........................................................................ [ 77%] > ........................................................................ [ 77%] > ........................................................................ [ 77%] > ........................................................................ [ 78%] > ........................................................................ [ 78%] > ........................................................................ [ 78%] > ........................................................................ [ 78%] > ........................................................................ [ 78%] > ........................................................................ [ 79%] > ..............................ss.ss.ss.ss.ss.ss.ss...................... [ 79%] > .....................ss.ss.ss.ss.ss.ss.ss............................... [ 79%] > ........ss.ss.ss.ss.ss.ss.ss............................................ [ 79%] > ........................................................................ [ 79%] > ...ss.ss.ss.ss.....................ss.ss.ss.ss................. [ 80%] > lib/tests/test_packbits.py ............................................. [ 80%] > ........................................................................ [ 80%] > ........................................................................ [ 80%] > ........................................................................ [ 80%] > ................... [ 80%] > lib/tests/test_polynomial.py ..................................... [ 80%] > lib/tests/test_recfunctions.py ......................................... [ 80%] > .......... [ 80%] > lib/tests/test_regression.py ........................... [ 81%] > lib/tests/test_shape_base.py ........................................... [ 81%] > ................................. [ 81%] > lib/tests/test_stride_tricks.py .......................... [ 81%] > lib/tests/test_twodim_base.py ..................................... [ 81%] > lib/tests/test_type_check.py ........................................... [ 81%] > ......... [ 81%] > lib/tests/test_ufunclike.py ..... [ 81%] > lib/tests/test_utils.py ..................... [ 81%] > linalg/tests/test_deprecations.py . [ 81%] > linalg/tests/test_linalg.py ............................................ [ 81%] > ..x..................................................................... [ 81%] > ........................................................................ [ 82%] > ........................................................................ [ 82%] > ........................................................................ [ 82%] > ..............................................sx [ 82%] > linalg/tests/test_regression.py ......... [ 82%] > ma/tests/test_core.py .................................................. [ 82%] > ........................................................................ [ 82%] > ........................................................................ [ 83%] > ........................................................................ [ 83%] > ........................................................................ [ 83%] > ........................................................................ [ 83%] > ........................................................................ [ 83%] > ........................................................................ [ 84%] > ........................................................................ [ 84%] > ........................................................................ [ 84%] > ........................................................................ [ 84%] > ........................................................................ [ 84%] > ........................................................................ [ 85%] > ........................................................................ [ 85%] > ........................................................................ [ 85%] > ........................................................................ [ 85%] > ........................................................................ [ 85%] > ........................................................................ [ 85%] > ........................................................................ [ 86%] > ........................................................................ [ 86%] > ........................................................................ [ 86%] > ........................................................................ [ 86%] > ........................................................................ [ 86%] > ........................................................................ [ 87%] > ........................................................................ [ 87%] > ........................................................................ [ 87%] > ........................................................................ [ 87%] > ........................................................................ [ 87%] > ........................................................................ [ 88%] > ........................................................................ [ 88%] > ........................................................................ [ 88%] > ........................................................................ [ 88%] > ........................................................................ [ 88%] > ........................................................................ [ 89%] > ........................................................................ [ 89%] > ........................................................................ [ 89%] > ........................................................................ [ 89%] > ........................................................................ [ 89%] > ........................................................................ [ 89%] > ........................................................................ [ 90%] > ........................................................................ [ 90%] > ........................................................................ [ 90%] > ........................................................................ [ 90%] > ........................................................................ [ 90%] > ........................................................................ [ 91%] > ........................................................................ [ 91%] > ........................................................................ [ 91%] > ........................................................................ [ 91%] > ........................................................................ [ 91%] > ........................................................................ [ 92%] > ........................................................................ [ 92%] > ........................................................................ [ 92%] > ..........................................................xx............ [ 92%] > ........................................................................ [ 92%] > ........................................................................ [ 92%] > ........................................................................ [ 93%] > ........................................................................ [ 93%] > ....... [ 93%] > ma/tests/test_deprecations.py ..... [ 93%] > ma/tests/test_extras.py ................................................ [ 93%] > ................................................... [ 93%] > ma/tests/test_mrecords.py ........................ [ 93%] > ma/tests/test_old_ma.py ......................................... [ 93%] > ma/tests/test_regression.py .............. [ 93%] > ma/tests/test_subclassing.py ................ [ 93%] > matrixlib/tests/test_defmatrix.py ...................................... [ 93%] > ..... [ 94%] > matrixlib/tests/test_interaction.py ....................... [ 94%] > matrixlib/tests/test_masked_matrix.py .............. [ 94%] > matrixlib/tests/test_matrix_linalg.py .................................. [ 94%] > .................................................................... [ 94%] > matrixlib/tests/test_multiarray.py .. [ 94%] > matrixlib/tests/test_numeric.py .. [ 94%] > matrixlib/tests/test_regression.py .... [ 94%] > polynomial/tests/test_chebyshev.py ..................................... [ 94%] > .... [ 94%] > polynomial/tests/test_classes.py ....................................... [ 94%] > ........................................................................ [ 94%] > ........................................................................ [ 94%] > ...................................................... [ 95%] > polynomial/tests/test_hermite.py .................................. [ 95%] > polynomial/tests/test_hermite_e.py .................................. [ 95%] > polynomial/tests/test_laguerre.py .................................. [ 95%] > polynomial/tests/test_legendre.py ...................................... [ 95%] > [ 95%] > polynomial/tests/test_polynomial.py ................................... [ 95%] > polynomial/tests/test_polyutils.py ......... [ 95%] > polynomial/tests/test_printing.py ...................................... [ 95%] > ..................................... [ 95%] > polynomial/tests/test_symbol.py ........................................ [ 95%] > ............ [ 95%] > random/tests/test_direct.py ............................................ [ 96%] > ................................................ [ 96%] > random/tests/test_extending.py s. [ 96%] > random/tests/test_generator_mt19937.py ................................. [ 96%] > ........................................................................ [ 96%] > ........................................................................ [ 96%] > ........................................................................ [ 96%] > .............................................................. [ 97%] > random/tests/test_generator_mt19937_regressions.py ............... [ 97%] > random/tests/test_random.py ............................................ [ 97%] > ........................................................................ [ 97%] > .......................... [ 97%] > random/tests/test_randomstate.py ....................................... [ 97%] > ........................................................................ [ 97%] > ..................................................................... [ 97%] > random/tests/test_randomstate_regression.py ................... [ 97%] > random/tests/test_regression.py ........... [ 97%] > random/tests/test_seed_sequence.py .. [ 97%] > random/tests/test_smoke.py .s........................................... [ 98%] > ........................................................................ [ 98%] > ........................................................................ [ 98%] > ........................................................................ [ 98%] > ...............................ss....................................... [ 98%] > ........................................................................ [ 99%] > ........................................................................ [ 99%] > ....................................................................... [ 99%] > testing/tests/test_utils.py ............................................ [ 99%] > ........................................................................ [ 99%] > ...................... [ 99%] > tests/test__all__.py . [ 99%] > tests/test_ctypeslib.py ....................... [ 99%] > tests/test_lazyloading.py . [ 99%] > tests/test_matlib.py ........ [ 99%] > tests/test_numpy_config.py .... [ 99%] > tests/test_numpy_version.py .. [ 99%] > tests/test_public_api.py ............... [ 99%] > tests/test_reloading.py ... [ 99%] > tests/test_scripts.py xxx. [ 99%] > typing/tests/test_isfile.py . [ 99%] > typing/tests/test_runtime.py .....................x... [100%] > > =================================== FAILURES =================================== > _____________________________ test_repr_roundtrip ______________________________ > > @pytest.mark.skipif(IS_MUSL, > reason="test flaky on musllinux") > @pytest.mark.skipif(LD_INFO.precision + 2 >= repr_precision, > reason="repr precision not enough to show eps") > def test_repr_roundtrip(): > # We will only see eps in repr if within printing precision. > o = 1 + LD_INFO.eps > > assert_equal(np.longdouble(repr(o)), o, "repr was %s" % repr(o)) > E AssertionError: > E Items are not equal: repr was 1.0000000000000000001 > E ACTUAL: 1.0 > E DESIRED: 1.0000000000000000001 > > o = 1.0000000000000000001 > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_longdouble.py:43: AssertionError > ______________ TestCommaDecimalPointLocale.test_locale_longdouble ______________ > > self = > > @pytest.mark.skipif(IS_MUSL, > reason="test flaky on musllinux") > def test_locale_longdouble(self): > > assert_equal(str(np.longdouble('1.2')), str(float(1.2))) > E AssertionError: > E Items are not equal: > E ACTUAL: '1.1999999999999999556' > E DESIRED: '1.2' > > self = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_print.py:202: AssertionError > ____________________ TestRealScalars.test_dragon4_interface ____________________ > > self = > > def test_dragon4_interface(self): > tps = [np.float16, np.float32, np.float64] > # test is flaky for musllinux on np.float128 > if hasattr(np, 'float128') and not IS_MUSL: > tps.append(np.float128) > > fpos = np.format_float_positional > fsci = np.format_float_scientific > > for tp in tps: > # test padding > assert_equal(fpos(tp('1.0'), pad_left=4, pad_right=4), " 1. ") > assert_equal(fpos(tp('-1.0'), pad_left=4, pad_right=4), " -1. ") > > assert_equal(fpos(tp('-10.2'), > pad_left=4, pad_right=4), " -10.2 ") > E AssertionError: > E Items are not equal: > E ACTUAL: ' -10.1999999999999992895' > E DESIRED: ' -10.2 ' > > fpos = > fsci = > self = > tp = > tps = [, , , ] > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_scalarprint.py:276: AssertionError > __________________________ TestLog2.test_log2_special __________________________ > > self = > > @pytest.mark.skipif(IS_WASM, reason="fp errors don't work in wasm") > def test_log2_special(self): > assert_equal(np.log2(1.), 0.) > assert_equal(np.log2(np.inf), np.inf) > assert_(np.isnan(np.log2(np.nan))) > > with warnings.catch_warnings(record=True) as w: > warnings.filterwarnings('always', '', RuntimeWarning) > assert_(np.isnan(np.log2(-1.))) > assert_(np.isnan(np.log2(-np.inf))) > assert_equal(np.log2(0.), -np.inf) > assert_(w[0].category is RuntimeWarning) > assert_(w[1].category is RuntimeWarning) > > assert_(w[2].category is RuntimeWarning) > E IndexError: list index out of range > > self = > w = [, ] > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1280: IndexError > ______________________ TestSpecialFloats.test_log_values _______________________ > > self = > > @pytest.mark.skipif(IS_WASM, reason="fp errors don't work in wasm") > def test_log_values(self): > with np.errstate(all='ignore'): > x = [np.nan, np.nan, np.inf, np.nan, -np.inf, np.nan] > y = [np.nan, -np.nan, np.inf, -np.inf, 0.0, -1.0] > y1p = [np.nan, -np.nan, np.inf, -np.inf, -1.0, -2.0] > for dt in ['e', 'f', 'd', 'g']: > xf = np.array(x, dtype=dt) > yf = np.array(y, dtype=dt) > yf1p = np.array(y1p, dtype=dt) > assert_equal(np.log(yf), xf) > assert_equal(np.log2(yf), xf) > assert_equal(np.log10(yf), xf) > assert_equal(np.log1p(yf1p), xf) > > with np.errstate(divide='raise'): > for dt in ['e', 'f', 'd']: > > assert_raises(FloatingPointError, np.log, > np.array(0.0, dtype=dt)) > > dt = 'e' > self = > x = [nan, nan, inf, nan, -inf, nan] > xf = array([ nan, nan, inf, nan, -inf, nan], dtype=float128) > y = [nan, nan, inf, -inf, 0.0, -1.0] > y1p = [nan, nan, inf, -inf, -1.0, -2.0] > yf = array([ nan, nan, inf, -inf, 0., -1.], dtype=float128) > yf1p = array([ nan, nan, inf, -inf, -1., -2.], dtype=float128) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1454: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > /usr/local/lib/python3.11/unittest/case.py:766: in assertRaises > return context.handle('assertRaises', args, kwargs) > args = (, array(0., dtype=float16)) > context = None > expected_exception = > kwargs = {} > self = > /usr/local/lib/python3.11/unittest/case.py:236: in handle > with self: > args = [array(0., dtype=float16)] > callable_obj = > kwargs = {} > name = 'assertRaises' > self = None > /usr/local/lib/python3.11/unittest/case.py:259: in __exit__ > self._raiseFailure("{} not raised by {}".format(exc_name, > exc_name = 'FloatingPointError' > exc_type = None > exc_value = None > self = > tb = None > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = > standardMsg = 'FloatingPointError not raised by log' > > def _raiseFailure(self, standardMsg): > msg = self.test_case._formatMessage(self.msg, standardMsg) > > raise self.test_case.failureException(msg) > E AssertionError: FloatingPointError not raised by log > > msg = 'FloatingPointError not raised by log' > self = > standardMsg = 'FloatingPointError not raised by log' > > /usr/local/lib/python3.11/unittest/case.py:199: AssertionError > ________________________ TestSpecialFloats.test_arctanh ________________________ > > self = > > @pytest.mark.skipif(IS_WASM, reason="fp errors don't work in wasm") > def test_arctanh(self): > with np.errstate(all='ignore'): > in_ = [np.nan, -np.nan, np.inf, -np.inf, 1.0, -1.0, 2.0] > out = [np.nan, np.nan, np.nan, np.nan, np.inf, -np.inf, np.nan] > for dt in ['e', 'f', 'd']: > in_arr = np.array(in_, dtype=dt) > out_arr = np.array(out, dtype=dt) > assert_equal(np.arctanh(in_arr), out_arr) > > for value in [1.01, np.inf, -np.inf, 1.0, -1.0]: > with np.errstate(invalid='raise', divide='raise'): > for dt in ['e', 'f', 'd']: > assert_raises(FloatingPointError, np.arctanh, > np.array(value, dtype=dt)) > > # Make sure glibc < 2.18 atanh is not used, issue 25087 > > assert np.signbit(np.arctanh(-1j).real) > E AssertionError: assert False > E + where False = (1e+308) > E + where = np.signbit > E + and 1e+308 = (1e+308-1e+308j).real > E + where (1e+308-1e+308j) = (-1j) > E + where = np.arctanh > > dt = 'd' > in_ = [nan, nan, inf, -inf, 1.0, -1.0, ...] > in_arr = array([ nan, nan, inf, -inf, 1., -1., 2.]) > out = [nan, nan, nan, nan, inf, -inf, ...] > out_arr = array([ nan, nan, nan, nan, inf, -inf, nan]) > self = > value = -1.0 > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1717: AssertionError > _________________________ TestSpecialFloats.test_exp2 __________________________ > > self = > > @pytest.mark.xfail( > _glibc_older_than("2.17"), > reason="Older glibc versions may not raise appropriate FP exceptions" > ) > def test_exp2(self): > with np.errstate(all='ignore'): > in_ = [np.nan, -np.nan, np.inf, -np.inf] > out = [np.nan, np.nan, np.inf, 0.0] > for dt in ['e', 'f', 'd']: > in_arr = np.array(in_, dtype=dt) > out_arr = np.array(out, dtype=dt) > assert_equal(np.exp2(in_arr), out_arr) > > for value in [2000.0, -2000.0]: > with np.errstate(over='raise', under='raise'): > for dt in ['e', 'f', 'd']: > > assert_raises(FloatingPointError, np.exp2, > np.array(value, dtype=dt)) > > dt = 'e' > in_ = [nan, nan, inf, -inf] > in_arr = array([ nan, nan, inf, -inf]) > out = [nan, nan, inf, 0.0] > out_arr = array([nan, nan, inf, 0.]) > self = > value = 2000.0 > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1736: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > /usr/local/lib/python3.11/unittest/case.py:766: in assertRaises > return context.handle('assertRaises', args, kwargs) > args = (, array(2000., dtype=float16)) > context = None > expected_exception = > kwargs = {} > self = > /usr/local/lib/python3.11/unittest/case.py:236: in handle > with self: > args = [array(2000., dtype=float16)] > callable_obj = > kwargs = {} > name = 'assertRaises' > self = None > /usr/local/lib/python3.11/unittest/case.py:259: in __exit__ > self._raiseFailure("{} not raised by {}".format(exc_name, > exc_name = 'FloatingPointError' > exc_type = None > exc_value = None > self = > tb = None > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = > standardMsg = 'FloatingPointError not raised by exp2' > > def _raiseFailure(self, standardMsg): > msg = self.test_case._formatMessage(self.msg, standardMsg) > > raise self.test_case.failureException(msg) > E AssertionError: FloatingPointError not raised by exp2 > > msg = 'FloatingPointError not raised by exp2' > self = > standardMsg = 'FloatingPointError not raised by exp2' > > /usr/local/lib/python3.11/unittest/case.py:199: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data10-escape10-e-log1p] __ > > self = > ufunc = , dtype = 'e', data = [0.5, 0.5, 0.5, nan] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([0.5, 0.5, 0.5, nan], dtype=float16) > data = [0.5, 0.5, 0.5, nan] > dtype = 'e' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data10-escape10-f-log1p] __ > > self = > ufunc = , dtype = 'f', data = [0.5, 0.5, 0.5, nan] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([0.5, 0.5, 0.5, nan], dtype=float32) > data = [0.5, 0.5, 0.5, nan] > dtype = 'f' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data10-escape10-d-log1p] __ > > self = > ufunc = , dtype = 'd', data = [0.5, 0.5, 0.5, nan] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([0.5, 0.5, 0.5, nan]) > data = [0.5, 0.5, 0.5, nan] > dtype = 'd' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data11-escape11-e-log1p] __ > > self = > ufunc = , dtype = 'e', data = [0.5, 0.5, 0.5, nan, 0.5, 0.5, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, > 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5,... 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, > 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan], > dtype=float16) > data = [0.5, 0.5, 0.5, nan, 0.5, 0.5, ...] > dtype = 'e' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data11-escape11-f-log1p] __ > > self = > ufunc = , dtype = 'f', data = [0.5, 0.5, 0.5, nan, 0.5, 0.5, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, > 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5,... 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, > 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan], > dtype=float32) > data = [0.5, 0.5, 0.5, nan, 0.5, 0.5, ...] > dtype = 'f' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data11-escape11-d-log1p] __ > > self = > ufunc = , dtype = 'd', data = [0.5, 0.5, 0.5, nan, 0.5, 0.5, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, > 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5,..., 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, > 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan, 0.5, 0.5, 0.5, nan]) > data = [0.5, 0.5, 0.5, nan, 0.5, 0.5, ...] > dtype = 'd' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data12-escape12-e-log1p] __ > > self = > ufunc = , dtype = 'e', data = [nan, 1.0, 1.0, 1.0] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, 1., 1., 1.], dtype=float16) > data = [nan, 1.0, 1.0, 1.0] > dtype = 'e' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data12-escape12-f-log1p] __ > > self = > ufunc = , dtype = 'f', data = [nan, 1.0, 1.0, 1.0] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, 1., 1., 1.], dtype=float32) > data = [nan, 1.0, 1.0, 1.0] > dtype = 'f' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data12-escape12-d-log1p] __ > > self = > ufunc = , dtype = 'd', data = [nan, 1.0, 1.0, 1.0] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, 1., 1., 1.]) > data = [nan, 1.0, 1.0, 1.0] > dtype = 'd' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data13-escape13-e-log1p] __ > > self = > ufunc = , dtype = 'e', data = [nan, 1.0, 1.0, 1.0, nan, 1.0, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, 1., 1., 1., nan, 1., 1., 1., nan, 1., 1., 1., nan, > 1., 1., 1., nan, 1., 1., 1., nan,... 1., 1., nan, 1., 1., 1., nan, > 1., 1., 1., nan, 1., 1., 1., nan, 1., 1., 1.], > dtype=float16) > data = [nan, 1.0, 1.0, 1.0, nan, 1.0, ...] > dtype = 'e' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data13-escape13-f-log1p] __ > > self = > ufunc = , dtype = 'f', data = [nan, 1.0, 1.0, 1.0, nan, 1.0, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, 1., 1., 1., nan, 1., 1., 1., nan, 1., 1., 1., nan, > 1., 1., 1., nan, 1., 1., 1., nan,... 1., 1., nan, 1., 1., 1., nan, > 1., 1., 1., nan, 1., 1., 1., nan, 1., 1., 1.], > dtype=float32) > data = [nan, 1.0, 1.0, 1.0, nan, 1.0, ...] > dtype = 'f' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data13-escape13-d-log1p] __ > > self = > ufunc = , dtype = 'd', data = [nan, 1.0, 1.0, 1.0, nan, 1.0, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, 1., 1., 1., nan, 1., 1., 1., nan, 1., 1., 1., nan, > 1., 1., 1., nan, 1., 1., 1., nan,..., 1., 1., nan, 1., 1., 1., nan, 1., 1., 1., nan, > 1., 1., 1., nan, 1., 1., 1., nan, 1., 1., 1.]) > data = [nan, 1.0, 1.0, 1.0, nan, 1.0, ...] > dtype = 'd' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data14-escape14-e-log1p] __ > > self = > ufunc = , dtype = 'e', data = [nan], escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan], dtype=float16) > data = [nan] > dtype = 'e' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data14-escape14-f-log1p] __ > > self = > ufunc = , dtype = 'f', data = [nan], escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan], dtype=float32) > data = [nan] > dtype = 'f' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data14-escape14-d-log1p] __ > > self = > ufunc = , dtype = 'd', data = [nan], escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan]) > data = [nan] > dtype = 'd' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data15-escape15-e-log1p] __ > > self = > ufunc = , dtype = 'e', data = [nan, nan, nan, nan, nan, nan, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, > nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, > nan, nan, nan, nan, nan, nan], dtype=float16) > data = [nan, nan, nan, nan, nan, nan, ...] > dtype = 'e' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data15-escape15-f-log1p] __ > > self = > ufunc = , dtype = 'f', data = [nan, nan, nan, nan, nan, nan, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, > nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, > nan, nan, nan, nan, nan, nan], dtype=float32) > data = [nan, nan, nan, nan, nan, nan, ...] > dtype = 'f' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > __ TestSpecialFloats.test_unary_spurious_fpexception[data15-escape15-d-log1p] __ > > self = > ufunc = , dtype = 'd', data = [nan, nan, nan, nan, nan, nan, ...] > escape = [] > > @pytest.mark.skipif(sys.platform == "win32" and sys.maxsize < 2**31 + 1, > reason='failures on 32-bit Python, see FIXME below') > @pytest.mark.parametrize("ufunc", UFUNCS_UNARY_FP) > @pytest.mark.parametrize("dtype", ('e', 'f', 'd')) > @pytest.mark.parametrize("data, escape", ( > ([0.03], LTONE_INVALID_ERR), > ([0.03]*32, LTONE_INVALID_ERR), > # neg > ([-1.0], NEG_INVALID_ERR), > ([-1.0]*32, NEG_INVALID_ERR), > # flat > ([1.0], ONE_INVALID_ERR), > ([1.0]*32, ONE_INVALID_ERR), > # zero > ([0.0], BYZERO_ERR), > ([0.0]*32, BYZERO_ERR), > ([-0.0], BYZERO_ERR), > ([-0.0]*32, BYZERO_ERR), > # nan > ([0.5, 0.5, 0.5, np.nan], LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.nan]*32, LTONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0], ONE_INVALID_ERR), > ([np.nan, 1.0, 1.0, 1.0]*32, ONE_INVALID_ERR), > ([np.nan], []), > ([np.nan]*32, []), > # inf > ([0.5, 0.5, 0.5, np.inf], INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, np.inf]*32, INF_INVALID_ERR + LTONE_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0], INF_INVALID_ERR), > ([np.inf, 1.0, 1.0, 1.0]*32, INF_INVALID_ERR), > ([np.inf], INF_INVALID_ERR), > ([np.inf]*32, INF_INVALID_ERR), > # ninf > ([0.5, 0.5, 0.5, -np.inf], > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([0.5, 0.5, 0.5, -np.inf]*32, > NEG_INVALID_ERR + INF_INVALID_ERR + LTONE_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf, 1.0, 1.0, 1.0]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf], NEG_INVALID_ERR + INF_INVALID_ERR), > ([-np.inf]*32, NEG_INVALID_ERR + INF_INVALID_ERR), > )) > def test_unary_spurious_fpexception(self, ufunc, dtype, data, escape): > if escape and ufunc in escape: > return > # FIXME: NAN raises FP invalid exception: > # - ceil/float16 on MSVC:32-bit > # - spacing/float16 on almost all platforms > # FIXME: skipped on MSVC:32-bit during switch to Meson, 10 cases fail > # when SIMD support not present / disabled > if ufunc in (np.spacing, np.ceil) and dtype == 'e': > return > array = np.array(data, dtype=dtype) > > with assert_no_warnings(): > > array = array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, > nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, > nan, nan, nan, nan, nan, nan]) > data = [nan, nan, nan, nan, nan, nan, ...] > dtype = 'd' > escape = [] > self = > ufunc = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1826: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > self = , typ = None > value = None, traceback = None > > def __exit__(self, typ, value, traceback): > if typ is None: > try: > > next(self.gen) > E AssertionError: Got warnings: [] > > self = > traceback = None > typ = None > value = None > > /usr/local/lib/python3.11/contextlib.py:144: AssertionError > _______________ TestAVXFloat32Transcendental.test_sincos_float32 _______________ > > self = > > def test_sincos_float32(self): > np.random.seed(42) > N = 1000000 > M = np.int_(N/20) > index = np.random.randint(low=0, high=N, size=M) > x_f32 = np.float32(np.random.uniform(low=-100.,high=100.,size=N)) > if not _glibc_older_than("2.17"): > # test coverage for elements > 117435.992f for which glibc is used > # this is known to be problematic on old glibc, so skip it there > x_f32[index] = np.float32(10E+10*np.random.rand(M)) > x_f64 = np.float64(x_f32) > > assert_array_max_ulp(np.sin(x_f32), np.float32(np.sin(x_f64)), maxulp=2) > E AssertionError: Arrays are not almost equal up to 2 ULP (max difference is 67 ULP) > > M = 50000 > N = 1000000 > index = array([121958, 671155, 131932, ..., 738271, 310195, 233966]) > self = > x_f32 = array([-10.577719, -35.353283, -97.29114 , ..., -80.99214 , -42.875526, > -87.8052 ], dtype=float32) > x_f64 = array([-10.57771873, -35.35328293, -97.2911377 , ..., -80.99214172, > -42.87552643, -87.80519867]) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:2000: AssertionError > ____________________ TestComplexFunctions.test_branch_cuts _____________________ > > self = > > @pytest.mark.xfail(IS_MUSL, reason="gh23049") > @pytest.mark.xfail(IS_WASM, reason="doesn't work") > def test_branch_cuts(self): > # check branch cuts and continuity on them > _check_branch_cut(np.log, -0.5, 1j, 1, -1, True) > _check_branch_cut(np.log2, -0.5, 1j, 1, -1, True) > _check_branch_cut(np.log10, -0.5, 1j, 1, -1, True) > _check_branch_cut(np.log1p, -1.5, 1j, 1, -1, True) > _check_branch_cut(np.sqrt, -0.5, 1j, 1, -1, True) > > _check_branch_cut(np.arcsin, [ -2, 2], [1j, 1j], 1, -1, True) > _check_branch_cut(np.arccos, [ -2, 2], [1j, 1j], 1, -1, True) > > _check_branch_cut(np.arctan, [0-2j, 2j], [1, 1], -1, 1, True) > > self = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4137: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > f = , x0 = array([0.-2.j, 0.+2.j]), dx = array([1.+0.j, 1.+0.j]) > re_sign = -1, im_sign = 1, sig_zero_ok = True, dtype = > > def _check_branch_cut(f, x0, dx, re_sign=1, im_sign=-1, sig_zero_ok=False, > dtype=complex): > """ > Check for a branch cut in a function. > > Assert that `x0` lies on a branch cut of function `f` and `f` is > continuous from the direction `dx`. > > Parameters > ---------- > f : func > Function to check > x0 : array-like > Point on branch cut > dx : array-like > Direction to check continuity in > re_sign, im_sign : {1, -1} > Change of sign of the real or imaginary part expected > sig_zero_ok : bool > Whether to check if the branch cut respects signed zero (if applicable) > dtype : dtype > Dtype to check (should be complex) > > """ > x0 = np.atleast_1d(x0).astype(dtype) > dx = np.atleast_1d(dx).astype(dtype) > > if np.dtype(dtype).char == 'F': > scale = np.finfo(dtype).eps * 1e2 > atol = np.float32(1e-2) > else: > scale = np.finfo(dtype).eps * 1e3 > atol = 1e-4 > > y0 = f(x0) > yp = f(x0 + dx*scale*np.absolute(x0)/np.absolute(dx)) > ym = f(x0 - dx*scale*np.absolute(x0)/np.absolute(dx)) > > > assert_(np.all(np.absolute(y0.real - yp.real) < atol), (y0, yp)) > E AssertionError: (array([-1.57079633e+000-5.49306144e-001j, > E 1.00000000e+308+1.00000000e+308j]), array([1.57079633-0.54930614j, 1.57079633+0.54930614j])) > > atol = 0.0001 > dtype = > dx = array([1.+0.j, 1.+0.j]) > f = > im_sign = 1 > re_sign = -1 > scale = 2.220446049250313e-13 > sig_zero_ok = True > x0 = array([0.-2.j, 0.+2.j]) > y0 = array([-1.57079633e+000-5.49306144e-001j, > 1.00000000e+308+1.00000000e+308j]) > ym = array([-1.57079633-0.54930614j, -1.57079633+0.54930614j]) > yp = array([1.57079633-0.54930614j, 1.57079633+0.54930614j]) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4403: AssertionError > _______________ TestComplexFunctions.test_branch_cuts_complex64 ________________ > > self = > > @pytest.mark.xfail(IS_MUSL, reason="gh23049") > @pytest.mark.xfail(IS_WASM, reason="doesn't work") > def test_branch_cuts_complex64(self): > # check branch cuts and continuity on them > _check_branch_cut(np.log, -0.5, 1j, 1, -1, True, np.complex64) > _check_branch_cut(np.log2, -0.5, 1j, 1, -1, True, np.complex64) > _check_branch_cut(np.log10, -0.5, 1j, 1, -1, True, np.complex64) > _check_branch_cut(np.log1p, -1.5, 1j, 1, -1, True, np.complex64) > _check_branch_cut(np.sqrt, -0.5, 1j, 1, -1, True, np.complex64) > > _check_branch_cut(np.arcsin, [ -2, 2], [1j, 1j], 1, -1, True, np.complex64) > _check_branch_cut(np.arccos, [ -2, 2], [1j, 1j], 1, -1, True, np.complex64) > > _check_branch_cut(np.arctan, [0-2j, 2j], [1, 1], -1, 1, True, np.complex64) > > self = > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4164: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > f = , x0 = array([0.-2.j, 0.+2.j], dtype=complex64) > dx = array([1.+0.j, 1.+0.j], dtype=complex64), re_sign = -1, im_sign = 1 > sig_zero_ok = True, dtype = > > def _check_branch_cut(f, x0, dx, re_sign=1, im_sign=-1, sig_zero_ok=False, > dtype=complex): > """ > Check for a branch cut in a function. > > Assert that `x0` lies on a branch cut of function `f` and `f` is > continuous from the direction `dx`. > > Parameters > ---------- > f : func > Function to check > x0 : array-like > Point on branch cut > dx : array-like > Direction to check continuity in > re_sign, im_sign : {1, -1} > Change of sign of the real or imaginary part expected > sig_zero_ok : bool > Whether to check if the branch cut respects signed zero (if applicable) > dtype : dtype > Dtype to check (should be complex) > > """ > x0 = np.atleast_1d(x0).astype(dtype) > dx = np.atleast_1d(dx).astype(dtype) > > if np.dtype(dtype).char == 'F': > scale = np.finfo(dtype).eps * 1e2 > atol = np.float32(1e-2) > else: > scale = np.finfo(dtype).eps * 1e3 > atol = 1e-4 > > y0 = f(x0) > yp = f(x0 + dx*scale*np.absolute(x0)/np.absolute(dx)) > ym = f(x0 - dx*scale*np.absolute(x0)/np.absolute(dx)) > > > assert_(np.all(np.absolute(y0.real - yp.real) < atol), (y0, yp)) > E AssertionError: (array([-1.5707964e+00-5.4930615e-01j, 9.9999997e+37+9.9999997e+37j], > E dtype=complex64), array([1.5707884-0.54930615j, 1.5707884+0.54930615j], dtype=complex64)) > > atol = 0.01 > dtype = > dx = array([1.+0.j, 1.+0.j], dtype=complex64) > f = > im_sign = 1 > re_sign = -1 > scale = 1.1920928955078125e-05 > sig_zero_ok = True > x0 = array([0.-2.j, 0.+2.j], dtype=complex64) > y0 = array([-1.5707964e+00-5.4930615e-01j, 9.9999997e+37+9.9999997e+37j], > dtype=complex64) > ym = array([-1.5707884-0.54930615j, -1.5707884+0.54930615j], dtype=complex64) > yp = array([1.5707884-0.54930615j, 1.5707884+0.54930615j], dtype=complex64) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4403: AssertionError > ____________ TestComplexFunctions.test_loss_of_precision[complex64] ____________ > > self = > dtype = > > @pytest.mark.xfail( > # manylinux2014 uses glibc2.17 > _glibc_older_than("2.18"), > reason="Older glibc versions are imprecise (maybe passes with SIMD?)" > ) > @pytest.mark.xfail(IS_MUSL, reason="gh23049") > @pytest.mark.xfail(IS_WASM, reason="doesn't work") > @pytest.mark.parametrize('dtype', [np.complex64, np.complex_, np.longcomplex]) > def test_loss_of_precision(self, dtype): > """Check loss of precision in complex arc* functions""" > > # Check against known-good functions > > info = np.finfo(dtype) > real_dtype = dtype(0.).real.dtype > eps = info.eps > > def check(x, rtol): > x = x.astype(real_dtype) > > z = x.astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsinh(z).real - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsinh')) > > z = (1j*x).astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsin(z).imag - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsin')) > > z = x.astype(dtype) > d = np.absolute(np.arctanh(x)/np.arctanh(z).real - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arctanh')) > > z = (1j*x).astype(dtype) > d = np.absolute(np.arctanh(x)/np.arctan(z).imag - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arctan')) > > # The switchover was chosen as 1e-3; hence there can be up to > # ~eps/1e-3 of relative cancellation error before it > > x_series = np.logspace(-20, -3.001, 200) > x_basic = np.logspace(-2.999, 0, 10, endpoint=False) > > if dtype is np.longcomplex: > if bad_arcsinh(): > pytest.skip("Trig functions of np.longcomplex values known " > "to be inaccurate on aarch64 and PPC for some " > "compilation configurations.") > # It's not guaranteed that the system-provided arc functions > # are accurate down to a few epsilons. (Eg. on Linux 64-bit) > # So, give more leeway for long complex tests here: > check(x_series, 50.0*eps) > else: > > check(x_series, 2.1*eps) > > check = .check at 0x791ecd7e20> > dtype = > eps = 1.1920929e-07 > info = finfo(resolution=1e-06, min=-3.4028235e+38, max=3.4028235e+38, dtype=float32) > real_dtype = dtype('float32') > self = > x_basic = array([0.00100231, 0.0019994 , 0.00398841, 0.0079561 , 0.01587084, > 0.0316592 , 0.06315387, 0.12597953, 0.25130435, 0.50130265]) > x_series = array([1.00000000e-20, 1.21736864e-20, 1.48198641e-20, 1.80412378e-20, > 2.19628372e-20, 2.67368693e-20, 3.254862...3.06526013e-04, 3.73155156e-04, 4.54267386e-04, > 5.53010871e-04, 6.73218092e-04, 8.19554595e-04, 9.97700064e-04]) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4257: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > x = array([9.99999968e-21, 1.21736865e-20, 1.48198648e-20, 1.80412373e-20, > 2.19628376e-20, 2.67368701e-20, 3.254862...55170e-04, 4.54267400e-04, > 5.53010846e-04, 6.73218106e-04, 8.19554611e-04, 9.97700030e-04], > dtype=float32) > rtol = 2.5033950805664064e-07 > > def check(x, rtol): > x = x.astype(real_dtype) > > z = x.astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsinh(z).real - 1) > > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsinh')) > E AssertionError: (0, 1e-20, inf, 'arcsinh') > > d = array([ inf, inf, inf, inf, > inf, inf, ...17506e-04, 8.02278519e-05, > 6.28232956e-05, 6.73532486e-06, 1.53779984e-05, 4.31537628e-05], > dtype=float32) > dtype = > real_dtype = dtype('float32') > rtol = 2.5033950805664064e-07 > x = array([9.99999968e-21, 1.21736865e-20, 1.48198648e-20, 1.80412373e-20, > 2.19628376e-20, 2.67368701e-20, 3.254862...55170e-04, 4.54267400e-04, > 5.53010846e-04, 6.73218106e-04, 8.19554611e-04, 9.97700030e-04], > dtype=float32) > z = array([9.99999968e-21+0.j, 1.21736865e-20+0.j, 1.48198648e-20+0.j, > 1.80412373e-20+0.j, 2.19628376e-20+0.j, 2.67...67400e-04+0.j, 5.53010846e-04+0.j, 6.73218106e-04+0.j, > 8.19554611e-04+0.j, 9.97700030e-04+0.j], dtype=complex64) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4223: AssertionError > ___________ TestComplexFunctions.test_loss_of_precision[complex128] ____________ > > self = > dtype = > > @pytest.mark.xfail( > # manylinux2014 uses glibc2.17 > _glibc_older_than("2.18"), > reason="Older glibc versions are imprecise (maybe passes with SIMD?)" > ) > @pytest.mark.xfail(IS_MUSL, reason="gh23049") > @pytest.mark.xfail(IS_WASM, reason="doesn't work") > @pytest.mark.parametrize('dtype', [np.complex64, np.complex_, np.longcomplex]) > def test_loss_of_precision(self, dtype): > """Check loss of precision in complex arc* functions""" > > # Check against known-good functions > > info = np.finfo(dtype) > real_dtype = dtype(0.).real.dtype > eps = info.eps > > def check(x, rtol): > x = x.astype(real_dtype) > > z = x.astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsinh(z).real - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsinh')) > > z = (1j*x).astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsin(z).imag - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsin')) > > z = x.astype(dtype) > d = np.absolute(np.arctanh(x)/np.arctanh(z).real - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arctanh')) > > z = (1j*x).astype(dtype) > d = np.absolute(np.arctanh(x)/np.arctan(z).imag - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arctan')) > > # The switchover was chosen as 1e-3; hence there can be up to > # ~eps/1e-3 of relative cancellation error before it > > x_series = np.logspace(-20, -3.001, 200) > x_basic = np.logspace(-2.999, 0, 10, endpoint=False) > > if dtype is np.longcomplex: > if bad_arcsinh(): > pytest.skip("Trig functions of np.longcomplex values known " > "to be inaccurate on aarch64 and PPC for some " > "compilation configurations.") > # It's not guaranteed that the system-provided arc functions > # are accurate down to a few epsilons. (Eg. on Linux 64-bit) > # So, give more leeway for long complex tests here: > check(x_series, 50.0*eps) > else: > > check(x_series, 2.1*eps) > > check = .check at 0x791ec48040> > dtype = > eps = 2.220446049250313e-16 > info = finfo(resolution=1e-15, min=-1.7976931348623157e+308, max=1.7976931348623157e+308, dtype=float64) > real_dtype = dtype('float64') > self = > x_basic = array([0.00100231, 0.0019994 , 0.00398841, 0.0079561 , 0.01587084, > 0.0316592 , 0.06315387, 0.12597953, 0.25130435, 0.50130265]) > x_series = array([1.00000000e-20, 1.21736864e-20, 1.48198641e-20, 1.80412378e-20, > 2.19628372e-20, 2.67368693e-20, 3.254862...3.06526013e-04, 3.73155156e-04, 4.54267386e-04, > 5.53010871e-04, 6.73218092e-04, 8.19554595e-04, 9.97700064e-04]) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4257: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > x = array([1.00000000e-20, 1.21736864e-20, 1.48198641e-20, 1.80412378e-20, > 2.19628372e-20, 2.67368693e-20, 3.254862...3.06526013e-04, 3.73155156e-04, 4.54267386e-04, > 5.53010871e-04, 6.73218092e-04, 8.19554595e-04, 9.97700064e-04]) > rtol = 4.662936703425658e-16 > > def check(x, rtol): > x = x.astype(real_dtype) > > z = x.astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsinh(z).real - 1) > > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsinh')) > E AssertionError: (0, 1.0000000000000001e-20, inf, 'arcsinh') > > d = array([ inf, inf, inf, inf, > inf, inf, ...1.10356169e-13, 5.87307980e-14, 9.10382880e-14, > 9.85878046e-14, 1.76303416e-13, 2.36699549e-13, 5.06261699e-14]) > dtype = > real_dtype = dtype('float64') > rtol = 4.662936703425658e-16 > x = array([1.00000000e-20, 1.21736864e-20, 1.48198641e-20, 1.80412378e-20, > 2.19628372e-20, 2.67368693e-20, 3.254862...3.06526013e-04, 3.73155156e-04, 4.54267386e-04, > 5.53010871e-04, 6.73218092e-04, 8.19554595e-04, 9.97700064e-04]) > z = array([1.00000000e-20+0.j, 1.21736864e-20+0.j, 1.48198641e-20+0.j, > 1.80412378e-20+0.j, 2.19628372e-20+0.j, 2.67...0.j, > 4.54267386e-04+0.j, 5.53010871e-04+0.j, 6.73218092e-04+0.j, > 8.19554595e-04+0.j, 9.97700064e-04+0.j]) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4223: AssertionError > ___________ TestComplexFunctions.test_loss_of_precision[clongdouble] ___________ > > self = > dtype = > > @pytest.mark.xfail( > # manylinux2014 uses glibc2.17 > _glibc_older_than("2.18"), > reason="Older glibc versions are imprecise (maybe passes with SIMD?)" > ) > @pytest.mark.xfail(IS_MUSL, reason="gh23049") > @pytest.mark.xfail(IS_WASM, reason="doesn't work") > @pytest.mark.parametrize('dtype', [np.complex64, np.complex_, np.longcomplex]) > def test_loss_of_precision(self, dtype): > """Check loss of precision in complex arc* functions""" > > # Check against known-good functions > > info = np.finfo(dtype) > real_dtype = dtype(0.).real.dtype > eps = info.eps > > def check(x, rtol): > x = x.astype(real_dtype) > > z = x.astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsinh(z).real - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsinh')) > > z = (1j*x).astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsin(z).imag - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsin')) > > z = x.astype(dtype) > d = np.absolute(np.arctanh(x)/np.arctanh(z).real - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arctanh')) > > z = (1j*x).astype(dtype) > d = np.absolute(np.arctanh(x)/np.arctan(z).imag - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arctan')) > > # The switchover was chosen as 1e-3; hence there can be up to > # ~eps/1e-3 of relative cancellation error before it > > x_series = np.logspace(-20, -3.001, 200) > x_basic = np.logspace(-2.999, 0, 10, endpoint=False) > > if dtype is np.longcomplex: > if bad_arcsinh(): > pytest.skip("Trig functions of np.longcomplex values known " > "to be inaccurate on aarch64 and PPC for some " > "compilation configurations.") > # It's not guaranteed that the system-provided arc functions > # are accurate down to a few epsilons. (Eg. on Linux 64-bit) > # So, give more leeway for long complex tests here: > > check(x_series, 50.0*eps) > > check = .check at 0x791ec48400> > dtype = > eps = 1.084202172485504434e-19 > info = finfo(resolution=1e-18, min=-1.189731495357231765e+4932, max=1.189731495357231765e+4932, dtype=float128) > real_dtype = dtype('float128') > self = > x_basic = array([0.00100231, 0.0019994 , 0.00398841, 0.0079561 , 0.01587084, > 0.0316592 , 0.06315387, 0.12597953, 0.25130435, 0.50130265]) > x_series = array([1.00000000e-20, 1.21736864e-20, 1.48198641e-20, 1.80412378e-20, > 2.19628372e-20, 2.67368693e-20, 3.254862...3.06526013e-04, 3.73155156e-04, 4.54267386e-04, > 5.53010871e-04, 6.73218092e-04, 8.19554595e-04, 9.97700064e-04]) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4255: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > > x = array([1.00000000e-20, 1.21736864e-20, 1.48198641e-20, 1.80412378e-20, > 2.19628372e-20, 2.67368693e-20, 3.254862...5156e-04, 4.54267386e-04, > 5.53010871e-04, 6.73218092e-04, 8.19554595e-04, 9.97700064e-04], > dtype=float128) > rtol = 5.42101086242752217e-18 > > def check(x, rtol): > x = x.astype(real_dtype) > > z = x.astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsinh(z).real - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsinh')) > > z = (1j*x).astype(dtype) > d = np.absolute(np.arcsinh(x)/np.arcsin(z).imag - 1) > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arcsin')) > > z = x.astype(dtype) > d = np.absolute(np.arctanh(x)/np.arctanh(z).real - 1) > > assert_(np.all(d < rtol), (np.argmax(d), x[np.argmax(d)], d.max(), > 'arctanh')) > E AssertionError: (0, 1.0000000000000000956e-20, inf, 'arctanh') > > d = array([ inf, inf, inf, inf, > inf, inf, 2.008323...1554e-17, 1.17202255e-16, > 1.46367293e-17, 6.93889390e-18, 1.55040911e-17, 3.19839641e-18], > dtype=float128) > dtype = > real_dtype = dtype('float128') > rtol = 5.42101086242752217e-18 > x = array([1.00000000e-20, 1.21736864e-20, 1.48198641e-20, 1.80412378e-20, > 2.19628372e-20, 2.67368693e-20, 3.254862...5156e-04, 4.54267386e-04, > 5.53010871e-04, 6.73218092e-04, 8.19554595e-04, 9.97700064e-04], > dtype=float128) > z = array([1.00000000e-20+0.j, 1.21736864e-20+0.j, 1.48198641e-20+0.j, > 1.80412378e-20+0.j, 2.19628372e-20+0.j, 2.67...7386e-04+0.j, 5.53010871e-04+0.j, 6.73218092e-04+0.j, > 8.19554595e-04+0.j, 9.97700064e-04+0.j], dtype=complex256) > > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4233: AssertionError > =============================== warnings summary =============================== > core/tests/test_numeric.py::TestNonarrayArgs::test_dunder_round_edgecases[2147483647--1] > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_numeric.py:200: RuntimeWarning: invalid value encountered in cast > assert_equal(round(val, ndigits), round(np.int32(val), ndigits)) > > core/tests/test_scalar_methods.py::TestAsIntegerRatio::test_roundtrip[longdouble-frac_vals3-exp_vals3] > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_scalar_methods.py:100: RuntimeWarning: overflow encountered in conversion from python long > df = np.longdouble(d) > > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1957: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) > x_f64 = np.float64(x_f32) > > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1966: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) > assert_array_max_ulp(myfunc(x_f64), np.float64(y_true128), > > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > core/tests/test_umath.py::TestAVXUfuncs::test_avx_based_ufunc > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:1962: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) > assert_equal(myfunc(x_f64), np.float64(y_true128)) > > core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[complex64] > core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[complex128] > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4222: RuntimeWarning: divide by zero encountered in divide > d = np.absolute(np.arcsinh(x)/np.arcsinh(z).real - 1) > > core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[clongdouble] > /usr/local/lib/python3.11/site-packages/numpy/core/tests/test_umath.py:4232: RuntimeWarning: divide by zero encountered in divide > d = np.absolute(np.arctanh(x)/np.arctanh(z).real - 1) > > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html > =========================== short test summary info ============================ > FAILED core/tests/test_longdouble.py::test_repr_roundtrip - AssertionError: > FAILED core/tests/test_print.py::TestCommaDecimalPointLocale::test_locale_longdouble > FAILED core/tests/test_scalarprint.py::TestRealScalars::test_dragon4_interface > FAILED core/tests/test_umath.py::TestLog2::test_log2_special - IndexError: li... > FAILED core/tests/test_umath.py::TestSpecialFloats::test_log_values - Asserti... > FAILED core/tests/test_umath.py::TestSpecialFloats::test_arctanh - AssertionE... > FAILED core/tests/test_umath.py::TestSpecialFloats::test_exp2 - AssertionErro... > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data10-escape10-e-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data10-escape10-f-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data10-escape10-d-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data11-escape11-e-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data11-escape11-f-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data11-escape11-d-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data12-escape12-e-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data12-escape12-f-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data12-escape12-d-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data13-escape13-e-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data13-escape13-f-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data13-escape13-d-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data14-escape14-e-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data14-escape14-f-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data14-escape14-d-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data15-escape15-e-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data15-escape15-f-log1p] > FAILED core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception[data15-escape15-d-log1p] > FAILED core/tests/test_umath.py::TestAVXFloat32Transcendental::test_sincos_float32 > FAILED core/tests/test_umath.py::TestComplexFunctions::test_branch_cuts - Ass... > FAILED core/tests/test_umath.py::TestComplexFunctions::test_branch_cuts_complex64 > FAILED core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[complex64] > FAILED core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[complex128] > FAILED core/tests/test_umath.py::TestComplexFunctions::test_loss_of_precision[clongdouble] > = 31 failed, 35649 passed, 2372 skipped, 1305 deselected, 33 xfailed, 1 xpassed, 21 warnings in 207.79s (0:03:27) = > From owner-ports@openbsd.org Tue Aug 27 18:44:22 2024 Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) by mail.openbsd.org (OpenSMTPD) with ESMTPS id de371390 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Tue, 27 Aug 2024 18:44:20 -0600 (MDT) Received: by mail-qt1-f169.google.com with SMTP id d75a77b69052e-450059a25b9so961061cf.0 for ; Tue, 27 Aug 2024 17:44:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724805858; x=1725410658; darn=openbsd.org; h=mime-version:references:message-id:in-reply-to:subject:to:date:from :from:to:cc:subject:date:message-id:reply-to; bh=jH755QZB5tDzhPeq9L91WTuQcnVTGM8p6V0kKgg3Pus=; b=IESN40XGzW7fGn7tbQBLTX7P7WU0BEUhYu9U7vyI1r6SK4jrvwKg2vLrg4z4LDoxYc EW/f65XQ52gUU4pXY6mP2gnYECUtCL89eGAkm/fp8McpSUCevys6K34iuoWMs1WkzZS+ yDQS8ZhtaGgob+O1TChFxVaHad6AYwK6OtTtsSj2GgWMSgjyDcxN7hjTUG1lAaFmI1U6 LfjWod8ipkkKrkk+lmNKCQ2ZNO89lbZXbbOAkG4iagGT1gzj7ue9DfU3g+88VzHhK7cL 4Bn3rHxH5lt3KaCyhsJXQ7czT46Ih0lyO9G2CyqBajfyTSIxBoKSDX9m46ErKNd1BaKg bk/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724805858; x=1725410658; h=mime-version:references:message-id:in-reply-to:subject:to:date:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jH755QZB5tDzhPeq9L91WTuQcnVTGM8p6V0kKgg3Pus=; b=FnEDjKjVXYj5c0iCGkOFeFgHrNczsWsTFrBaxtktBJg0kT/lqdRL077GjZ7iPqmXFz K2TX7JxTXeKpaLdNWiWlP4LcyZkM/ynR1uMHlczHRDkffykOa5XcBPlEAcQJiSu69Eiw YknmzMJGo/eesw2iSCfAK0W4zt/xyiohG0keuKot3L2Fi59QVia16ObAqJHct6SvR+cR Sxea9d/NWyoU7Eu78Z09H6sCK+ssxrl+7Cvf4x5XGi7zp533TwKi7C5ZOCj8hjPz0Y3h zLmWjsBPXBkg92TxgVZdOTwCAi++NhfX7IpZ+gFce47914oUJExktOnWcnrzMhACiiW1 1fOg== X-Forwarded-Encrypted: i=1; AJvYcCX7O9YK4sTksV/VD28VMy7L5vjiWhBDZFhppfELYdNJfBsaRmuEsLGmfafmhvKaHkdDygDDRg==@openbsd.org X-Gm-Message-State: AOJu0YwqO1tQ7Q2rDMz0WxdEicuigwidAw5EAJqIq/bBqYvHjHdUbrIF +74HUBRp7asShC1Z7XOicbD8EC5LjTZ0o57CCXemfEBWOWMMQZR3 X-Google-Smtp-Source: AGHT+IE1vyWpCSQ7CKbr46IklxQgiaOFVjSFCVkcz2k8Tkg3l1fhwFb4BCzaD/mGX9nbmGUc50UORQ== X-Received: by 2002:ac8:58d2:0:b0:44f:fb6d:4b2f with SMTP id d75a77b69052e-4566e64bdbamr9341511cf.23.1724805858108; Tue, 27 Aug 2024 17:44:18 -0700 (PDT) Received: from grey (pool-96-250-160-154.nycmny.fios.verizon.net. [96.250.160.154]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-454fe1c5646sm56654411cf.94.2024.08.27.17.44.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Aug 2024 17:44:17 -0700 (PDT) From: Daniel Dickman X-Google-Original-From: Daniel Dickman Date: Tue, 27 Aug 2024 20:44:17 -0400 (EDT) To: Daniel Dickman , Theo Buehler , ports@openbsd.org Subject: Re: numpy 1.26.4 (python 3.12 and cython 3 support) In-Reply-To: Message-ID: <407f3369-92b3-e528-adc3-675e74ab42c8@grey.my.domain> References: <16656721-9081-5c68-384b-0eea23726dd1@grey.my.domain> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Archive-Number: 202408/623 X-Sequence-Number: 145651 On Tue, 27 Aug 2024, Stuart Henderson wrote: > On 2024/08/27 17:03, Stuart Henderson wrote: > > The extra patches below fix things so tests can run on 3.11 (remove > > NO_TEST from Makefile too). "make test" on amd64 Py 3.11 results below > > the diff (summary: 31 failed, 35649 passed, 2372 skipped, 1305 > > deselected, 33 xfailed, 1 xpassed, 21 warnings in 207.79s"; I'll run > > it on aarch64 when my machine's free and reply if there are many > > differences. Maybe i386 too when the current bulk finishes (a day or > > two). > > Build fails early on aarch64. The meson full log file referenced does > not exist. > > That's unfortunate but thanks for testing that. This version of numpy may still support using setuptools by copying pyproject.toml.setuppy over the default pyproject.toml (which uses meson). I haven't tried the fallback build yet, but it might be a stop gap fix if it works.