code: def test_gruntz_eval_special():
      # Gruntz, p. 126
      assert (
          gruntz(
              exp(x)
              * (sin(1 / x + exp(-x)) - sin(1 / x + exp(-(x**2)))),
              x,
              oo,
          )
          == 1
      )
      assert gruntz(
          (erf(x - exp(-exp(x))) - erf(x)) * exp(exp(x)) * exp(x**2),
          x,
          oo,
      ) == -2 / sqrt(pi)
      assert (
          gruntz(
              exp(exp(x))
              * (exp(sin(1 / x + exp(-exp(x)))) - exp(sin(1 / x))),
              x,
              oo,
          )
          == 1
      )
      assert (
          gruntz(exp(x) * (gamma(x + exp(-x)) - gamma(x)), x, oo) is oo
      )
      assert gruntz(exp(exp(digamma(digamma(x)))) / x, x, oo) == exp(
          Rational(-1, 2)
      )
      assert gruntz(exp(exp(digamma(log(x)))) / x, x, oo) == exp(
          Rational(-1, 2)
      )
      assert gruntz(digamma(digamma(digamma(x))), x, oo) is oo
      assert gruntz(loggamma(loggamma(x)), x, oo) is oo
      assert gruntz(
          ((gamma(x + 1 / gamma(x)) - gamma(x)) / log(x) - cos(1 / x))
          * x
          * log(x),
          x,
          oo,
      ) == Rational(-1, 2)
      assert (
          gruntz(
              x * (gamma(x - 1 / gamma(x)) - gamma(x) + log(x)), x, oo
          )
          == S.Half
      )
      assert (
          gruntz((gamma(x + 1 / gamma(x)) - gamma(x)) / log(x), x, oo)
          == 1
      )
  
imports: from sympy.core import EulerGamma
  from sympy.core.numbers import E, I, Integer, Rational, oo, pi
  from sympy.core.singleton import S
  from sympy.core.symbol import Symbol
  from sympy.functions.elementary.exponential import exp, log
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import acot, atan, cos, sin
  from sympy.functions.elementary.complexes import sign
  from sympy.functions.special.error_functions import Ei, erf
  from sympy.functions.special.gamma_functions import digamma, gamma, loggamma
  from sympy.functions.special.zeta_functions import zeta
  from sympy.polys.polytools import cancel
  from sympy.functions.elementary.hyperbolic import cosh, coth, sinh, tanh
  from sympy.series.gruntz import compare, mrv, rewrite, mrv_leadterm, gruntz, sign
  from sympy.testing.pytest import XFAIL, skip, slow
label_desc: Use image node_id 4 for calling a global function with example usage: test_gruntz_eval_special() without return types