+
    ÖÍiãL  ã                   ó^  € ^ RI t ^ RIt^ RIt^ RIt^ RI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 . ROt] P(                  ! ]P*                  RR7      tRR	R/R
 llt]! ]4      RR	R/R ll4       tRR lt]! ]4      RR l4       tRR lt]! ]4      RR l4       tR tR tRR ltR# )é    N)Ú	overrides)Ú_array_converter)Úadd_docstring)Únumeric)Ú
asanyarrayÚnanÚndimÚresult_typeÚnumpy)ÚmoduleÚdevicec                ó   € W3# ©N© )ÚstartÚstopÚnumÚendpointÚretstepÚdtypeÚaxisr   s   &&&&&&&$Ú;/usr/lib/python3/dist-packages/numpy/_core/function_base.pyÚ_linspace_dispatcherr      ó
   € àˆ=Ðó    c               ó`  € \         P                  ! V4      pV^ 8  d   \        RV R24      hV'       d
   V^,
          MTp\        W4      p	V	P	                  4       w  rV	P                  RR7      p
Vf   T
pRpM%\        P                  ! V\        P                  4      p\        P                  ! W\        V
4      R7      p\        P                  ! ^ W*VR7      P                  R
R\        V4      ,          ,           4      pV^ 8”  d—   \        P                  ! V4      pWÈ,          pV'       d   V^ 8H  M&\        P                   ! V^ 8H  4      P#                  4       pV'       d#   WØ,          pV'       d
   WÜ,          pM1WÜ,          pM(V'       d
   Wß,          pMWß,          pM\$        pWÜ,          pWÐ,          pV'       d   V^8”  d   WR&   V^ 8w  d   \        P&                  ! V^ V4      pV'       d   \        P(                  ! WÝR7       V	P+                  VP-                  VRR	7      4      pV'       d   Wß3# V# )a`  
Return evenly spaced numbers over a specified interval.

Returns `num` evenly spaced samples, calculated over the
interval [`start`, `stop`].

The endpoint of the interval can optionally be excluded.

.. versionchanged:: 1.20.0
    Values are rounded towards ``-inf`` instead of ``0`` when an
    integer ``dtype`` is specified. The old behavior can
    still be obtained with ``np.linspace(start, stop, num).astype(int)``

Parameters
----------
start : array_like
    The starting value of the sequence.
stop : array_like
    The end value of the sequence, unless `endpoint` is set to False.
    In that case, the sequence consists of all but the last of ``num + 1``
    evenly spaced samples, so that `stop` is excluded.  Note that the step
    size changes when `endpoint` is False.
num : int, optional
    Number of samples to generate. Default is 50. Must be non-negative.
endpoint : bool, optional
    If True, `stop` is the last sample. Otherwise, it is not included.
    Default is True.
retstep : bool, optional
    If True, return (`samples`, `step`), where `step` is the spacing
    between samples.
dtype : dtype, optional
    The type of the output array.  If `dtype` is not given, the data type
    is inferred from `start` and `stop`. The inferred dtype will never be
    an integer; `float` is chosen even if the arguments would produce an
    array of integers.
axis : int, optional
    The axis in the result to store the samples.  Relevant only if start
    or stop are array-like.  By default (0), the samples will be along a
    new axis inserted at the beginning. Use -1 to get an axis at the end.
device : str, optional
    The device on which to place the created array. Default: None.
    For Array-API interoperability only, so must be ``"cpu"`` if passed.

    .. versionadded:: 2.0.0

Returns
-------
samples : ndarray
    There are `num` equally spaced samples in the closed interval
    ``[start, stop]`` or the half-open interval ``[start, stop)``
    (depending on whether `endpoint` is True or False).
step : float, optional
    Only returned if `retstep` is True

    Size of spacing between samples.


See Also
--------
arange : Similar to `linspace`, but uses a step size (instead of the
         number of samples).
geomspace : Similar to `linspace`, but with numbers spaced evenly on a log
            scale (a geometric progression).
logspace : Similar to `geomspace`, but with the end points specified as
           logarithms.
:ref:`how-to-partition`

