+
    /iKK                     :   R t ^ RIHtHtHt ^ RIHt ^ RIHt	 ^ RIt^ RI
t^ RIt^ RIHtHt ^ RIHt ]P$                  P&                  t. ROtR tR t ! R	 R
4      t ! R R4      t]! RR7       ! R R4      4       t ! R R4      t ! R R4      t ! R R4      tR# )zIncludes test functions for fftpack.helper module

Copied from fftpack.helper by Pearu Peterson, October 2005
Modified for Array API, 2023

)next_fast_lenprev_fast_len_init_nd_shape_and_axes)assert_equal)raisesN)xp_assert_close	xp_device)fftc                  J    \          F  p \        \        V 4      V 4       K  	  R # )N)_5_smooth_numbersr   r   )ns    Y/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/fft/tests/test_helper.pytest_next_fast_lenr      s    ]1%q)     c                     T pV^8  d   Q h \        V ^4      w  r4V^ 8w  d   MTp K  \        ^V^,           ^4       F  p \        W4      w  r4V^ 8w  d   K  Tp K  	  V ^8X  g   Q RV RV RV  24       hR# )   zx=z is not z-smooth, remainder=N)divmodrange)xr   x_origqrds   &&    r   _assert_n_smoothr      s    F1uu
a|61ac1!<DAAvA  6 :xxs"5aS9:6r   c                      a  ] tR t^5t o R tR tR t]P                  P                  ]
P                  R8  R]RR7      R 4       tR tR	tV tR
# )TestNextFastLenc                    \         P                  P                  R 4       R pV! 4        FE  p\        V4      p\	        V^4       V\        VR4      8X  g   Q h\        VR4      p\	        V^4       KG  	  R# )  c               3   B   "   \        ^R4       Rj  xL
  Rx  R#  L
5i     Niy r    r   r   nums0TestNextFastLen.test_next_fast_len.<locals>.nums:        Q~%%(( &   FTN)nprandomseedr   r   selfr$   r   ms   &   r   r   "TestNextFastLen.test_next_fast_len7   d    
		t	) Aa AQ#a////a&AQ" r   c           	     2   \         P                  \         P                  \         P                  \         P                  \         P
                  \         P                  .pV F4  pV! R 4      p\        V4      p\        V\        \        V4      4      4       K6  	  R# )90  N)
