+
    ,i                         R t ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RI	H
t
HtHtHtHtHtHt ^RIHt ^RIHt RR	.tR
RRRRRRR/R R lltRR^ RR/R R llltR# )z@Delegation to existing implementations for Public API Functions.)Sequence)
ModuleType)Literal)_funcs)array_namespaceis_cupy_namespaceis_dask_namespaceis_jax_namespaceis_numpy_namespaceis_pydata_sparse_namespaceis_torch_namespace)asarrays)Arrayisclosepadrtolgh㈵>atolg:0yE>	equal_nanFxpNc                    V ^8  d   QhR\         \        ,          R\         \        ,          R\        R\        R\        R\        R,          R\         /# )	   abr   r   r   r   Nreturn)r   complexfloatboolr   )formats   "H/usr/lib/python3/dist-packages/scipy/_lib/array_api_extra/_delegation.py__annotate__r      sm     YR YRwYRwYR 	YR
 YR YR 	TYR YR    c          	     n   Vf   \        W4      MTp\        V4      '       g4   \        V4      '       g#   \        V4      '       g   \	        V4      '       d   VP                  WW#VR7      # \        V4      '       d$   \        WVR7      w  rVP                  WW#VR7      # \        P
                  ! WW#WER7      # )a	  
Return a boolean array where two arrays are element-wise equal within a tolerance.

The tolerance values are positive, typically very small numbers. The relative
difference ``(rtol * abs(b))`` and the absolute difference `atol` are added together
to compare against the absolute difference between `a` and `b`.

NaNs are treated as equal if they are in the same place and if ``equal_nan=True``.
Infs are treated as equal if they are in the same place and of the same sign in both
arrays.

Parameters
----------
a, b : Array | int | float | complex | bool
    Input objects to compare. At least one must be an array.
rtol : array_like, optional
    The relative tolerance parameter (see Notes).
atol : array_like, optional
    The absolute tolerance parameter (see Notes).
equal_nan : bool, optional
    Whether to compare NaN's as equal. If True, NaN's in `a` will be considered
    equal to NaN's in `b` in the output array.
xp : array_namespace, optional
    The standard-compatible namespace for `a` and `b`. Default: infer.

Returns
-------
Array
    A boolean array of shape broadcasted from `a` and `b`, containing ``True`` where
    `a` is close to `b`, and ``False`` otherwise.

Warnings
--------
The default `atol` is not appropriate for comparing numbers with magnitudes much
smaller than one (see notes).

See Also
--------
math.isclose : Similar function in stdlib for Python scalars.

Notes
-----
For finite values, `isclose` uses the following equation to test whether two
floating point values are equivalent::

    absolute(a - b) <= (atol + rtol * absolute(b))

Unlike the built-in `math.isclose`,
the above equation is not symmetric in `a` and `b`,
so that ``isclose(a, b)`` might be different from ``isclose(b, a)`` in some rare
cases.

The default value of `atol` is not appropriate when the reference value `b` has
magnitude smaller than one. For example, it is unlikely that ``a = 1e-9`` and
``b = 2e-9`` should be considered "close", yet ``isclose(1e-9, 2e-9)`` is ``True``
with default settings. Be sure to select `atol` for the use case at hand, especially
for defining the threshold below which a non-zero value in `a` will be considered
"close" to a very small or zero value in `b`.

The comparison of `a` and `b` uses standard broadcasting, which means that `a` and
`b` need not have the same shape in order for ``isclose(a, b)`` to evaluate to
``True``.

`isclose` is not defined for non-numeric data types.
``bool`` is considered a numeric data-type for this purpose.
)r   r   r   )r   )r   r   r   r   )	r   r
   r   r   r	   r   r   r   r   )r   r   r   r   r   r   s   &&$$$$r   r   r      s    V #%*	"B 	2R  R  Bzz!T	zJJ"$zz!T	zJJ>>!T	QQr    constant_valuesc                   V ^8  d   QhR\         R\        \        \        \        3,          ,          \        \        \        \        3,          ,          ,          R\        R,          R\
        R\        R,          R\         /# )	r   x	pad_widthmodeconstantr"   r   Nr   )r   inttupler   r   r   r   )r   s   "r   r   r   s   su     8L 8L8LU38_$xc3h'@@8L *
8L
 8L 	T8L 8Lr    c               L   Vf   \        V 4      MTpVR8w  d   Rp\        V4      h\        V4      '       g4   \        V4      '       g#   \	        V4      '       g   \        V4      '       d   VP                  WW#R7      # \        V4      '       d   VP                  V4      pVP                  WP                  ^34      pVP                  VRR7      P                  4       pVP                  P                  P                  V \        V4      VR7      # \         P                  ! WW4R7      # )aj  
Pad the input array.

Parameters
----------
x : array
    Input array.
pad_width : int or tuple of ints or sequence of pairs of ints
    Pad the input array with this many elements from each side.
    If a sequence of tuples, ``[(before_0, after_0), ... (before_N, after_N)]``,
    each pair applies to the corresponding axis of ``x``.
    A single tuple, ``(before, after)``, is equivalent to a list of ``x.ndim``
    copies of this tuple.
mode : str, optional
    Only "constant" mode is currently supported, which pads with
    the value passed to `constant_values`.
constant_values : python scalar, optional
    Use this value to pad the input. Default is zero.
xp : array_namespace, optional
    The standard-compatible namespace for `x`. Default: infer.

Returns
-------
array
    The input array,
    padded with ``pad_width`` elements equal to ``constant_values``.
r'   z-Only `'constant'` mode is currently supported)r"   )axis)value)r"   r   )    )r   NotImplementedErrorr
   r   r	   r   r   r   asarraybroadcast_tondimflipflattennn
functionalr)   r   )r$   r%   r&   r"   r   msgs   &&&$$ r   r   r   s   s    F  "z	rBz=!#&& 	2R  B%b))vvaDvJJ "JJy)	OOI{;	GGIDG199;	uu##AuY'7#OO::aOKKr    )r'   )__doc__collections.abcr   typesr   typingr   _libr   _lib._utils._compatr   r   r   r	   r
   r   r   _lib._utils._helpersr   _lib._utils._typingr   __all__r   r    r    r   <module>rA      s    F $      + &e
YR 	YR
 YR YR !YRx8L
  !8L !8L 8Lr    