U
    b»{j	ô  ã                   @   s´  d Z ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZ ddlmZ ddlmZ ddlmZmZmZ d	Zd
ZdZ�ddd„Zejf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"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+e*eej,ej-ƒ d-d.„ Z.d/d0„ Z/d1d2„ Z0ee0d3d4�d5d6„ ƒZ1e+e/d7e0ej2ƒ d8d9„ Z3d:d;„ Z4d<d=„ Z5d>d?„ Z6d@dA„ Z7dBdC„ Z8dDdE„ Z9dFdG„ Z:dHdI„ Z;dJdK„ Z<dLdM„ Z=dNdO„ Z>dPdQ„ Z?dRdS„ Z@dTdU„ ZAdVdW„ ZBdXdY„ ZCdZd[„ ZDd\d]„ ZEd^d_„ ZFd`da„ ZGdbdc„ ZHddde„ ZIdfdg„ ZJdhdi„ ZKdjdk„ ZLdldm„ ZMdndo„ ZNdpdq„ ZOdrds„ ZPdtdu„ ZQdvdw„ ZRdxdy„ ZSdzd{„ ZTd|d}„ ZUd~d„ ZVd€d�„ ZWd‚dƒ„ ZXd„d…„ ZYd†d‡„ ZZdˆd‰„ Z[dŠd‹„ Z\dŒd�„ Z]dŽd�„ Z^d�d‘„ Z_d’d“„ Z`d”d•„ Zad–d—„ Zbd˜d™„ Zcdšd›„ Zddœd�„ ZedždŸ„ Zfd d¡„ Zgd¢d£„ Zhd¤d¥„ Zid¦d§„ Zjd¨d©„ Zkdªd«„ Zld¬d­„ Zmd®d¯„ Znd°d±„ Zod²d³„ Zpd´dµ„ Zqd¶d·„ Zrd¸d¹„ Zsdºd»„ Ztd¼d½„ Zud¾d¿„ ZvdÀdÁ„ ZwdÂdÃ„ ZxdÄdÅ„ ZydÆdÇ„ ZzdÈ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…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�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S (  zŽCodegen for functions used as kernels in NumPy functions

Typically, the kernels of several ufuncs that can't map directly to
Python builtins
é    N©Úoverload)Úimpl_ret_untracked)ÚtypingÚtypesÚerrorsÚloweringÚcgutils)Úregister_jitable)Ú
npdatetime)Ú	cmathimplÚmathimplÚnumbersgþ‚+eG÷?gå&{ËÛ?gï9úþB.æ?c                    sŒ   t |ƒ|kst‚t | jƒ|ks"t‚| jd ‰ |dkr8ˆ }t‡ fdd„| jD ƒƒrZ| j|ksˆddl}| ¡ jjj	}d 
|| ¡}dsˆt|ƒ‚dS )zëchecks that the following are true:
    - args and sig.args have arg_count elements
    - all input types are homogeneous
    - return type is 'return_type' if provided, otherwise it must be
      homogeneous with the input types.
    r   Nc                 3   s   | ]}|ˆ kV  qd S ©N© ©Ú.0Úarg©Útyr   úP/var/www/html/bwave/python/venv/lib/python3.8/site-packages/numba/np/npyfuncs.pyÚ	<genexpr>)   s     z/_check_arity_and_homogeneity.<locals>.<genexpr>z"{0} called with invalid types: {1}F)ÚlenÚAssertionErrorÚargsÚallÚreturn_typeÚinspectÚcurrentframeÚf_backÚf_codeÚco_nameÚformat)Úsigr   Zarityr   r   ÚfnameÚmsgr   r   r   Ú_check_arity_and_homogeneity   s    
"r&   c                    sx   ˆ j }ˆ ˆ¡}tj ||gt|jƒ ¡}tj|||d�}	‡ ‡‡fdd„t	||jƒD ƒ}
ˆ  
|	|
¡}ˆ ˆ |tj|j¡S )N©Únamec                    s    g | ]\}}ˆ  ˆ ||ˆ¡‘qS r   )Úcast)r   r   Zargty©ÚbuilderÚcontextr   r   r   Ú
<listcomp>9   s   ÿz0_call_func_by_name_with_cast.<locals>.<listcomp>)ÚmoduleÚget_argument_typeÚllvmliteÚirÚFunctionTyper   r   r	   Úinsert_pure_functionÚzipÚcallr)   r   Úfloat64r   )r,   r+   r#   r   Ú	func_namer   ÚmodZltyÚfntyÚfnZ	cast_argsÚresultr   r*   r   Ú_call_func_by_name_with_cast0   s    

ÿr<   c              
      sD  |j d }z|| }W n< tk
rR } zd |t|ƒ¡}	t |	¡‚W 5 d }~X Y nX ˆ j}
|tjkrðˆ 	ˆ |¡}‡ fdd„|D ƒ}| 
¡ g| }|gt|j ƒ }‡fdd„|D ƒ}tj tj ¡ |¡}t |
||¡}ˆ  ||¡ ˆ  |d ¡}nP‡fdd„|j D ƒ}ˆ |j¡}tj ||¡}tj|
||d�}ˆ ˆ ||j |¡}|S )Nr   z!No {0} function for real type {1}c                    s   g | ]}t  ˆ |¡‘qS r   )r	   Zalloca_once_valuer   )r+   r   r   r-   Y   s   ÿz/_dispatch_func_by_name_type.<locals>.<listcomp>c                    s   g | ]}ˆ   |¡ ¡ ‘qS r   )Úget_value_typeZ
as_pointer)r   r   ©r,   r   r   r-   a   s   ÿc                    s   g | ]}ˆ   |¡‘qS r   )r/   )r   Zatyr>   r   r   r-   i   s     r'   )r   ÚKeyErrorr"   Ústrr   ZLoweringErrorr.   r   Zcomplex_domainÚmake_complexZ_getpointerÚlistr0   r1   r2   ZVoidTyper	   Zget_or_insert_functionr5   Úloadr/   r   r3   Zcall_external_function)r,   r+   r#   r   ÚtableZ	user_namer   r7   Úer%   r8   ÚoutZptrargsZ	call_argsZcall_argtysZcall_argltysr9   r:   ÚretvalZargtypesÚrestyper   )r+   r,   r   Ú_dispatch_func_by_name_type@   s6    	


