test_taylor.py 665 Bytes
from sympy import series, atan, nsimplify
from src.taylor import estimate


import pytest
from sympy.abc import x

def ref_taylor(f, a, N, xval):
    return nsimplify(series(f, x=x, x0=a, n=N).removeO().subs(x, xval).doit())


at_one_tenth = [(0, N, 0.1) for N in range(15)]
at_two_tenths = [(0, N, 0.2) for N in range(15)]
at_one = [(0, N, 1) for N in range(15)]


@pytest.mark.parametrize('a, N, xval', at_one_tenth + at_two_tenths + at_one)
def test_arctan_taylor(a, N, xval):
    result = estimate('arctan', xval, a, atan(a), N)
    ref = ref_taylor(atan(x), a, N, xval)
    print(float(result), float(ref))
    assert abs(float(result) - float(ref)) < 10**(-8)