U
    9%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   Zunreachablec                    s   |d }| | S )Nr   )Zbitcast)ZcgctxbuildertypargsZfltZ	bitcastty [/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/cpython/unsafe/numbers.pycodegen   s    zviewer.<locals>.codegen)Zbitwidth
isinstanceZdtyper   Integerr   IntTypeFloatZ	FloatTypeZ
DoubleTypeAssertionError)ZtyctxvalZviewtybitsr   Z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   )Zcttzr   Constantr   contextr   	signaturer	   srcr   r   r   r   $   s    ztrailing_zeros.<locals>.codegenr   r   r   r   Z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   )Zctlzr   r   r   r   r   r   r   r   2   s    zleading_zeros.<locals>.codegenr   r    r   r   r   leading_zeros*   s
    
r#   N)__doc__Z
numba.corer   r   Znumba.core.extendingr   Zllvmliter   r   r"   r#   r   r   r   r   <module>   s   

