diff options
author | Julian Taylor <juliantaylor108@gmail.com> | 2016-05-26 14:43:36 +0200 |
---|---|---|
committer | Julian Taylor <juliantaylor108@gmail.com> | 2016-05-26 14:43:36 +0200 |
commit | a075c360125476a796701477c49c2a6aafb8a228 (patch) | |
tree | d75cdf773603f16f3cdd73eaf935b38949ff3022 | |
parent | eb1cb8b566b801e2d0a361cd80c3f1ec7830441a (diff) | |
parent | 4df1d32180937ba652e7d89d6833942e22f3be47 (diff) | |
download | numpy-a075c360125476a796701477c49c2a6aafb8a228.tar.gz |
Merge pull request #7678 from lesteve/fix-python35-windows-clip-with-nan-bug
BUG: Fix np.clip bug NaN handling for Visual Studio 2015
-rw-r--r-- | numpy/core/src/multiarray/arraytypes.c.src | 6 | ||||
-rw-r--r-- | numpy/core/tests/test_multiarray.py | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/numpy/core/src/multiarray/arraytypes.c.src b/numpy/core/src/multiarray/arraytypes.c.src index 71347ddbc..dfda501d6 100644 --- a/numpy/core/src/multiarray/arraytypes.c.src +++ b/numpy/core/src/multiarray/arraytypes.c.src @@ -3763,6 +3763,12 @@ static void } } else { +// Visual Studio 2015 loop vectorizer handles NaN in an unexpected manner, see: +// https://github.com/numpy/numpy/issues/7601 +// https://connect.microsoft.com/VisualStudio/feedback/details/2723801/unexpected-nan-handling-in-vectorized-loop +#if (_MSC_VER == 1900) +#pragma loop( no_vector ) +#endif for (i = 0; i < ni; i++) { if (@lt@(in[i], min_val)) { out[i] = min_val; diff --git a/numpy/core/tests/test_multiarray.py b/numpy/core/tests/test_multiarray.py index 4a2a232af..ec2b9fdb3 100644 --- a/numpy/core/tests/test_multiarray.py +++ b/numpy/core/tests/test_multiarray.py @@ -3452,6 +3452,12 @@ class TestClip(TestCase): x = val.clip(max=4) assert_(np.all(x <= 4)) + def test_nan(self): + input_arr = np.array([-2., np.nan, 0.5, 3., 0.25, np.nan]) + result = input_arr.clip(-1, 1) + expected = np.array([-1., np.nan, 0.5, 1., 0.25, np.nan]) + assert_array_equal(result, expected) + class TestCompress(TestCase): def test_axis(self): |