code: def erfc(
      x: np.ndarray,
      /,
      *,
      out: Optional[np.ndarray] = None,
  ) -> np.ndarray:
      if x.dtype not in [np.float16, np.float32, np.float64]:
          raise TypeError(
              "Input must be of type float16, float32, or float64."
          )
  
      input_dtype = x.dtype
  
      abs_x = np.abs(x)
      z = np.exp(-x * x)
  
      pp = _EvaluatePolynomial(abs_x, kErfcPCoefficient)
      pq = _EvaluatePolynomial(abs_x, kErfcQCoefficient)
      pr = _EvaluatePolynomial(abs_x, kErfcRCoefficient)
      ps = _EvaluatePolynomial(abs_x, kErfcSCoefficient)
  
      abs_x_small = abs_x < 8.0
      y = np.where(abs_x_small, z * pp / pq, z * pr / ps)
      result_no_underflow = np.where(x < 0.0, 2.0 - y, y)
  
      def is_pos_inf(op):
          return np.logical_and(np.isinf(op), op > 0)
  
      underflow = np.logical_or(
          z == 0,
          np.logical_or(
              np.logical_and(is_pos_inf(pq), abs_x_small),
              np.logical_and(
                  is_pos_inf(ps), np.logical_not(abs_x_small)
              ),
          ),
      )
      result_underflow = np.where(
          x < 0, np.full_like(x, 2), np.full_like(x, 0)
      )
  
      return np.where(
          underflow, result_underflow, result_no_underflow
      ).astype(input_dtype)
  
imports: from typing import Optional, Union, Tuple, List, Sequence
  import numpy
  import numpy.typing
  import ivy
  from ivy import promote_types_of_inputs
  from ivy.functional.backends.numpy.helpers import _scalar_output_to_0d_array
  from ivy.func_wrapper import with_unsupported_dtypes
  from .None import backend_version
label_desc: Use image node_id 28 for calling a global function with example usage: erfc() and returns: np, np