ÿ
ÿrI   c              
   C   sv  t ||dƒ |\}}|jd }|  |d¡}|  |d¡}|  |d|jjd > ¡}	| d||¡}
| d||¡}| d|	|¡}| ||¡}| |
|¡}|j|dd��ª\}}|� |j	}W 5 Q R X |�€ |j	}| 
||¡}| ||¡}| d||¡}| d||¡}| ||¡}| d	||¡}| ||¡}| |||¡}| ||¡}W 5 Q R X W 5 Q R X | |j¡}| ||¡ | ||¡ |S )
Né   r   éÿÿÿÿé   ú==F©Zlikelyú>ú!=)r&   r   Úget_constantÚtypeÚwidthÚicmp_unsignedÚand_Úor_Úif_elseÚbasic_blockZsdivÚsremÚicmp_signedÚxorÚselectÚaddÚphiÚadd_incoming)r,   r+   r#   r   ÚnumÚdenr   ÚZEROÚ	MINUS_ONEZMIN_INTZden_is_zeroZden_is_minus_oneZnum_is_min_intZcould_cause_sigfpeZ
force_zeroÚthenÚ	otherwiseÚbb_thenÚbb_otherwiseÚdivr8   Únum_gt_zeroÚden_gt_zeroÚnot_same_signÚmod_not_zeroÚneeds_fixingÚ	fix_valueZresult_otherwiser;   r   r   r   Únp_int_sdiv_impl~   s:    
 ro   c              	   C   sì   t ||dƒ |\}}|jd }|  |d¡}| d||¡}|j}	t ||¡�t |j}
| ||¡}| d||¡}| d||¡}| 	||¡}| d||¡}| 
||¡}| |||¡}| ||¡}W 5 Q R X | |j¡}| ||	¡ | ||
¡ |S )NrJ   r   rP   rO   )r&   r   rQ   rT   rX   r	   Úif_unlikelyrY   rZ   r[   rU   r\   r]   r^   rR   r_   )r,   r+   r#   r   r`   ra   r   rb   Úden_not_zeroÚbb_no_ifÚbb_ifr8   ri   rj   rk   rl   rm   rn   Z	final_modr;   r   r   r   Únp_int_srem_impl£   s(    
rt   c                 C   sH   t | ||jd |jŽ |ƒ}t| ||jd |jŽ |ƒ}|  ||j||g¡S ©Nr   rL   )ro   r   r   rt   Ú
make_tuple©r,   r+   r#   r   rh   Úremr   r   r   Únp_int_sdivrem_impl¿   s    ry   c              
   C   s¶   t ||dƒ |\}}|jd }|  |d¡}| d||¡}|j|dd��B\}	}
|	� |j}W 5 Q R X |
� | ||¡}|j}W 5 Q R X W 5 Q R X | |j¡}| 	||¡ | 	||¡ |S )NrJ   r   rM   FrN   )
r&   r   rQ   rT   rW   rX   Zudivr^   rR   r_   )r,   r+   r#   r   r`   ra   r   rb   Zdiv_by_zerord   re   rf   rh   rg   r;   r   r   r   Únp_int_udiv_implÅ   s    
rz   c              	   C   s�   t ||dƒ |\}}|jd }|  |d¡}| d||¡}|j}	t ||¡� |j}
| ||¡}W 5 Q R X | |j	¡}| 
||	¡ | 
||
¡ |S )NrJ   r   rP   )r&   r   rQ   rT   rX   r	   rp   Zuremr^   rR   r_   )r,   r+   r#   r   r`   ra   r   rb   rq   rr   rs   r8   r;   r   r   r   Únp_int_urem_implÜ   s    
r{   c                 C   sH   t | ||jd |jŽ |ƒ}t| ||jd |jŽ |ƒ}|  ||j||g¡S ru   )rz   r   r   r{   rv   rw   r   r   r   Únp_int_udivrem_implñ   s    r|   c                 C   s   t ||dƒ |j|Ž S ©NrJ   )r&   Úfdiv©r,   r+   r#   r   r   r   r   Únp_real_div_implü   s    r€   c                 C   sŽ   t ||dƒ |\}}|jd }|  |d¡}| ||¡}| d||¡}	| d||¡}
| d||¡}| |	| |
|¡¡}| |||¡}| ||¡S )NrJ   r   ç        rP   ú<)	r&   r   rQ   ÚfremÚfcmp_orderedrU   r[   r\   Úfadd)r,   r+   r#   r   Úin1Úin2r   rb   ÚresZres_ne_zeroZden_lt_zeroZres_lt_zerorm   rn   r   r   r   Únp_real_mod_impl  s    

ÿr‰   c                 C   s   t ||dƒ |j|Ž S r}   )r&   rƒ   r   r   r   r   Únp_real_fmod_impl  s    rŠ   c                 C   s8   t j |jd¡}| ||¡}| d||¡}| |||¡S )Nr�   r‚   )r0   r1   ÚConstantrR   Úfsubr„   r\   )r,   r+   r   rb   Zarg_negatedZarg_is_negativer   r   r   Ú_fabs  s    r�   c                    sj  ‡ ‡‡fdd„|D ƒ\}}|j }|j}|j }|j}	|j‰t‡fdd„||||	fD ƒƒs^tdƒ‚ˆ ˆ ˆj¡}
tj 	ˆd¡}tj 	ˆd¡}t
ˆˆ |ƒ}t
ˆˆ |	ƒ}ˆ  d||¡}ˆ  |¡��¢\}}|��  ˆ  d||¡}ˆ  d||¡}ˆ  ||¡}ˆ  |¡�Â\}}|�" ˆ  ||¡|
_ ˆ  ||¡|
_W 5 Q R X |�‚ ˆ  |	|¡}ˆ  |	|¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡|
_ ˆ  ||¡|
_W 5 Q R X W 5 Q R X W 5 Q R X |�‚ ˆ  ||	¡}ˆ  ||¡}ˆ  |	|¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡}ˆ  ||¡|
_ ˆ  ||¡|
_W 5 Q R X W 5 Q R X |
 ¡ S )	Nc                    s"   g | ]}ˆj ˆ ˆjd  |d�‘qS ©r   ©Úvalue©rA   r   r   ©r+   r,   r#   r   r   r-   *  s   ÿz'np_complex_div_impl.<locals>.<listcomp>c                    s   g | ]}|j ˆ k‘qS r   ©rR   ©r   Úi©Úftyper   r   r-   2  s     úmismatched typesr�   ç      ð?ú>=rM   )ÚrealÚimagrR   r   r   Úmake_helperr   r0   r1   r‹   r�   r„   rW   rU   r~   Úfmulr…   rŒ   Ú	_getvalue)r,   r+   r#   r   r†   r‡   Úin1rÚin1iÚin2rÚin2irF   rb   ÚONEÚin2r_absÚin2i_absÚin2r_abs_ge_in2i_absrd   re   Zin2r_is_zeroZin2i_is_zeroZin2_is_zeroZinn_thenZinn_otherwiseÚratÚtmp1Útmp2ZsclÚtmp3Útmp4Útmp5Ztmp6r   ©r+   r,   r—   r#   r   Únp_complex_div_impl"  s^    ÿ
