
    Ng_2                     f   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	 d dl
Z
d dlZd Z G d d          Z G d d          Zej                            d	ej        ej        ej        ej        g          ej                            d
ddg          ej                            dej        j        ej        j        ej        j        ej        j        ej        j        ej        j        g          d                                     Zej                            e	d           G d d                      ZdS )    N)random)assert_array_equalassert_raisesassert_allcloseIS_WASMc                    t          |           }dt          j        z  t          j        |          |z  z  }t          j        |                              dd          |z  }t          j        | t          j        |          z  d          S )Ny                 axis)lennppiarangereshapesumexp)xLphases      Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/numpy/fft/tests/test_pocketfft.pyfft1r      sm    AA"%K29Q<<!+,EIaLL  Q''%/E6!BF5MM/****    c                       e Zd Zd ZdS )TestFFTShiftc                 V    t          t          t          j        j        g dd           d S )N)r
         r   )r   
ValueErrorr   fft)selfs    r   
test_fft_nzTestFFTShift.test_fft_n   s$    j"&*iii;;;;;r   N)__name__
__module____qualname__r"    r   r   r   r      s#        < < < < <r   r   c                      e Zd Zd Zd Zej                            dd          d             Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej                            dej        j        ej        j        ej        j        ej        j        g          d             Zd Zej                            dej        ej        ej        ej         g          d             Z!dS )	TestFFT1Dc           
         d}t          |          dt          |          z  z   }t          |          }t          d|          D ]}t          t          j                            t          j                            |d|                             |d|         d           t          t          j                            t          j                            |d|                   |          |d|         d           d S )Ni                 ?r
   r   g-q=atol)r   ranger   r   r    ifftirfftrfft)r!   maxlenr   xris        r   test_identityzTestFFT1D.test_identity   s    6NNRv..F^^q&!! 	1 	1ABFKK

1QqS6(:(:;;QqsV!&( ( ( (BFLLR!W)=)=qAAqsG%1 1 1 1 1	1 	1r   c                 f   t          d          dt          d          z  z   }t          t          |          t          j                            |          d           t          t          |          t          j                            |d          d           t          t          |          t          j        d          z  t          j                            |d          d           t          t          |          dz  t          j                            |d	          d           d S )
N   r*   ư>r+   backwardnormortho      >@forward)r   r   r   r   r    sqrtr!   r   s     r   test_fftzTestFFT1D.test_fft$   s   2JJF2JJ&QAT::::QAJ!?!?dKKKKQ"'"++-

17
33$	@ 	@ 	@ 	@Q#

19
55D	B 	B 	B 	B 	B 	Br   r:   Nr8   r;   r=   c           	         t          d          dt          d          z  z   }t          |t          j                            t          j                            ||          |          d           t          j        t          d          5  t          j                            g |           d d d            d S # 1 swxY w Y   d S )Nr6   r*   r9   r7   r+   z!Invalid number of FFT data points)match)r   r   r   r    r.   pytestraisesr   )r!   r:   r   s      r   	test_ifftzTestFFT1D.test_ifft-   s    2JJF2JJ&rv{{26::ad:33${??	 	 	 	 ]:!DF F F 	' 	'FKKK&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   "B==CCc                 (   t          d          dt          d          z  z   }t          t          j                            t          j                            |d          d          t          j                            |          d           t          t          j                            |          t          j                            |d	          d           t          t          j                            |          t          j        d
          z  t          j                            |d	          d           t          t          j                            |          dz  t          j                            |d	          d           d S Nr6      r*   r
   r   r   r7   r+   r8   r9   X  r;        @r=   )r   r   r   r    fft2r>   r?   s     r   	test_fft2zTestFFT1D.test_fft28   sO   8r&"2"222

26::aa:#8#8q
AAAT	3 	3 	3 	3AAJ77d	D 	D 	D 	DA)9)99AG444	A 	A 	A 	AA)4AI66T	C 	C 	C 	C 	C 	Cr   c                 (   t          d          dt          d          z  z   }t          t          j                            t          j                            |d          d          t          j                            |          d           t          t          j                            |          t          j                            |d	          d           t          t          j                            |          t          j        d
          z  t          j                            |d	          d           t          t          j                            |          dz  t          j                            |d	          d           d S rH   )r   r   r   r    r.   ifft2r>   r?   s     r   
