+
    nDj              	       &   ^ RI t ^ RIt^ RIt^ RIt^ RIHtHtHt ^ RI	H
t
 ^ RIHtHtHtHt ]P                   P"                  t]! ]]4      R 4       t]P                   P'                  RRR.4      ]P                   P'                  R	. RO4      ]P                   P'                  R
. RO4      ]P                   P'                  R^@^?.4      ]! ]]]4      R 4       4       4       4       4       t]! ]]4      R 4       t]P                   P'                  R^@^?.4      ]! ]4      R 4       4       t]! RRR7      ]P                   P'                  R]! ]4      ]! ]4      .4      R 4       4       t]P                   P'                  R^^.4      ]! ]]4      R 4       4       tR# )    N)fhtifht	fhtoffset)poch)xp_assert_closexp_assert_lessmake_xp_test_casemake_xp_pytest_paramc                    R  p\         P                  ! R^^4      p\        P                  ! V^,          V^ ,          ,          4      pRpRpRpV P	                  V! W$4      4      p\        WsWEVR7      p. R	Op	V P	                  WP                  R7      p	\        W4       \        W4VR7      p\        WsWEVR7      p. R
Op	V P	                  WP                  R7      p	\        W4       Rp\        W4VR7      p\        V4      p\        WsWEVR7      p. ROp	V P	                  WP                  R7      p	\        W4       Rp\        W4VR7      p\        V4      p\        WsWEVR7      p. ROp	V P	                  WP                  R7      p	\        W4       R# )c                 t    W^,           ,          \         P                  ! V ^,          ) ^,          4      ,          #    )npexp)rmus   &&U/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/fft/tests/test_fftlog.pyf&test_fht_agrees_with_fftlog.<locals>.f   s%    a4yAa((    g333333?        offsetbiasdtyper   g?N)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?)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 @(LG)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   nc                 ^   \         P                  P                  R 4      pVP                  VP	                  V 4      4      pVP                  R^4      pVP                  R^4      pV'       d   \        WxW!R7      p\        V4      p\        WgWVR7      p	\        WWVR7      p
\        WRR7       R# )   E3  initialr   r   gv!>)rtolN)r   randomRandomStater"   standard_normaluniformr   r$   r   r   r   )r,   r   r   r+   r%   rngr'   r&   r   Aa_s   &&&&&      r   test_fht_identityr;   d   s     ))



+C


3&&q)*A
++b!
C	R	B3F> vABD1A	abd	3BB'r   c           	         \         P                  P                  R 4      pV P                  VP	                  ^@4      4      pVP                  R
^4      pRRrT\        P                  ! RR7      ;_uu_ 4       p\        W#WER7       V'       d   Q R4       h RRR4       RRrT\        P                  ! RR7      ;_uu_ 4       p\        W#WER7       V'       d   Q R4       h RRR4       RRrT\        P                  ! \        4      ;_uu_ 4       p\        W#WER7       V'       g   Q R4       h RRR4       RRrT\        P                  ! \        4      ;_uu_ 4       p\        W#WER7       V'       g   Q R	4       h RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)r.         ?T)recordr   z)fht warned about a well-defined transformN      ?z+fht did not warn about a singular transformz,ifht did not warn about a singular transformr2   g      g      g      )r   r4   r5   r"   r6   r7   warningscatch_warningsr   pytestwarnsWarningr   )r%   r8   r'   r&   r   r   r>   s   &      r   test_fht_special_casesrE   |   sM   
))



+C


3&&r*+A
++b!
C
 S		 	 	-	-AB"FFFz6 
.
 S		 	 	-	-AB"FFFz6 
. S	g		&AB"DDDv 
 S	g		&QR#EEEv 
	) 
.	- 
.	- 
	 
		s0   4E:<FF F3:F
	F	 F0	3G	c                    \         P                  P                  R 4      pVP                  ^ ^4      pVP                  RV,
          R4      p\         P                  ! R^V 4      pVP                  WT,          4      p\        P                  ! V^,          V^ ,          ,          4      p\        WsRVR7      p\        V4      p\        WgW8VR7      p	\         P                  ! V4      VRRR1,          ,          p
VP                  ^V
,          V,          \        V^,           V,
          ^,          V4      ,          4      p\        W4       R# )r.   r   r/   r   Nr2   r?   r3   )r   r4   r5   r7   r   r"   r    r!   r   r$   r   r   r   r   )r,   r%   r8   r   gammar   r'   r&   r   r9   kAts   &&          r   test_fht_exactrJ      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                     R R .R R ..R R .R R ..R R .R R ...p\        V! VR R4      V! V P                  V4      R R4      4       R# )r=   g       @N)r   r"   )r%   rM   xs   && r   test_array_likerP      s`     *sCj	!*sCj	!*sCj	!	#A Bq#sOR

1sC%@Ar   c                 ~  a  S P                  R 4      pRp\        P                  ! R	^V4      p\        P                  ! V^,          V^ ,          ,          4      p\        VR
\        P                  ! ^
4      ,          VR7      pS P                  WBP                  R7      p\        P                  ! V4      S P                  VRR7      ,          pV 3R lpV! WC4      p	\        WW6R7      p
V! Ws4      pS P                  S P                  W,
          V,          4      4      p\        VS P                  R4      R,          4       R# )r=   r   )r0   r   r   )axisc                 l   < W^,           ,          SP                  V ^,          ) ^,          4      ,          # r   )r   )rO   r   r%   s   &&r   r   test_gh_21661.<locals>.f   s&    6{2661a4%'?**r   )r   r   g `m3*pCNiir2    )r"   r   r   r    r!   r   r   r   flipr   maxabsr   )r%   r,   oner   r   r&   r   rH   r   a_rfht_vala_krel_errs   f&           r   test_gh_21661r^      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   )r   r=   g      )r   g?g)r@   r    numpyr   rB   scipy.fft._fftlogr   r   r   scipy.specialr   scipy._lib._array_apir   r   r	   r
   markskip_xp_backendsr*   parametrizer;   rE   rJ   rP   r^   rU   r   r   <module>rf      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   