+
    LV-j/  ã                   óP  € ^ RI Ht ^ 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Ht . ROt]P                   ! 4       t]P$                  ! 4       tRR ltR tR tR	 tR
 tR tR^ R^ R^R^/tR tR t]! RR7      ]P:                  R 4       4       t]! RR7      R 4       tR# )é    )ÚNumberN)Úcopy_if_needed)Úxp_capabilities)Ú	good_sizeÚprev_good_sizec                óê   € \        V \        4      '       d   V 3p  V  Uu. uF  p\        P                  ! V4      NK  	  p pV # u upi   \         d!   pT;'       g    Rp\        T R24      ThRp?ii ; i)zúConvert ``x`` to an iterable sequence of int

Parameters
----------
x : value, or sequence of values, convertible to int
name : str, optional
    Name of the argument being converted, only used in the error message

Returns
-------
y : ``List[int]``
Úvaluez) must be a scalar or iterable of integersN)Ú
isinstancer   ÚoperatorÚindexÚ	TypeErrorÚ
ValueError)ÚxÚnameÚaÚes   &&  Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/scipy/fft/_pocketfft/helper.pyÚ_iterable_of_intr      sz   € ô �!”V×ÒØˆDˆðTÙ()Ó*© 1ŒX�^Š^˜AÖ©ˆÐ*ð
 €Hùò +øÜô TØ�ˆ�wˆÜ˜D˜6Ð!JÐKÓLÐRSÐSûðTús'   ›A ŸA¾A ÁA ÁA2ÁA-Á-A2c                ó´  a € VRJ pVRJ pV'       g¯   \        VR4      pV Uu. uF  qU^ 8  d   VS P                  ,           MTNK   	  pp\        ;QJ d    V 3R lV 4       F  '       g   K   RM	  RM! V 3R lV 4       4      '       d   \        R4      h\	        \        V4      4      \	        V4      8w  d   \        R4      hV'       gÏ   \        VR4      pV'       d%   \	        V4      \	        V4      8w  d   \        R	4      hV'       dV   \	        V4      S P                  8”  d   \        R
4      h\        S P                  \	        V4      ,
          S P                  4      p\        W4       UUu. uF!  w  reVR8X  d   S P                  V,          MTNK#  	  pppMUV'       d,   \        S P                  4      p\        S P                  4      pM"V Uu. uF  pS P                  V,          NK  	  pp\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        RV R24      h\        V4      \        V4      3# u upi u uppi u upi )a²  
Handle shape and axes arguments for N-D transforms.

Returns the shape and axes in a standard form, taking into account negative
values and checking for various potential errors.

Parameters
----------
x : ndarray
    The input array.
shape : int or array_like of ints or None
    The shape of the result. If both `shape` and `axes` (see below) are
    None, `shape` is ``x.shape``; if `shape` is None but `axes` is
    not None, then `shape` is ``numpy.take(x.shape, axes, axis=0)``.
    If `shape` is -1, the size of the corresponding dimension of `x` is
    used.
axes : int or array_like of ints or None
    Axes along which the calculation is computed.
    The default is over all axes.
    Negative indices are automatically converted to their positive
    counterparts.

Returns
-------
shape : tuple
    The shape of the result as a tuple of integers.
axes : list
    Axes along which the calculation is computed, as a list of integers.
NÚaxesc              3   óZ   <"  € T F   qSP                   8¬  ;'       g    V^ 8  x € K"  	  R# 5i)r   N)Úndim)Ú.0r   r   s   & €r   Ú	<genexpr>Ú*_init_nd_shape_and_axes.<locals>.<genexpr>T   s&   øé € Ð2©T¨�A—F‘F‰{×#Ð#˜a !™eÔ#«Tùs   ƒ+�+TFz$axes exceeds dimensionality of inputzall axes must be uniqueÚshapezBwhen given, axes and shape arguments have to be of the same lengthz)shape requires more axes than are presentc              3   ó*   "  € T F	  q^8  x € K  	  R# 5i)é   N© )r   Úss   & r   r   r   k   s   é € Ð
 ™%�QˆqŽ5›%ùs   ‚úinvalid number of data points (ú) specifiedéÿÿÿÿ)r   r   Úanyr   ÚlenÚsetÚrangeÚzipr   ÚlistÚtuple)r   r   r   ÚnoshapeÚnoaxesr   r    s   f&&    r   Ú_init_nd_shape_and_axesr-   /   sÕ  ø€ ð< �tˆm€GØ�Tˆ\€FçÜ  fÓ-ˆÙ48Ó9±D¨q !œe��A—F‘F–
