
    Bpj              	          S SK r S SKrS SKrS SKrS SKJrJrJr  S SK	J
r
  S SKJrJrJrJr  \R                   R"                  r\" \\5      S 5       r\R                   R'                  SSS/5      \R                   R'                  S	/ S
Q5      \R                   R'                  S/ SQ5      \R                   R'                  SSS/5      \" \\\5      S 5       5       5       5       5       r\" \\5      S 5       r\R                   R'                  SSS/5      \" \5      S 5       5       r\" SSS9\R                   R'                  S\" \5      \" \5      /5      S 5       5       r\R                   R'                  SSS/5      \" \\5      S 5       5       rg)    N)fhtifht	fhtoffset)poch)xp_assert_closexp_assert_lessmake_xp_test_casemake_xp_pytest_paramc                    S n[         R                  " SSS5      n[        R                  " US   US   -  5      nSnSnSnU R	                  U" X$5      5      n[        XsXEUS	9n/ S
Qn	U R	                  XR                  S9n	[        X5        [        X4US9n[        XsXEUS	9n/ SQn	U R	                  XR                  S9n	[        X5        Sn[        X4US9n[        U5      n[        XsXEUS	9n/ SQn	U R	                  XR                  S9n	[        X5        Sn[        X4US9n[        U5      n[        XsXEUS	9n/ SQn	U R	                  XR                  S9n	[        X5        g )Nc                 L    XS-   -  [         R                  " U S-  * S-  5      -  $ N      )npexp)rmus     W/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/fft/tests/test_fftlog.pyf&test_fht_agrees_with_fftlog.<locals>.f   s%    a4yAa((          r   r   g333333?        offsetbias)g=lSgl1Z?gpR_g~]
o?g0d@?g?g02u?g7c4Uo?gU/5?gޠ3JgQiIg!m9?g 1g?Jb7?g tj3Bg 	'K?dtyper   )g Dy?g TIg 94?gB M?gQ89w?gĥ?gZT3%?gz;_x?g9%P?gv@݆gAAY]?gayig;gGI<!?g F\mgH ?g @(LGg?)gU_g0E>y7?g4⬞	F?gR^ء*9g-g?g!a?gR޴ ?gmMUU?g .?g'?eHgZ7ZP?gmܷ`%gCGT?g2Tg҅u>g/&g)gG3>g`4]<]?g[8+?g,8GdP?g
u?g,ח$5?g~}?gra,4?gV?gh`>EgDgyٖ?gP2ZSg͆˝?gܺJ?g[U+@g"%@)
r   logspacemathlogasarrayr   float64r   r   float)
xpr   r   dlnr   r   r   aourstheirss
             r   test_fht_agrees_with_fftlogr-      sp   ) 	B2A
((1Q4!9
C	BFD


1Q8A qrt4D@F ZZjjZ1FD! sT*Fqrt4D@F ZZjjZ1FD! DsT*F 6]Fqrt4D@F ZZjjZ1FD! DsT*F6]Fqrt4D@F ZZjjZ1FD!r   optimalTFr   )r         ?g      r   )r   g?gn@   ?   c                 B   [         R                  R                  S5      nUR                  UR	                  U 5      5      nUR                  SS5      nUR                  SS5      nU(       a  [        XxX!S9n[        U5      n[        XgXUS9n	[        XXUS9n
[        XSS	9  g )
N   E3  r   r   initialr   r   gv!>)rtol)r   randomRandomStater%   standard_normaluniformr   r'   r   r   r   )r0   r   r   r.   r(   rngr*   r)   r   Aa_s              r   test_fht_identityrA   d   s     ))



+C


3&&q)*A
++b!
C	R	B3F> vABD1A	abd	3BB'r   c                    [         R                  R                  S5      nU R                  UR	                  S5      5      nUR                  SS5      nSu  pE[        R                  " SS9 n[        X#XES9  U(       a   S	5       e S S S 5        S
u  pE[        R                  " SS9 n[        X#XES9  U(       a   S	5       e S S S 5        Su  pE[        R                  " [        5       n[        X#XES9  U(       d   S5       e S S S 5        S
u  pE[        R                  " [        5       n[        X#XES9  U(       d   S5       e S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nq= f! , (       d  f       g = f)Nr4   r1   r5   r   )g      r/   T)recordr!   z)fht warned about a well-defined transform)g            ?)g      rD   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r:   r;   r%   r<   r=   warningscatch_warningsr   pytestwarnsWarningr   )r(   r>   r*   r)   r   r   rC   s          r   test_fht_special_casesrJ   |   s>   
))



+C


3&&r*+A
++b!
C
 HB		 	 	-AB"FFFz6 
.
 HB		 	 	-AB"FFFz6 
. HB	g	&AB"DDDv 
 HB	g	&QR#EEEv 
	) 
.	- 
.	- 
	 
	s0   *E$E$E)$E:
E
E&)
E7:
Fc                    [         R                  R                  S5      nUR                  SS5      nUR                  SU-
  S5      n[         R                  " SSU 5      nUR                  XT-  5      n[        R                  " US   US   -  5      n[        XsS	US
9n[        U5      n[        XgX8US9n	[         R                  " U5      US S S2   -  n
UR                  SU
-  U-  [        US-   U-
  S-  U5      -  5      n[        X5        g )Nr4   r      r5   rD   r6   r   r   r   r7   r   )r   r:   r;   r=   r"   r%   r#   r$   r   r'   r   r   r   r   )r0   r(   r>   r   gammar   r*   r)   r   r?   kAts               r   test_fht_exactrP      s     ))



+C
 
Q	B KK2s#E
B1A


18A
((1Q4!9
Cs%8F 6]FABE2A
vq2wA 
QqS5L4AeQ#>>	?BAr   z,array-likes only supported for NumPy backend)np_onlyreasonopc                     SS/SS//SS/SS//SS/SS///n[        U" USS5      U" U R                  U5      SS5      5        g )Nr/   g       @)r   r%   )r(   rS   xs      r   test_array_likerV      s`     *sCj	!*sCj	!*sCj	!	#A Bq#sOR

1sC%@Ar         c                 $  ^  T R                  S5      nSn[        R                  " SSU5      n[        R                  " US   US   -  5      n[        US[        R                  " S5      -  US9nT R                  XBR                  S	9n[        R                  " U5      T R                  US
S9-  nU 4S jnU" XC5      n	[        XX6S9n
U" Xs5      nT R                  T R                  X-
  U-  5      5      n[        UT R                  S5      S   5        g )Nr/   r   ir   r   i
   )r8   r   r   r5   )axisc                 D   > XS-   -  TR                  U S-  * S-  5      -  $ r   )r   )rU   r   r(   s     r   r   test_gh_21661.<locals>.f   s&    6{2661a4%'?**r   )r   r   g `m3*pC )r%   r   r"   r#   r$   r   r    r   flipr   maxabsr   )r(   r0   oner   r   r)   r   rN   r   a_rfht_vala_krel_errs   `            r   test_gh_21661rg      s     **S/C	B
B1A
((1Q4!A$;
CsBO;F


1II
&A277127..A+ A(C#r1G
A(CffRVVW]c123G7BJJx045r   )rE   r#   numpyr   rG   scipy.fft._fftlogr   r   r   scipy.specialr   scipy._lib._array_apir   r   r	   r
   markskip_xp_backendsr-   parametrizerA   rJ   rP   rV   rg   r^   r   r   <module>ro      s       2 2   ;;//  3	"O" #O"d T5M2#340r2h'9c4(( ) ( 1 5 3
(& 3 F  FF r2h'3  (< $GI$&:4&@
ABI
B sCj)9c"6 # *6r   