a
    ze                     @   s6   d dl Z d dlZG dd dejZedkr2e  dS )    Nc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )PowTestc              
   C   s  |t kr@tddD ]h}| t||dd | t||d|| | t|dd|d | t|dd|d qtddD ]"}| t||d|| |  qd}tddD ]&}| td	|| |d
kr|d	 }qtfD ]V}ttddttdd D ]4}||}tddD ]}|| }t|| qqqtt fD ]L}tddD ]:}|d}||d  }	|	dkr~qV| tt||	 qVqHd\}
}d\}}d\}}| j}|t krd}
| j}n"|tkrd}n|tkrd\}}t|
|d D ]}t||d D ]|}t||d D ]f}|dkr|t ks@|dk rZ| t	t|||| q|t||||t|||||  qqqd S )Nii  r      id               
      g      $@)i   )   )r	   r
   )r      )
floatrangeassertEqualpowintlistassertRaisesZeroDivisionErrorZassertAlmostEqual	TypeError)selftypeiZpow2Z	othertypeiijZjjZzeroexpZilZihZjlZjhklZkhZasseqk r!   #/usr/lib/python3.9/test/test_pow.pypowtest   s^    
 
 





zPowTest.powtestc                 C   s   |  t d S N)r#   r   r   r!   r!   r"   test_powint<   s    zPowTest.test_powintc                 C   s   |  t d S r$   )r#   r   r%   r!   r!   r"   test_powfloat?   s    zPowTest.test_powfloatc              
   C   s  |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd |  tddd tddd tdd	D ]}td
dD ]}tdd	D ]r}|d
kr|d
kr|  t||| t||| |d
kr|d
kr|  tt||| tt||| qqqrd S )Nr      ir   r   r	   r   r      i)r   r   r   r   )r   r   r   r    r!   r!   r"   
test_otherB   s2    
zPowTest.test_otherc                 C   s   G dd d}d |   d S )Nc                   @   s   e Zd Zdd ZdS )z(PowTest.test_bug643260.<locals>.TestRpowc                 S   s   d S r$   r!   )r   otherr!   r!   r"   __rpow__b   s    z1PowTest.test_bug643260.<locals>.TestRpow.__rpow__N)__name__
__module____qualname__r.   r!   r!   r!   r"   TestRpowa   s   r2   r!   )r   r2   r!   r!   r"   test_bug643260`   s    zPowTest.test_bug643260c                 C   s   | j }d}|t|dd |t|dd tddD ]$}|t|t||d@ rRdpTd q4tdd	D ]B}td
| }|d rdpd}|t||| |t|| | qd||d d S )Ng      gNݯbg      ?gNݯr	   r   r   r   r   r   g       @)r   r   r   r   )r   eqabnZfivetoZexpectedr!   r!   r"   test_bug705231f   s    "zPowTest.test_bug705231c                 C   s  t ddD ]}t ddD ]}| j||dZ |dkrt||dkrt|d|}| |||  | || d | d | t|d|t|d| | t|d	|t|d
| | t|d|t|d| n| t t|d| W d    n1 s0    Y  | t t|d| W d    n1 s:0    Y  | t t|d| W d    n1 sr0    Y  W d    q1 s0    Y  qq
d S )Ni2   )r5   mr   r   r)   r   r*   r   ii  )r   ZsubTestmathgcdr   r   r   
ValueError)r   r5   r:   invr!   r!   r"   test_negative_exponent{   s     ,,zPowTest.test_negative_exponentN)
r/   r0   r1   r#   r&   r'   r,   r3   r8   r@   r!   r!   r!   r"   r      s   6r   __main__)r<   ZunittestZTestCaser   r/   mainr!   r!   r!   r"   <module>   s
    