&,"r¯   c                 C   s   d S r   r   ©Úx1Úx2r   r   r   Ú_npy_logaddexpo  s    r³   c                    s    t | dd�‡ ‡‡fdd„ƒ}d S )NÚgeneric©Útargetc                    s(   | |krd S | ˆƒ‰ ‡‡‡ fdd„}|S )Nc                    s\   | | }}||kr|ˆ S || }|dkr<|ˆˆ | ƒƒ S |dkrT|ˆˆ |ƒƒ S |S d S )Nr   r   )r±   r²   ÚxÚyÚtmp)ÚexpfnÚlog1pfnÚshiftr   r   Úimpl{  s    
z;_generate_logaddexp.<locals>.ol_npy_logaddexp.<locals>.implr   )r±   r²   r½   ©Úconstrº   r»   )r¼   r   Úol_npy_logaddexpv  s
    z-_generate_logaddexp.<locals>.ol_npy_logaddexpr   )Z
fnoverloadr¿   r»   rº   rÀ   r   r¾   r   Ú_generate_logaddexpr  s    
rÁ   c                 C   s   d S r   r   r°   r   r   r   r³   ‹  s    c                 C   sB   t ||dƒ | j t¡}| | j|j˜i ¡}|  ||¡}|||ƒS r}   )r&   Útyping_contextÚresolve_value_typer³   Úget_call_typer   Úget_function©r,   r+   r#   r   r9   r½   r   r   r   Únp_real_logaddexp_impl’  s
    rÇ   c                 C   s   d S r   r   r°   r   r   r   Ú_npy_logaddexp2œ  s    rÈ   c                 C   s   d S r   r   ©r·   r   r   r   Únpy_log2_1pŸ  s    rÊ   r´   rµ   c                    s   | t ƒ‰ ‡ fdd„}|S )Nc                    s   ˆ t  | ¡ S r   )ÚnpÚlog1prÉ   ©ZLOG2Er   r   r½   ¨  s    zol_npy_log2_1p.<locals>.impl)Ú
_NPY_LOG2E)r·   r½   r   rÍ   r   Úol_npy_log2_1p¥  s    rÏ   r™   c                 C   sB   t ||dƒ | j t¡}| | j|j˜i ¡}|  ||¡}|||ƒS r}   )r&   rÂ   rÃ   rÈ   rÄ   r   rÅ   rÆ   r   r   r   Únp_real_logaddexp2_impl°  s
    rÐ   c                    sf   |\}}|j ‰ t‡ fdd„|D ƒƒs,tdƒ‚|j\}}|  |||tj¡}|  |||tj¡}| ||¡S )Nc                 3   s   | ]}|j ˆ kV  qd S r   r“   r”   ©Zlltyper   r   r   Â  s     z&np_int_truediv_impl.<locals>.<genexpr>zmust have homogeneous types)rR   r   r   r   r)   r   r6   r~   )r,   r+   r#   r   r`   ra   ZnumtyZdentyr   rÑ   r   Únp_int_truediv_impl¼  s    
rÒ   c                 C   s.   t | |||ƒ}t |j|j¡}t| |||fƒS r   )r€   r   Ú	signaturer   Únp_real_floor_impl)r,   r+   r#   r   rˆ   Úsr   r   r   Únp_real_floor_div_implÎ  s    rÖ   c                 C   sH   t | ||jd |jŽ |ƒ}t| ||jd |jŽ |ƒ}|  ||j||g¡S ru   )rÖ   r   r   r‰   rv   rw   r   r   r   Únp_real_divmod_implÔ  s    r×   c              
      s´  ˆj d j}t ||¡}‡ ‡‡fdd„|D ƒ\}}|j}|j}	|j}
|j}|j‰t‡fdd„||	|
|fD ƒƒsvtdƒ‚t	j
 ˆd¡}ˆ ˆ ˆj¡}||_tˆˆ |
ƒ}tˆˆ |ƒ}ˆ  d||¡}ˆ  |¡�Þ\}}|�` ˆ  ||
¡}ˆ  |	|¡}ˆ  ||¡}ˆ  ||¡}ˆ  |
|¡}ˆ  ||¡}tˆˆ ||fƒ|_W 5 Q R X |�` ˆ  |
|¡}ˆ  ||¡}ˆ  |
|¡}ˆ  |	|¡}ˆ  ||¡}ˆ  ||¡}tˆˆ ||fƒ|_W 5 Q R X W 5 Q R X | ¡ S )Nr   c                    s"   g | ]}ˆj ˆ ˆjd  |d�‘qS rŽ   r‘   r   r’   r   r   r-   ä  s   ÿz-np_complex_floor_div_impl.<locals>.<listcomp>c                    s   g | ]}|j ˆ k‘qS r   r“   r”   r–   r   r   r-   ì  s     r˜   r�   rš   )r   Úunderlying_floatr   rÓ   r›   rœ   rR   r   r   r0   r1   r‹   r�   r   r�   r„   rW   r~   rž   r…   rÔ   rŸ   )r,   r+   r#   r   Z
float_kindZ	floor_sigr†   r‡   r    r¡   r¢   r£   rb   rF   r¥   r¦   r§   rd   re   r¨   r©   rª   r«   r¬   r­   r   r®   r   Únp_complex_floor_div_implÚ  sF    ÿ
&&rÙ   c                 C   s   t ||dƒ t | |||¡S r}   ©r&   r   Zcomplex_power_implr   r   r   r   Únp_complex_power_impl  s    rÛ   c                 C   s   t ||dƒ t | |||¡S r}   )r&   r   Zreal_power_implr   r   r   r   Úreal_float_power_impl  s    rÜ   c                 C   s   t ||dƒ t | |||¡S r}   rÚ   r   r   r   r   Únp_complex_float_power_impl  s    rÝ   c                 C   s   t ||dƒ t | |||¡S r}   )r&   r   Zgcd_implr   r   r   r   Únp_gcd_impl(  s    rÞ   c           
      C   sV   |j \}}||  kr |jks&n t‚|\}}dd„ }|  ||||¡}	t| ||j|	ƒS )Nc                 S   s$   | dkrdS t | |t || ¡  ƒS )z7
        Like gcd, heavily cribbed from Julia.
        r   )ÚabsrË   Úgcd)ÚaÚbr   r   r   Úlcm6  s    znp_lcm_impl.<locals>.lcm)r   r   r   Úcompile_internalr   )
