code: def wigner_9j(j_1, j_2, j_3, j_4, j_5, j_6, j_7, j_8, j_9, prec=None):
      r"""
      Calculate the Wigner 9j symbol
      `\operatorname{Wigner9j}(j_1,j_2,j_3,j_4,j_5,j_6,j_7,j_8,j_9)`.
  
      Parameters
      ==========
  
      j_1, ..., j_9 :
          Integer or half integer.
      prec : precision, default
          ``None``. Providing a precision can
          drastically speed up the calculation.
  
      Returns
      =======
  
      Rational number times the square root of a rational number
      (if ``prec=None``), or real number if a precision is given.
  
      Examples
      ========
  
      >>> from sympy.physics.wigner import wigner_9j
      >>> wigner_9j(1,1,1, 1,1,1, 1,1,0, prec=64) # ==1/18
      0.05555555...
  
      >>> wigner_9j(1/2,1/2,0, 1/2,3/2,1, 0,1,1, prec=64) # ==1/6
      0.1666666...
  
      It is an error to have arguments that are not integer or half
      integer values or do not fulfill the triangle relation::
  
          sage: wigner_9j(0.5,0.5,0.5, 0.5,0.5,0.5, 0.5,0.5,0.5,prec=64)
          Traceback (most recent call last):
          ...
          ValueError: j values must be integer or half integer and fulfill the triangle relation
          sage: wigner_9j(1,1,1, 0.5,1,1.5, 0.5,1,2.5,prec=64)
          Traceback (most recent call last):
          ...
          ValueError: j values must be integer or half integer and fulfill the triangle relation
  
      Algorithm
      =========
  
      This function uses the algorithm of [Edmonds74]_ to calculate the
      value of the 3j symbol exactly. Note that the formula contains
      alternating sums over large factorials and is therefore unsuitable
      for finite precision arithmetic and only useful for a computer
      algebra system [Rasch03]_.
      """
      imax = int(min(j_1 + j_9, j_2 + j_6, j_4 + j_8) * 2)
      imin = imax % 2
      sumres = 0
      for kk in range(imin, int(imax) + 1, 2):
          sumres = sumres + (kk + 1) * racah(
              j_1, j_2, j_9, j_6, j_3, kk / 2, prec
          ) * racah(j_4, j_6, j_8, j_2, j_5, kk / 2, prec) * racah(
              j_1, j_4, j_9, j_8, j_7, kk / 2, prec
          )
      return sumres
  
imports: from sympy.concrete.summations import Sum
  from sympy.core.add import Add
  from sympy.core.numbers import int_valued
  from sympy.core.function import Function
  from sympy.core.numbers import I, Integer, pi
  from sympy.core.singleton import S
  from sympy.core.symbol import Dummy
  from sympy.core.sympify import sympify
  from sympy.functions.combinatorial.factorials import binomial, factorial
  from sympy.functions.elementary.complexes import re
  from sympy.functions.elementary.exponential import exp
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import cos, sin
  from sympy.functions.special.spherical_harmonics import Ynm
  from sympy.matrices.dense import zeros
  from sympy.matrices.immutable import ImmutableMatrix
  from sympy.utilities.misc import as_int
label_desc: Use image node_id 7 for calling a global function with example usage: wigner_9j(j_1, j_2, j_3, j_4, j_5, j_6, j_7, j_8, j_9, prec) and returns: sumres