
    >ie               	      z   d dl mZ d dlmZ d dlZd dlZd dlmZ	 d dl
Zd dlmZ d dl
mZ d dlmZmZ g dZg dZ ej        d	                              d
d
          Z e	j        ed          Z e	j        ed          Z e	j        ed          Zej                            de          d             Zej                            de          d             Zej                            de          d             Zej                            de          d             Z ej                            de          d             Z!d Z"ej                            de          ej                            dddg          d                         Z#ej                            dddg          ej                            de          ej                            dddg          d                                     Z$ej                            dddg          ej                            de          ej                            dddg          d                                     Z%ej                            dg d           ej                            d!d"d#d$ej&        z  g          ej                            d%d& d' g          d(                                     Z'ej                            dg d           ej                            d!d"d#d$ej&        z  g          ej                            d%d) d* g          d+                                     Z(ej                            dd,d-g          ej                            d.g d/          ej                            d0d1d2gd1d3gd1d1gg          d4                                     Z)ej                            d5d6d7g          ej                            d.g d/          ej                            d0d1d2gd1d3gd1d1gg          d8                                     Z*dS )9    )annotations)combinations_with_replacementN)normalize_chunks)fft_wrap)	assert_eq	same_keys)fftifftrfftirffthfftihfft)fft2ifft2fftnifftnrfft2irfft2rfftnirfftnd   
   )   r   chunks)r   r   )r   r   funcnamec                   t          t          j        |           }t          j        t          d          }t          |j                  D ]@}t          j        t                    5   |||           d d d            n# 1 swxY w Y   Ad S )N)   r   r   axis)
getattrdar	   
from_arraynparrrangendimpytestraises
ValueError)r   da_fftbad_darris       9lib/python3.11/site-packages/dask/array/tests/test_fft.pytest_cant_fft_chunked_axisr.   !   s    RVX&&F}U6222H8=!! % %]:&& 	% 	%F8!$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%% %s   %A??B	B	c                    t          t          j        |           }t          t          j        |           }t	           |t
                     |t                               d S N)r!   r"   r	   npr   darrr$   r   r*   np_ffts      r-   test_fftr5   +   sJ    RVX&&FRVX&&FffTllFF5MM*****    c                   t          t          j        j        |           }t          t          j        |           }t           |t                     |t                               t           |t          d           |t          d                     t           |t          dd           |t          dd                     t           |t          dd           |t          dd                     d S )N)   	   r   r   axes)      )r!   daskarrayr	   r1   r   darr3r$   r3   s      r-   test_fft2n_shapesrB   3   s    TZ^X..FRVX&&FffUmmVVE]]+++ffUF##VVE6%:%:;;;ffUF000&&V2T2T2TUUUuhV,,,ffUH6.R.R.R    r6   c                   t          t          j        |           }t          t          j        |           }t	           |t
          d           |t          d                     t	           |t
          d           |t          d                     t	           |t          d           |t          d                     t	           |t          dd           |t          dd                     t	           |t          dd           |t          dd                     t	           |t          dd           |t          dd                     d S )Nr      r   r   r=   )r!   r"   r	   r1   r   r2   r$   darr2r3   s      r-   test_fft_n_kwargrF   ?   s<   RVX&&FRVX&&FffT1oovveQ//000ffT2ub 1 1222ffU###VVE%:%:%:;;;ffUAA&&&uaa(@(@(@AAAffUBQ'''r)B)B)BCCCffUBQ'''r)B)B)BCCCCCr6   c                b   t          t          j        |           }t           |t          d           |t          d                    sJ t           |t
          dd           |t
          dd                    sJ t           |t          d           |t          d                    rJ d S )Nr   r   r   rD   )r!   r"   r	   r   r2   rE   )r   r*   s     r-   test_fft_consistent_namesrH   L   s    RVX&&FVVD!__ffT1oo66666VVE11---vveQQ/G/G/GHHHHHa&&r*:*:;;;;;;;r6   c                     t          j        t                    5  t          t          j                   d d d            d S # 1 swxY w Y   d S r0   )r'   r(   r)   r   r1   ones r6   r-   test_wrap_bad_kindrL   U   s    	z	"	"                   s   AAAdtypefloat32float64c                r   t          t          j        |           }t          t          j        |           }d}d}t          j        t          j        |          |                              |          }t          j        ||          }t          d|j	                  D ]}t          t          |j	                  |          D ]}	t          |          }
