
    
fY?                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4 G d, d-e          Z5e6d.k    r ej7                     dS dS )/    N)njittypes)TestCase)numpy_supportc                 *    t          j        |           S N)mathsinxs    8lib/python3.11/site-packages/numba/tests/test_mathlib.pyr
   r
          8A;;    c                 *    t          j        |           S r   )r	   cosr   s    r   r   r      r   r   c                 *    t          j        |           S r   )r	   tanr   s    r   r   r      r   r   c                 *    t          j        |           S r   )r	   sinhr   s    r   r   r          9Q<<r   c                 *    t          j        |           S r   )r	   coshr   s    r   r   r      r   r   c                 *    t          j        |           S r   )r	   tanhr   s    r   r   r   "   r   r   c                 *    t          j        |           S r   )r	   asinr   s    r   r   r   &   r   r   c                 *    t          j        |           S r   )r	   acosr   s    r   r   r   *   r   r   c                 *    t          j        |           S r   )r	   atanr   s    r   r    r    .   r   r   c                 ,    t          j        | |          S r   )r	   atan2)yr   s     r   r"   r"   2       :ar   c                 *    t          j        |           S r   )r	   asinhr   s    r   r&   r&   6       :a==r   c                 *    t          j        |           S r   )r	   acoshr   s    r   r)   r)   :   r'   r   c                 *    t          j        |           S r   )r	   atanhr   s    r   r+   r+   >   r'   r   c                 *    t          j        |           S r   r	   sqrtr   s    r   r.   r.   B   r   r   c                 *    t          j        |           S r   )npr.   r   s    r   npy_sqrtr1   F   s    71::r   c                 *    t          j        |           S r   )r	   expr   s    r   r3   r3   J   r   r   c                 *    t          j        |           S r   )r	   expm1r   s    r   r5   r5   N   r'   r   c                 *    t          j        |           S r   )r	   logr   s    r   r7   r7   R   r   r   c                 *    t          j        |           S r   )r	   log1pr   s    r   r9   r9   V   r'   r   c                 *    t          j        |           S r   )r	   log10r   s    r   r;   r;   Z   r'   r   c                 *    t          j        |           S r   )r	   floorr   s    r   r=   r=   ^   r'   r   c                 *    t          j        |           S r   )r	   ceilr   s    r   r?   r?   b   r   r   c                 *    t          j        |           S r   )r	   truncr   s    r   rA   rA   f   r'   r   c                 *    t          j        |           S r   )r	   isnanr   s    r   rC   rC   j   r'   r   c                 *    t          j        |           S r   )r	   isinfr   s    r   rE   rE   n   r'   r   c                 *    t          j        |           S r   )r	   isfiniter   s    r   rG   rG   r   s    =r   c                 ,    t          j        | |          S r   )r	   hypotr   r#   s     r   rI   rI   v   r$   r   c                 *    t          j        |           S r   )r	   degreesr   s    r   rL   rL   z       <??r   c                 *    t          j        |           S r   )r	   radiansr   s    r   rO   rO   ~   rM   r   c                 *    t          j        |           S r   )r	   erfr   s    r   rQ   rQ      r   r   c                 *    t          j        |           S r   )r	   erfcr   s    r   rS   rS      r   r   c                 *    t          j        |           S r   )r	   gammar   s    r   rU   rU      r'   r   c                 *    t          j        |           S r   )r	   lgammar   s    r   rW   rW      s    ;q>>r   c                 ,    t          j        | |          S r   )r	   powrJ   s     r   rY   rY          8Aq>>r   c                 ,    t          j        | |          S r   )r	   gcdrJ   s     r   r\   r\      rZ   r   c                 ,    t          j        | |          S r   )r	   copysignrJ   s     r   r^   r^      s    =Ar   c                 *    t          j        |           S r   )r	   frexpr   s    r   r`   r`      r'   r   c                 ,    t          j        | |          S r   )r	   ldexp)r   es     r   rb   rb      r$   r   c                  2    t           j        t           j        fS r   )r	   pirc    r   r   get_constantsrg      s    7DF?r   c                   N   e Zd Zd Zd/dZd/dZd Zd Z ej	        e