r(   int16int32int64uint16uint32uint64r   r   intr,   ITYPESitypr   testNs   &    r   test_np_integers TestNextFastLen.test_np_integersF   s\    ((BHHbhh		299biiPDUA!!$Ec!f 56 r   c                    ^^^^^^^^^^^^^^^^^^^^^^^^RRRRRR/pVP                  4        F  w  r#\        \        VR4      V4       K  	  R# )r      i       @TNitemsr   r   r,   hamsr   ys   &   r   testnext_fast_len_small'TestNextFastLen.testnext_fast_len_smallM   sl    q!Q1aAq!Q1aBBBD$dHh
 JJLDAq$/3 !r   $Hamming Numbers too large for 32-bitTreasonr   strictc                    / R R bRRbRRbRRbRRbRRbRRbRRbRRbR	R	bRR
bRRbRRbRRbRRbRRbR RbRRR!RRRR"RRRR#RRRR$RR%RRRR&R/CpVP                  4        F  w  r#\        \        VR4      V4       K  	  R# )'hi =u+2i  B3      l   s'    >9l               fn l    >Uko      q. l   xQ+t0       ! l    dopL?    hR   2 f;               `71Y!l    ("               X l         	 TNh,2        >9     fn     q.      !    hR   2 f;       `71Y!             X    !X rC   rE   s   &   r   testnext_fast_len_big%TestNextFastLen.testnext_fast_len_bigU   sA   
y
"/
y
 y
 #0
 ,	
 )9,	

 =

 +<]
 _
  
 _
  
 .
 !"2
 0
 "#4
  0!#40!#40!#4 2"$6"$6 2"$69
< JJLDAq$/3 !r   c                V    \        ^RR7      ^8X  g   Q h\        ^RR7      ^8X  g   Q hR#    TrealF)targetrq   N)r   )r,   xps   &&r   test_keyword_args!TestNextFastLen.test_keyword_argsz   ,    Rd+r111AE2a777r   r#   N        )__name__
__module____qualname____firstlineno__r   r=   rH   pytestmarkxfailsysmaxsize
ValueErrorrk   rt   __static_attributes____classdictcell____classdict__s   @r   r   r   5   sZ     #74 [[s{{U*D(  7 47 4D8 8r   r   c                      a  ] tR t^t o R tR tR t]P                  P                  ]
P                  R8  R]RR7      R 4       tR tR	tV tR
# )TestPrevFastLenc                    \         P                  P                  R 4       R pV! 4        FE  p\        V4      p\	        V^4       V\        VR4      8X  g   Q h\        VR4      p\	        V^4       KG  	  R# )r   c               3   B   "   \        ^R4       Rj  xL
  Rx  R#  L
5ir   r"   r#   r   r   r$   0TestPrevFastLen.test_prev_fast_len.<locals>.nums   r&   r'   FTN)r(   r)   r*   r   r   r+   s   &   r   test_prev_fast_len"TestPrevFastLen.test_prev_fast_len   r/   r   c           	        \         P                  \         P                  \         P                  \         P                  \         P
                  \         P                  .pV Fa  pV! R 4      p\        V4      p\        V\        \        V4      4      4       \        VRR7      p\        V\        \        V4      RR7      4       Kc  	  R# )r1   Trp   N)
r(   r2   r3   r4   r5   r6   r7   r   r   r8   r9   s   &    r   r=    TestPrevFastLen.test_np_integers   s    ((BHHbhh		299IIDUA!!$Ec!f 56!!$/Ec!f4 @A r   c                   ^^^^^^^^^^^^^^^^^^^^^^^^RRRRRR/pVP                  4        F  w  r#\        \        VR4      V4       K  	  / ^^b^^b^^b^^b^^b^^b^^b^^b^	^	b^
^
b^^b^^b^^b^^b^^b^^b^^b^^^^^^^^^^^x^x^y^y^z^yRRRRRR/CpVP                  4        F  w  r#\        \        VR4      V4       K  	  R# )	r    r@   r!   rA   rB   Ti  FNrD   r   r   rE   s   &   r   testprev_fast_len_small'TestPrevFastLen.testprev_fast_len_small   sv   q!Q1aAq!Q1aBBBD$dHh
 JJLDAq$/3 !
q
Q
1

$%q
*+Q
011
67
<=q
BDb



$&
,.
46
<>
DFBBBCc3S$dHh	
 JJLDAq%0!4 !r   rJ   TrK   c                \   / R R bRR bRRbRR bRR bRR bRRbR RbR!RbRRbR"RbR#RbRRbR$RbR%RbR	R	bR&R	b/ R'R
bRRbR(RbR)RbRRbR*RbR+RbRRbR,RbR-RbRRbR.RbR/RbRRbR0RbR1RbRRbCR2RR3RRRR4RR5RRRR6RR7R/CpVP                  4        F  w  r#\        \        VR4      V4       K  	  R# )8rO   i  `rP   rQ   i@2rR   l     W: rS   l    8rT   l        n rU   l       , rV   l         rW   l    @!RrX   l    arY   l     +KrZ   l    h\ar[   l     >9r\   TNr]   ihi=ui=ur^   i*2r_   l    r`   l   >9ra   l   en rb   l   q. rc   l   ! l   hRrd   l   2 f;re   l         rf   rg   l   _71Y!rh   l   rj   ri   r   rE   s   &   r   testprev_fast_len_big%TestPrevFastLen.testprev_fast_len_big   s!   9
y9
 99
 9	9
 y9
 99
 99
 y9
 99
 99
 ,9
 l9
  l!9
$ =%9
& }'9
( })9
, _-9
.  /9
0  19
4 _59
6  79
8  99
< .=9
> !"2?9
@ !"2A9
D 0E9
F "#4G9
H "#4I9
L 0M9
N "#4O9
P "#4Q9
T 0U9
V "#4W9
X "#4Y9
\ 0]9
^ "#4!#4 2"$6"$6 2"$6"$6q9
t JJLDAq$/3 !r   c                V    \        ^RR7      ^
8X  g   Q h\        ^RR7      ^8X  g   Q hR# rn   )r   )r,   s   &r   rt   !TestPrevFastLen.test_keyword_args   rv   r   r#   Nrw   )rx   ry   rz   r{   r   r=   r   r|   r}   r~   r   r   r   r   rt   r   r   r   s   @r   r   r      s[     #	B5" [[s{{U*D(  7<47<4|8 8r   r   T)cpu_onlyc                   h   a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tRtV tR# )Test_init_nd_shape_and_axesc                t    VP                  ^4      pRpRpRp. p\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )   Nr#   asarrayr   	r,   rs   r   shapeaxesshape_expectedaxes_expected	shape_resaxes_ress	   &&       r   test_py_0d_defaults/Test_init_nd_shape_and_axes.test_py_0d_defaults   sJ    JJqM5aE	***(((r   c                t    VP                  R 4      pRpRpRp. p\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )g      @Nr#   r   r   s	   &&       r   test_xp_0d_defaults/Test_init_nd_shape_and_axes.test_xp_0d_defaults  sJ    JJrN5aE	***(((r   c                z    VP                  . RO4      pRpRpRp^ .p\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )r    Nr    r      )r   r   r   s	   &&       r   test_py_1d_defaults/Test_init_nd_shape_and_axes.test_py_1d_defaults  sM    JJy!5aE	***(((r   c                z    VP                  ^ ^R4      pRpRpRp^ .p\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )    皙?N)
   )aranger   r   s	   &&       r   test_xp_1d_defaults/Test_init_nd_shape_and_axes.test_xp_1d_defaults  sQ    IIaB5aE	***(((r   c                    VP                  . RO. RO.4      pRpRpRp^ ^.p\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )r    N)r    r   r   r   )            )r   r   r   r   s	   &&       r   test_py_2d_defaults/Test_init_nd_shape_and_axes.test_py_2d_defaults)  sY    JJ$& 'A5aE	***(((r   c                    VP                  ^ ^R4      pVP                  VR4      pRpRpRp^ ^.p\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )r   r   N)r   r   )r   reshaper   r   s	   &&       r   test_xp_2d_defaults/Test_init_nd_shape_and_axes.test_xp_2d_defaults7  sc    IIaBJJq&!A5aE	***(((r   c                |    VP                  . RO4      pRpRpRp. ROp\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )r   Nr   r   r   r   r   r   r    r   r   r   zerosr   r   s	   &&       r   test_xp_5d_defaults/Test_init_nd_shape_and_axes.test_xp_5d_defaultsE  sK    HH_%('5aE	***(((r   c                    VP                  . RO4      p. ROpRpRp. ROp\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )r   Nr   )r   r   r    r   )r   r   r   r    r   r   r   r   s	   &&       r   test_xp_5d_set_shape0Test_init_nd_shape_and_axes.test_xp_5d_set_shapeR  sK    HH_%")'5aE	***(((r   c                    VP                  . RO4      pRp. ROpRp. ROp\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )r   Nr   )r   r    r   )r   r   r   r   r   s	   &&       r   test_xp_5d_set_axes/Test_init_nd_shape_and_axes.test_xp_5d_set_axes_  sK    HH_%"!5aE	***(((r   c                    VP                  . RO4      p. ROp. ROpRp. ROp\        W#V4      w  rxWu8X  g   Q hW8X  g   Q hR# )r   Nr   )r   r   r   )r    r   r   )r   r   r   r   r   s	   &&       r   test_xp_5d_set_shape_axes5Test_init_nd_shape_and_axes.test_xp_5d_set_shape_axesl  sK    HH_%#!5aE	***(((r   c                p    VP                  R4      p\        VRRR7      w  r4VR8X  g   Q hV. RO8X  g   Q hR# )r   Nr   r   )r   r   r   r   )r   r   r   r   r   )r,   rs   r   r   r   s   &&   r   test_shape_axes_subset2Test_init_nd_shape_and_axes.test_shape_axes_subsety  s<    HH\"-aytL	!!!y   r   c           	        VP                  ^4      p\        \        RR7      ;_uu_ 4        \        VR^^.^^..R7       RRR4       \        \        RR7      ;_uu_ 4        \        VR. ROR7       RRR4       \        \        RR7      ;_uu_ 4        \        VR^.R7       RRR4       \        \        RR7      ;_uu_ 4        \        VRR.R7       RRR4       \        \        RR7      ;_uu_ 4        \        VR^ ^ .R7       RRR4       \        \        RR7      ;_uu_ 4        \        V^^.^^..RR7       RRR4       \        \        RR7      ;_uu_ 4        \        V. RORR7       RRR4       \        \        RR7      ;_uu_ 4        \        VP                  . RO4      . RO^.R7       RRR4       \        \        R	R7      ;_uu_ 4        \        V^ .RR7       RRR4       \        \        R
R7      ;_uu_ 4        \        VRRR7       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELp; i  + '       g   i     ELN; i  + '       g   i     EL0; i  + '       g   i     EL ; i  + '       g   i     L; i  + '       g   i     R# ; i)r    z-axes must be a scalar or iterable of integers)matchNr   z$axes exceeds dimensionality of inputzall axes must be uniquez.shape must be a scalar or iterable of integerszBwhen given, axes and shape arguments have to be of the same lengthz1invalid number of data points \(\[0\]\) specifiedz2invalid number of data points \(\[-2\]\) specified)g      ?g       @g      @g      @)r    r    r    r    r   )r   assert_raisesr   r   )r,   rs   r   s   && r   test_errors'Test_init_nd_shape_and_axes.test_errors  st   HHQK: .2 3 3#AT!Q!Q8HI3 : .2 3 3#AT8HI3 :!GI I#AT<I :!GI I#AT=I :!:< <#ATA?< : .2 3 3#Aq!fq!f-=DI3 : .2 3 3#A-=DI3 :"<= = $BHH\$:*31#?= :"34 4 $AaSt<4
 :"45 5 $ARd;5 5O3 3 33 3 3I I II I I< < <3 3 33 3 3= = =4 4
5 5 5sw   H!H1II5I-'JJ#J)J=KH.	1I	I	I*	-I>	J	J&	)J:	=K	K!	r#   N)rx   ry   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r      sF     ))))))))))!,< ,<r   r   c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestFFTShifti  c                   VP                  . RO4      pVP                  . RO4      p\        \        P                  ! V4      V4       \        \        P                  ! V4      V4       VP                  . RO4      pVP                  . RO4      p\        \        P                  ! V4      V4       \        \        P                  ! V4      V4       R# )        N)	r   r    r   r   r   r   r   )	g      r   r   r   r   r    r   r   r   )
r   r    r   r   r   r   r   r   r   )
g      r   r   r   r   r   r    r   r   r   r   r   r	   fftshift	ifftshift)r,   rs   r   rG   s   &&  r   test_definitionTestFFTShift.test_definition  s    JJ78JJ78Q+a(!,JJ;<JJ;<Q+a(!,r   c                    R Ff  pVP                  \        P                  P                  V34      4      p\        \        P
                  ! \        P                  ! V4      4      V4       Kh  	  R# )r    N)r    r   	   d      )r   r(   r)   r   r	   r   r   )r,   rs   r   r   s   &&  r   test_inverseTestFFTShift.test_inverse  sF    $A

299++QD12ACMM#,,q/:A> %r   c                V   VP                  . RO. RO. RO.4      pVP                  . RO. RO. RO.4      p\        \        P                  ! VR	R7      V4       \        \        P                  ! V^ R7      \        P                  ! VR
R7      4       \        \        P                  ! VR	R7      V4       \        \        P                  ! V^ R7      \        P                  ! VR
R7      4       \        \        P                  ! V4      V4       \        \        P                  ! V4      V4       R# )r   r   N)r   r    r   )r   r   r   )r   r   r   )g      r   r   )r   r   r    )r   r   r   r   r    r   r   )r,   rs   freqsshifteds   &&  r   test_axes_keywordTestFFTShift.test_axes_keyword  s    

J
LAB**mY
CDU8'BU3S\\%d5STgF;UCgA6gD9	;U+W5g.6r   c                   VP                  ^ ^.^^.^^..VP                  R7      pVP                  ^^.^ ^.^^..VP                  R7      p\        \        P                  ! V^ R7      V4       \        \        P
                  ! V^ R7      V4       \        \        P                  ! VRR7      V4       \        \        P
                  ! V^ .R7      V4       VP                  ^^ .^^.^^..VP                  R7      p\        \        P                  ! V^R7      V4       \        \        P
                  ! V^R7      V4       VP                  ^^.^^ .^^..VP                  R7      p\        \        P                  ! VRR7      V4       \        \        P
                  ! VRR7      V4       \        \        P                  ! V^ ^.R7      V4       \        \        P
                  ! V^ ^.R7      V4       \        \        P                  ! VRR7      V4       \        \        P
                  ! VRR7      V4       \        \        P                  ! V4      V4       \        \        P
                  ! V4      V4       R# )z0Test 2D input, which has uneven dimension sizes dtyper   Nr   r   )r   float64r   r	   r   r   )r,   rs   r   
shift_dim0
shift_dim1shift_dim_boths   &&    r   test_uneven_dimsTestFFTShift.test_uneven_dims  s   

FFF
 	   ZZFFF!
 	   

 	U3Z@jq95AU6
Cjs;UC ZZFFF!
 	   

 	U3Z@jq95A FFF%
 	 $ 
 	U8.In6BEJU!Q8.InAq6BEJ 	U6Gn4@%HU+^<n5u=r   r#   N)
rx   ry   rz   r{   r   r   r   r   r   r   r   s   @r   r   r     s     -?
	7+> +>r   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )TestFFTFreqi  c                T   VP                  . ROVP                  R7      pVP                  . R	OVP                  R7      p^	\        P                  ! ^	VR7      ,          p\	        WBRRR7       ^	VP
                  ,          \        P                  ! ^	VP
                  VR7      ,          p\	        WBRR7       ^
\        P                  ! ^
VR7      ,          p\	        WCRR7       ^
VP
                  ,          \        P                  ! ^
VP
                  VR7      ,          p\	        WCRR7       R# )
r   r   rs   FTcheck_dtypecheck_namespacer  N)	r   r    r   r   r   r   r   r   r   )
r   r    r   r   r   r   r   r   r   r   )r   r   r	   fftfreqr   pir,   rs   r   x2rG   s   &&   r   r   TestFFTFreq.test_definition  s    JJ6bjjJIZZ;2::ZN A"%%%FIAruu44%0RB''51JR26651r   c                    V FI  p\         P                  ! ^	WR7      pVP                  ^ VR7      p\        V4      \        V4      8X  d   KI  Q h	  R# r   )rs   device)r  N)r	   r  emptyr   r,   rs   devicesr   rG   r   s   &&&   r   test_deviceTestFFTFreq.test_device  sD    AA"/A1%AQ<9Q</// r   r#   Nrx   ry   rz   r{   r   r  r   r   r   s   @r   r  r    s     2$0 0r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )TestRFFTFreqi  c                T   VP                  . ROVP                  R7      pVP                  . R	OVP                  R7      p^	\        P                  ! ^	VR7      ,          p\	        WBRRR7       ^	VP
                  ,          \        P                  ! ^	VP
                  VR7      ,          p\	        WBRR7       ^
\        P                  ! ^
VR7      ,          p\	        WCRR7       ^
VP
                  ,          \        P                  ! ^
VP
                  VR7      ,          p\	        WCRR7       R# )
r   r   r  FTr  r  Nr   )r   r    r   r   r   r   )r   r   r	   rfftfreqr   r	  r
  s   &&   r   r   TestRFFTFreq.test_definition  s    JJbjjJ9ZZ*"**Z= Q2&&%FIQ"55%0bR((51Jb"%%B7751r   c                    V FI  p\         P                  ! ^	WR7      pVP                  ^ VR7      p\        V4      \        V4      8X  d   KI  Q h	  R# r  )r	   r  r  r   r  s   &&&   r   r  TestRFFTFreq.test_device'  sD    AQ20A1%AQ<9Q</// r   r#   Nr  r   s   @r   r  r    s     2$0 0r   r  )r   r   r   r   r   r   r   r      i  i  )__doc__scipy.fft._helperr   r   r   numpy.testingr   r|   r   r   numpyr(   r   scipy._lib._array_apir   r   scipyr	   r}   skip_xp_backendsr   r   r   r   r   r   r   r  r  r#   r   r   <module>r%     s    T S & *   
 < ;;//  *
:,G8 G8Tp8 p8f 4 y< y< !y<xG> G>T0 040 0r   