ó
    EñiÊ  ã                   óÒ  • S r SSKrSSKrSSKJr  SSKJrJ	r	J
r
JrJrJrJr    S SS.S jjr\R                   " \S	5      rS
\l        \R                   " \S5      rS\l          S SS.S jjr\R                   " \S	5      rS\l        \R                   " \S5      rS\l          S SS.S jjr\R                   " \S	5      rS\l        \R                   " \S5      rS\l        S!SS.S jjrS!SS.S jjr  S"SS.S jjr\R                   " \S	5      rS\l        \R                   " \S5      rS\l          S"SS.S jjr\R                   " \S	5      r S\ l        \R                   " \S5      r!S\!l          S"SS.S jjr"\R                   " \"S	5      r#S\#l        \R                   " \"S5      r$S\$l        S#S jr%\R                   " \%S	5      r&S\&l        \R                   " \%S5      r'S\'l        g)$z(
Discrete Fourier Transforms - basic.py
é    Né   )Úpypocketfft)Ú	_asfarrayÚ_init_nd_shape_and_axesÚ_datacopiedÚ
_fix_shapeÚ_fix_shape_1dÚ_normalizationÚ_workersF)Úplanc                ó   • Ub  [        S5      e[        U5      nU=(       d    [        X�5      n[        X@5      n[	        U5      nUb  [        X‚U5      u  p‰U=(       d    U	nO1UR                  U   S:  a  SUR                  U    S3n
[        U
5      eU(       a  UR                  R                  S:X  a  UOSn[        R                  " Xƒ4XX¶5      $ )z?Return discrete Fourier transform of real or complex sequence. NúFPassing a precomputed plan is not yet supported by scipy.fft functionsr   úinvalid number of data points (ú) specifiedÚc)ÚNotImplementedErrorr   r   r
   r   r	   ÚshapeÚ
ValueErrorÚdtypeÚkindÚpfftÚc2c)ÚforwardÚxÚnÚaxisÚnormÚoverwrite_xÚworkersr   ÚtmpÚcopiedÚmessageÚouts               ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/scipy/fft/_pocketfft/basic.pyr   r      sÇ   € ð ÑÜ!ð #Eó Fð 	Fä
�A‹,€CØ×4¤¨SÓ!4€KÜ˜$Ó(€DÜ�wÓ€Gà�}Ü# C¨DÓ1‰ˆØ!×+ V‰Ø	�‰�4‰˜1Ó	Ø3°C·I±I¸d±OÐ3DÀKÐPˆÜ˜Ó!Ð!æ #§)¡)§.¡.°CÓ"7‰3¸T€Cä�8Š8�C˜ '°Ó>Ð>ó    TÚfftÚifftc                ób  • Ub  [        S5      e[        U5      n[        X@5      n[        U5      n[        R
                  " U5      (       d  [        S5      eUb  [        X‚U5      u  p‰O/UR                  U   S:  a  [        SUR                  U    S35      e[        R                  " Xƒ4XSU5      $ )z0
Discrete Fourier transform of a real sequence.
Nr   úx must be a real sequencer   r   r   )r   r   r
   r   ÚnpÚ	isrealobjÚ	TypeErrorr	   r   r   r   Úr2c©
r   r   r   r   r   r   r   r   r    Ú_s
             r$   r-   r-   (   s³   € ð
 ÑÜ!ð #Eó Fð 	Fä
�A‹,€CÜ˜$Ó(€DÜ�wÓ€Gä�<Š<˜×ÑÜÐ3Ó4Ð4à�}Ü˜s tÓ,‰ˆˆQØ	�‰�4‰˜1Ó	ÜÐ:¸3¿9¹9ÀT¹?Ð:KÈ;ÐWÓXÐXô �8Š8�C˜ '°°wÓ?Ð?r%   ÚrfftÚihfftc          	      óZ  • Ub  [        S5      e[        U5      n[        X@5      n[        U5      n[        R
                  " U5      (       a  US-   nUc+  UR                  U   S-
  S-  nUS:  a  [        SU S35      eO[        X‚S-  S-   U5      u  p‰[        R                  " Xƒ4X USU5      $ )z?
Return inverse discrete Fourier transform of real sequence x.
Nr   ù                r   é   zInvalid number of data points (r   )r   r   r
   r   r*   r+   r   r   r	   r   Úc2rr.   s
             r$   r5   r5   F   sÈ   € ð
 ÑÜ!ð #Eó Fð 	Fä
�A‹,€CÜ˜$Ó(€DÜ�wÓ€Gô 
‡|‚|�C×ÑØ�C‰iˆð 	�yØ�Y‰Y�t‰_˜qÑ  AÑ%ˆØˆq‹5ÜÐ>¸q¸cÀÐMÓNÐNð ô ˜s¨¡T¨Q¡J°Ó5‰ˆô �8Š8�C˜ !¨d°D¸'ÓBÐBr%   ÚhfftÚirfftc                ó8   • Ub  [        S5      e[        XX#XE5      $ )z8
2-D discrete Fourier transform of a Hermitian sequence
r   )r   Úhfftn©r   ÚsÚaxesr   r   r   r   s          r$   Úhfft2r=   h   s.   € ð
 ÑÜ!ð #Eó Fð 	Fä��t ;Ó8Ð8r%   c                ó8   • Ub  [        S5      e[        XX#XE5      $ )z@
2-D discrete inverse Fourier transform of a Hermitian sequence
r   )r   Úihfftnr:   s          r$   Úihfft2r@   s   s.   € ð
 ÑÜ!ð #Eó Fð 	Fä�!˜ KÓ9Ð9r%   c                ór  • Ub  [        S5      e[        U5      n[        X‚U5      u  p“U=(       d    [        X�5      n[	        U5      n[        U5      S:X  a  U$ [        X‰U5      u  pŠU=(       d    U
n[        X@5      nU(       a  UR                  R                  S:X  a  UOSn[        R                  " XƒXX¶5      $ )z5
Return multidimensional discrete Fourier transform.
Nr   r   r   )r   r   r   r   r   Úlenr   r
   r   r   r   r   )r   r   r;   r<   r   r   r   r   r    r   r!   r#   s               r$   Úc2cnrC   ~   s¬   € ð
 ÑÜ!ð #Eó Fð 	Fä
�A‹,€Cä)¨#°$Ó7�K€EØ×4¤¨SÓ!4€KÜ�wÓ€Gä
ˆ4ƒy�Aƒ~Øˆä˜S¨Ó.�K€CØ×' €Kä˜$Ó(€DÞ #§)¡)§.¡.°CÓ"7‰3¸T€Cä�8Š8�C˜w¨cÓ;Ð;r%   ÚfftnÚifftnc                óJ  • Ub  [        S5      e[        U5      n[        R                  " U5      (       d  [	        S5      e[        X‚U5      u  p“[        X‰U5      u  pŠ[        X@5      n[        U5      n[        U5      S:X  a  [        S5      e[        R                  " XƒXSU5      $ )z@Return multidimensional discrete Fourier transform of real inputNr   r)   r   ú#at least 1 axis must be transformed)r   r   r*   r+   r,   r   r   r
   r   rB   r   r   r-   )r   r   r;   r<   r   r   r   r   r    r   r/   s              r$   Úr2cnrH   �   s¡   € ð ÑÜ!ð #Eó Fð 	Fä
�A‹,€Cä�<Š<˜×ÑÜÐ3Ó4Ð4ä)¨#°$Ó7�K€EÜ˜ DÓ)�F€CÜ˜$Ó(€DÜ�wÓ€Gä
ˆ4ƒy�Aƒ~ÜÐ>Ó?Ð?ô �8Š8�C˜w¨d°GÓ<Ð<r%   Úrfftnr?   c          	      óÚ  • Ub  [        S5      e[        U5      n[        R                  " U5      (       a  US-   nUSL n	[	        X‚U5      u  p£[        U5      S:X  a  [        S5      e[        U
5      n
U	(       a  UR                  US      S-
  S-  U
S'   [        X@5      n[        U5      nU
S   nU
S   S-  S-   U
S'   [        [        XŠU5      5      u  pŒ[        R                  " XƒX°USU5      $ )	zDMultidimensional inverse discrete fourier transform with real outputNr   r3   r   rG   éÿÿÿÿr   r4   )r   r   r*   r+   r   rB   r   Úlistr   r
   r   Útupler   r   r5   )r   r   r;   r<   r   r   r   r   r    Únoshaper   Úlastsizer/   s                r$   Úc2rnrP   º   sý   € ð ÑÜ!ð #Eó Fð 	Fä
�A‹,€Cô 
‡|‚|�C×ÑØ�C‰iˆà�4ˆi€GÜ)¨#°$Ó7�K€Eä
ˆ4ƒy�Aƒ~ÜÐ>Ó?Ð?ä�‹K€EÞØ—W‘W˜T "™XÑ&¨Ñ*¨aÑ/ˆˆb‰	ä˜$Ó(€DÜ�wÓ€Gð �R‰y€HØ�r‘˜a‘ 1Ñ$€Eˆ"�Iä”:˜c¨$Ó/Ó0�F€Cô �8Š8�C˜x°$¸¸gÓFÐFr%   r9   Úirfftnc           	      ó˜  • [        U5      nU=(       d    [        Xa5      n[        X@5      n[        S5      nUR                  R
                  S:X  a  [        S5      eUb  [        XbU5      u  phU=(       d    UnO/UR                  U   S:  a  [        SUR                  U    S35      eU(       a  UOSn	[        R                  " Xc4X XIU5      $ )z=FFT of a real sequence, returning fftpack half complex formatNr   r)   r   r   r   )r   r   r
   r   r   r   r,   r	   r   r   r   Úr2r_fftpack)
r   r   r   r   r   r   r    r   r!   r#   s
             r$   rS   rS   ã   s¶   € ä
�A‹,€CØ×4¤¨SÓ!4€KÜ˜$Ó(€DÜ�t‹n€Gà
‡y�y‡~�~˜ÓÜÐ3Ó4Ð4à�}Ü# C¨DÓ1‰ˆØ!×+ V‰Ø	�‰�4‰˜1Ó	ÜÐ:¸3¿9¹9ÀT¹?Ð:KÈ;ÐWÓXÐXæ‰3 4€Cä×Ò˜C ¨'¸DÀwÓOÐOr%   Úrfft_fftpackÚirfft_fftpack)NrK   NFN)N)éþÿÿÿrK   NFN)NNNFN)NrK   NF)(Ú__doc__Únumpyr*   Ú	functoolsÚ r   r   Úhelperr   r   r   r   r	   r
   r   r   Úpartialr&   Ú__name__r'   r-   r0   r1   r5   r6   r7   r=   r@   rC   rD   rE   rH   rI   r?   rP   r9   rQ   rS   rT   rU   © r%   r$   Ú<module>r_      s<  ðñó Û Ý !÷÷ ñ ð =BØð?Ø"ö?ð. ×Ò˜˜TÓ"€Ø€„Ø×Ò˜˜eÓ$€Ø€„ð =BØð@Ø"ö@ð0 ×Ò˜˜dÓ#€Ø€„Ø×Ò˜#˜uÓ%€Ø€„ð =BØðCØ"öCð8 ×Ò˜˜dÓ#€Ø€„Ø×Ò˜#˜uÓ%€Ø€„ð9Øö9ð:Øö:ð @EØð<Ø#ö<ð4 ×Ò˜˜tÓ$€Ø€„Ø×Ò˜$ Ó&€Ø€„à?DØð=Ø#ö=ð. 	×Ò˜$ Ó%€Ø€„Ø	×	Ò	˜4 Ó	'€Ø€„ð @EØð GØ#ö GðF 	×Ò˜$ Ó%€Ø€„Ø	×	Ò	˜4 Ó	'€Ø€„ôPð* × Ò  ¨dÓ3€Ø&€Ô Ø×!Ò! +¨uÓ5€Ø(€Õ r%   