From b97cb55c21dc6d8bd623e0ec7194a289d80030a2 Mon Sep 17 00:00:00 2001 From: rgommers Date: Sun, 16 Jan 2011 08:23:11 +0000 Subject: [PATCH] TST: fix test failure of line_search_wolfe1/2 on win32 with Python 2.7/3.1 The issue was numerical precision when comparing two float arrays. Largest difference between actual and desired first derivate arrays was 3.5e-15. (backported from r7055) --- scipy/optimize/tests/test_linesearch.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scipy/optimize/tests/test_linesearch.py b/scipy/optimize/tests/test_linesearch.py index 8192cb1377ee..b3771c6320df 100644 --- a/scipy/optimize/tests/test_linesearch.py +++ b/scipy/optimize/tests/test_linesearch.py @@ -2,7 +2,7 @@ Tests for line search routines """ -from numpy.testing import assert_, assert_equal +from numpy.testing import assert_, assert_equal, assert_array_almost_equal import scipy.optimize.linesearch as ls import numpy as np @@ -82,7 +82,7 @@ def __init__(self): def bind_index(func, idx): # Remember Python's closure semantics! return lambda *a, **kw: func(*a, **kw)[idx] - + for name in sorted(dir(self)): if name.startswith('_scalar_func_'): value = getattr(self, name) @@ -162,7 +162,7 @@ def test_line_search_wolfe1(self): if s is None: continue assert_equal(fv, f(x + s*p)) - assert_equal(gv, fprime(x + s*p)) + assert_array_almost_equal(gv, fprime(x + s*p), decimal=14) if s < smax: c += 1 assert_line_wolfe(x, p, s, f, fprime, err_msg=name) @@ -183,7 +183,7 @@ def test_line_search_wolfe2(self): assert_equal(ofv, f(x)) assert_equal(fv, f(x + s*p)) if gv is not None: - assert_equal(gv, fprime(x + s*p)) + assert_array_almost_equal(gv, fprime(x + s*p), decimal=14) if s < smax: c += 1 assert_line_wolfe(x, p, s, f, fprime, err_msg=name)