
    _Mh                        d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ eej                            d          gZej        j        Zd Zej                            dd	d
g          ej                            dg d          ej                            dg d          ej                            dddg          d                                                 Zej        j        d             Zej                            dddg          d             Z ed	d          ej                            deeg          d                         Zej                            dddg          d             ZdS )    N)fhtifht	fhtoffset)poch)array_api_compatible)xp_assert_closexp_assert_lessarray_namespaceskip_xp_backendsc                 \   d }t          j        ddd          }t          j        |d         |d         z            }d}d}d}|                      |||                    }t	          |||||	          }g d
}	|                     |	| j                  }	t          ||	           t          |||          }t	          |||||	          }g d}	|                     |	| j                  }	t          ||	           d}t          |||          }t	          |||||	          }g d}	|                     |	| j                  }	t          ||	           d}t          |||          }t	          |||||	          }g d}	|                     |	| j                  }	t          ||	           d S )Nc                 J    | |dz   z  t          j        | dz   dz            z  S N      )npexp)rmus     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/fft/tests/test_fftlog.pyfz&test_fht_agrees_with_fftlog.<locals>.f   s'    2a4y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logasarrayr   float64r   r   )
xpr   r   dlnr   r   r   aourstheirss
             r   test_fht_agrees_with_fftlogr+      s   ) ) ) 	B2A
&1ad

C	BFD


11Q88A q#r&t444D@ @ @F ZZbjZ11FD&!!! sBT***Fq#r&t444D@ @ @F ZZbjZ11FD&!!! DsBT***Fq#r&t444D@ @ @F ZZbjZ11FD&!!! DsBT***Fq#r&t444D@ @ @F ZZbjZ11FD&!!!!!r   optimalTFr   )r         ?g      r   )r   g?gn@   ?   c                    t           j                            d          }|                    |                    |                     }|                    dd          }|                    dd          }|rt          ||||          }t          |||||          }	t          |	||||          }
t          |
|d	           d S )
N   E3  r   r   initialr   r   gv!>)rtol)
r   randomRandomStater$   standard_normaluniformr   r   r   r   )r.   r   r   r,   r&   rngr(   r'   r   Aa_s              r   test_fht_identityr?   ]   s    
 )



+
+C


3&&q))**A
++b!

C	R		B ?3F>>>AsBvD111A	abd	3	3	3BB''''''r   c                 b   t           j                            d          }|                     |                    d                    }|                    dd          }d\  }}t          j        d          5 }t          ||||           |r
J d	            	 d d d            n# 1 swxY w Y   d
\  }}t          j        d          5 }t          ||||           |r
J d	            	 d d d            n# 1 swxY w Y   d\  }}t          j
        t                    5 }t          ||||           |s
J d            	 d d d            n# 1 swxY w Y   d
\  }}t          j
        t                    5 }t          ||||           |s
J d            	 d d d            d S # 1 swxY w Y   d S )Nr2   r/   r3   r   )g      r-   T)recordr!   z)fht warned about a well-defined transform)g            ?)g      rB   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r8   r9   r$   r:   r;   warningscatch_warningsr   pytestwarnsWarningr   )r&   r<   r(   r'   r   r   rA   s          r   test_fht_special_casesrH   s   s   
)



+
+C


3&&r**++A
++b!

C
 HB		 	-	-	- GAsBT""""FFFFFFFG G G G G G G G G G G G G G G
 HB		 	-	-	- GAsBT""""FFFFFFFG G G G G G G G G G G G G G G HB	g		 E&AsBT""""DDDDDDDE E E E E E E E E E E E E E E HB	g		 F&QRd####EEEEEEEF F F F F F F F F F F F F F F F F FsH   8 B%%B),B)
 C77C;>C;  EEE6 F$$F(+F(c                 \   t           j                            d          }|                    dd          }|                    d|z
  d          }t          j        dd|           }|                    ||z            }t          j        |d         |d         z            }t          ||d	|
          }t          |||||          }	t          j	        |          |d d d         z  }
|                    d|
z  |z  t          |dz   |z
  dz  |          z            }t          |	|           d S )Nr2   r      r3   rB   r4   r   r   r   r5   r   )r   r8   r9   r;   r"   r$   r#   r   r   r   r   r   )r.   r&   r<   r   gammar   r(   r'   r   r=   kAts               r   test_fht_exactrN      s   
)



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


1e8A
&1ad

CsB%888FAsBvE222A
vq2wA 
QqS5L4AeQ#>#>>	?	?BArr   z,array-likes only supported for NumPy backend)np_onlyreasonopc                     ddgddggddgddggddgddggg}t           ||dd           ||                     |          dd                     d S )Nr-   g       @)r   r$   )r&   rQ   xs      r   test_array_likerT      sw     *sCj	!*sCj	!*sCj	!	#A BBq#sOORR

1sC%@%@AAAAAr         c                                           d          }t          |          }d}t          j        dd|          }t	          j        |d         |d         z            }t          |dt          j        d          z  |          }                      ||j        	          }t	          j        |          |	                    |d
          z  } fd}	 |	||          }
t          |
|||          } |	||          }                                          ||z
  |z                      }t          |                      d          d                    d S )Nr-   r   ir   r   i
   )r6   r   r   r3   )axisc                 N    | |dz   z                       | dz   dz            z  S r   )r   )rS   r   r&   s     r   r   ztest_gh_21661.<locals>.f   s*    26{2661a4%'??**r   )r   r   g `m3*pC )r$   r
   r   r"   mathr#   r   r    r   flipr   maxabsr	   )r&   r.   onexp_testr   r   r'   r   rL   r   a_rfht_vala_krel_errs   `             r   test_gh_21661rf      sI   
**S//Cc""G	B
B1A
(1Q4!A$;

CsBO;;;F


1CI
&&A7<<<333A+ + + + + !Ar((C#sr&111G
!Ar((CffRVVWs]c12233G7BJJx00455555r   )rC   r\   numpyr   rE   scipy.fft._fftlogr   r   r   scipy.specialr   scipy.conftestr   scipy._lib._array_apir   r	   r
   markusefixtures
pytestmarkr   r+   parametrizer?   thread_unsaferH   rN   rT   rf   r[   r   r   <module>rq      sN          2 2 2 2 2 2 2 2 2 2       / / / / / / R R R R R R R R R R"FK$;$;<N$O$OQ
;/ I" I" I"X T5M22#3#3#34400r2h''( ( (' 10 54 32($  F  F  FF r2h''  ('6 $GI I IT{++B B ,+I IB sCj))6 6 *)6 6 6r   