|	D ]}||         |
|<   |                    |
          }t          t          |	                    t          |	          k     r?t          j        t"                    5   |||	           d d d            n# 1 swxY w Y    |||	          } |||	          }|j        |j        k    sJ |j        |j        k    sJ t)          ||           d S )N)   r8   r9   )   rR   rR   )rM   r   r   r;   )r!   r1   r	   r"   arangeprodreshaper#   r%   r&   r   listrechunklensetr'   r(   r)   rM   shaper   )r   rM   r4   r*   rZ   
chunk_sizeadnum_axesr<   csr,   d2rers                  r-   test_nd_ffts_axesrc   Z   s    RVX&&FRVX&&FEJ
	"'%.....66u==A
a
+++A!QV$$ ! !1%--JJ 	! 	!Dj!!B ! !a12B3t99~~D		))]:.. * *F2D))))* * * * * * * * * * * * * * * F2D)))VAD)))w"(****w"(****!R    	!! !s    EE!Emodnamez	numpy.fftscipy.fftpackc           	        t          j        |           }	 t          ||          }n+# t          $ r t          j        d|  d| d           Y nw xY wt
                              |          }t                              |          }t                              |          }| dk    rGd|v rCt          j	        t                    5  t          |           d d d            d S # 1 swxY w Y   d S t          |          } ||          j         ||          j        k    sJ  ||          j         ||          j        k    sJ t           ||           ||                     t           ||d           ||d                     t           ||d           ||d                     t           ||t          |          dz
  	           ||t          |          dz
  	                     t           ||d|j        d         dz
  
           |||j        d         dz
  	                     t           ||d|j        d         dz
  
           ||d|j        d         dz
  
                     d S )N`` missing function ``.re   r   r   r   r   )n)r    rj   )r'   importorskipr!   AttributeErrorskipr2   astyperE   r$   r(   r)   r   rM   rZ   r   rX   	rd   r   rM   fft_modfuncdarrcdarr2cnparrcwfuncs	            r-   test_wrap_fftsrv   v   s     !'**GCw)) C C CAAAXAAABBBBBC KKE\\%  F\\%  F/!!f&8&8]:&& 	 	TNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 uU||!TT&\\%77777uU||!TT&\\%77777%%,,V---%%A&&&V!(<(<(<===%%Q'''f1)=)=)=>>>%%Ua000$$vUa2P2P2PQQQE%a5;q>A#5666D5;q>A-...	
 	
 	
 	E&qFLOa$7888Da6<?Q#6777	
 	
 	
 	
 	
s!   ' %AAC  C$'C$c           	        t          j        |           }	 t          ||          }n+# t          $ r t          j        d|  d| d           Y nw xY wt
                              |                              t
          j                  }t                              |                              t          j                  }t                              |          }t          |          } ||          j         ||          j        k    sJ  ||          j         ||          j        k    sJ t           ||           ||                     t           ||d           ||d                     t           ||d           ||d                     t           |||j        d         dz
  |j        d         dz
  fd           |||j        d         dz
  |j        d         dz
  fd                     d S )	Nrg   rh   ri   r:   r;   r   r   r   r   )r'   rk   r!   rl   rm   r2   rn   rW   rZ   rE   r$   r   rM   r   ro   s	            r-   test_wrap_fftnsry      s    !'**GCw)) C C CAAAXAAABBBBBC KK&&tz22E\\%  ((55F\\%  FTNNE5<<f!333335<<f!33333eeEllDDLL)))eeE'''f6)B)B)BCCCeeF((($$vF*C*C*CDDDfv|A*FLOa,?@&IIVfl1o)6<?Q+>?HH    s   ' %AArj   )r      rR      rQ   r]   g      ?g      ?rz   cc                    | S r0   rK   ms    r-   <lambda>r      s     r6   c                    d| dz
  fS )Nr   rK   r~   s    r-   r   r      s    q!a%j r6   c                     ||           }t           j                            | |          }t          j                            | ||          }t	          ||j                  |j        k    sJ t          ||           d S )Nr   )r1   r	   fftfreqr"   r   rZ   r   r   rj   r]   r|   r1r2s        r-   test_fftfreqr      st     	
