code: def test_si():
      assert Si(I * x) == I * Shi(x)
      assert Shi(I * x) == I * Si(x)
      assert Si(-I * x) == -I * Shi(x)
      assert Shi(-I * x) == -I * Si(x)
      assert Si(-x) == -Si(x)
      assert Shi(-x) == -Shi(x)
      assert Si(exp_polar(2 * pi * I) * x) == Si(x)
      assert Si(exp_polar(-2 * pi * I) * x) == Si(x)
      assert Shi(exp_polar(2 * pi * I) * x) == Shi(x)
      assert Shi(exp_polar(-2 * pi * I) * x) == Shi(x)
  
      assert Si(oo) == pi / 2
      assert Si(-oo) == -pi / 2
      assert Shi(oo) is oo
      assert Shi(-oo) is -oo
  
      assert mytd(Si(x), sin(x) / x, x)
      assert mytd(Shi(x), sinh(x) / x, x)
  
      assert mytn(
          Si(x),
          Si(x).rewrite(Ei),
          -I
          * (
              -Ei(x * exp_polar(-I * pi / 2)) / 2
              + Ei(x * exp_polar(I * pi / 2)) / 2
              - I * pi
          )
          + pi / 2,
          x,
      )
      assert mytn(
          Si(x),
          Si(x).rewrite(expint),
          -I
          * (
              -expint(1, x * exp_polar(-I * pi / 2)) / 2
              + expint(1, x * exp_polar(I * pi / 2)) / 2
          )
          + pi / 2,
          x,
      )
      assert mytn(
          Shi(x),
          Shi(x).rewrite(Ei),
          Ei(x) / 2 - Ei(x * exp_polar(I * pi)) / 2 + I * pi / 2,
          x,
      )
      assert mytn(
          Shi(x),
          Shi(x).rewrite(expint),
          expint(1, x) / 2
          - expint(1, x * exp_polar(I * pi)) / 2
          - I * pi / 2,
          x,
      )
  
      assert tn_arg(Si)
      assert tn_arg(Shi)
  
      assert Si(x).nseries(
          x, n=8
      ) == x - x**3 / 18 + x**5 / 600 - x**7 / 35280 + O(x**9)
      assert Shi(x).nseries(
          x, n=8
      ) == x + x**3 / 18 + x**5 / 600 + x**7 / 35280 + O(x**9)
      assert Si(sin(x)).nseries(
          x, n=5
      ) == x - 2 * x**3 / 9 + 17 * x**5 / 450 + O(x**6)
      assert Si(x).nseries(x, 1, n=3) == Si(1) + (x - 1) * sin(1) + (
          x - 1
      ) ** 2 * (-sin(1) / 2 + cos(1) / 2) + O((x - 1) ** 3, (x, 1))
  
      assert (
          Si(x).series(x, oo)
          == pi / 2
          - (-6 / x**3 + 1 / x + O(x ** (-7), (x, oo))) * sin(x) / x
          - (24 / x**4 - 2 / x**2 + 1 + O(x ** (-7), (x, oo)))
          * cos(x)
          / x
      )
  
      t = Symbol("t", Dummy=True)
      assert Si(x).rewrite(sinc) == Integral(sinc(t), (t, 0, x))
  
      assert limit(Shi(x), x, S.Infinity) == S.Infinity
      assert limit(Shi(x), x, S.NegativeInfinity) == S.NegativeInfinity
  
imports: from sympy.core.function import diff, expand, expand_func
  from sympy.core import EulerGamma
  from sympy.core.numbers import E, Float, I, Rational, nan, oo, pi
  from sympy.core.singleton import S
  from sympy.core.symbol import Symbol, symbols
  from sympy.functions.elementary.complexes import conjugate, im, polar_lift, re
  from sympy.functions.elementary.exponential import exp, exp_polar, log
  from sympy.functions.elementary.hyperbolic import cosh, sinh
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import cos, sin, sinc
  from sympy.functions.special.error_functions import Chi, Ci, E1, Ei, Li, Shi, Si, erf, erf2, erf2inv, erfc, erfcinv, erfi, erfinv, expint, fresnelc, fresnels, li
  from sympy.functions.special.gamma_functions import gamma, uppergamma
  from sympy.functions.special.hyper import hyper, meijerg
  from sympy.integrals.integrals import Integral, integrate
  from sympy.series.gruntz import gruntz
  from sympy.series.limits import limit
  from sympy.series.order import O
  from sympy.core.expr import unchanged
  from sympy.core.function import ArgumentIndexError
  from sympy.functions.special.error_functions import _erfs, _eis
  from sympy.testing.pytest import raises
label_desc: Use image node_id 25 for calling a global function with example usage: test_si() without return types