test_ifft2zTestFFT1D.test_ifft2C   sO   8r&"2"222BFKKK$:$:CCQd	4 	4 	4 	4QQZ88t	E 	E 	E 	EQ"''*:*::QW55D	B 	B 	B 	BQ95QY77d	D 	D 	D 	D 	D 	Dr   c           
      f   t          d          dt          d          z  z   }t          t          j                            t          j                            t          j                            |d          d          d          t          j                            |          d           t          t          j                            |          t          j                            |d	
          d           t          t          j                            |          t          j        d          z  t          j                            |d
          d           t          t          j                            |          dz  t          j                            |d
          d           d S Nr6   rJ   
   r*   r   r   r
   r   r7   r+   r8   r9   p  r;        p@r=   )r   r   r   r    fftnr>   r?   s     r   	test_fftnzTestFFT1D.test_fftnN   sd   <  2f\&:&:#::FJJrvzz"&**QQ*"7"7az@@qJIIFKKNN	' 	' 	' 	' 	AAJ77d	D 	D 	D 	DA)>)>>AG444	A 	A 	A 	AA/:AI66T	C 	C 	C 	C 	C 	Cr   c           
      f   t          d          dt          d          z  z   }t          t          j                            t          j                            t          j                            |d          d          d          t          j                            |          d           t          t          j                            |          t          j                            |d	
          d           t          t          j                            |          t          j        d          z  t          j                            |d
          d           t          t          j                            |          dz  t          j                            |d
          d           d S rS   )r   r   r   r    r.   ifftnr>   r?   s     r   
test_ifftnzTestFFT1D.test_ifftnZ   sd   <  2f\&:&:#::FKKBFKKK$:$:CC!KLLFLLOO$	( 	( 	( 	( 	QQZ88t	E 	E 	E 	EQ"',*?*??QW55D	B 	B 	B 	BQ?;QY77d	D 	D 	D 	D 	D 	Dr   c           
      0   t          d          }|j        d|j        z  fD ]s}dD ]b}t          t          j                            |||          d |dz  dz            t          j                            |||          d           ct          t          j                            ||          t          j                            ||d	          d           t          t          j                            ||          t          j        |          z  t          j                            ||d
          d           t          t          j                            ||          |z  t          j                            ||d          d           ud S )Nr6   r   rA   nr:   r
   r7   r+   )r_   r8   r;   r=   )r   sizer   r   r    r0   r>   )r!   r   r_   r:   s       r   	test_rfftzTestFFT1D.test_rfftf   s   2JJ&!AF(# 	@ 	@A> ? ?FJJqADJ11+AqD1H+>FKKQTK22? ? ? ? ? A##A444A A A A A##bgajj0A11> > > > A##a'A33$@ @ @ @ @	@ 	@r   c           	         t          d          }t          |t          j                            t          j                            |                    d           t          |t          j                            t          j                            |d          d          d           t          |t          j                            t          j                            |d          d          d           t          |t          j                            t          j                            |d          d          d           d S )Nr6   r7   r+   r8   r9   r;   r=   )r   r   r   r    r/   r0   r?   s     r   
test_irfftzTestFFT1D.test_irfftw   s$   2JJ26<<A77dCCCC26<<AJ(G(G' ( ) )/3	5 	5 	5 	526<<AG(D(D$ ( & &,0	2 	2 	2 	226<<AI(F(F& ( ( (.2	4 	4 	4 	4 	4 	4r   c                    t          d          }t          t          j                            |          d d d df         t          j                            |          d           t          t          j                            |          t          j                            |d          d           t          t          j                            |          t          j        d          z  t          j                            |d          d           t          t          j                            |          d	z  t          j                            |d
          d           d S )NrI      r7   r+   r8   r9   rK   r;   rL   r=   )r   r   r   r    rM   rfft2r>   r?   s     r   
test_rfft2zTestFFT1D.test_rfft2   s-   8Aqqq#2#v.QdKKKKQQZ88t	E 	E 	E 	EQ"''*:*::QW55D	B 	B 	B 	BQ95QY77d	D 	D 	D 	D 	D 	Dr   c           	         t          d          }t          |t          j                            t          j                            |                    d           t          |t          j                            t          j                            |d          d          d           t          |t          j                            t          j                            |d          d          d           t          |t          j                            t          j                            |d          d          d           d S )NrI   r7   r+   r8   r9   r;   r=   )r   r   r   r    irfft2rf   r?   s     r   test_irfft2zTestFFT1D.test_irfft2   s&   826==a99EEEE26==aj)I)I' ) ) )/3	5 	5 	5 	526==ag)F)F$ ) & &,0	2 	2 	2 	226==ai)H)H& ) ( (.2	4 	4 	4 	4 	4 	4r   c                    t          d          }t          t          j                            |          d d d d d df         t          j                            |          d           t          t          j                            |          t          j                            |d          d           t          t          j                            |          t          j        d          z  t          j                            |d          d           t          t          j                            |          d	z  t          j                            |d
          d           d S )NrT      r7   r+   r8   r9   rV   r;   rW   r=   )r   r   r   r    rX   rfftnr>   r?   s     r   
