U
    í¾|e·  ã                   @   sT   d Z ddlmZmZ ddlmZ ddlmZ edd„ ƒZedd„ ƒZ	ed	d
„ ƒZ
dS )z? This module provides the unsafe things for targets/numbers.py
é    )ÚtypesÚerrors)Ú	intrinsic)Úirc                    sx   |j }t|jtjƒr t |¡‰ n4t|jtjƒrH|dkr>t ¡ nt 	¡ ‰ ndsTt
dƒ‚‡ fdd„}|j}|||ƒ}||fS )z4 Bitcast a scalar 'val' to the given type 'viewty'. é    r   Úunreachablec                    s   |d }|  |ˆ ¡S )Nr   )Úbitcast)ÚcgctxÚbuilderÚtypÚargsZflt©Z	bitcastty© úY/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/cpython/unsafe/numbers.pyÚcodegen   s    zviewer.<locals>.codegen)ÚbitwidthÚ
isinstanceÚdtyper   ÚIntegerr   ÚIntTypeÚFloatÚ	FloatTypeÚ
DoubleTypeÚAssertionError)ÚtyctxÚvalÚviewtyÚbitsr   ÚrettyÚsigr   r   r   Úviewer	   s    
r    c                 C   s6   t |tjƒs"d|› d�}t |¡‚dd„ }||ƒ|fS )zACounts trailing zeros in the binary representation of an integer.zCtrailing_zeros is only defined for integers, but value passed was 'ú'.c                 S   s    |\}|  |t t d¡d¡¡S ©Né   r   )Úcttzr   ÚConstantr   ©Úcontextr
   Ú	signaturer   Úsrcr   r   r   r   $   s    ztrailing_zeros.<locals>.codegen©r   r   r   r   ÚNumbaTypeError©Z
typeingctxr)   Úmsgr   r   r   r   Útrailing_zeros   s
    
r.   c                 C   s6   t |tjƒs"d|› d�}t |¡‚dd„ }||ƒ|fS )z@Counts leading zeros in the binary representation of an integer.zBleading_zeros is only defined for integers, but value passed was 'r!   c                 S   s    |\}|  |t t d¡d¡¡S r"   )Úctlzr   r%   r   r&   r   r   r   r   2   s    zleading_zeros.<locals>.codegenr*   r,   r   r   r   Úleading_zeros*   s
    
r0   N)Ú__doc__Ú
numba.corer   r   Únumba.core.extendingr   Úllvmliter   r    r.   r0   r   r   r   r   Ú<module>   s   

