summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Taylor <juliantaylor108@gmail.com>2016-05-26 14:43:36 +0200
committerJulian Taylor <juliantaylor108@gmail.com>2016-05-26 14:43:36 +0200
commita075c360125476a796701477c49c2a6aafb8a228 (patch)
treed75cdf773603f16f3cdd73eaf935b38949ff3022
parenteb1cb8b566b801e2d0a361cd80c3f1ec7830441a (diff)
parent4df1d32180937ba652e7d89d6833942e22f3be47 (diff)
downloadnumpy-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.src6
-rw-r--r--numpy/core/tests/test_multiarray.py6
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):