r,   r+   r#   r   ZxtyZytyr·   r¸   rã   rˆ   r   r   r   Únp_lcm_impl0  s    
rå   c                 C   sò   t ||dƒ |d }|jd }|j}|  |d¡}|  |d¡}|  |d¡}	|  |tdƒ¡}
|  ||¡}||_||_tj	t
jf|gd žŽ }|| ¡ g}t| |||ƒ}t| |||ƒ}t| |||ƒ}| |||¡}| ||	|
¡}| |||¡|_| ¡ S )NrL   r   r�   r™   ç      ð¿ÚnanrJ   )r&   r   rØ   rQ   ÚfloatrA   r›   rœ   r   rÓ   r   ÚbooleanrŸ   Únp_complex_ge_implÚnp_complex_eq_implÚnp_complex_lt_implr\   )r,   r+   r#   r   Úopr   Úfloat_tyrb   r¤   rc   ZNANr;   Zcmp_sigZcmp_argsÚarg1_ge_arg2Zarg1_eq_arg2Zarg1_lt_arg2Zreal_when_geZreal_when_nger   r   r   Únp_complex_sign_implC  s(    
rð   c                 C   s   t ||dƒ t |d|¡S )NrL   z	llvm.rint©r&   r   Zcall_fp_intrinsicr   r   r   r   Únp_real_rint_implc  s    rò   c           	      C   s|   t ||dƒ |jd }|j}| j|||d d�}|  ||¡}tj|gd Ž }t| |||jgƒ|_t| |||jgƒ|_| 	¡ S )NrL   r   r�   rJ   )
r&   r   rØ   rA   r   rÓ   rò   r›   rœ   rŸ   )	r,   r+   r#   r   r   rî   r†   rF   Ú	inner_sigr   r   r   Únp_complex_rint_impli  s    
rô   c                 C   s   t ||dƒ t | |||¡S ©NrL   )r&   r   Úexp_implr   r   r   r   Únp_real_exp_impl|  s    r÷   c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   rö   r   r   r   r   Únp_complex_exp_impl�  s    rø   c                 C   s.   t ||dƒ tjdtjdi}t| ||||dƒS )NrL   Znumba_exp2fZ
numba_exp2Úexp2©r&   r   Úfloat32r6   rI   ©r,   r+   r#   r   Údispatch_tabler   r   r   Únp_real_exp2_implˆ  s      þ
 ÿrþ   c           	      C   s|   t ||dƒ |jd }|j}| j|||d d�}|  ||¡}|  |t¡}| ||j¡|_| ||j¡|_t	| ||| 
¡ gƒS ©NrL   r   r�   )r&   r   rØ   rA   rQ   Ú
_NPY_LOGE2rž   r›   rœ   rø   rŸ   )	r,   r+   r#   r   r   rî   r†   r¹   Zloge2r   r   r   Únp_complex_exp2_impl”  s    
r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Úlog_implr   r   r   r   Únp_real_log_impl£  s    r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   r  r   r   r   r   Únp_complex_log_impl¨  s    r  c                 C   s.   t ||dƒ tjdtjdi}t| ||||dƒS )NrL   Znumba_log2fZ
numba_log2Úlog2rú   rü   r   r   r   Únp_real_log2_impl¯  s      þ
 ÿr  c                 C   sn   t ||dƒ |jd }|j}t| |||ƒ}| j|||d�}|  |t¡}| ||j¡|_| ||j	¡|_	| 
¡ S rÿ   )r&   r   rØ   r  rA   rQ   rÎ   rž   r›   rœ   rŸ   )r,   r+   r#   r   r   rî   r¹   Zlog2er   r   r   Únp_complex_log2_implº  s    
r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z
log10_implr   r   r   r   Únp_real_log10_implÊ  s    r  c                 C   sn   t ||dƒ |jd }|j}t| |||ƒ}| j|||d�}|  |t¡}| ||j¡|_| ||j	¡|_	| 
¡ S rÿ   )r&   r   rØ   r  rA   rQ   Ú_NPY_LOG10Erž   r›   rœ   rŸ   )r,   r+   r#   r   r   rî   r¹   Zlog10er   r   r   Únp_complex_log10_implÏ  s    
r
  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z
expm1_implr   r   r   r   Únp_real_expm1_implß  s    r  c                 C   s¾   t ||dƒ |jd }|j}tj|gd Ž }|  |d¡}| j|||d d�}t| |||jgƒ}	|  ||¡}
t	| |||j
gƒ}t| |||j
gƒ}| |	|¡}| |	|¡|
_
| ||¡|
_|
 ¡ S )NrL   r   rJ   ræ   r�   )r&   r   rØ   r   rÓ   rQ   rA   r÷   r›   Únp_real_cos_implrœ   Únp_real_sin_implrž   r…   rŸ   )r,   r+   r#   r   r   rî   Úfloat_unary_sigrc   r†   rá   rF   Zcos_imagZsin_imagr¹   r   r   r   Únp_complex_expm1_implã  s    
