code: def igcd(*args):
      """Computes nonnegative integer greatest common divisor.
  
      Explanation
      ===========
  
      The algorithm is based on the well known Euclid's algorithm [1]_. To
      improve speed, ``igcd()`` has its own caching mechanism.
      If you do not need the cache mechanism, using ``sympy.external.gmpy.gcd``.
  
      Examples
      ========
  
      >>> from sympy import igcd
      >>> igcd(2, 4)
      2
      >>> igcd(5, 10, 15)
      5
  
      References
      ==========
  
      .. [1] https://en.wikipedia.org/wiki/Euclidean_algorithm
  
      """
      if len(args) < 2:
          raise TypeError(
              "igcd() takes at least 2 arguments (%s given)" % len(args)
          )
      return int(number_gcd(*map(as_int, args)))
  
file_path: sympy/sympy/core/intfunc.py
imports: import math
  import sys
  from functools import lru_cache
  from .sympify import sympify
  from .singleton import S
  from sympy.external.gmpy import gcd, lcm, sqrt, iroot, bit_scan1, gcdext
  from sympy.utilities.misc import as_int, filldedent
label_desc: Use image node_id 4 for calling a global function with example usage: igcd() and returns: int