
    xf1                     .   d dl Z d dlZd dlmZ d dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d Zej                  j                  dddg      ej                  j                  d	g d
      ej                  j                  dg d      ej                  j                  dddg      d                             Zej                  j#                   ej$                         j'                  d      d      d        Zej                  j                  dddg      d        Zy)    N)assert_allclose)fhtifht	fhtoffset)pochc                     d } t        j                  ddd      }t        j                  |d   |d   z        }d}d}d} | ||      }t        |||||	      }g d
}t	        ||       t        |||      }t        |||||	      }g d}t	        ||       d}t        |||      }t        |||||	      }g d}t	        ||       d}t        |||      }t        |||||	      }g d}t	        ||       y )Nc                 L    | |dz   z  t        j                  | dz   dz        z  S )N      )npexp)rmus     =/usr/lib/python3/dist-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?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logr   r   r   )	r   r   dlnr   r   r   aourstheirss	            r   test_fht_agrees_with_fftlogr!      s#   ) 	B2A
&&1ad
C	BFD	!RA q#r&t4D@F D&! sBT*Fq#r&t4D@F D&! DsBT*Fq#r&t4D@F D&! DsBT*Fq#r&t4D@F D&!r   optimalTFr   )r         ?g      r   )r   g?gn@   ?   c                 &   t         j                  j                  d      }|j                  |       }|j	                  dd      }|j	                  dd      }|rt        ||||      }t        |||||      }t        |||||      }	t        ||	       y )N   E3  r
   r   initialr   r   )	r   randomRandomStatestandard_normaluniformr   r   r   r   )
r$   r   r   r"   rngr   r   r   Aa_s
             r   test_fht_identityr4   S   s    
 ))



+CAA
++b!
C	R	B3F>AsBvD1A	abd	3BArr   mips64ztest known to fail on mips64el)reasonc                     t         j                  j                  d      } | j                  d      }| j	                  dd      }d\  }}t        j                  d      5 }t        ||||       |rJ d	       	 d d d        d
\  }}t        j                  d      5 }t        ||||       |rJ d	       	 d d d        d\  }}t        j                  t              5 }t        ||||       |sJ d       	 d d d        d
\  }}t        j                  t              5 }t        ||||       |sJ d       	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nr(   r%   r)   r
   )g      r#   T)recordr   z)fht warned about a well-defined transform)g            ?)g      r9   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r-   r.   r/   r0   warningscatch_warningsr   pytestwarnsWarningr   )r1   r   r   r   r   r8   s         r   test_fht_special_casesr?   g   s|   
))



+CBA
++b!
C
 HB		 	 	- GAsBT"FFFz6G
 HB		 	 	- GAsBT"FFFz6G
 HB	g	 E&AsBT"DDDvE
 HB	g	 F&QRd#EEEvF F%G GG GE EF Fs0   D>E
EE">E
EE"E+c                    t         j                  j                  d      }|j                  dd      }|j                  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        ||
       y )Nr(   r      r)   r9   r*   r   r
   r   r+   r   )r   r-   r.   r0   r   r   r   r   r   r   r   )r$   r1   r   gammar   r   r   r   r2   kAts              r   test_fht_exactrE      s    
))



+C
 
Q	B KK2s#E
B1A	5A
&&1ad
CsB%8FAsBvE2A
vq2wA A#bd5j!^U3	3BArr   )r:   numpyr   numpy.testingr   r<   platformscipy.fft._fftlogr   r   r   scipy.specialr   r!   markparametrizer4   skipifmachine
startswithr?   rE    r   r   <module>rQ      s
     )   2 2 E"P T5M2#340r2h' ( 1 5 3  $H$$&11(;DdeF fFB r2h' (r   