From 0373068d7a72b05cd74ccc8604f9b2000afd4900 Mon Sep 17 00:00:00 2001 From: Sveinung Rundhovde Date: Tue, 30 Jul 2024 08:32:56 +0200 Subject: [PATCH] Fix test failing due to Numpy 2.0 promotion rules From Numpy 2.0 adding a numpy.float32 and a Python numeric type returns a numy.float32 when it previously returned a numpy.float64. This changes the behavior when using the Python builtin sum function on a numpy.float32 array as the internal computations now will be performed as numpy.float32 additions when it used to be numpy.float64. Passing a numpy.double(0) as a start value to the innermost sum forces the old behavior. --- python/test/segyio_c.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/test/segyio_c.py b/python/test/segyio_c.py index 45fe95d89..b1e144d9d 100644 --- a/python/test/segyio_c.py +++ b/python/test/segyio_c.py @@ -540,10 +540,10 @@ def read_line(f, metrics, iline_idx, xline_idx): buf = numpy.zeros((len(iline_idx), samples), dtype=numpy.single) f.getline(xline_trace0, len(iline_idx), xline_stride, offsets, buf) - assert sum(sum(buf)) == approx(800.061169624, abs=1e-6) + assert sum(sum(buf), numpy.double(0)) == approx(800.061169624, abs=1e-6) f.getline(iline_trace0, len(xline_idx), iline_stride, offsets, buf) - assert sum(sum(buf)) == approx(305.061146736, abs=1e-6) + assert sum(sum(buf), numpy.double(0)) == approx(305.061146736, abs=1e-6) f.close()