
    ih_2                        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                  j!                  d	ej"                  ej$                  ej&                  ej(                  g      ej                  j!                  d
ddg      ej                  j!                  dej*                  j*                  ej*                  j,                  ej*                  j.                  ej*                  j0                  ej*                  j2                  ej*                  j4                  g      d                      Zej                  j9                  e	d       G d d             Zy)    N)random)assert_array_equalassert_raisesassert_allcloseIS_WASMc                    t        |       }dt        j                  z  t        j                  |      |z  z  }t        j                  |      j	                  dd      |z  }t        j
                  | t        j                  |      z  d      S )Ny                 axis)lennppiarangereshapesumexp)xLphases      \/var/www/html/dev/engine/venv/lib/python3.12/site-packages/numpy/fft/tests/test_pocketfft.pyfft1r      sf    AA"%%K299Q<!+,EIIaL  Q'%/E66!BFF5M/**    c                       e Zd Zd Zy)TestFFTShiftc                 \    t        t        t        j                  j                  g dd       y )N)r
         r   )r   
ValueErrorr   fft)selfs    r   
test_fft_nzTestFFTShift.test_fft_n   s    j"&&**i;r   N)__name__
__module____qualname__r"    r   r   r   r      s    <r   r   c                   2   e Zd Zd Zd Zej                  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                  j                  dej,                  j.                  ej,                  j0                  ej,                  j2                  ej,                  j4                  g      d        Zd Zej                  j                  dej:                  ej<                  ej>                  ej@                  g      d        Z!y)	TestFFT1Dc           
         d}t        |      dt        |      z  z   }t        |      }t        d|      D ]  }t        t        j                  j                  t        j                  j	                  |d|             |d| d       t        t        j                  j                  t        j                  j                  |d|       |      |d| d        y )Ni                 ?r
   r   g-q=atol)r   ranger   r   r    ifftirfftrfft)r!   maxlenr   xris        r   test_identityzTestFFT1D.test_identity   s    6NRv..F^q&! 	1ABFFKK

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

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

19
5D	Br   r:   Nr8   r;   r=   c           	      r   t        d      dt        d      z  z   }t        |t        j                  j	                  t        j                  j                  ||      |      d       t        j                  t        d      5  t        j                  j	                  g |       d d d        y # 1 sw Y   y xY w)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    2JF2J&rvv{{266::ad:3${?	 ]]:!DF 	'FFKKK&	' 	' 	's   "B--B6c                    t        d      dt        d      z  z   }t        t        j                  j                  t        j                  j                  |d      d      t        j                  j	                  |      d       t        t        j                  j	                  |      t        j                  j	                  |d	      d       t        t        j                  j	                  |      t        j
                  d
      z  t        j                  j	                  |d	      d       t        t        j                  j	                  |      dz  t        j                  j	                  |d	      d       y 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   s    8r&"222

266::aa:#8q
AAT	3AAJ7d	DA)99AG44	AA)4AI6T	Cr   c                    t        d      dt        d      z  z   }t        t        j                  j	                  t        j                  j	                  |d      d      t        j                  j                  |      d       t        t        j                  j                  |      t        j                  j                  |d	      d       t        t        j                  j                  |      t        j                  d
      z  t        j                  j                  |d	      d       t        t        j                  j                  |      dz  t        j                  j                  |d	      d       y rH   )r   r   r   r    r.   ifft2r>   r?   s     r   