Examples
--------
>>> import numpy as np
>>> np.linspace(2.0, 3.0, num=5)
array([2.  , 2.25, 2.5 , 2.75, 3.  ])
>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
array([2. ,  2.2,  2.4,  2.6,  2.8])
>>> np.linspace(2.0, 3.0, num=5, retstep=True)
(array([2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)

Graphical illustration:

>>> import matplotlib.pyplot as plt
>>> N = 8
>>> y = np.zeros(N)
>>> x1 = np.linspace(0, 10, N, endpoint=True)
>>> x2 = np.linspace(0, 10, N, endpoint=False)
>>> plt.plot(x1, y, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.plot(x2, y + 0.5, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.ylim([-0.5, 1])
(-0.5, 1)
>>> plt.show()

zNumber of samples, z, must be non-negative.T)Úensure_inexactF)r   )r   r   )Úout©Úcopy)éÿÿÿÿ)é   )r!   .)ÚoperatorÚindexÚ
ValueErrorr   Ú	as_arraysr
   Ú_nxÚ
issubdtypeÚintegerÚnpÚsubtractÚtypeÚarangeÚreshaper	   Úisscalarr   Úanyr   ÚmoveaxisÚfloorÚwrapÚastype)r   r   r   r   r   r   r   r   ÚdivÚconvÚdtÚinteger_dtypeÚdeltaÚyÚ_mult_inplaceÚstepÚany_step_zeros   &&&&&&&$         r   Úlinspacer>      s¾  € ô@ �.Š.˜Ó
€CØ
ˆQ„wÜØ! # Ð&=Ð>ó
ð 	
÷  ˆ3�Ž7 S€Cä˜EÓ(€DØ—.‘.Ó"�K€EØ	×	Ñ	¨Ð	Ó	.€Bà‚}ØˆØ‰äŸš u¬c¯k©kÓ:ˆô �KŠK˜¬4°«8Ô4€EÜ�
Š
Ø	ˆ3 ô	ç�gˆe�dœT %›[Õ(Õ(Ó)ð ð ˆQ„wÜŸš UÓ+ˆØ�{ˆç&ˆD�AŠI¬C¯NªN¸4À1¹9Ó,E×,IÑ,IÓ,Kð 	çà�HˆAßØ•
‘à•I‘ßØ�I‰Aà•‰Aô ˆà�Iˆà…J€Aç�C˜!”GØˆ'‰
àˆq„yÜ�LŠL˜˜A˜tÓ$ˆçÜ�	Š	�!Õà�	‰	�!—(‘(˜5 u�(Ó-Ó.€AßØˆwˆàˆr   c                 ó
   € WV3# r   r   )r   r   r   r   Úbaser   r   s   &&&&&&&r   Ú_logspace_dispatcherrA   ¾   s   € à˜ÐÐr   c                ó¤  a€ \        V\        \        34      '       gf   \        P                  ! V4      '       dJ   \        P
                  ! WV4      P                  oV3R lWV3 4       w  rp\        P                  ! WFR7      p\        WW#VR7      pVf   \        P                  ! WG4      # \        P                  ! WG4      P                  VRR7      # )aa  
Return numbers spaced evenly on a log scale.

In linear space, the sequence starts at ``base ** start``
(`base` to the power of `start`) and ends with ``base ** stop``
(see `endpoint` below).

.. versionchanged:: 1.25.0
    Non-scalar 'base` is now supported

Parameters
----------
start : array_like
    ``base ** start`` is the starting value of the sequence.
stop : array_like
    ``base ** stop`` is the final value of the sequence, unless `endpoint`
    is False.  In that case, ``num + 1`` values are spaced over the
    interval in log-space, of which all but the last (a sequence of
    length `num`) are returned.
num : integer, optional
    Number of samples to generate.  Default is 50.
endpoint : boolean, optional
    If true, `stop` is the last sample. Otherwise, it is not included.
    Default is True.
base : array_like, optional
    The base of the log space. The step size between the elements in
    ``ln(samples) / ln(base)`` (or ``log_base(samples)``) is uniform.
    Default is 10.0.
dtype : dtype
    The type of the output array.  If `dtype` is not given, the data type
    is inferred from `start` and `stop`. The inferred type will never be
    an integer; `float` is chosen even if the arguments would produce an
    array of integers.
axis : int, optional
    The axis in the result to store the samples.  Relevant only if start,
    stop, or base are array-like.  By default (0), the samples will be
    along a new axis inserted at the beginning. Use -1 to get an axis at
    the end.

Returns
-------
samples : ndarray
    `num` samples, equally spaced on a log scale.

See Also
--------
arange : Similar to linspace, with the step size specified instead of the
         number of samples. Note that, when used with a float endpoint, the
         endpoint may or may not be included.
linspace : Similar to logspace, but with the samples uniformly distributed
           in linear space, instead of log space.
geomspace : Similar to logspace, but with endpoints specified directly.
:ref:`how-to-partition`

Notes
-----
If base is a scalar, logspace is equivalent to the code

>>> y = np.linspace(start, stop, num=num, endpoint=endpoint)
... # doctest: +SKIP
>>> power(base, y).astype(dtype)
... # doctest: +SKIP

Examples
--------
>>> import numpy as np
>>> np.logspace(2.0, 3.0, num=4)
array([ 100.        ,  215.443469  ,  464.15888336, 1000.        ])
>>> np.logspace(2.0, 3.0, num=4, endpoint=False)
array([100.        ,  177.827941  ,  316.22776602,  562.34132519])
>>> np.logspace(2.0, 3.0, num=4, base=2.0)
array([4.        ,  5.0396842 ,  6.34960421,  8.        ])
>>> np.logspace(2.0, 3.0, num=4, base=[2.0, 3.0], axis=-1)
array([[ 4.        ,  5.0396842 ,  6.34960421,  8.        ],
       [ 9.        , 12.98024613, 18.72075441, 27.        ]])

Graphical illustration:

>>> import matplotlib.pyplot as plt
>>> N = 10
>>> x1 = np.logspace(0.1, 1, N, endpoint=True)
>>> x2 = np.logspace(0.1, 1, N, endpoint=False)
>>> y = np.zeros(N)
>>> plt.plot(x1, y, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.plot(x2, y + 0.5, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.ylim([-0.5, 1])
(-0.5, 1)
>>> plt.show()

c              3   óX   <"  € T F  p\         P                  ! VR RSR7      x € K!  	  R # 5i)NT)r    ÚsubokÚndmin)r*   Úarray)Ú.0ÚaÚndmaxs   & €r   Ú	<genexpr>Úlogspace.<locals>.<genexpr>&  s*   øé € ð 
á(�ô �HŠH�Q˜T¨°U×;Ñ;Û(ùs   ƒ'*)r   )r   r   r   Fr   )Ú
isinstanceÚfloatÚintr*   r	   Ú	broadcastÚexpand_dimsr>   r'   Úpowerr4   )	r   r   r   r   r@   r   r   r:   rI   s	   &&&&&&& @r   ÚlogspacerR   Ã   s¥   ø€ ô~ �dœU¤C˜L×)Ò)¬b¯gªg°d¯mªmô —’˜U¨$Ó/×4Ñ4ˆô
à 4Ñ(ó
Ñˆ�Tô �~Š~˜dÔ.ˆÜ� #¸tÔD€AØ‚}Ü�yŠy˜Ó!Ð!Ü�9Š9�TÓ×$Ñ$ U°Ð$Ó7Ð7r   c                 ó   € W3# r   r   )r   r   r   r   r   r   s   &&&&&&r   Ú_geomspace_dispatcherrT   1  r   r   c           	     ó  € \        V 4      p \        V4      p\        P                  ! V ^ 8H  4      '       g    \        P                  ! V^ 8H  4      '       d   \        R4      h\	        W\        V4      \        P                  ! RV4      4      pVf   TpM\        P                  ! V4      pV P                  VRR7      p VP                  VRR7      p\        P                  ! V 4      pW,          p W,          p\        P                  ! V 4      p\        P                  ! V4      p	\        W‰VVRVR7      p
V^ 8”  d   W
^ &   V^8”  d   V'       d   WR&   W§,          p
V^ 8w  d   \        P                  ! V
^ V4      p
V
P                  VRR7      # )	að  
Return numbers spaced evenly on a log scale (a geometric progression).

This is similar to `logspace`, but with endpoints specified directly.
Each output sample is a constant multiple of the previous.

Parameters
----------
start : array_like
    The starting value of the sequence.
stop : array_like
    The final value of the sequence, unless `endpoint` is False.
    In that case, ``num + 1`` values are spaced over the
    interval in log-space, of which all but the last (a sequence of
    length `num`) are returned.
num : integer, optional
    Number of samples to generate.  Default is 50.
endpoint : boolean, optional
    If true, `stop` is the last sample. Otherwise, it is not included.
    Default is True.
dtype : dtype
    The type of the output array.  If `dtype` is not given, the data type
    is inferred from `start` and `stop`. The inferred dtype will never be
    an integer; `float` is chosen even if the arguments would produce an
    array of integers.
axis : int, optional
    The axis in the result to store the samples.  Relevant only if start
    or stop are array-like.  By default (0), the samples will be along a
    new axis inserted at the beginning. Use -1 to get an axis at the end.

Returns
-------
samples : ndarray
    `num` samples, equally spaced on a log scale.

See Also
--------
logspace : Similar to geomspace, but with endpoints specified using log
           and base.
linspace : Similar to geomspace, but with arithmetic instead of geometric
           progression.
arange : Similar to linspace, with the step size specified instead of the
         number of samples.
:ref:`how-to-partition`

Notes
-----
If the inputs or dtype are complex, the output will follow a logarithmic
spiral in the complex plane.  (There are an infinite number of spirals
passing through two points; the output will follow the shortest such path.)

Examples
--------
>>> import numpy as np
>>> np.geomspace(1, 1000, num=4)
array([    1.,    10.,   100.,  1000.])
>>> np.geomspace(1, 1000, num=3, endpoint=False)
array([   1.,   10.,  100.])
>>> np.geomspace(1, 1000, num=4, endpoint=False)
array([   1.        ,    5.62341325,   31.6227766 ,  177.827941  ])
>>> np.geomspace(1, 256, num=9)
array([   1.,    2.,    4.,    8.,   16.,   32.,   64.,  128.,  256.])

Note that the above may not produce exact integers:

>>> np.geomspace(1, 256, num=9, dtype=int)
array([  1,   2,   4,   7,  16,  32,  63, 127, 256])
>>> np.around(np.geomspace(1, 256, num=9)).astype(int)
array([  1,   2,   4,   8,  16,  32,  64, 128, 256])

Negative, decreasing, and complex inputs are allowed:

>>> np.geomspace(1000, 1, num=4)
array([1000.,  100.,   10.,    1.])
>>> np.geomspace(-1000, -1, num=4)
array([-1000.,  -100.,   -10.,    -1.])
>>> np.geomspace(1j, 1000j, num=4)  # Straight line
array([0.   +1.j, 0.  +10.j, 0. +100.j, 0.+1000.j])
>>> np.geomspace(-1+0j, 1+0j, num=5)  # Circle
array([-1.00000000e+00+1.22464680e-16j, -7.07106781e-01+7.07106781e-01j,
        6.12323400e-17+1.00000000e+00j,  7.07106781e-01+7.07106781e-01j,
        1.00000000e+00+0.00000000e+00j])

Graphical illustration of `endpoint` parameter:

>>> import matplotlib.pyplot as plt
>>> N = 10
>>> y = np.zeros(N)
>>> plt.semilogx(np.geomspace(1, 1000, N, endpoint=True), y + 1, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.semilogx(np.geomspace(1, 1000, N, endpoint=False), y + 2, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.axis([0.5, 2000, 0, 3])
[0.5, 2000, 0, 3]
>>> plt.grid(True, color='0.7', linestyle='-', which='both', axis='both')
>>> plt.show()

z&Geometric sequence cannot include zeroTr   ç      $@)r   r   r@   r   Fr   r!   )r   r'   r0   r%   r
   rM   Úzerosr   r4   ÚsignÚlog10rR   r1   )r   r   r   r   r   r   r7   Úout_signÚ	log_startÚlog_stopÚresults   &&&&&&     r   Ú	geomspacer^   6  sI  € ôH �uÓ€EÜ�dÓ€DÜ
‡w‚wˆu˜‰z×ÒœcŸgšg d¨a¡i×0Ò0ÜÐAÓBÐBä	�U¤%¨£*¬c¯iªi¸¸EÓ.BÓ	C€BØ‚}Ø‰ô —	’	˜%Ó ˆð
 �L‰L˜ $ˆLÓ'€EØ�;‰;�r ˆ;Ó%€Dô
 �xŠx˜‹€HØ	Õ€EØ�?€Dä—	’	˜%Ó €IÜ�yŠy˜‹€HÜ�i¨sØ'¨d¸"ô>€Fð
 ˆQ„wØˆq‰	Ø�Œ7—xØ�2‰Jà
Õ€Fàˆq„yÜ—’˜f a¨Ó.ˆà�=‰=˜ Uˆ=Ó+Ð+r   c                óÚ   € Rp\        V \        P                  \        P                  \        34      '       d   R# \        V \
        4      '       d   V P                  V,          '       d   R# R# )zœ
Returns true if the only way to set the docstring of `obj` from python is
via add_docstring.

This function errs on the side of being overly conservative.
FTi   )rL   ÚtypesÚFunctionTypeÚ
MethodTypeÚpropertyr,   Ú	__flags__)ÚobjÚPy_TPFLAGS_HEAPTYPEs   & r   Ú_needs_add_docstringrg   Ç  sO   € ð !Ðä�#œ×*Ñ*¬E×,<Ñ,<¼hÐG×HÒHÙä�#”t×Ò §¡Ð1D×!DÔ!DÙár   c                 ó¶   € V'       d3   \        V 4      '       g"   \        P                  ! R V  R2\        ^R7        \	        W4       R#   \
         d     R# i ; i)z,add_newdoc was used on a pure-python object z-. Prefer to attach it directly to the source.)Ú
stacklevelN)rg   ÚwarningsÚwarnÚUserWarningr   Ú	Exception)re   ÚdocÚwarn_on_pythons   &&&r   Ú_add_docstringrp   Ù  sS   € ßÔ2°3×7Ò7Ü�ŠØ:¸3¸%ð @:ð :äØõ		ð
Ü�cÖøÜô Úðús   ¼A	 Á	AÁAc                óô  € \        \        V \        4       / V.4      V4      p\        V\        4      '       d:   RV9   d   \
        P                  ! WB4      p\        WBP                  4       V4       R# \        V\        4      '       d+   Vw  rV\        \        WE4      VP                  4       V4       R# \        V\        4      '       d2   V F)  w  rV\        \        WE4      VP                  4       V4       K+  	  R# R# )a“  
Add documentation to an existing object, typically one defined in C

The purpose is to allow easier editing of the docstrings without requiring
a re-compile. This exists primarily for internal use within numpy itself.

Parameters
----------
place : str
    The absolute name of the module to import from
obj : str or None
    The name of the object to add documentation to, typically a class or
    function name.
doc : {str, Tuple[str, str], List[Tuple[str, str]]}
    If a string, the documentation to apply to `obj`

    If a tuple, then the first element is interpreted as an attribute
    of `obj` and the second as the docstring to apply -
    ``(method, docstring)``

    If a list, then each element of the list should be a tuple of length
    two - ``[(method1, docstring1), (method2, docstring2), ...]``
warn_on_python : bool
    If True, the default, emit `UserWarning` if this is used to attach
    documentation to a pure-python object.

Notes
-----
This routine never raises an error if the docstring can't be written, but
will raise an error if the object being documented does not exist.

This routine cannot modify read-only docstrings, as appear
in new-style classes or built-in functions. Because this
routine never raises an error the caller must check manually
that the docstrings were changed.

Since this function grabs the ``char *`` from a c-level str object and puts
it into the ``tp_doc`` slot of the type of `obj`, it violates a number of
C-API best-practices, by:

- modifying a `PyTypeObject` after calling `PyType_Ready`
- calling `Py_INCREF` on the str and losing the reference, so the str
  will never be released

If possible it should be avoided.
z${ARRAY_FUNCTION_LIKE}N)ÚgetattrÚ
__import__ÚglobalsrL   Ústrr   Úget_array_function_like_docrp   ÚstripÚtupleÚlist)Úplacere   rn   ro   ÚnewÚattrÚ	docstrings   &&&&   r   Ú
add_newdocr~   æ  sº   € ô^ ”*˜U¤G£I¨r°C°5Ó9¸3Ó
?€CÜ�#”s×ÒØ# sÔ*Ü×7Ò7¸ÓAˆCÜ�sŸI™I›K¨Ö8Ü	�Cœ×	Ò	Ø‰ˆÜ”w˜sÓ)¨9¯?©?Ó+<¸nÖMÜ	�Cœ×	Ò	Û"‰OˆDÜÜ˜Ó" I§O¡OÓ$5°~öó  #ñ 
r   )rR   r>   r^   )NNNNN)é2   TFNr   )r   TrV   Nr   )NNNN)r   TNr   )T)Ú	functoolsr#   r`   rj   r   r*   Únumpy._corer   Únumpy._core._multiarray_umathr   Únumpy._core.multiarrayr   Ú r   r'   r   r   r	   r
   Ú__all__ÚpartialÚarray_function_dispatchr   r>   rA   rR   rT   r^   rg   rp   r~   r   r   r   Ú<module>rˆ      sÏ   ðÛ Û Û Û ã Ý !Ý :Ý 0å ß 7Ó 7â
/€ð $×+Ò+Ø×%Ñ%¨gô7Ð ñØ:>õñ
 Ð-Ó.ñ`Ø#ô`ó /ð`ôFñ
 Ð-Ó.ój8ó /ðj8ôZñ
 Ð.Ó/óM,ó 0ðM,ò`ò$
ö;r   