diff options
author | Sayed Adel <seiko@imavr.com> | 2022-12-11 02:33:23 +0200 |
---|---|---|
committer | Sayed Adel <seiko@imavr.com> | 2022-12-14 19:39:07 +0200 |
commit | e597f1bba7117c5e598f7e207f13ddd218dc94cd (patch) | |
tree | 7c300ab688a4d4192a6eaf4bdeeb4c5ec2ee2ac9 | |
parent | a437cc15a38f445b833b0b1be4f91b23c474064e (diff) | |
download | numpy-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.h | 2 | ||||
-rw-r--r-- | numpy/core/src/umath/loops_trigonometric.dispatch.c.src | 2 |
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 |