import numpy as np
import pytest
import scipy.integrate
import scirs2
class TestNumericalIntegration:
def test_quad_basic_integral(self):
def f(x):
return x**2
def test_simpson_rule(self):
x = np.ascontiguousarray(np.linspace(0, np.pi, 101))
y = np.ascontiguousarray(np.sin(x))
scipy_result = scipy.integrate.simpson(y, x)
scirs2_result = scirs2.simpson_array_py(y, x)
assert np.allclose(scipy_result, 2.0, rtol=1e-6)
assert np.allclose(scirs2_result, scipy_result, rtol=1e-10)
def test_romberg_integration(self):
x = np.ascontiguousarray(np.linspace(0, 2, 33)) y = np.ascontiguousarray(x**3)
scirs2_result = scirs2.romberg_array_py(y, x[1] - x[0])
expected = 4.0
assert np.allclose(scirs2_result, expected, rtol=1e-6)
if __name__ == "__main__":
pytest.main([__file__, "-v"])