test_ifft2zTestFFT1D.test_ifft2C   s    8r&"222BFFKKK$:CQd	4QQZ8t	EQ"'''*::QW5D	BQ95QY7d	Dr   c           
      6   t        d      dt        d      z  z   }t        t        j                  j                  t        j                  j                  t        j                  j                  |d      d      d      t        j                  j	                  |      d       t        t        j                  j	                  |      t        j                  j	                  |d	
      d       t        t        j                  j	                  |      t        j
                  d      z  t        j                  j	                  |d
      d       t        t        j                  j	                  |      dz  t        j                  j	                  |d
      d       y 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   s   < 2f\&:#::FFJJrvvzz"&&**QQ*"7az@qJIFFKKN	' 	AAJ7d	DA)>>AG44	AA/:AI6T	Cr   c           
      6   t        d      dt        d      z  z   }t        t        j                  j	                  t        j                  j	                  t        j                  j	                  |d      d      d      t        j                  j                  |      d       t        t        j                  j                  |      t        j                  j                  |d	
      d       t        t        j                  j                  |      t        j                  d      z  t        j                  j                  |d
      d       t        t        j                  j                  |      dz  t        j                  j                  |d
      d       y rS   )r   r   r   r    r.   ifftnr>   r?   s     r   
test_ifftnzTestFFT1D.test_ifftnZ   s   < 2f\&:#::FFKKBFFKKK$:C!KLFFLLO$	( 	QQZ8t	EQ"'',*??QW5D	BQ?;QY7d	Dr   c           
         t        d      }|j                  d|j                  z  fD ]a  }dD ]Y  }t        t        j                  j	                  |||      d |dz  dz    t        j                  j                  |||      d       [ t        t        j                  j                  ||      t        j                  j                  ||d	      d       t        t        j                  j                  ||      t        j                  |      z  t        j                  j                  ||d
      d       t        t        j                  j                  ||      |z  t        j                  j                  ||d      d       d y )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   s7   2J&&!AFF(# 	@A> ?FFJJqADJ1+AqD1H>FFKKQTK2?? A#A44A A#bggaj0A1> A#a'A3$@	@r   c           	      r   t        d      }t        |t        j                  j	                  t        j                  j                  |            d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       y )Nr6   r7   r+   r8   r9   r;   r=   )r   r   r   r    r/   r0   r?   s     r   
test_irfftzTestFFT1D.test_irfftw   s    2J266<<A7dC266<<AJ(G' ( )/3	5266<<AG(D$ ( &,0	2266<<AI(F& ( (.2	4r   c                    t        d      }t        t        j                  j	                  |      d d d df   t        j                  j                  |      d       t        t        j                  j                  |      t        j                  j                  |d      d       t        t        j                  j                  |      t        j                  d      z  t        j                  j                  |d      d       t        t        j                  j                  |      d	z  t        j                  j                  |d
      d       y )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q#2#v.QdKQQZ8t	EQ"'''*::QW5D	BQ95QY7d	Dr   c           	      r   t        d      }t        |t        j                  j	                  t        j                  j                  |            d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       y )NrI   r7   r+   r8   r9   r;   r=   )r   r   r   r    irfft2rf   r?   s     r   test_irfft2zTestFFT1D.test_irfft2   s    8266==a9E266==aj)I' ) )/3	5266==ag)F$ ) &,0	2266==ai)H& ) (.2	4r   c                    t        d      }t        t        j                  j	                  |      d d d d d df   t        j                  j                  |      d       t        t        j                  j                  |      t        j                  j                  |d      d       t        t        j                  j                  |      t        j                  d      z  t        j                  j                  |d      d       t        t        j                  j                  |      d	z  t        j                  j                  |d
      d       y )NrT      r7   r+   r8   r9   rV   r;   rW   r=   )r   r   r   r    rX   rfftnr>   r?   s     r   
test_rfftnzTestFFT1D.test_rfftn   s    < Aq!RaRx0"&&,,q/MQQZ8t	EQ"'',*??QW5D	BQ?;QY7d	Dr   c           	      r   t        d      }t        |t        j                  j	                  t        j                  j                  |            d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       t        |t        j                  j	                  t        j                  j                  |d      d      d       y )NrT   r7   r+   r8   r9   r;   r=   )r   r   r   r    irfftnrm   r?   s     r   test_irfftnzTestFFT1D.test_irfftn   s    < 266==a9E266==aj)I' ) )/3	5266==ag)F$ ) &,0	2266==ai)H& ) (.2	4r   c                 `   t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }t	        t        j
                  j                  |      t        j
                  j                  |      d       t	        t        j
                  j                  |      t        j
                  j                  |d      d       t	        t        j
                  j                  |      t        j                  d	      z  t        j
                  j                  |d
      d       t	        t        j
                  j                  |      dz  t        j
                  j                  |d      d       y )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   s   2JF2J&Avay 9:NNFAddGLLN34