test_rfftnzTestFFT1D.test_rfftn   s3   <  Aqqq!!!RaRx0"&,,q//MMMMQQZ88t	E 	E 	E 	EQ"',*?*??QW55D	B 	B 	B 	BQ?;QY77d	D 	D 	D 	D 	D 	Dr   c           	         t          d          }t          |t          j                            t          j                            |                    d           t          |t          j                            t          j                            |d          d          d           t          |t          j                            t          j                            |d          d          d           t          |t          j                            t          j                            |d          d          d           d S )NrT   r7   r+   r8   r9   r;   r=   )r   r   r   r    irfftnrm   r?   s     r   test_irfftnzTestFFT1D.test_irfftn   s&   <  26==a99EEEE26==aj)I)I' ) ) )/3	5 	5 	5 	526==ag)F)F$ ) & &,0	2 	2 	2 	226==ai)H)H& ) ( (.2	4 	4 	4 	4 	4 	4r   c                    t          d          dt          d          z  z   }t          j        t          d          |t          d          f          }t          j        ||d d d                                         f          }t	          t          j                            |          t          j                            |          d           t	          t          j                            |          t          j                            |d          d           t	          t          j                            |          t          j        d	          z  t          j                            |d
          d           t	          t          j                            |          dz  t          j                            |d          d           d S )N   r*   r
   r	   r7   r+   r8   r9   r6   r;   r<   r=   )r   r   concatenateconjr   r    hfftr>   r!   r   x_herms      r   	test_hfftzTestFFT1D.test_hfft   sw   2JJF2JJ&Avayy 9::NFAdddGLLNN344

1rv{{6':':FFFFF++F<<4	I 	I 	I 	IF++bgbkk9F99	F 	F 	F 	FF++c1F;;$	H 	H 	H 	H 	H 	Hr   c           	         t          d          dt          d          z  z   }t          j        t          d          |t          d          f          }t          j        ||d d d                                         f          }t	          |t          j                            t          j                            |                    d           t	          |t          j                            t          j                            |d          d          d           t	          |t          j                            t          j                            |d	          d	          d           t	          |t          j                            t          j                            |d
          d
          d           d S )Nrs   r*   r
   r	   r7   r+   r8   r9   r;   r=   )r   r   rt   ru   r   r    ihfftrv   rw   s      r   
test_ihfftzTestFFT1D.test_ihfft   s   2JJF2JJ&Avayy 9::NFAdddGLLNN344RV[[-@-@ A AMMMMRV[[' .9 .) .)/9 !- !; !;AE	G 	G 	G 	GRV[[$ .9 .& .&,3 !- !5 !5;?	A 	A 	A 	ARV[[& .9 .( .(.7 !- !9 !9?C	E 	E 	E 	E 	E 	Er   opc                     t          d          }g d}|D ]R} |t          j        ||                    }t          j         |||          |          }t          ||d           Sd S )NrT   ))r   r
   r   )r   r   r
   )r
   r   r   )r
   r   r   )r   r   r
   )r   r
   r   axesr7   r+   )r   r   	transposer   )r!   r}   r   r   aop_trtr_ops          r   	test_axeszTestFFT1D.test_axes   s     <  QQQ 	5 	5ABr|Aq))**ELAA22EE5t44444	5 	5r   c           	         t          d          }t          j                            |          }|j        dz  }t          j        j        t          j        j        ft          j        j        t          j        j        ft          j        j	        t          j        j
        fg}|D ]i\  }}|j        d|j        z  fD ]R}dD ]M} ||||          } ||||          }t          |t          j                            |          d           NSjd S )Nr6   r   rA   r^   r7   r+   )r   r   linalgr:   r`   r    r.   r0   r/   r{   rv   r   )	r!   r   x_normr_   
func_pairsforwbackr:   tmps	            r   test_all_1d_norm_preservingz%TestFFT1D.test_all_1d_norm_preserving   s$   2JJ""FQJvz26;/v{BFL1 v|RV[1	
 % 	D 	DJD$fah' D DB D DD$qAD111C$sad333C#F$&INN3$7$7dD D D D DDD	D 	Dr   dtypec                 z   t          d                              |          }t          t          j                            t          j                            |                    |d           t          t          j                            t          j                            |                    |d           d S )Nr6   r7   r+   )r   astyper   r   r    r.   r/   r0   )r!   r   r   s      r   test_dtypeszTestFFT1D.test_dtypes   s    
 2JJe$$BFJJqMM22ADAAAARV[[^^44adCCCCCCr   N)"r#   r$   r%   r4   r@   rD   markparametrizerF   rN   rQ   rY   r\   ra   rc   rg   rj   rn   rq   ry   r|   r   r    rX   r[   rm   rp   r   r   halfsingledouble
longdoubler   r&   r   r   r(   r(      s       1 1 1B B B [V%KLL' ' ML'	C 	C 	C	D 	D 	D
C 
C 
C
D 
D 
D@ @ @"4 4 4D D D4 4 4D D D4 4 4
H 
H 
H
E 
E 
E [TBFK$&FL"&-$A B B5 5B B5D D D& [Wrw	29')}'6 7 7D D7 7D D Dr   r(   r   orderFznon-contiguousr    c                    t           j                            d          }|                    ddd                              | d          }dt          j        t          j        |j                            z  t          j        |j	                  j
        z  }|dk    rt          j        |          }n(|d d d	         }t          j        |d d d	                   }|j                            d
          rAt          d          D ]/} |||          } |||          }	t!          ||	||           0d S |j                            d          rig d}
|j                            d          r|
                    g d           |
D ]/} |||          } |||          }	t!          ||	||           0d S t%                      )N*            F)copyg       @r   r	   r    r   r   )r,   rtol)rM   rX   ))r   r
   )r
   r   )r   r   rX   ))r   )r
   )r   Nr   )r   r   RandomStaterandr   r>   log2r`   finfor   epsasfortranarrayascontiguousarrayr#   endswithr-   r   extendr   )r   r   r    rngX_tolYr   X_resY_resr   axs               r   test_fft_with_orderr      s    )