r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z
log1p_implr   r   r   r   Únp_real_log1p_implû  s    r  c                 C   sº   t ||dƒ |jd }|j}tj|gd Ž }tj|gd Ž }|  |d¡}| j|||d d�}	|  ||¡}
| |	j|¡}t	| ||||	j
gƒ}t| |||	j
|gƒ|
_
t| |||gƒ|
_|
 ¡ S )NrL   r   rJ   é   r™   r�   )r&   r   rØ   r   rÓ   rQ   rA   r…   r›   Únp_real_hypot_implrœ   Únp_real_atan2_implr  rŸ   )r,   r+   r#   r   r   rî   r  Zfloat_binary_sigr¤   r†   rF   Zreal_plus_oneÚlr   r   r   Únp_complex_log1p_implÿ  s"    
ÿÿr  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Ú	sqrt_implr   r   r   r   Únp_real_sqrt_impl  s    r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   r  r   r   r   r   Únp_complex_sqrt_impl  s    r  c                 C   s    t ||dƒ | |d |d ¡S ©NrL   r   )r&   Úmulr   r   r   r   Únp_int_square_impl%  s    r  c                 C   s    t ||dƒ | |d |d ¡S r  )r&   rž   r   r   r   r   Únp_real_square_impl*  s    r  c                 C   s:   t ||dƒ tj|jgd Ž }t | |||d |d g¡S ©NrL   r  r   )r&   r   rÓ   r   r   Úcomplex_mul_impl)r,   r+   r#   r   Ú
binary_sigr   r   r   Únp_complex_square_impl.  s
    
ÿr   c                    s:   t ||dƒ tdd�dd„ ƒ‰ ‡ fdd„}|  ||||¡S )NrL   T)Zfastmathc                 S   s(   | dk rt  |  d¡ S t  | d¡S d S )Nr   gUUUUUUÕ?)rË   ÚpowerrÉ   r   r   r   Úcbrt=  s    znp_real_cbrt_impl.<locals>.cbrtc                    s   t  | ¡rt jS ˆ | ƒS r   )rË   Úisnanrç   rÉ   ©r"  r   r   Ú_cbrtD  s    
z np_real_cbrt_impl.<locals>._cbrt)r&   r
   rä   )r,   r+   r#   r   r%  r   r$  r   Únp_real_cbrt_impl8  s
    
r&  c           	      C   sd   t ||dƒ |j}tj|gd Ž }|  ||d |tj¡}|  tjd¡}| ||¡}|  ||tj|¡S r  )	r&   r   r   rÓ   r)   r   r6   rQ   r~   )	r,   r+   r#   r   r   r  Zin_as_floatr¤   Zresult_as_floatr   r   r   Únp_int_reciprocal_implO  s    r'  c                 C   s*   t ||dƒ |  |jd¡}| ||d ¡S )NrL   r™   r   )r&   rQ   r   r~   )r,   r+   r#   r   r¤   r   r   r   Únp_real_reciprocal_impl]  s    r(  c              
   C   sd  t ||dƒ |jd }|j}|  |d¡}|  |d¡}| j|||d d�}|  ||¡}	|j}
