§ <ˆj|Mãó^—ddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z ddl mZddlmZgd¢Zejejd¬ ¦«Z dd „Zee¦« dd„¦«Z dd„Zee¦« dd„¦«Z dd„Zee¦«dd„¦«Zd„Zd„Zdd„ZdS)éNé)Únumeric)Ú result_typeÚNaNÚ asanyarrayÚndim)Ú add_docstring)Ú overrides)ÚlogspaceÚlinspaceÚ geomspaceÚnumpy)Úmodulecó —||fS©N©)ÚstartÚstopÚnumÚendpointÚretstepÚdtypeÚaxiss úO/opt/cloudlinux/venv/lib64/python3.11/site-packages/numpy/core/function_base.pyÚ_linspace_dispatcherró €à �4ˆ=Ðóé2TFcó°—tj|¦«}|dkrtd|z¦«‚|r|dz n|}t|¦«dz}t|¦«dz}t ||t |¦«¦«}|€|}d} nt j|t j¦«} ||z } t j d||¬¦«  dd t| ¦«zz¦«} |dkrnt j | ¦«} | |z } | r| dkn)t j| dk¦«  ¦«}|r| |z} | r| | z} n | | z} n| r| | z} n| | z} n t} | | z} | |z } |r |dkr|| d <|dkrt j| d|¦«} | rt j| | ¬ ¦«|r|  |d¬ ¦«| fS|  |d¬ ¦«S) aN 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.16.0 Non-scalar `start` and `stop` are now supported. .. 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. .. versionadded:: 1.9.0 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. .. versionadded:: 1.16.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 -------- >>> 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') [] >>> plt.plot(x2, y + 0.5, 'o') [] >>> plt.ylim([-0.5, 1]) (-0.5, 1) >>> plt.show() rz,Number of samples, %s, must be non-negative.rgð?NF)r)éÿÿÿÿ)r)r .)Úout©Úcopy)ÚoperatorÚindexÚ ValueErrorrrÚfloatÚ_nxÚ issubdtypeÚintegerÚarangeÚreshaperÚisscalarÚanyrÚmoveaxisÚfloorÚastype)rrrrrrrÚdivÚdtÚ integer_dtypeÚdeltaÚyÚ _mult_inplaceÚstepÚ any_step_zeros rr r s$€õD Œ.˜Ñ Ô €CØ ˆQ‚w€wÝÐGÈ#ÑMÑNÔNÐNØÐ (ˆ3�‰7ˆ7 S€Cõ �uÑ Ô  Ñ #€EÝ �tÑ Ô  Ñ #€Då �U˜D¥%¨¡*¤*Ñ -Ô -€BØ €}؈؈ ˆ 圠u­c¬kÑ:Ô:ˆ à �5‰L€EÝ Œ �1�c Ð$Ñ$Ô$×,Ò,¨U°T½DÀ¹K¼KÑ5GÑ-GÑHÔH€Að ˆQ‚w€wÝœ  UÑ+Ô+ˆ Ø�s‰{ˆà&Ð KˆD�AŠIˆI­C¬N¸4À1º9Ñ,EÔ,E×,IÒ,IÑ,KÔ,Kð à ð à �‰HˆAØð Ø�U‘ ��à˜‘I��àð Ø�T‘ ��à˜‘H��õˆà �‰Iˆàˆ�J€Aàð�C˜!’G�G؈ˆ'‰ à ˆq‚y€yÝ ŒL˜˜A˜tÑ $Ô $ˆàðÝ Œ �!˜ÐÑÔÐàð+Ø�xŠx˜ EˆxÑ*Ô*¨DÐ0Ð0à�xŠx˜ EˆxÑ*Ô*Ð*rcó —|||fSrr)rrrrÚbaserrs rÚ_logspace_dispatcherr<¹s€à �4˜Ð Ðrç$@có:‡—tj|||¦«jŠˆfd„|||fD¦«\}}}t|||||¬¦«}tj||¬¦«}|€t j||¦«St j||¦« |d¬¦«S)a 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.16.0 Non-scalar `start` and `stop` are now supported. .. 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. .. versionadded:: 1.16.0 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 -------- >>> 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') [] >>> plt.plot(x2, y + 0.5, 'o') [] >>> plt.ylim([-0.5, 1]) (-0.5, 1) >>> plt.show() c3óH•K—|]}tj|dd‰¬¦«V—ŒdS)FT)r#ÚsubokÚndminN)ÚnpÚarray)Ú.0ÚaÚndmaxs €rú zlogspace..#sJøèè€ððà õ Œ�˜ d°%Ð8Ñ8Ô8ððððððr)rrr)rNFr")rBÚ broadcastrr Ú expand_dimsr(Úpowerr1) rrrrr;rrr6rFs @rr r ¾s¼ø€õH ŒL˜  dÑ +Ô +Ô 0€Eððððà˜˜tÐ$ðñôÑ€Eˆ4�õ �˜ #°¸tÐDÑDÔD€AÝ Œ>˜$ TÐ *Ñ *Ô *€DØ €}ÝŒy˜˜qÑ!Ô!Ð!Ý Œ9�T˜1Ñ Ô × $Ò $ U°Ð $Ñ 7Ô 7Ð7rcó —||fSrr)rrrrrrs rÚ_geomspace_dispatcherrL.rrc ó—t|¦«}t|¦«}tj|dk¦«stj|dk¦«rtd¦«‚t ||t |¦«tjd|¦«¦«}|€|}ntj|¦«}| |d¬¦«}| |d¬¦«}tj tj ||¦«j |¦«}tj |tj ¦«rP|jdk|jdkz}tj|¦«r%||j||<||j||<d||<tj|¦«d ktj|¦«d kz} tj| ¦«rEtj||| ¬ ¦«tj||| ¬ ¦«tj||| ¬ ¦«tj|¦«} tj|¦«} t'| | ||d |¬ ¦«} |dkr|| d<|d kr|r|| d <|| z} |dkrtj| d|¦«} |  |d¬¦«S)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. .. versionchanged:: 1.16.0 Non-scalar `start` and `stop` are now supported. 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. .. versionadded:: 1.16.0 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 -------- >>> 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') [] >>> plt.semilogx(np.geomspace(1, 1000, N, endpoint=False), y + 2, 'o') [] >>> 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() rz&Geometric sequence cannot include zerorNTr"gyð?r )r!Úwherer=)rrr;rrF)rr(r.r&rr'Úzerosrr1ÚonesrHÚshaper)ÚcomplexfloatingÚrealÚimagÚsignÚnegativeÚlog10r r/) rrrrrrr3Úout_signÚall_imagÚ both_negativeÚ log_startÚlog_stopÚresults rr r 3sw€õP �uÑ Ô €EÝ �dÑ Ô €DÝ „wˆu˜ŠzÑÔðC�cœg d¨a¢iÑ0Ô0ðCÝÐAÑBÔBÐBå �U˜D¥%¨¡*¤*­c¬i¸¸EÑ.BÔ.BÑ CÔ C€BØ €}؈ˆõ” ˜%Ñ Ô ˆð �LŠL˜ $ˆLÑ 'Ô '€EØ �;Š;�r ˆ;Ñ %Ô %€DåŒx�œ  e¨TÑ2Ô2Ô8¸"Ñ=Ô=€Hõ „~�b�#Ô-Ñ.Ô.ð$Ø”J "Ò$¨¬°bªÑ9ˆÝ Œ7�8Ñ Ô ð $Ø# HœoÔ2ˆE�(‰OØ! (œ^Ô0ˆD�‰NØ!#ˆH�XÑ å”X˜e‘_”_¨Ò*­s¬x¸©~¬~ÀÒ/CÑD€MÝ „wˆ}ÑÔðBÝ Œ �U ¨]Ð;Ñ;Ô;Ð;Ý Œ �T˜t¨=Ð9Ñ9Ô9Ð9Ý Œ �X 8°=ÐAÑAÔAÐAå” ˜%Ñ Ô €IÝŒy˜‰Œ€HÝ �i ¨sØ'¨d¸%ðAñAôA€Fð  ˆQ‚w€w؈ˆq‰ Ø �Š7ˆ7�xˆ7؈F�2‰Jà ˜Ñ €Fà ˆq‚y€yÝ”˜f a¨Ñ.Ô.ˆà �=Š=˜ Uˆ=Ñ +Ô +Ð+rcó¨—d}t|tjtjtf¦«rdSt|t ¦«r |j|zrdSdS)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. iFT)Ú isinstanceÚtypesÚ FunctionTypeÚ MethodTypeÚpropertyÚtypeÚ __flags__)ÚobjÚPy_TPFLAGS_HEAPTYPEs rÚ_needs_add_docstringrhÑsY€ð!Ðå�#�Ô*­EÔ,<½hÐGÑHÔHð؈uå�#•tÑÔð ¤Ð1DÑ!Dð؈uà ˆ4rcóÊ—|r>t|¦«s/tjd |¦«td¬¦« t ||¦«dS#t $rYdSwxYw)Nz[add_newdoc was used on a pure-python object {}. Prefer to attach it directly to the source.é)Ú stacklevel)rhÚwarningsÚwarnÚformatÚ UserWarningr Ú Exception)rfÚdocÚwarn_on_pythons rÚ_add_docstringrsãs†€ØðÕ2°3Ñ7Ô7ðÝŒ ð :ç ŠV�C‰[Œ[Ý Øð  ñ ô ð ð  Ý�c˜3ÑÔÐÐÐøÝ ð ð ð Ø ˆˆð øøøsÁAÁ A"Á!A"có—tt|t¦«i|g¦«|¦«}t|t¦«r%t || ¦«|¦«dSt|t¦«r8|\}}t t||¦«| ¦«|¦«dSt|t¦«r9|D]8\}}t t||¦«| ¦«|¦«Œ7dSdS)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 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. N) ÚgetattrÚ __import__Úglobalsr_ÚstrrsÚstripÚtupleÚlist)ÚplacerfrqrrÚnewÚattrÚ docstrings rÚ add_newdocr€ñs €õ\ •*˜U¥G¡I¤I¨r°C°5Ñ9Ô9¸3Ñ ?Ô ?€CÝ�#•sÑÔðRÝ�s˜CŸIšI™KœK¨Ñ8Ô8Ð8Ð8Ð8Ý �C�Ñ Ô ðR؉ˆˆiÝ•w˜s DÑ)Ô)¨9¯?ª?Ñ+<Ô+<¸nÑMÔMÐMÐMÐMÝ �C�Ñ Ô ðRØ"ð Rð R‰OˆD�)Ý �7 3¨Ñ-Ô-¨y¯ªÑ/@Ô/@À.Ñ QÔ QÐ QÐ QðRðRð Rð Rr)NNNNN)rTFNr)rTr=Nr)NNNN)rTNr)T)Ú functoolsrlr$r`rrBÚrr(rrrrÚnumpy.core.multiarrayr Ú numpy.corer Ú__all__ÚpartialÚarray_function_dispatchrr r<r rLr rhrsr€rrrúrˆsÿðØÐÐÐØ€€€Ø€€€Ø € € € àÐÐÐØÐÐÐÐÐØ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø/Ð/Ð/Ð/Ð/Ð/Ø Ð Ð Ð Ð Ð à /Ð /Ð /€ð,˜)Ô+Ø Ô%¨gð7ñ7ô7ÐðHLØ*.ððððð ÐÐ-Ñ.Ô.ØFJØð]+ð]+ð]+ñ/Ô.ð]+ð@EIØ*.ððððð ÐÐ-Ñ.Ô.ØBFØðl8ðl8ðl8ñ/Ô.ðl8ð^GKØ#ððððð ÐÐ.Ñ/Ô/ðZ,ðZ,ðZ,ñ0Ô/ðZ,ðzððð$  ð  ð  ð6Rð6Rð6Rð6Rð6Rð6Rr