From b95fb335e3fef83b5316ea431694eba2d9290e05 Mon Sep 17 00:00:00 2001 From: Debian Science Maintainers Date: Sun, 17 Jan 2021 14:02:15 +0000 Subject: [PATCH] Loosen tolerances on some tests on i386 Failure logs: test_smoothing https://buildd.debian.org/status/fetch.php?pkg=statsmodels&arch=i386&ver=0.9.0-3&stamp=1567157609&raw=0 test_multivariate_switch_univariate https://buildd.debian.org/status/fetch.php?pkg=statsmodels&arch=i386&ver=0.12.0-1&stamp=1599693472&raw=0 As it only fails on i386 and isn't far wrong, I suspect different rounding due to x87 excess precision Author: Rebecca N. Palmer Bug-Debian: https://bugs.debian.org/938949 Forwarded: no Gbp-Pq: Name i386_loosen_test_tolerances.patch --- .../tests/test_multivariate_switch_univariate.py | 7 +++++-- statsmodels/tsa/statespace/tests/test_smoothing.py | 9 +++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/statsmodels/tsa/statespace/tests/test_multivariate_switch_univariate.py b/statsmodels/tsa/statespace/tests/test_multivariate_switch_univariate.py index 2fd2c3c..bb38490 100644 --- a/statsmodels/tsa/statespace/tests/test_multivariate_switch_univariate.py +++ b/statsmodels/tsa/statespace/tests/test_multivariate_switch_univariate.py @@ -19,6 +19,9 @@ Princeton, N.J.: Princeton University Press. """ import numpy as np import pytest +import sys +import glob +i386_looser_tolerances=len(glob.glob('/usr/lib/i386-*/'))>0 and np.log2(sys.maxsize)<33 from statsmodels.tsa.statespace import ( mlemodel, sarimax, structural, varmax, dynamic_factor) @@ -236,7 +239,7 @@ def test_filter_output(univariate, missing, init, periods): # Test the output when the multivariate filter switches to the univariate # filter mod = get_model(univariate, missing, init) - check_filter_output(mod, periods) + check_filter_output(mod, periods, atol=1e-10 if i386_looser_tolerances else 0) @pytest.mark.parametrize('univariate', [True, False]) @@ -255,7 +258,7 @@ def test_smoother_output(univariate, missing, init, periods, option): if init == 'diffuse': return mod.ssm.timing_init_filtered = True - atol = 1e-12 + atol = 1e-8 if i386_looser_tolerances else 1e-12 # Tolerance is lower for approximate diffuse for one attribute in this case if missing == 'init' and init == 'approximate_diffuse': atol = 1e-6 diff --git a/statsmodels/tsa/statespace/tests/test_smoothing.py b/statsmodels/tsa/statespace/tests/test_smoothing.py index 8c67dfb..8c5eeb8 100644 --- a/statsmodels/tsa/statespace/tests/test_smoothing.py +++ b/statsmodels/tsa/statespace/tests/test_smoothing.py @@ -29,8 +29,9 @@ from statsmodels.tsa.statespace.kalman_smoother import ( SMOOTH_UNIVARIATE) current_path = os.path.dirname(os.path.abspath(__file__)) - - +import sys +import glob +i386_looser_tolerances=len(glob.glob('/usr/lib/i386-*/'))>0 and np.log2(sys.maxsize)<=32 class TestStatesAR3(object): @classmethod def setup_class(cls, alternate_timing=False, *args, **kwargs): @@ -834,7 +835,7 @@ class TestMultivariateVARUnivariate(object): def test_forecasts_error_cov(self): assert_allclose( self.results.forecasts_error_cov.diagonal(), - self.desired[['F1', 'F2', 'F3']] + self.desired[['F1', 'F2', 'F3']],rtol=2e-7 if i386_looser_tolerances else 1e-7 ) def test_predicted_states(self): @@ -888,7 +889,7 @@ class TestMultivariateVARUnivariate(object): def test_smoothed_measurement_disturbance_cov(self): assert_allclose( self.results.smoothed_measurement_disturbance_cov.diagonal(), - self.desired[['Veps1', 'Veps2', 'Veps3']] + self.desired[['Veps1', 'Veps2', 'Veps3']],rtol=2e-7 if i386_looser_tolerances else 1e-7 ) -- 2.30.2