j        dk    d          d	             Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d.S )0TestMathLibc                     t          t                    }|                      |            |                                           d S r   )r   rg   assertPreciseEqualpy_func)selfcfuncs     r   test_constantszTestMathLib.test_constants   s9    ]##99999r   exactc                     t          |          }t          ||          D ]D\  }} ||          }	 ||          }
|t          j        u rdn|}d|} | j        |	|
f||d| Ed S )Nsingle
for input precmsgr   zipr   float32rk   )rm   pyfuncx_typesx_valuesru   kwargsrn   txvxgotexpectedactual_precrv   s                r   	run_unaryzTestMathLib.run_unary   s    V'8,, 	. 	.FB%))CvbzzH&(EM&9&9((tKK$&B(C#D#C . . .&,. . . .	. 	.r   c                     t          |          }t          |||          D ]R\  }}}	 |||	          }
 |||	          }|t          j        u rdn|}d|d|	d}|                     |
|||           Sd S )Nrr   zfor inputs (z, )rt   rw   )rm   rz   r{   r|   y_valuesru   rn   tyr   r#   r   r   r   rv   s                 r   
run_binaryzTestMathLib.run_binary   s    VGXx88 	N 	NHB1%1++Cva||H&(EM&9&9((tKK+,11aaa0C##C#MMMM	N 	Nr   c                    t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        g}ddddddt          d          dt          d          t          d          dt          d          g}| 
                    |||           d S )Nr   inf        nan)r   int16int32int64uint16uint32uint64ry   float64floatr   rm   rz   r{   r|   s       r   check_predicate_funcz TestMathLib.check_predicate_func   s    ;U[<u|=%-=%-@ q!Q1%LL#uU||%LL#uU||5 	vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S Nr         r   皙?皙?)r
   r   r   r   r   r   r   r   ry   r   r   r   s       r   test_sinzTestMathLib.test_sin   Z    ;U[<u|=%-1 100vw11111r   win32z'not exactly equal on win32 (issue #597)c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r   r   r   r   r   r   r   r   ry   r   r   r   s       r   test_coszTestMathLib.test_cos   s\     ;U[<u|=%-1 100vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r   r   r   r   r   r   r   r   ry   r   r   r   s       r   test_tanzTestMathLib.test_tan   r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S )Nr   r   r   r   r   r   r   r   )r.   r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_sqrtzTestMathLib.test_sqrt   Z    ;U[<u|=%-1 .--vw11111r   c                 4   t           }g d}t          j        t          j        g}|                     |||d           t          j        t          j        t          j        t          j        t          j	        t          j
        g}|                     |||           d S )Nr   rr   ru   )r1   r   r   r   r   r   r   r   r   ry   r   rm   rz   r|   r{   s       r   test_npy_sqrtzTestMathLib.test_npy_sqrt   sz    ---;-vwx@@@;<=%-1 	vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r3   r   r   r   r   r   r   r   ry   r   r   r   s       r   test_expzTestMathLib.test_exp   r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r5   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_expm1zTestMathLib.test_expm1   sZ    ;U[<u|=%-1 100vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S N)r   
   d   i  i i@B r   g?)r7   r   r   r   r   r   r   r   ry   r   r   r   s       r   test_logzTestMathLib.test_log  s[    ;U[<u|=%-1 A@@vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r9   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_log1pzTestMathLib.test_log1p  [    ;U[<u|=%-1 A@@vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r;   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_log10zTestMathLib.test_log10  r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S Nr   r   r   r   r   r         ?r   )r   r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_asinzTestMathLib.test_asin   r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r   r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_acoszTestMathLib.test_acos(  r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r    r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_atanzTestMathLib.test_atan0  sZ    ;U[<u|=%-1 100vw11111r   c                    t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}d |D             }| 
                    ||||           d S )Nr   c                     g | ]}|d z  S r   rf   .0r   s     r   
<listcomp>z*TestMathLib.test_atan2.<locals>.<listcomp>>      ,,,aAE,,,r   )r"   r   r   r   r   r   r   r   ry   r   r   rm   rz   r{   r|   r   s        r   
test_atan2zTestMathLib.test_atan28  so    ;U[<u|=%-1 100,,8,,,8<<<<<r   c                    t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||d           d S )Nr   doubler   )r&   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_asinhzTestMathLib.test_asinhA  s^    ;U[<u|=%-1 .--vwx@@@@@r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r)   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_acoshzTestMathLib.test_acoshI  sZ    ;U[<u|=%-1 .--vw11111r   c                    t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||d           d S )Nr   r   r   r   r   r   r   r   r   r   )r+   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_atanhzTestMathLib.test_atanhQ  s^    ;U[<u|=%-1 0//vwx@@@@@r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r   r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_sinhzTestMathLib.test_sinhY  r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r   r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_coshzTestMathLib.test_cosha  r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S )Nr   )r   r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_tanhzTestMathLib.test_tanhi  Z    ;U[<u|=%-1 0//vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S N)r   r   r   r   r   r   r   gffffff?)r=   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_floorzTestMathLib.test_floorq  Z    ;U[<u|=%-1 0//vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )r?   r   r   r   r   r   r   r   ry   r   r   r   s       r   	test_ceilzTestMathLib.test_ceily  r   r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )rA   r   r   r   r   r   r   r   ry   r   r   r   s       r   
test_trunczTestMathLib.test_trunc  r   r   c                 :    |                      t                     d S r   )r   rC   rm   s    r   
test_isnanzTestMathLib.test_isnan      !!%(((((r   c                 :    |                      t                     d S r   )r   rE   r   s    r   
test_isinfzTestMathLib.test_isinf  r   r   c                 :    |                      t                     d S r   )r   rG   r   s    r   test_isfinitezTestMathLib.test_isfinite  s    !!(+++++r   c           	         t           }t          j        t          j        t          j        t          j        g}g d}d |D             }d}|                     |||||           d }t          |          }t          j        t          j        fD ]}t          j	        |          j
        }	 |	t          j        |	          j        dz            }
 ||
