code: def test_CRootOf_eval_rational():
      p = legendre_poly(4, x, polys=True)
      roots = [r.eval_rational(n=18) for r in p.real_roots()]
      for root in roots:
          assert isinstance(root, Rational)
      roots = [str(root.n(17)) for root in roots]
      assert roots == [
          "-0.86113631159405258",
          "-0.33998104358485626",
          "0.33998104358485626",
          "0.86113631159405258",
      ]
  
imports: from sympy.polys.polytools import Poly
  import sympy.polys.rootoftools
  from sympy.polys.rootoftools import rootof, RootOf, CRootOf, RootSum, _pure_key_dict
  from sympy.polys.polyerrors import MultivariatePolynomialError, GeneratorsNeeded, PolynomialError
  from sympy.core.function import Function, Lambda
  from sympy.core.numbers import Float, I, Rational
  from sympy.core.relational import Eq
  from sympy.core.singleton import S
  from sympy.functions.elementary.exponential import exp, log
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import tan
  from sympy.integrals.integrals import Integral
  from sympy.polys.orthopolys import legendre_poly
  from sympy.solvers.solvers import solve
  from sympy.testing.pytest import raises, slow
  from sympy.core.expr import unchanged
  from sympy.abc import a, b, x, y, z, r
label_desc: Use image node_id 14 for calling a global function with example usage: test_CRootOf_eval_rational() without return types