
    G/Ph                         d Z ddlZddlmZ ddlmZmZ  G d d          Z G d d          Z G d	 d
          Z	 G d d          Z
dS )zfTest functions for fftpack.helper module

Copied from fftpack.helper by Pearu Peterson, October 2005

    N)assert_array_almost_equal)fftpic                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestFFTShiftc                 6   g d}g d}t          t          j        |          |           t          t          j        |          |           g d}g d}t          t          j        |          |           t          t          j        |          |           d S )N	r               )	r   r   r   r   r   r
   r   r   r   
r   r
   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r
   r   r   r   r   r   fftshift	ifftshift)selfxys      [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/fft/tests/test_helper.pytest_definitionzTestFFTShift.test_definition   s    ++++++!#,q//1555!#-"2"2A666//////!#,q//1555!#-"2"2A66666    c                     dD ]V}t           j                            |f          }t          t          j        t          j        |                    |           Wd S )N)r
   r   	   d      )nprandomr   r   r   r   )r   nr   s      r   test_inversezTestFFTShift.test_inverse   s[    $ 	I 	IA	  !&&A%cmCLOO&D&DaHHHH	I 	Ir   c                 *   g dg dg dg}g dg dg dg}t          t          j        |d          |           t          t          j        |d	          t          j        |d
                     t          t          j        |d          |           t          t          j        |d	          t          j        |d
                     t          t          j        |          |           t          t          j        |          |           d S )N)r   r
   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r
   )r   r   r   r   r
   axesr   r   r   )r   freqsshifteds      r   test_axes_keywordzTestFFTShift.test_axes_keyword   s   JJJ5<<JJJ7!#,u6"B"B"BGLLL!#,u1"="="="%,u4"@"@"@	B 	B 	B!#-f"E"E"EuMMM!#-a"@"@"@"%-d"C"C"C	E 	E 	E 	"#,u"5"5w???!#-"8"8%@@@@@r   c                 P   ddgddgddgg}ddgddgddgg}t          t          j        |d          |           t          t          j        |d          |           t          t          j        |d          |           t          t          j        |dg          |           ddgddgddgg}t          t          j        |d          |           t          t          j        |d          |           ddgddgddgg}t          t          j        |d	          |           t          t          j        |d	          |           t          t          j        |ddg          |           t          t          j        |ddg          |           t          t          j        |d
          |           t          t          j        |d
          |           t          t          j        |          |           t          t          j        |          |           d
S )z1 Test 2D input, which has uneven dimension sizes r   r
   r   r   r      r'   r)   r&   Nr   )r   r*   
shift_dim0
shift_dim1shift_dim_boths        r   test_uneven_dimszTestFFTShift.test_uneven_dims)   s:    FFF
 FFF


 	"#,u1"="="=zJJJ!#-
"C"C"CUKKK!#,u4"@"@"@*MMM!#-
!"E"E"EuMMM FFF


 	"#,u1"="="=zJJJ!#-
"C"C"CUKKK FFF

 	"#,u6"B"B"BNSSS!#-V"L"L"LeTTT!#,uAq6"B"B"BNSSS!#-aV"L"L"LeTTT 	"#,u4"@"@"@.QQQ!#-T"J"J"JERRR!#,u"5"5~FFF!#-"?"?GGGGGr   c           
        	
 ddl mm	mm
 d	
fd	}d	
fd	}t          d          D ]}t          d          D ]}dD ]|}t          j                            ||          }t          t          j        ||           |||                     t          t          j        ||           |||                     }dS )	z\ Test that the new (>=v1.15) implementation (see #10073) is equal to the original (<=v1.14) r   )asarrayconcatenatearangetakeNc                 ,    
|           }|j         }|t          t          |                    }nt          |t                    r|f}|}|D ]D}|j        |         }|dz   dz  }  	||           	|          f          } |||          }E|S )z& How fftshift was implemented in v1.14Nr
   r   ndimlistrange
isinstanceintshaper   r(   tmpr:   r   kr#   p2mylistr6   r4   r5   r7   s            r   original_fftshiftz>TestFFTShift.test_equal_to_original.<locals>.original_fftshiftZ   s    '!**C8D|E$KK((D#&& wA ' 'IaL!e\$ffRmmVVBZZ%@AADFA&&Hr   c                 2    
|           }|j         }|t          t          |                    }nt          |t                    r|f}|}|D ]G}|j        |         }||dz   dz  z
  }  	||           	|          f          } |||          }H|S )z( How ifftshift was implemented in v1.14 Nr
   r   r9   r@   s            r   original_ifftshiftz?TestFFTShift.test_equal_to_original.<locals>.original_ifftshiftj   s    '!**C8D|E$KK((D#&& wA ' 'IaL!a%A%$ffRmmVVBZZ%@AADFA&&Hr      )r   r
   Nr)   r&   )N)numpy._corer4   r5   r6   r7   r<   r!   r"   randr   r   r   r   )r   rE   rG   ijaxes_keywordinpr6   r4   r5   r7   s          @@@@r   test_equal_to_originalz#TestFFTShift.test_equal_to_originalV   s`   BBBBBBBBBBBB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$ r 		U 		UA2YY U U$> U UL)..A..C-cl3.M.M.?.?\.R.RT T T .cmC.N.N.@.@l.S.SU U U UUU		U 		Ur   N)__name__
__module____qualname__r   r$   r,   r2   rO    r   r   r   r      sn        7 7 7I I I
A A A+H +H +HZ/U /U /U /U /Ur   r   c                       e Zd Zd ZdS )TestFFTFreqc                 v   g d}t          dt          j        d          z  |           t          dt          z  t          j        dt                    z  |           g d}t          dt          j        d          z  |           t          dt          z  t          j        dt                    z  |           d S )Nr	   r   r   
   )r   r   fftfreqr   r   r   s     r   r   zTestFFTFreq.test_definition   s    +++!!CKNN"2A666!!B$s{1b'9'9"91===///!"S[__"4a888!"R%B(;(;";Q?????r   NrP   rQ   rR   r   rS   r   r   rU   rU      s(        @ @ @ @ @r   rU   c                       e Zd Zd ZdS )TestRFFTFreqc                 v   g d}t          dt          j        d          z  |           t          dt          z  t          j        dt                    z  |           g d}t          dt          j        d          z  |           t          dt          z  t          j        dt                    z  |           d S )N)r   r
   r   r   r   r   )r   r
   r   r   r   r.   rW   )r   r   rfftfreqr   rY   s     r   r   zTestRFFTFreq.test_definition   s    OO!!CLOO"3Q777!!B$s|Ar':':":A>>>!"S\"%5%5"5q999!"R%R(<(<"<a@@@@@r   NrZ   rS   r   r   r\   r\      s(        A A A A Ar   r\   c                       e Zd Zd ZdS )
TestIRFFTNc                     t           j                            d          \  }}|d|z  z   }d}t          j        ||           d S )N)r   rH          y              ?)r   r'   )r!   r"   r   irfftn)r   araiar(   s        r   test_not_last_axis_successz%TestIRFFTN.test_not_last_axis_success   sJ    !!.11BBJ 	
14      r   N)rP   rQ   rR   rh   rS   r   r   r`   r`      s#        ! ! ! ! !r   r`   )__doc__numpyr!   numpy.testingr   r   r   r   rU   r\   r`   rS   r   r   <module>rl      s   
     3 3 3 3 3 3        zU zU zU zU zU zU zU zUz@ @ @ @ @ @ @ @A A A A A A A A	! 	! 	! 	! 	! 	! 	! 	! 	! 	!r   