
    Bwg                     |    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
y)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y)TestFFTShiftc                    g d}g d}t        t        j                  |      |       t        t        j                  |      |       g d}g d}t        t        j                  |      |       t        t        j                  |      |       y )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      R/var/www/horilla/myenv/lib/python3.12/site-packages/numpy/fft/tests/test_helper.pytest_definitionzTestFFTShift.test_definition   s`    ++!#,,q/15!#--"2A6//!#,,q/15!#--"2A6    c                     dD ]T  }t         j                  j                  |f      }t        t        j                  t        j
                  |            |       V y )N)r
   r   	   d      )nprandomr   r   r   r   )r   nr   s      r   test_inversezTestFFTShift.test_inverse   sD    $ 	IA		  !&A%cmmCLLO&DaH	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                  |      |       y )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    J5J7!#,,u6"BGL!#,,u1"="%,,u4"@	B!#--f"EuM!#--a"@"%--d"C	E 	"#,,u"5w?!#--"8%@r   c                    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                  |      |       y
)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!#--
"CUK!#,,u4"@*M!#--
!"EuM FFF


 	"#,,u1"=zJ!#--
"CUK FFF

 	"#,,u6"BNS!#--V"LeT!#,,uAq6"BNS!#--aV"LeT 	"#,,u4"@.Q!#--T"JER!#,,u"5~F!#--"?Gr   c           
      r  	
 ddl mm	mm
 d	
fd	}d	
fd	}t        d      D ]  }t        d      D ]w  }dD ]p  }t        j                  j                  ||      }t        t        j                  ||       |||             t        t        j                  ||       |||             r y  y)	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 ]:  }|j
                  |   }|dz   dz  }  	||       	|      f      } |||      }< |S )z& How fftshift was implemented in v1.14r
   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88D|E$K(D#&wA 'IIaL!e\$fRmVBZ%@AFA&	'
 Hr   c                     
|       }|j                   }|t        t        |            }nt        |t              r|f}|}|D ]=  }|j
                  |   }||dz   dz  z
  }  	||       	|      f      } |||      }? |S )z( How ifftshift was implemented in v1.14 r
   r   r9   r@   s            r   original_ifftshiftz?TestFFTShift.test_equal_to_original.<locals>.original_ifftshiftj   s    !*C88D|E$K(D#&wA 'IIaL!a%A%$fRmVBZ%@A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	 	 	 	$ r 		UA2Y U$> UL))..A.C-cll3.M.?\.RT .cmmC.N.@l.SUUU		Ur   N)__name__
__module____qualname__r   r$   r,   r2   rO    r   r   r   r      s     7I
A+HZ/Ur   r   c                       e Zd Zd Zy)TestFFTFreqc                 T   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  |       y )Nr	   r   r   
   )r   r   fftfreqr   r   r   s     r   r   zTestFFTFreq.test_definition   sv    +!!CKKN"2A6!!B$s{{1b'9"91=/!"S[[_"4a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y)TestRFFTFreqc                 T   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  |       y )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   sw    !!CLLO"3Q7!!B$s||Ar':":A>!"S\\"%5"5q9!"R%R(<"<a@r   NrZ   rS   r   r   r\   r\      s    Ar   r\   c                       e Zd Zd Zy)
TestIRFFTNc                     t         j                  j                  d      \  }}|d|z  z   }d}t        j                  ||       y )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   s<    !!.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      sF   
  3 zU zUz@ @A A	! 	!r   