
    Yh                        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m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)xp_assert_closexp_assert_lessc                    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          |          }t          |||||	          }g d}	|                     |	| j                  }	t          ||	           d}t          |||          }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     m/var/www/tools.fuzzalab.pt/emblema-extractor/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mathlogasarrayr   float64r   r   float)
xpr   r   dlnr   r   r   aourstheirss
             r   test_fht_agrees_with_fftlogr*      s+   ) ) ) 	B2A
(1Q4!9

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 6]]Fq#r&t444D@ @ @F ZZbjZ11FD&!!! DsBT***F6]]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          |	||||          }
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+   r%   rngr'   r&   r   Aa_s              r   test_fht_identityr>   a   s    
 )



+
+C


3&&q))**A
++b!

C	R		B 3F>>> v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 )Nr1   r.   r2   r   )g      r,   T)recordr   z)fht warned about a well-defined transform)g            ?)g      rA   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r7   r8   r"   r9   r:   warningscatch_warningsr   pytestwarnsWarningr   )r%   r;   r'   r&   r   r   r@   s          r   test_fht_special_casesrG   z   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                 z   t           j                            d          }|                    dd          }|                    d|z
  d          }t          j        dd|           }|                    ||z            }t          j        |d         |d         z            }t          ||d	|
          }t          |          }t          |||||          }	t          j        |          |d d d         z  }
|                    d|
z  |z  t          |dz   |z
  dz  |          z            }t          |	|           d S )Nr1   r      r2   rA   r3   r   r   r   r4   r   )r   r7   r8   r:   r   r"   r    r!   r   r$   r   r   r   r   )r-   r%   r;   r   gammar   r'   r&   r   r<   kAts               r   test_fht_exactrM      s+   
)



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


1e8A
(1Q4!9

CsB%888F 6]]F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%   rP   xs      r   test_array_likerS      sw     *sCj	!*sCj	!*sCj	!	#A BBq#sOORR

1sC%@%@AAAAAr         c                                           d          }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
   )r5   r   r   r2   )axisc                 N    | |dz   z                       | dz   dz            z  S r   )r   )rR   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    r!   r   r   r   flipr   maxabsr   )r%   r-   oner   r   r&   r   rK   r   a_rfht_vala_krel_errs   `            r   test_gh_21661rc      s<   
**S//C	B
B1A
(1Q4!A$;

CsBO;;;F


1CI
&&A277127...A+ + + + + !Ar((C#sr&111G
!Ar((CffRVVWs]c12233G7BJJx00455555r   )rB   r    numpyr   rD   scipy.fft._fftlogr   r   r   scipy.specialr   scipy._lib._array_apir   r   markskip_xp_backendsr*   parametrizer>   thread_unsaferG   rM   rS   rc   rZ   r   r   <module>rl      s          2 2 2 2 2 2 2 2 2 2       A A A A A A A A;/ O" O" O"d T5M22#3#3#34400r2h''( ( (' 10 54 32(*  F  F  FF r2h''  ('< $GI I IT{++B B ,+I IB sCj))6 6 *)6 6 6r   