¨Ò*±DˆÐ9ç‹3Ô2©TÓ2�3�3Š3Ô2©TÓ2×2Ò2ÜÐCÓDÐDÜŒs�4‹y‹>œS ›YÔ&ÜÐ6Ó7Ð7çÜ  ¨Ó0ˆç”C˜“I¤ U£Ô+Üð >ó ?ð ?çÜ�5‹z˜AŸF™FÔ"Ü Ð!LÓMÐMÜ˜Ÿ™¤# e£*Õ,¨a¯f©fÓ5ˆDä:=¸eÔ:JÔKÑ:J±$°!˜q Bœw�—‘˜–¨AÒ-Ñ:JˆÑKˆß	Ü�Q—W‘W“ˆÜ�Q—V‘V‹}‰á%)Ó*¡T �—‘˜—�¡TˆÐ*ç
ƒsÑ
 ™%Ó
 ‡s‡s‚sÑ
 ™%Ó
 × Ò ÜØ-¨e¨W°KÐ@óBð 	Bô �‹<œ˜d›Ð#Ð#ùò; :ùó$ Lùò
 +s   ¢$I
Å+'IÇIc                ó  € \        V R4      '       g   \        P                  ! V 4      p V P                  \        P                  8X  d&   \        P                  ! V \        P
                  4      # V P                  P                  R9  d&   \        P                  ! V \        P                  4      # V P                  P                  R4      pV P                  R,          '       g   RM\        p\        P                  ! WVR7      # )z`
Convert to array with floating or complex dtype.

float16 values are also promoted to float32.
ÚdtypeÚfcÚ=ÚALIGNEDT)r/   Úcopy)ÚhasattrÚnpÚasarrayr/   Úfloat16Úfloat32ÚkindÚfloat64ÚnewbyteorderÚflagsr   Úarray)r   r/   r3   s   &  r   Ú	_asfarrayr>   r   s¤   € ô �1�g×ÒÜ�JŠJ�q‹Mˆà‡w�w”"—*‘*ÔÜ�zŠz˜!œRŸZ™ZÓ(Ð(Ø	
�‰�‰˜TÔ	!Ü�zŠz˜!œRŸZ™ZÓ(Ð(ð �G‰G× Ñ  Ó%€Eà—w‘w˜y×)Ô)‰4¬~€DÜ�8Š8�A¨Ô.Ð.ó    c                ó”   € WJ d   R# \        V\        P                  4      '       g   \        VR4      '       d   R# V P                  RJ # )zp
Strict check for `arr` not sharing any data with `original`,
under the assumption that arr = asarray(original)
FÚ	__array__N)r
   r5   Úndarrayr4   Úbase)ÚarrÚoriginals   &&r   Ú_datacopiedrF   †   s;   € ð
 ƒÙÜ�h¤§
¡
×+Ò+´¸À+×0NÒ0NÙØ�8‰8�tÐÐr?   c                óê  € Rp\        R4      .V P                  ,          p\        W4       FN  w  rVV P                  V,          V8¼  d   \        ^ V4      WF&   K-  \        ^ V P                  V,          4      WF&   RpKP  	  \	        V4      pV'       g   W,          R3# \        V P                  4      p\        W4       F	  w  rXWWV&   K  	  \        P                  ! WpP                  4      p	W,          W”&   V	R3# )z5Internal auxiliary function for _raw_fft, _raw_fftnd.FNT)	Úslicer   r(   r   r*   r)   r5   Úzerosr/   )
r   r   r   Ú	must_copyr   ÚnÚaxr    ÚaxisÚzs
   &&&       r   Ú
