o
    1ήc                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlm  mZ	 d dl
mZmZ eejjZeejjZdZdd d Ze ZdZdd	 ed
D dd	 ed
D  dd	 edd
D  dd	 edd
D  dd	 edd
D  eedd Zdd	 ed
D dd	 ed
D  dd	 edd
D  dd	 edd
D  dd	 edd
D  eedd dg Zdd	 eD Zejdd Zdd Zdd Zdd  Z d!d" Z!d#d$ Z"d%d& Z#d'd( Z$d)d* Z%d+d, Z&d-d. Z'ej(j)d/d0 Z*d1d2 Z+d3d4 Z,dS )5    N)assert_raisesassert_equall                 l            c                 C      g | ]}t | qS  )	INT64_MIN.0jr   r   F/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_extint128.py
<listcomp>       r      c                 C      g | ]}t | qS r   )	INT64_MAXr
   r   r   r   r      r   c                 C   r   r   	INT64_MIDr
   r   r   r   r      r   ic                 C      g | ]}d t  | qS r   r   r
   r   r   r   r          c                 C      g | ]}t d  | qS r   r   r
   r   r   r   r      r   iF   c                 C   r   r   )
INT128_MINr
   r   r   r   r      r   c                 C   r   r   )
INT128_MAXr
   r   r   r   r       r   c                 C   r   r   
INT128_MIDr
   r   r   r   r   !   r   c                 C   r   r   r   r
   r   r   r   r   "   r   c                 C   r   r   r   r
   r   r   r   r   #   r   Fc                 C   s   g | ]}|d kr|qS )r   r   )r   xr   r   r   r   (   r   c                  '   s\    dg fdd}z| V  W dS  t y-   ddl}dtd | f }t|w )z}
    Iterate over Cartesian product of *args, and if an exception is raised,
    add information of the current iterate.
    Nc                  3   s$    t j  D ]	} | d< | V  qd S Nr   )	itertoolsproduct)vargsvaluer   r   iterate4   s
   zexc_iter.<locals>.iterater   z	At: %r
%s)	Exception	tracebackrepr
format_excAssertionError)r$   r&   r(   msgr   r#   r   exc_iter+   s   r-   c            	      C   s   t jdft jdft jdfg} t| tt?}|D ]3\}}}|\}}|||}t|  kr/tks:n tt	t
j||| qt
|||}||krJt|| qW d    d S 1 sVw   Y  d S )Nr   r      )operatoraddsubmulr-   INT64_VALUESr	   r   r   OverflowErrormtextint_safe_binopr   )	opsitxopabpyopopcdr   r   r   test_safe_binopB   s    

"r@   c                  C   sV   t t} | D ]\}t|}||krt|| qW d    d S 1 s$w   Y  d S N)r-   r3   r5   extint_to_128r   r8   r:   r;   r   r   r   test_to_128Y   s   



"rD   c                  C   s|   t t0} | D ]$\}t|  krtksn tttj| qt|}||kr+t|| qW d    d S 1 s7w   Y  d S rA   )	r-   INT128_VALUESr	   r   r   r4   r5   extint_to_64r   rC   r   r   r   
test_to_64a   s   



"rG   c                  C   sd   t tt#} | D ]\}}|| }t||}||krt|| qW d    d S 1 s+w   Y  d S rA   )r-   r3   r5   extint_mul_64_64r   r8   r:   r;   r>   r?   r   r   r   test_mul_64_64l      
"rJ   c                  C   s   t tt7} | D ]+\}}|| }t|  krtks$n tttj|| qt||}||kr3t|| qW d    d S 1 s?w   Y  d S rA   )	r-   rE   r   r   r   r4   r5   extint_add_128r   rI   r   r   r   test_add_128u      
"rM   c                  C   s   t tt7} | D ]+\}}|| }t|  krtks$n tttj|| qt||}||kr3t|| qW d    d S 1 s?w   Y  d S rA   )	r-   rE   r   r   r   r4   r5   extint_sub_128r   rI   r   r   r   test_sub_128   rN   rP   c                  C   s\   t t } | D ]\}| }t|}||krt|| qW d    d S 1 s'w   Y  d S rA   )r-   rE   r5   extint_neg_128r   r8   r:   r;   r>   r   r   r   test_neg_128   s   



"rS   c                  C   s   t t8} | D ],\}|dk r| d> dd d @  }n
|d> dd d @ }t|}||kr3t|| qW d    d S 1 s?w   Y  d S )Nr   r   r   r   )r-   rE   r5   extint_shl_128r   rR   r   r   r   test_shl_128   s   



"rU   c                  C   st   t t,} | D ] \}|dk r| d?  }n|d? }t|}||kr't|| qW d    d S 1 s3w   Y  d S )Nr   r   )r-   rE   r5   extint_shr_128r   rR   r   r   r   test_shr_128   s   



"rW   c                  C   sd   t tt#} | D ]\}}||k}t||}||krt|| qW d    d S 1 s+w   Y  d S rA   )r-   rE   r5   extint_gt_128r   rI   r   r   r   test_gt_128   rK   rY   c                  C   s   t ttU} | D ]I\}}|dkrt||\}}nt| |\}}| }| }t||\}}||ks>||ks>|| | |krQt|| t|| t|| | | qW d    d S 1 s]w   Y  d S r   )r-   rE   INT64_POS_VALUESdivmodr5   extint_divmod_128_64r   )r8   r:   r;   r>   crr?   drr   r   r   test_divmod_128_64   s    

"r_   c                  C   sd   t tt#} | D ]\}}|| }t||}||krt|| qW d    d S 1 s+w   Y  d S rA   )r-   rE   rZ   r5   extint_floordiv_128_64r   rI   r   r   r   test_floordiv_128_64   s   
"ra   c                  C   sl   t tt'} | D ]\}}|| d | }t||}||kr#t|| qW d    d S 1 s/w   Y  d S )Nr   )r-   rE   rZ   r5   extint_ceildiv_128_64r   rI   r   r   r   test_ceildiv_128_64   s   
"rc   )-r    
contextlibr/   pytestnumpynpnumpy.core._multiarray_testscore_multiarray_testsr5   numpy.testingr   r   iinfoint64maxr   minr	   r   r   r   r   rangelistr3   rE   rZ   contextmanagerr-   r@   rD   rG   rJ   rM   rP   rS   rU   rW   rY   markslowr_   ra   rc   r   r   r   r   <module>   sp    


			