|j}t| ||
ƒ}t| ||ƒ}| d||¡}| 	|¡�Æ\}}|�V | 
||
¡}| ||¡}| |
|¡}| 
||¡}| ||¡}||	_| ||¡|	_W 5 Q R X |�R | 
|
|¡}| |
|¡}| ||¡}| 
||¡}| ||¡|	_| ||¡|	_W 5 Q R X W 5 Q R X |	 ¡ S )NrL   r   r�   r™   r�   ú<=)r&   r   rØ   rQ   rA   r›   rœ   r�   r„   rW   r~   rž   r…   rŒ   rŸ   )r,   r+   r#   r   r   rî   rb   r¤   r†   rF   r    r¡   Zin1r_absZin1i_absZin1i_abs_le_in1r_absrd   re   ÚrZtmp0ÚdÚinv_dZminus_rr   r   r   Únp_complex_reciprocal_implc  s:    
"r-  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Úsin_implr   r   r   r   r  �  s    r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   r.  r   r   r   r   Únp_complex_sin_impl’  s    r/  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Úcos_implr   r   r   r   r  š  s    r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   r0  r   r   r   r   Únp_complex_cos_implŸ  s    r1  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Ztan_implr   r   r   r   Únp_real_tan_impl§  s    r2  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z	asin_implr   r   r   r   Únp_real_asin_impl¯  s    r3  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z	acos_implr   r   r   r   Únp_real_acos_impl·  s    r4  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z	atan_implr   r   r   r   Únp_real_atan_impl¿  s    r5  c                 C   s   t ||dƒ t | |||¡S r}   )r&   r   Zatan2_float_implr   r   r   r   r  Ç  s    r  c                 C   s   t ||dƒ t | |||¡S r}   )r&   r   Zhypot_float_implr   r   r   r   r  Ï  s    r  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z	sinh_implr   r   r   r   Únp_real_sinh_impl×  s    r6  c                 C   sº   t ||dƒ |jd }|j}tj|gd Ž }|  |||d ¡}|  ||¡}|j}	|j}
t| |||
gƒ}t	| |||	gƒ}t
| |||
gƒ}t| |||	gƒ}| ||¡|_| ||¡|_| ¡ S ©NrL   r   rJ   )r&   r   rØ   r   rÓ   rA   r›   rœ   r  r6  r  Únp_real_cosh_implrž   rŸ   )r,   r+   r#   r   r   ÚftyÚfsig1r·   rF   ÚxrÚxiÚsxiÚshxrÚcxiÚchxrr   r   r   Únp_complex_sinh_implÜ  s    
rA  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z	cosh_implr   r   r   r   r8  ø  s    r8  c                 C   sº   t ||dƒ |jd }|j}tj|gd Ž }|  |||d ¡}|  ||¡}|j}	|j}
t| |||
gƒ}t	| |||	gƒ}t
| |||
gƒ}t| |||	gƒ}| ||¡|_| ||¡|_| ¡ S r7  )r&   r   rØ   r   rÓ   rA   r›   rœ   r  r8  r  r6  rž   rŸ   )r,   r+   r#   r   r   r9  r:  r·   rF   r;  r<  r?  r@  r=  r>  r   r   r   Únp_complex_cosh_implý  s    
rB  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z	tanh_implr   r   r   r   Únp_real_tanh_impl  s    rC  c                 C   sn  t ||dƒ |jd }|j}tj|gd Ž }|  |d¡}|  |||d ¡}|  ||¡}	|j}
|j}t	| |||gƒ}t
| |||gƒ}t| |||
gƒ}t| |||
gƒ}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡}| ||¡|	_| ||¡|	_|	 ¡ S )NrL   r   rJ   r™   )r&   r   rØ   r   rÓ   rQ   rA   r›   rœ   r  r  r6  r8  rž   r…   r~   rŒ   rŸ   )r,   r+   r#   r   r   r9  r:  r¤   r·   rF   r;  r<  ÚsiÚciZshrZchr_ÚrsÚis_ÚrcZicZsqr_rcZsqr_icr+  r,  Zrs_rcZis_icZis_rcZrs_icZnumrZnumir   r   r   Únp_complex_tanh_impl  s<    
rI  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z
asinh_implr   r   r   r   Únp_real_asinh_implF  s    rJ  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z
acosh_implr   r   r   r   Únp_real_acosh_implN  s    rK  c                 C   s¼   t ||dƒ |jd }tj|gd Ž }|  ||d¡}|d }t | ||||g¡}t | ||||g¡}	t| |||gƒ}
t| |||	gƒ}t 	| |||
|g¡}t | ||||g¡}t
| |||gƒS )NrL   r   r  y      ð?        )r&   r   r   rÓ   Zget_constant_genericr   Zcomplex_add_implZcomplex_sub_implr  r  r  )r,   r+   r#   r   r   Zcsig2r¤   r·   Z
x_plus_oneZx_minus_oneZsqrt_x_plus_oneZsqrt_x_minus_oneZ	prod_sqrtZlog_argr   r   r   Únp_complex_acosh_implS  s,    
ÿÿ
ÿÿÿrL  c                 C   s   t ||dƒ t | |||¡S rõ   )r&   r   Z
atanh_implr   r   r   r   Únp_real_atanh_implq  s    rM  c                 C   s   t ||dƒ t |d|¡S )NrL   z
llvm.floorrñ   r   r   r   r   rÔ   y  s    rÔ   c                 C   s   t ||dƒ t |d|¡S )NrL   z	llvm.ceilrñ   r   r   r   r   Únp_real_ceil_impl‚  s    rN  c                 C   s   t ||dƒ t |d|¡S )NrL   z
llvm.truncrñ   r   r   r   r   Únp_real_trunc_impl‹  s    rO  c                 C   s   t ||dƒ t |d|¡S )NrL   z	llvm.fabsrñ   r   r   r   r   Únp_real_fabs_impl”  s    rP  c                    sª   t ||dtjd� |jd ‰‡ ‡‡fdd„|D ƒ\}}|j}|j}|j}|j}	ˆ  d||¡}
ˆ  d||	¡}ˆ  d||¡}ˆ  d	||	¡}ˆ  |
|¡}ˆ  ||¡}ˆ  ||¡S )
NrJ   ©r   r   c                    s   g | ]}ˆj ˆ ˆ|d �‘qS ©r�   ©rA   r   r*   r   r   r-   ¥  s     z&np_complex_ge_impl.<locals>.<listcomp>rO   ÚordrM   rš   ©	r&   r   ré   r   r›   rœ   r„   rU   rV   )r,   r+   r#   r   r†   r‡   r;  r<  ÚyrÚyiÚxr_gt_yrÚno_nan_xi_yiÚxr_eq_yrZxi_ge_yiÚ
first_termÚsecond_termr   r*   r   rê   Ÿ  s    
rê   c                    sª   t ||dtjd� |jd ‰‡ ‡‡fdd„|D ƒ\}}|j}|j}|j}|j}	ˆ  d||¡}
ˆ  d||	¡}ˆ  d||¡}ˆ  d	||	¡}ˆ  |
|¡}ˆ  ||¡}ˆ  ||¡S )
NrJ   rQ  r   c                    s   g | ]}ˆj ˆ ˆ|d �‘qS rR  rS  r   r*   r   r   r-   º  s     z&np_complex_le_impl.<locals>.<listcomp>r‚   rT  rM   r)  rU  )r,   r+   r#   r   r†   r‡   r;  r<  rV  rW  Úxr_lt_yrrY  rZ  Zxi_le_yir[  r\  r   r*   r   Únp_complex_le_impl´  s    
r^  c                    sª   t ||dtjd� |jd ‰‡ ‡‡fdd„|D ƒ\}}|j}|j}|j}|j}	ˆ  d||¡}
ˆ  d||	¡}ˆ  d||¡}ˆ  d||	¡}ˆ  |
|¡}ˆ  ||¡}ˆ  ||¡S )	NrJ   rQ  r   c                    s   g | ]}ˆj ˆ ˆ|d �‘qS rR  rS  r   r*   r   r   r-   Ï  s     z&np_complex_gt_impl.<locals>.<listcomp>rO   rT  rM   rU  )r,   r+   r#   r   r†   r‡   r;  r<  rV  rW  rX  rY  rZ  Zxi_gt_yir[  r\  r   r*   r   Únp_complex_gt_implÉ  s    
r_  c                    sª   t ||dtjd� |jd ‰‡ ‡‡fdd„|D ƒ\}}|j}|j}|j}|j}	ˆ  d||¡}
ˆ  d||	¡}ˆ  d||¡}ˆ  d||	¡}ˆ  |
|¡}ˆ  ||¡}ˆ  ||¡S )	NrJ   rQ  r   c                    s   g | ]}ˆj ˆ ˆ|d �‘qS rR  rS  r   r*   r   r   r-   ä  s     z&np_complex_lt_impl.<locals>.<listcomp>r‚   rT  rM   rU  )r,   r+   r#   r   r†   r‡   r;  r<  rV  rW  r]  rY  rZ  Zxi_lt_yir[  r\  r   r*   r   rì   Þ  s    
rì   c                    sv   t ||dtjd� |jd ‰‡ ‡‡fdd„|D ƒ\}}|j}|j}|j}|j}	ˆ  d||¡}
ˆ  d||	¡}ˆ  |
|¡S )NrJ   rQ  r   c                    s   g | ]}ˆj ˆ ˆ|d �‘qS rR  rS  r   r*   r   r   r-   ù  s     z&np_complex_eq_impl.<locals>.<listcomp>rM   )r&   r   ré   r   r›   rœ   r„   rU   )r,   r+   r#   r   r†   r‡   r;  r<  rV  rW  rZ  Zxi_eq_yir   r*   r   rë   ó  s    
rë   c                    sv   t ||dtjd� |jd ‰‡ ‡‡fdd„|D ƒ\}}|j}|j}|j}|j}	ˆ  d||¡}
ˆ  d||	¡}ˆ  |
|¡S )NrJ   rQ  r   c                    s   g | ]}ˆj ˆ ˆ|d �‘qS rR  rS  r   r*   r   r   r-   
  s     z&np_complex_ne_impl.<locals>.<listcomp>rP   )r&   r   ré   r   r›   rœ   Úfcmp_unorderedrV   )r,   r+   r#   r   r†   r‡   r;  r<  rV  rW  Zxr_ne_yrZxi_ne_yir   r*   r   Únp_complex_ne_impl  s    