_fix_shaperO   ’   sË   € à€Iô �4‹[ˆM˜!Ÿ&™&Õ €EÜ�UÖ!‰ˆØ�7‰7�2�;˜!ÔÜ˜a ›ˆE‹Iä˜a §¡¨¥Ó-ˆE‰IØŠIñ "ô �%‹L€EçØ�x˜ˆÐäˆQ�W‰W‹€AÜ�uÖ#‰ˆØˆ$‹ñ $ô 	�Š�—G‘GÓ€AØ�x€A�HØˆdˆ7€Nr?   c                 óJ   € V^8  d   \        RV R24      h\        W3V34      # )r   r!   r"   )r   rO   )r   rK   rM   s   &&&r   Ú_fix_shape_1drQ   ­   s5   € Øˆ1„uÜØ-¨a¨S°Ð<ó>ð 	>ô �a˜ ˜wÓ'Ð'r?   ÚbackwardÚorthoÚforwardc                ó„   €  \         V ,          pV'       d   V# ^V,
          #   \         d    \        RT : R24      Rhi ; i)zAReturns the pypocketfft normalization mode from the norm argumentzInvalid norm value z,, should be "backward", "ortho" or "forward"N)Ú	_NORM_MAPÚKeyErrorr   )ÚnormrT   Úinorms   && r   Ú_normalizationrZ   ¸   sQ   € ð=Ü˜$•ˆßˆuÐ0 a¨%¥iÐ0øÜô =ÜØ! $¡ð *2ð 2ó3à8<ð	=ð=ús   ‚" —" ™" ¢?c                 óÒ   € V f   \        \        R^4      # V ^ 8  d9   V \        ) 8¼  d   V ^\        ,           ,          p V # \        RV  R\        )  24      hV ^ 8X  d   \        R4      hV # )NÚdefault_workersz workers value out of range; got z, must not be less than zworkers must not be zero)ÚgetattrÚ_configÚ
_cpu_countr   )Úworkerss   &r   Ú_workersra   Ã   s}   € Ø‚Ü”wÐ 1°1Ó5Ð5à�„{Ø”z�kÔ!Ø�qœ:•~Õ%ˆGð €Nô Ð?À¸yð I+Ü,6¨;¨-ð9ó :ð :à	�AŒÜÐ3Ó4Ð4à€Nr?   T)Úout_of_scopec              #  ó²   "  € \        4       p\        \        P                  ! V 4      4      \        n         Rx € V\        n        R#   T\        n        i ; i5i)al  Context manager for the default number of workers used in `scipy.fft`

Parameters
----------
workers : int
    The default number of workers to use

Examples
--------
>>> import numpy as np
>>> from scipy import fft, signal
>>> rng = np.random.default_rng()
>>> x = rng.standard_normal((128, 64))
>>> with fft.set_workers(4):
...     y = signal.fftconvolve(x, x)

N)Úget_workersra   r   r   r^   r\   )r`   Úold_workerss   & r   Úset_workersrf   Ó   s<   é € ô( “-€KÜ&¤x§~¢~°gÓ'>Ó?„GÔð.Ûà"-ŒÖø +ŒÕüs   ‚3A¶A ºAÁAÁAc                 ó$   € \        \        R^4      # )z¿Returns the default number of workers within the current context

Examples
--------
>>> from scipy import fft
>>> fft.get_workers()
1
>>> with fft.set_workers(4):
...     fft.get_workers()
4
r\   )r]   r^   r   r?   r   rd   rd   ï   s   € ô ”7Ð-¨qÓ1Ð1r?   )r   r   rf   rd   )N) Únumbersr   r   ÚosÚ	threadingÚ
contextlibÚnumpyr5   Úscipy._lib._utilr   Úscipy._lib._array_apir   Úpypocketfftr   r   Ú__all__Úlocalr^   Ú	cpu_countr_   r   r-   r>   rF   rO   rQ   rV   rZ   ra   Úcontextmanagerrf   rd   r   r?   r   Ú<module>rt      sÃ   ðÝ Û Û 	Û Û ã å +Ý 1÷ 3ò H€à
�/Š/Ó
€Ø�\Š\‹^€
ôò2@$òF/ò(	òò6(ð �1�j ! W¨a°¸AÐ>€	ò=òñ  ˜dÔ#Ø×Ññ.ó ó $ð.ñ4 ˜dÔ#ñ2ó $ò2r?   