!A	1		B	1Q	'	'BArx((BI5555b"r6   c                    | dz  dz   fS )Nrz   r   rK   r~   s    r-   r   r      s    !q&1* r6   c                    d| dz  fS )Nr   rz   rK   r~   s    r-   r   r      s    1a1f+ r6   c                   d  ||           D             }t           j                            | |          }t          j                            | ||          }t	          ||j                  |j        k    sJ t          ||           d S )Nc                    g | ]
}|d k    |S )r   rK   ).0cis     r-   
<listcomp>z!test_rfftfreq.<locals>.<listcomp>   s    &&&bAgggggr6   r   )r1   r	   rfftfreqr"   r   rZ   r   r   r   s        r-   test_rfftfreqr      s     	'&aadd&&&A	A		B	Aa	(	(BArx((BI5555b"r6   fftshift	ifftshiftr<   )Nr   r   rz   rx   )r   rz   )r   rz   )r   r   rz   zshape, chunks)r   r{   rQ   )rz   rR      )rz   r{   r   c                (   t          t          j        |           }t          t          j        |           }t          j        t          j        |                                        |          }t          j        ||          } |||          } |||          }	t          |j	        |	j	                  D ]K\  }
}t          |
          dk    rt          |          dk    sJ ||
k    sJ 6t          |          dk    sJ Lt          |	|           d S Nr   r   )r!   r1   r	   r"   rS   rT   rU   r#   zipr   rX   r   )r   rZ   r   r<   np_funcda_funcr\   r]   a_rd_reach_d_chunkseach_d_r_chunkss               r-   test_fftshiftr      s    bfh''Gbfh''G
	"'%..!!))%00A
a'''A
'!T

C
'!T

C*-ah
*C*C - -&}""''1,,,,"m33333''1,,,,,c3r6   zfuncname1, funcname2)r   r   )r   r   c                $   t          t          j        |           }t          t          j        |          }t          j        t          j        |                                        |          }t          j        ||          } | |||          |          }	t          |j	        |	j	                  D ]K\  }
}t          |
          dk    rt          |          dk    sJ ||
k    sJ 6t          |          dk    sJ Lt          |	|           d S r   )r!   r"   r	   r1   rS   rT   rU   r#   r   r   rX   r   )	funcname1	funcname2rZ   r   r<   da_func1da_func2r\   r]   r   r   r   s               r-   test_fftshift_identityr      s    rvy))Hrvy))H
	"'%..!!))%00A
a'''A
(88At$$d
+
+C*-ah
*C*C - -&}""''1,,,,"m33333''1,,,,,c1r6   )+
__future__r   	itertoolsr   numpyr1   r'   
dask.arrayr@   r"   dask.array.fftr?   dask.array.corer   r   dask.array.utilsr   r   all_1d_funcnamesall_nd_funcnamesrS   rU   r$   r#   r2   rE   rA   markparametrizer.   r5   rB   rF   rH   rL   rc   rv   ry   pir   r   r   r   rK   r6   r-   <module>r      s   " " " " " " 3 3 3 3 3 3                , , , , , , # # # # # # 1 1 1 1 1 1 1 1DDD 	 	 	  		#r2&&r}U7+++eG,,,eH--- %566% % 76% %566+ + 76+ %566  76 %566	D 	D 76	D %566< < 76<  
 %5669i"899! ! :9 76!4 [/$BCC%5669i"899
 
 :9 76 DC
@ [/$BCC%5669i"899  :9 76 DC. ooo..sCRU344{{,@,@ABB  CB 54 /. ooo..sCRU344668M8MNOO  PO 54 /. j+%>??!S!S!STTi3i5KL  	  UT @?( 68QR  !S!S!STTi3i5KL  	  UT   r6   