ra  c                 C   s8   | j |||d�}t ||j¡}t ||j¡}| ||¡S )Nr�   )rA   r	   Úis_truer›   rœ   rV   )r,   r+   r   ÚvalÚcomplex_valZre_trueZim_truer   r   r   Ú_complex_is_true  s    re  c                 C   s>   t ||dtjd� t ||d ¡}t ||d ¡}| ||¡S ©NrJ   rQ  r   rL   )r&   r   ré   r	   rb  rU   ©r,   r+   r#   r   rá   râ   r   r   r   Únp_logical_and_impl"  s    rh  c                 C   sN   t ||dtjd� t| ||jd |d ƒ}t| ||jd |d ƒ}| ||¡S rf  )r&   r   ré   re  r   rU   rg  r   r   r   Únp_complex_logical_and_impl)  s    ri  c                 C   s>   t ||dtjd� t ||d ¡}t ||d ¡}| ||¡S rf  )r&   r   ré   r	   rb  rV   rg  r   r   r   Únp_logical_or_impl0  s    rj  c                 C   sN   t ||dtjd� t| ||jd |d ƒ}t| ||jd |d ƒ}| ||¡S rf  )r&   r   ré   re  r   rV   rg  r   r   r   Únp_complex_logical_or_impl7  s    rk  c                 C   s>   t ||dtjd� t ||d ¡}t ||d ¡}| ||¡S rf  )r&   r   ré   r	   rb  r[   rg  r   r   r   Únp_logical_xor_impl>  s    rl  c                 C   sN   t ||dtjd� t| ||jd |d ƒ}t| ||jd |d ƒ}| ||¡S rf  )r&   r   ré   re  r   r[   rg  r   r   r   Únp_complex_logical_xor_implE  s    rm  c                 C   s"   t ||dtjd� t ||d ¡S ©NrL   rQ  r   )r&   r   ré   r	   Zis_falser   r   r   r   Únp_logical_not_implL  s    ro  c                 C   s4   t ||dtjd� t| ||jd |d ƒ}| |¡S rn  )r&   r   ré   re  r   Únot_)r,   r+   r#   r   rá   r   r   r   Únp_complex_logical_not_implQ  s    rq  c                 C   s0   t ||dƒ |\}}| d||¡}| |||¡S ©NrJ   rš   ©r&   rZ   r\   )r,   r+   r#   r   Úarg1Úarg2Zarg1_sge_arg2r   r   r   Únp_int_smax_impl`  s    rv  c                 C   s0   t ||dƒ |\}}| d||¡}| |||¡S rr  ©r&   rT   r\   )r,   r+   r#   r   rt  ru  Zarg1_uge_arg2r   r   r   Únp_int_umax_implg  s    rx  c                 C   sh   t ||dƒ |\}}| d||¡}| d||¡}| |||¡}| d||¡}	| |	||¡}
| |||
¡S ©NrJ   Úunorš   ©r&   r`  r\   r„   )r,   r+   r#   r   rt  ru  Úarg1_nanÚany_nanÚ
nan_resultrï   Únon_nan_resultr   r   r   Únp_real_maximum_impln  s    r€  c                 C   sh   t ||dƒ |\}}| d||¡}| d||¡}| |||¡}| d||¡}	| |	||¡}
| |||
¡S ry  r{  )r,   r+   r#   r   rt  ru  Úarg2_nanr}  r~  rï   r  r   r   r   Únp_real_fmax_impl}  s    r‚  c                 C   s¨   t ||dƒ |jd }t tj|¡}tjtjf|gd žŽ }|\}}t| |||gƒ}	t| |||gƒ}
| |	|
¡}| |	||¡}t	| |||ƒ}| |||¡}| |||¡S ©NrJ   r   ©
r&   r   r   rÓ   r   ré   Únp_complex_isnan_implrV   r\   rê   ©r,   r+   r#   r   r   Úbc_sigÚbcc_sigrt  ru  r|  r�  r}  r~  rï   r  r   r   r   Únp_complex_maximum_implŒ  s    
r‰  c                 C   s¨   t ||dƒ |jd }t tj|¡}tjtjf|gd žŽ }|\}}t| |||gƒ}	t| |||gƒ}
| |	|
¡}| |
||¡}t	| |||ƒ}| |||¡}| |||¡S rƒ  r„  r†  r   r   r   Únp_complex_fmax_impl¢  s    
rŠ  c                 C   s0   t ||dƒ |\}}| d||¡}| |||¡S ©NrJ   r)  rs  )r,   r+   r#   r   rt  ru  Zarg1_sle_arg2r   r   r   Únp_int_smin_impl·  s    rŒ  c                 C   s0   t ||dƒ |\}}| d||¡}| |||¡S r‹  rw  )r,   r+   r#   r   rt  ru  Zarg1_ule_arg2r   r   r   Únp_int_umin_impl¾  s    r�  c                 C   sh   t ||dƒ |\}}| d||¡}| d||¡}| |||¡}| d||¡}	| |	||¡}
| |||
¡S ©NrJ   rz  r)  r{  ©r,   r+   r#   r   rt  ru  r|  r}  r~  Úarg1_le_arg2r  r   r   r   Únp_real_minimum_implÅ  s    r‘  c                 C   sh   t ||dƒ |\}}| d||¡}| d||¡}| |||¡}| d||¡}	| |	||¡}
| |||
¡S rŽ  r{  r�  r   r   r   Únp_real_fmin_implÔ  s    r’  c                 C   s¨   t ||dƒ |jd }t tj|¡}tjtjf|gd žŽ }|\}}t| |||gƒ}	t| |||gƒ}
| |	|
¡}| |	||¡}t	| |||ƒ}| |||¡}| |||¡S rƒ  ©
r&   r   r   rÓ   r   ré   r…  rV   r\   r^  ©r,   r+   r#   r   r   r‡  rˆ  rt  ru  r|  r�  r}  r~  r�  r  r   r   r   Únp_complex_minimum_implã  s    
r•  c                 C   s¨   t ||dƒ |jd }t tj|¡}tjtjf|gd žŽ }|\}}t| |||gƒ}	t| |||gƒ}
| |	|
¡}| |
||¡}t	| |||ƒ}| |||¡}| |||¡S rƒ  r“  r”  r   r   r   Únp_complex_fmin_implù  s    
r–  c                 C   s   t ||dtjd� tjS ©NrL   rQ  ©r&   r   ré   r	   Z	false_bitr   r   r   r   Únp_int_isnan_impl  s    r™  c                 C   s"   t ||dtjd� t ||d ¡S rn  )r&   r   ré   r   Úis_nanr   r   r   r   Únp_real_isnan_impl  s    r›  c                 C   s<   t ||dtjd� |\}|j\}| j|||d�}t ||¡S ©NrL   rQ  r�   )r&   r   ré   r   rA   r   rš  ©r,   r+   r#   r   r·   r   rd  r   r   r   r…    s
    r…  c                 C   s   t ||dtjd� tjS r—  )r&   r   ré   r	   Ztrue_bitr   r   r   r   Únp_int_isfinite_impl$  s    rž  c                 C   s&   t ||dtjd� | d|d tj¡S )NrL   rQ  rP   r   )r&   r   ré   rT   r   ÚNATr   r   r   r   Únp_datetime_isfinite_impl)  s    r   c                 C   s&   t ||dtjd� | d|d tj¡S )NrL   rQ  rM   r   )r&   r   ré   rZ   r   rŸ  r   r   r   r   Únp_datetime_isnat_impl.  s    r¡  c                 C   s"   t ||dtjd� t ||d ¡S rn  )r&   r   ré   r   Ú	is_finiter   r   r   r   Únp_real_isfinite_impl3  s    r£  c                 C   s<   t ||dtjd� |\}|j\}| j|||d�}t ||¡S rœ  )r&   r   ré   r   rA   r   r¢  r�  r   r   r   Únp_complex_isfinite_impl8  s
    r¤  c                 C   s   t ||dtjd� tjS r—  r˜  r   r   r   r   Únp_int_isinf_impl@  s    r¥  c                 C   s"   t ||dtjd� t ||d ¡S rn  )r&   r   ré   r   Úis_infr   r   r   r   Únp_real_isinf_implE  s    r§  c                 C   s<   t ||dtjd� |\}|j\}| j|||d�}t ||¡S rœ  )r&   r   ré   r   rA   r   r¦  r�  r   r   r   Únp_complex_isinf_implJ  s
    r¨  c           
   	   C   s    t ||dtjd� tj|  tjd¡tj|  tjd¡tj|  tj	d¡i}|j
d }ttd|j› �ƒ}|  |¡}| | |d |¡|| ¡}| d|| d¡¡}	|	S )	NrL   rQ  i €  l        l            r   ZuintrP   )r&   r   ré   Zfloat16rQ   Zuint16rû   Zuint32r6   Zuint64r   ÚgetattrZbitwidthr=   rU   ZbitcastrT   rR   )
r,   r+   r#   r   ZmasksZarg_tyZ
arg_int_tyZarg_ll_int_tyZint_resZbool_resr   r   r   Únp_real_signbit_implR  s        ý

ÿrª  c                 C   s   t ||dƒ t | |||¡S r}   )r&   r   Zcopysign_float_implr   r   r   r   Únp_real_copysign_impld  s    r«  c                 C   s.   t ||dƒ tjdtjdi}t| ||||dƒS )NrJ   Únumba_nextafterfÚnumba_nextafterÚ	nextafterrú   rü   r   r   r   Únp_real_nextafter_impli  s      þ
 ÿr¯  c                 C   s¬   t ||dƒ tjdtjdi}|j\}t |j||¡}|d j}|t	j
ƒ}tj |||g¡}	tj|j|	dd�}
| |
||d g¡}||g }t| ||||dƒ}| ||d ¡S )NrL   r¬  r­  r   zllvm.copysignr'   r®  )r&   r   rû   r6   r   r   rÓ   r   rR   rË   Úinfr0   r1   r2   r	   r3   r.   r5   rI   rŒ   )r,   r+   r#   r   rý   r   ró   Zll_tyZll_infr9   r:   Zll_sinfZ
inner_argsr®  r   r   r   Únp_real_spacing_implt  s,      þ


ÿ
 þr±  c           	      C   sH   |\}}|j \}}|  |||tj¡}t ||tj¡}t | ||||f¡S r   )r   r)   r   Zintcr   rÓ   r   Z
ldexp_impl)	r,   r+   r#   r   r±   r²   Zty1Zty2Zf_fi_sigr   r   r   Únp_real_ldexp_impl‘  s
    
r²  )N)šÚ__doc__ÚmathZllvmlite.irr0   ÚnumpyrË   Znumba.core.extendingr   Znumba.core.imputilsr   Z
numba.corer   r   r   r   r	   r
   Znumba.npr   Znumba.cpythonr   r   r   rÎ   r	  r   r&   r6   r<   rI   ro   rt   ry   rz   r{   r|   Znp_int_fmod_implr€   r‰   rŠ   r�   r¯   r³   rÁ   rÌ   ÚexprÇ   rÈ   rÊ   rÏ   rù   rÐ   rÒ   rÖ   r×   rÙ   rÛ   rÜ   rÝ   rÞ   rå   rð   rò   rô   r÷   rø   rþ   r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r   r&  r'  r(  r-  r  r/  r  r1  r2  r3  r4  r5  r  r  r6  rA  r8  rB  rC  rI  rJ  rK  rL  rM  rÔ   rN  rO  rP  rê   r^  r_  rì   rë   ra  re  rh  ri  rj  rk  rl  rm  ro  rq  rv  rx  r€  r‚  r‰  rŠ  rŒ  r�  r‘  r’  r•  r–  r™  r›  r…  rž  r   r¡  r£  r¤  r¥  r§  r¨  rª  r«  r¯  r±  r²  r   r   r   r   Ú<module>   s  ÿ
>%M


6		 
*)				