|
          }|                     | ||
|
          d           |                     t          j        |                     t#          j                    5  t#          j        dt(                     |                     t(          d||
|
           d d d            n# 1 swxY w Y   d S )	N)r   r               gzG?g(\?c                     g | ]}|d z   S r   rf   r   s     r   r   z*TestMathLib.test_hypot.<locals>.<listcomp>  r   r   rr   c                 <    t          j        | | z  ||z  z             S r   r-   rJ   s     r   naive_hypotz+TestMathLib.test_hypot.<locals>.naive_hypot  s    9QUQU]+++r   g      >@r   errorz overflow encountered in .*scalar)rI   r   r   r   ry   r   r   r   r   as_dtypetyper0   finfomaxrk   
assertTruerG   warningscatch_warningssimplefilterRuntimeWarningassertRaisesRegex)rm   rz   r{   r|   r   ru   r   rn   flttydtvalnb_anss               r   
test_hypotzTestMathLib.test_hypot  s   ;=%-1///,,8,,,8TBBB	, 	, 	, VmU]3 	? 	?E'..3B"RXb\\%+,,CU3__F##FFF3,<,<8#LLLOOBK//000(** ? ?%g~>>>&&~(J(3S#? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	?s   39E88E<	?E<	c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )rL   r   r   r   r   r   r   r   ry   r   r   r   s       r   test_degreeszTestMathLib.test_degrees  Z    ;U[<u|=%-1 .--vw11111r   c                     t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}| 
                    |||           d S r   )rO   r   r   r   r   r   r   r   ry   r   r   r   s       r   test_radianszTestMathLib.test_radians  r  r   c           
          t           }dddddddt          d          g}t          j        t          j        gt          |          dz  z  }|                     |||d	d
           d S )Nr                r         ?r   r   r   r   ru   ulps)rQ   r   r   ry   r   lenr   r   s       r   test_erfzTestMathLib.test_erf  sc    CsCE%LLA=%-0CMMQ4FGvwxaHHHHHr   c           
          t           }dddddddt          d          g}t          j        t          j        gt          |          dz  z  }|                     |||d	d
           d S )Nr   r  r  r   r  r   r   r   r   r   r  )rS   r   r   ry   r   r  r   r   s       r   	test_erfczTestMathLib.test_erfc  sc    CsCE%LLA=%-0CMMQ4FGvwxaHHHHHr   c                 >   t           }g d}t          j        t          j        gt	          |          dz  z  }|                     |||dd           dddd	d