#
#CAr!!%e!44A)))BHQW,=,=,AAD||a   dddG 44R4))
|U## !HH 	@ 	@DC%%%EC%%%EE5t$?????	@ 	@ 
		/	0	0 	'''<  (( 	2KK000111 	@ 	@BCOOOECOOOEE5t$?????	@ 	@
 llr   zCannot start thread)reasonc                   4    e Zd ZdZdZd Zd Zd Zd Zd Z	dS )	TestFFTThreadSafe   )i      c                 4   fdt          j                      }fdt          | j                  D             }d |D              d |D              t          | j                  D ]'}t	                              d          |d           (d S )Nc                 8    |                      |             d S N)put)argsqfuncs     r   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s!    EE$$+r   c                 @    g | ]}t          j        f           S ))targetr   )	threadingThread).0r3   r   r   r   s     r   
<listcomp>z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s=     + + + V4)<<< + + +r   c                 6    g | ]}|                                 S r&   )startr   r   s     r   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>  s     qr   c                 6    g | ]}|                                 S r&   )joinr   s     r   r   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>   s     ar      )timeoutz6Function returned wrong value in multithreaded context)queueQueuer-   threadsr   get)r!   r   r   expectedtr3   r   r   s    ``   @@r   _test_mtsamezTestFFTThreadSafe._test_mtsame  s    	 	 	 	 	 KMM4;+ + + + + +DL))+ + +A1t|$$ 	J 	JAquuQu//HJ J J J	J 	Jr   c                     t          j        | j                  dz  dz   }|                     t           j        j        |           d S Nr
   y                )r   onesinput_shaper   r    r!   r   s     r   r@   zTestFFTThreadSafe.test_fft&  s>    GD$%%)","&*a(((((r   c                     t          j        | j                  dz  dz   }|                     t           j        j        |           d S r   )r   r   r   r   r    r.   r   s     r   rF   zTestFFTThreadSafe.test_ifft*  s>    GD$%%)","&+q)))))r   c                     t          j        | j                  }|                     t           j        j        |           d S r   )r   r   r   r   r    r0   r   s     r   ra   zTestFFTThreadSafe.test_rfft.  s4    GD$%%"&+q)))))r   c                     t          j        | j                  dz  dz   }|                     t           j        j        |           d S r   )r   r   r   r   r    r/   r   s     r   rc   zTestFFTThreadSafe.test_irfft2  s>    GD$%%)","&,*****r   N)
r#   r$   r%   r   r   r   r@   rF   ra   rc   r&   r   r   r   r     sl        GKJ J J$) ) )* * ** * *+ + + + +r   r   )numpyr   rD   numpy.randomr   numpy.testingr   r   r   r   r   r   r   r   r(   r   r   float32float64	complex64
complex128r    rM   rX   r.   rP   r[   r   skipifr   r&   r   r   <module>r      s             
 
 
 
 
 
 
 
 
 
 
 
     + + +< < < < < < < <MD MD MD MD MD MD MD MD` 	RZr}=? ? 3(8"9::	RV["&+	bflBFL	23 3 	3 3 ;:? ?> G$9::$+ $+ $+ $+ $+ $+ $+ ;:$+ $+ $+r   