1rvv{{6':FF+F<4	IF+bggbk9F9	FF+c1F;$	Hr   c           	      :   t        d      dt        d      z  z   }t        j                  t        d      |t        d      f      }t        j                  ||d d d   j                         f      }t	        |t        j
                  j                  t        j
                  j                  |            d       t	        |t        j
                  j                  t        j
                  j                  |d      d      d       t	        |t        j
                  j                  t        j
                  j                  |d	      d	      d       t	        |t        j
                  j                  t        j
                  j                  |d
      d
      d       y )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   s6   2JF2J&Avay 9:NNFAddGLLN34RVV[[-@ AMRVV[[' .9 .)/9 !- !;AE	GRVV[[$ .9 .&,3 !- !5;?	ARVV[[& .9 .(.7 !- !9?C	Er   opc                     t        d      }g d}|D ]J  } |t        j                  ||            }t        j                   |||      |      }t        ||d       L y )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   sY     < Q 	5Ar||Aq)*ELLAA2EE5t4	5r   c           	         t        d      }t        j                  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 ]m  \  }}|j                  d|j                  z  fD ]J  }dD ]C  } ||||      } ||||      }t        |t        j                  j                  |      d       E L o y )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    2J"FFQJvvzz266;;/vv{{BFFLL1 vv||RVV[[1	
 % 	DJD$ffah' DB DDqAD1Csad3C#F$&IINN3$7dDDD	Dr   dtypec                 X   t        d      j                  |      }t        t        j                  j                  t        j                  j	                  |            |d       t        t        j                  j                  t        j                  j                  |            |d       y )Nr6   r7   r+   )r   astyper   r   r    r.   r/   r0   )r!   r   r   s      r   test_dtypeszTestFFT1D.test_dtypes   sb    
 2Je$BFFJJqM2ADARVV[[^4ad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B [[V%KL' M'	C	D
C
D@"4D4D4
H
E [[TBFFKK$&FFLL"&&--$A B5B5D& [[Wrww		299')}}'6 7D7Dr   r(   r   orderFznon-contiguousr    c                 d   t         j                  j                  d      }|j                  ddd      j	                  | 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                  j                  d
      r4t        d      D ]%  } |||      } |||      }	t!        ||	||       ' y |j                  j                  d      r]g d}
|j                  j                  d      r|
j#                  g d       |
D ]%  } |||      } |||      }	t!        ||	||       ' y 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      st    ))


#CAr!!%e!4A))BHHQWW,=,A,AAD|a  ddG  4R4)
||U#!H 	@D%E%EE5t$?	@ 
		/	0'<<  (KK01 	@BOEOEE5t$?	@
 lr   zCannot start thread)reasonc                   2    e Zd ZdZdZd Zd Zd Zd Zd Z	y)	TestFFTThreadSafe   )i      c                    fd}t        j                         } | }t        | j                        D cg c]  }t	        j
                  |||f       }}|D cg c]  }|j                          c} |D cg c]  }|j                          c} t        | j                        D ]  }t        |j                  d      |d       ! y c c}w c c}w c c}w )Nc                 .    |j                   |         y N)put)argsqfuncs     r   workerz.TestFFTThreadSafe._test_mtsame.<locals>.worker  s    EE$+r   )targetr      )timeoutz6Function returned wrong value in multithreaded context)
queueQueuer-   threads	threadingThreadstartjoinr   get)	r!   r   r   r   r   expectedr3   tr   s	    `       r   _test_mtsamezTestFFTThreadSafe._test_mtsame  s    	 KKM; DLL)+ V4)< + +qat||$ 	JAquuQu/HJ	J+s    CC;Cc                     t        j                  | j                        dz  dz   }| j                  t         j                  j                  |       y Nr
   y                )r   onesinput_shaper   r    r!   r   s     r   r@   zTestFFTThreadSafe.test_fft&  s8    GGD$$%)","&&**a(r   c                     t        j                  | j                        dz  dz   }| j                  t         j                  j
                  |       y r   )r   r   r   r   r    r.   r   s     r   rF   zTestFFTThreadSafe.test_ifft*  s8    GGD$$%)","&&++q)r   c                     t        j                  | j                        }| j                  t         j                  j
                  |       y r   )r   r   r   r   r    r0   r   s     r   ra   zTestFFTThreadSafe.test_rfft.  s.    GGD$$%"&&++q)r   c                     t        j                  | j                        dz  dz   }| j                  t         j                  j
                  |       y r   )r   r   r   r   r    r/   r   s     r   rc   zTestFFTThreadSafe.test_irfft2  s8    GGD$$%)","&&,,*r   N)
r#   r$   r%   r   r   r   r@   rF   ra   rc   r&   r   r   r   r     s&    GK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` 	RZZr}}=? 3(8"9:	RVV[["&&++	bffllBFFLL	23	3 ;?> G$9:$+ $+ ;$+r   