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   

