summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSayed Adel <seiko@imavr.com>2022-12-11 02:33:23 +0200
committerSayed Adel <seiko@imavr.com>2022-12-14 19:39:07 +0200
commite597f1bba7117c5e598f7e207f13ddd218dc94cd (patch)
tree7c300ab688a4d4192a6eaf4bdeeb4c5ec2ee2ac9
parenta437cc15a38f445b833b0b1be4f91b23c474064e (diff)
downloadnumpy-e597f1bba7117c5e598f7e207f13ddd218dc94cd.tar.gz
BUG, SIMD: Fix invalid value encountered in cos/sin on aarch64 & ppc64le
-rw-r--r--numpy/core/src/common/simd/neon/operators.h2
-rw-r--r--numpy/core/src/umath/loops_trigonometric.dispatch.c.src2
2 files changed, 2 insertions, 2 deletions
diff --git a/numpy/core/src/common/simd/neon/operators.h b/numpy/core/src/common/simd/neon/operators.h
index 3ae1a4a3b..a6c479998 100644
--- a/numpy/core/src/common/simd/neon/operators.h
+++ b/numpy/core/src/common/simd/neon/operators.h
@@ -248,7 +248,7 @@ NPY_FINLINE npyv_b32 npyv_cmpgtq_f32(npyv_f32 a, npyv_f32 b)
{
npyv_f32 max = vmaxq_f32(a, b);
npyv_b32 nnan = vceqq_f32(max, max);
- return vandq_u32(nnan, vceqq_f32(max, b));
+ return vbicq_u32(nnan, vceqq_f32(max, b));
}
#define npyv_cmpleq_f32(A, B) npyv_cmpgeq_f32(B, A)
#define npyv_cmpltq_f32(A, B) npyv_cmpgtq_f32(B, A)
diff --git a/numpy/core/src/umath/loops_trigonometric.dispatch.c.src b/numpy/core/src/umath/loops_trigonometric.dispatch.c.src
index 78685e807..e09c283de 100644
--- a/numpy/core/src/umath/loops_trigonometric.dispatch.c.src
+++ b/numpy/core/src/umath/loops_trigonometric.dispatch.c.src
@@ -124,7 +124,7 @@ simd_sincos_f32(const float *src, npy_intp ssrc, float *dst, npy_intp sdst,
} else {
x_in = npyv_loadn_tillz_f32(src, ssrc, len);
}
- npyv_b32 simd_mask = npyv_cmple_f32(npyv_abs_f32(x_in), max_cody);
+ npyv_b32 simd_mask = npyv_cmpleq_f32(npyv_abs_f32(x_in), max_cody);
npy_uint64 simd_maski = npyv_tobits_b32(simd_mask);
/*
* For elements outside of this range, Cody-Waite's range reduction