t          d          g}t          j        gt	          |          z  }|                     |||dd           d S )N)r   g      r  r   r   r   r  皙r         @g333333$@g      I@r      )rU   r   ry   r   r  r   r   r   s       r   
test_gammazTestMathLib.test_gamma  s    (((=%-0CMMQ4FGvwxaHHH#sD#uU||<=/CMM1vwxaHHHHHr   c           
          t           }dddddddt          d          g}t          j        t          j        gt          |          d	z  z  }|                     |||d
           d S )Nr   r  r  r   g      i@g    _Bgꌠ9Y>)Fr   r   r   r   )rW   r   r   ry   r   r  r   r   s       r   test_lgammazTestMathLib.test_lgamma  sa    dCtT5<<H=%-0CMMQ4FGvwx@@@@@r   c                    t           }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        g}g d}d |D             }| 
                    ||||           d S )Nr   c                     g | ]}|d z  S r   rf   r   s     r   r   z(TestMathLib.test_pow.<locals>.<listcomp>  r   r   )rY   r   r   r   r   r   r   r   ry   r   r   r   s        r   test_powzTestMathLib.test_pow  so    ;U[<u|=%-1 100,,8,,,8<<<<<r   c                 .   ddl m}m}m} t          } |t          t          j                  g |dd          R  } |t          t          j                  g |dd          R  }t           |||           \  }}}	| 
                    ||||	           d S )Nr   )productrepeatchain)r   r   r   r   r      r   r   )r   r   r   r$  	      )	itertoolsr!  r"  r#  r\   sortedr   signed_domainunsigned_domainrx   r   )
rm   r!  r"  r#  rz   signed_argsunsigned_argsr{   r|   r   s
             r   test_gcdzTestMathLib.test_gcd  s    4444444444g5&''
*0&1I1*M*M
 
 
  5())
,2F3F,J,J
 
 
 '*55m+L+L&M#88<<<<<r   c                 4   t           }t          j        t          j        g}ddddddt	          d          t	          d          t	          d	          g	}t          t          t          j        |||                     \  }}}| 	                    ||||           d S )
Nr   r   r  r   r   r   -infr   r   )
r^   r   ry   r   r   listrx   r'  r!  r   )rm   rz   value_typesvaluesr{   r|   r   s          r   test_copysignzTestMathLib.test_copysign  s    }em4b$Q5==%,,,, &*3{FF;;,= '> '>#88<<<<<r   c           	          t           }t          j        t          j        g}ddddt	          d          t	          d          t	          d          g}|                     |||d	           d S )
Ng      r  r   g      @r/  r   r   rp   r   )r`   r   ry   r   r   r   r   s       r   
test_frexpzTestMathLib.test_frexp  s^    =%-0$S&MM5<<u?vww?????r   c                     t           }t          |          }t          j        t          j        fD ]^}ddddddt          d          dft          d	          dft          d
          dff	D ]#}d|}|                      ||  ||            $_d S )N)r  r   )r  r   )r   r   )r   r   )r  r   )r  r   r   r   r/  r   rs   )rb   r   r   ry   r   r   rk   )rm   rz   rn   r  argsrv   s         r   
test_ldexpzTestMathLib.test_ldexp  s    VmU]3 	E 	EE"Hh"I,,*U6]]A,>,,*, E E )-.''tffdmDDDDE	E 	Er   N)rp   )1__name__
__module____qualname__ro   r   r   r   r   unittestskipIfsysplatformr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r-  r3  r5  r8  rf   r   r   ri   ri      s       : : :. . . .N N N N2 2 22 2 2 X_S\W,>@ @2 2@ @22 2 22 2 2	2 	2 	22 2 22 2 22 2 22 2 22 2 22 2 22 2 22 2 2= = =A A A2 2 2A A A2 2 22 2 22 2 22 2 22 2 22 2 2) ) )) ) ), , ,? ? ?:2 2 22 2 2I I II I II I IA A A= = =
= 
= 
== = =@ @ @	E 	E 	E 	E 	Er   ri   __main__)8r'  r	   r>  r<  r   numpyr0   numbar   r   numba.tests.supportr   numba.npr   r
   r   r   r   r   r   r   r   r    r"   r&   r)   r+   r.   r1   r3   r5   r7   r9   r;   r=   r?   rA   rC   rE   rG   rI   rL   rO   rQ   rS   rU   rW   rY   r\   r^   r`   rb   rg   ri   r9  mainrf   r   r   <module>rF     s'        



               ( ( ( ( ( ( " " " " " "                                                                              `E `E `E `E `E( `E `E `EF zHMOOOOO r   