def test_dup_count_real_roots(): assert dup_count_real_roots([], ZZ) == 0 assert dup_count_real_roots([7], ZZ) == 0 assert dup_count_real_roots([1, -1], ZZ) == 1 assert dup_count_real_roots([1, -1], ZZ, inf=1) == 1 assert dup_count_real_roots([1, -1], ZZ, sup=0) == 0 assert dup_count_real_roots([1, -1], ZZ, sup=1) == 1 assert dup_count_real_roots([1, -1], ZZ, inf=0, sup=1) == 1 assert dup_count_real_roots([1, -1], ZZ, inf=0, sup=2) == 1 assert dup_count_real_roots([1, -1], ZZ, inf=1, sup=2) == 1 assert dup_count_real_roots([1, 0, -2], ZZ) == 2 assert dup_count_real_roots([1, 0, -2], ZZ, sup=0) == 1 assert dup_count_real_roots([1, 0, -2], ZZ, inf=-1, sup=1) == 0
def test_dup_count_real_roots(): assert dup_count_real_roots([], ZZ) == 0 assert dup_count_real_roots([7], ZZ) == 0 assert dup_count_real_roots([1,-1], ZZ) == 1 assert dup_count_real_roots([1,-1], ZZ, inf=1) == 1 assert dup_count_real_roots([1,-1], ZZ, sup=0) == 0 assert dup_count_real_roots([1,-1], ZZ, sup=1) == 1 assert dup_count_real_roots([1,-1], ZZ, inf=0, sup=1) == 1 assert dup_count_real_roots([1,-1], ZZ, inf=0, sup=2) == 1 assert dup_count_real_roots([1,-1], ZZ, inf=1, sup=2) == 1 assert dup_count_real_roots([1,0,-2], ZZ) == 2 assert dup_count_real_roots([1,0,-2], ZZ, sup=0) == 1 assert dup_count_real_roots([1,0,-2], ZZ, inf=-1, sup=1) == 0
def count_real_roots(f, inf=None, sup=None): """Return the number of real roots of ``f`` in ``[inf, sup]``. """ return dup_count_real_roots(f.rep, f.dom, inf=inf, sup=sup)