From 131f8aac32e3e7e72a99df6671ab118e74d201a1 Mon Sep 17 00:00:00 2001 From: Jason Elswick Date: Sat, 15 Nov 2025 16:05:20 -0600 Subject: [PATCH] xsimd: update to 14.2.0. --- ...7ec732c71b0be3711e224c84b44759dfd26b.patch | 37 +++++++++++++++++++ srcpkgs/xsimd/template | 9 ++--- 2 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 srcpkgs/xsimd/patches/61647ec732c71b0be3711e224c84b44759dfd26b.patch diff --git a/srcpkgs/xsimd/patches/61647ec732c71b0be3711e224c84b44759dfd26b.patch b/srcpkgs/xsimd/patches/61647ec732c71b0be3711e224c84b44759dfd26b.patch new file mode 100644 index 00000000000000..e28ce424216441 --- /dev/null +++ b/srcpkgs/xsimd/patches/61647ec732c71b0be3711e224c84b44759dfd26b.patch @@ -0,0 +1,37 @@ +From 61647ec732c71b0be3711e224c84b44759dfd26b Mon Sep 17 00:00:00 2001 +From: Marco Barbone +Date: Wed, 29 Apr 2026 13:30:37 -0400 +Subject: [PATCH] fix: avoid atan branch cut in complex trigonometric test + +The atan_input generator sampled (Re=0, Im=1.5) at i=N/2, which lies on +the branch cut of complex atan at Re=0, |Im|>=1. C99 7.3.4.1 leaves the +sign of Re(catan(+/-0 + i*y)) for |y|>1 implementation-defined: glibc +returns +pi/2, musl returns -pi/2. xsimd matches glibc, so the test +fails on musl-based CI (e.g. void-linux x86_64-musl) with two +mismatches (one per complex/complex batch type). + +Shift the real start from -10 to -9.5 so Re=0 occurs at i=19000, where +|Im|~0.975<1 - analytic territory where atan is uniquely defined and +all libcs agree. Negative/positive real coverage is preserved; only +the singular point on a region of unspecified behavior is dropped. +--- + test/test_complex_trigonometric.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/test/test_complex_trigonometric.cpp b/test/test_complex_trigonometric.cpp +index 8a0163be5..16e577ce1 100644 +--- a/test/test_complex_trigonometric.cpp ++++ b/test/test_complex_trigonometric.cpp +@@ -43,7 +43,11 @@ struct complex_trigonometric_test + real_value_type(0.1) + i * real_value_type(56.) / nb_input); + ainput[i] = value_type(real_value_type(-1.) + real_value_type(2.) * i / nb_input, + real_value_type(-1.1) + real_value_type(2.1) * i / nb_input); +- atan_input[i] = value_type(real_value_type(-10.) + i * real_value_type(20.) / nb_input, ++ // Avoid sampling the branch cut of complex atan at (Re=0, |Im|>=1): ++ // the sign of Re(catan(+/-0 + i*y)) for |y|>1 is implementation-defined ++ // (C99 7.3.4.1), and glibc and musl disagree there. Starting Re at -9.5 ++ // makes Re=0 occur at i=19/40 of the range, where |Im|<1 (analytic). ++ atan_input[i] = value_type(real_value_type(-9.5) + i * real_value_type(20.) / nb_input, + real_value_type(-9.) + i * real_value_type(21.) / nb_input); + } + expected.resize(nb_input); diff --git a/srcpkgs/xsimd/template b/srcpkgs/xsimd/template index 7ab79e3a6de095..fb381dd90ffb05 100644 --- a/srcpkgs/xsimd/template +++ b/srcpkgs/xsimd/template @@ -1,15 +1,14 @@ # Template file for 'xsimd' pkgname=xsimd -reverts="11.2.0_1" -version=11.1.0 -revision=2 +version=14.2.0 +revision=1 build_style=cmake -short_desc="C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions" +short_desc="C++ wrappers for SIMD intrinsics and parallel, optimized math functions" maintainer="John " license="BSD-3-Clause" homepage="https://github.com/xtensor-stack/xsimd" distfiles="https://github.com/xtensor-stack/xsimd/archive/refs/tags/${version}.tar.gz" -checksum=aa54dba8daade472656eba0d27154f072fec06ee3831aefcac69a5f6c7dbbae7 +checksum=21e841ab684b05331e81e7f782431753a029ef7b7d9d6d3ddab837e7782a40ee if [ -z "$CROSS_BUILD" ]; then configure_args="-DBUILD_TESTS=ON"