
    J/Phd                        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	 d dl
mZmZmZmZ d dlmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d  Z*d! Z+d" Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5d, Z6d- Z7d. Z8d/ Z9d0 Z:d1 Z;d2 Z<d3 Z=d4 Z>dhd5Z?dhd6Z@dhd7ZAd8 ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQdH ZRdI ZSdJ ZTdK ZUdL ZV eWdM          ZXdN ZYdO ZZdP Z[dQ Z\dR Z]dS Z^dT Z_dU Z`dV ZadW ZbdX ZcdY ZddZ Zed[ Zfd\ Zgd] Zhd^ Zid_ Zjd` Zkda Zldb Zmdc Zndd Zode Zpdf Zqdg ZrdS )i    N)ir)Constantimpl_ret_untracked)typingtypeserrorscgutilsviewerc                     | j         rdgS g S )z;
    Return the modifier flags for integer arithmetic.
    nsw)signed)rettypes    U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/np/math/numbers.py_int_arith_flagsr      s     ~ 
 w	    c                    |\  }}|j         \  }}|                     ||||j                  }|                     ||||j                  }	|                    ||	t	          |j                            }
t          | ||j        |
          S N)flags)argscastreturn_typeaddr   r   contextbuildersigr   vavbtatbabress              r   int_add_implr&          HRxHRWb"co66AWb"co66A
++a"23?"C"C+
D
DCgwEEEr   c                    |\  }}|j         \  }}|                     ||||j                  }|                     ||||j                  }	|                    ||	t	          |j                            }
t          | ||j        |
          S r   )r   r   r   subr   r   r   s              r   int_sub_implr*   '   r'   r   c                    |\  }}|j         \  }}|                     ||||j                  }|                     ||||j                  }	|                    ||	t	          |j                            }
t          | ||j        |
          S r   )r   r   r   mulr   r   r   s              r   int_mul_implr-   0   r'   r   c           
      L   |j         |j         k    sJ |                     d          }|                     d          }t          j        ||          }t          j        ||          }|                    |                    d||                     |j                            |                    d||                     d                              }	|                    |                    |	          d          5  |                    ||          }
|	                    ||          }|                    d|
                    ||          |          }|                    d||          }|                    ||          }|                    |          5 \  }}|5  |                    |
|           |                    ||           d	d	d	           n# 1 swxY w Y   |5  |                    |                    |
|          |           |                    |                    ||          |           d	d	d	           n# 1 swxY w Y   d	d	d	           n# 1 swxY w Y   d	d	d	           n# 1 swxY w Y   |                    |          |                    |          fS )
a@  
    Reference Objects/intobject.c
    xdivy = x / y;
    xmody = (long)(x - (unsigned long)xdivy * y);
    /* If the signs of x and y differ, and the remainder is non-0,
     * C89 doesn't define whether xdivy is now the floor or the
     * ceiling of the infinitely precise quotient.  We want the floor,
     * and we have it iff the remainder's sign matches y's.
     */
    if (xmody && ((y ^ xmody) < 0) /* i.e. and signs differ */) {
        xmody += y;
        --xdivy;
        assert(xmody && ((y ^ xmody) >= 0));
    }
    *p_xdivy = xdivy;
    *p_xmody = xmody;
    r      ==Tlikely<!=N)typer
   alloca_once_valueand_icmp_signedminvalif_thennot_sdivsremxorif_elsestorer)   r   load)r   r   tyxyZEROONEresdivresmodis_overflowxdivyxmodyy_xor_xmody_ltzxmody_istruecondif_different_signsif_same_signss                    r   int_divmod_signedrR   9   sU   $ 6QV66!99D
&&))C &w55F&w55F,,D!QVVBI%6%677D!QVVBZZ002 2K 
k224	@	@ = = Q""Q""!--c7;;q%3H3H$OO**4==||L/::__T"" 	=&I'9= - -eV,,,eV,,,- - - - - - - - - - - - - - - $ = =gkk%55v>>>gkk%33V<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	== = = = = = = = = = = = = = =& <<f!5!555s   <BI1I-G	IGIGI"AI7III
III1I	I1!I	"I11I58I5c                     |j         rt          | ||||          S |                    ||          |                    ||          fS )zD
    Integer divmod(x, y).  The caller must ensure that y != 0.
    )r   rR   udivurem)r   r   rC   rD   rE   s        r   
int_divmodrV   r   sK     
y 6 '2q!<<<||Aq!!7<<1#5#555r   c           	      N   |\  }}|j         \  }}|j        }	t          |	t          j                  r|	j        }	|                     ||||	          }
|                     ||||	          }t          j        ||
j	        d          }t          j        ||
j	        d          }|
                    t          j        ||          d          5 \  }}|5  | j                            ||f          s,|                    ||           |                    ||           d d d            n# 1 swxY w Y   |5  t          | ||	|
|          \  }}|                    ||           |                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ||fS )NquotnameremFr2   )r   r   
isinstancer   UniTupledtyper   r
   alloca_oncer6   r@   is_scalar_zeroerror_modelfp_zero_divisionrA   rV   )r   r   r   r   zerodiv_messager   r    r!   r"   rC   r#   r$   rX   r[   if_zeroif_non_zeroqrs                     r   _int_divmod_implrh   |   sh   FBXFB	B"en%% XWb"b))AWb"b))AwV<<<D

gqvE
:
:
:C	/;;E 
 
 "4w 	& 	&&77/+- - &
 a&&&a%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&  	" 	"gwAq99DAqMM!T"""MM!S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" " " " " " " " " " " " " " " 9s\   
FA	D%F%D)	)F,D)	-F2AF5FF	FF		FFFc                     t          | |||d          \  }}t          j        ||                    |          |                    |          f          S )Nzinteger divmod by zero)rh   r
   
pack_arrayrB   r   r   r   r   rX   r[   s         r   int_divmod_implrl      s\     '3!9; ;ID# g&||D117<<3D3DEG G Gr   c                 X    t          | |||d          \  }}|                    |          S )Nzinteger division by zerorh   rB   rk   s         r   int_floordiv_implro      s2     '3!;= =ID#<<r   c                 ~   |\  }}|j         \  }}|                     ||||j                  }|                     ||||j                  }	t          j        ||	          5  | j                            |d           d d d            n# 1 swxY w Y   |                    ||	          }
t          | ||j        |
          S )Nzdivision by zero)	r   r   r   r
   rd   ra   rb   fdivr   r   s              r   int_truediv_implrs      s   HRxHRWb"co66AWb"co66A	!	$	$ M M,,W6KLLLM M M M M M M M M M M M M M M
,,q!

CgwEEEs   BBBc                 X    t          | |||d          \  }}|                    |          S )Nzinteger modulo by zerorn   rk   s         r   int_rem_implru      s2     '3!9; ;ID#<<r   c                 l    t          |t          j                  r| j        j        sd|j        dz
  z  S dS )Nr1   r/   F)r\   r   Integerra   raise_on_fp_zero_divisionbitwidth)r   r   s     r   _get_power_zerodiv_returnrz      s>    ;.. #= k*Q.//ur   c                     t          |j        d         t          j                  |j        t          |           fd}|                     ||||          }t          | ||j        |          S )z@
    a ^ b, where a is an integer or real, and b an integer
    r   c                 ^    d          } |           } |dk     r<d}| }|dk     rt           r'| dk    rrS t          d          | dk    r| dk    rdS nd}|}|dk    r"t          j        | t	          |                    S |dk    r|dz  r|| z  }|dz  }| | z  } |dk    |rd|z  n|S )	Nr/   r   T&0 cannot be raised to a negative powerr1   F         ?)OverflowErrorZeroDivisionErrormathpowfloat)r#   r$   rg   invertexp
is_integertpzerodiv_returns        r   	int_powerz!int_power_impl.<locals>.int_power   s   BqEEBqEEq55F"CQww## 66% Z--/0XYYY66a2gg1FC==8AuQxx(((QhhQw QAICFA	 Qhh !'sQwwa'r   )r\   r   r   rw   r   rz   compile_internalr   )	r   r   r   r   r   r%   r   r   r   s	         @@@r   int_power_implr      s     CHQK77J	B.w;;N( ( ( ( ( ( (> 
"
"7IsD
A
ACgwEEEr   c                    |j         d         j        }t          |t          j                  st
          t          |          dk    rt
          |dk     }t          |          }|j        }t          |t          j	                  t          | |          |                     |d         |j         d         |          }|j        }fd}	 |d          }
|}|dk    r(|dz  r |	|
|          }
|dz  } |	||          }|dk    (|r7rfd}nd }|                     |t          j        ||          |
f          }
|
S )zH
    a ^ b, where a is an integer or real, and b a constant integer
    r/   r~   r   c                 `    r                     | |          S                     | |          S N)r,   fmul)r#   r$   r   r   s     r   r,   zstatic_power_impl.<locals>.mul  s3     	&;;q!$$$<<1%%%r   c                 V    | dk    rrS t          d          | dk    r| dk    rdS | S )Nr   r}   r/   r1   )r   )r#   r   s    r   invert_implz&static_power_impl.<locals>.invert_impl  sE    66% Z--/0XYYY66a2gg1Hr   c                     d| z  S )Nr    )r#   s    r   r   z&static_power_impl.<locals>.invert_impl,  s    Qwr   )r   valuer\   numbersIntegralNotImplementedErrorabsr   r   rw   rz   r   r6   r   r   	signature)r   r   r   r   r   r   r   valltyr,   r%   r#   r   r   r   s    `           @@r   static_power_implr      s    (1+
Cc7+,, "!!
3xx'!!1WF
c((C	BB..J.w;;N
,,wQ!b
9
9C
(C& & & & & & #a&&CA
((7 	 #c3--C	c#smm	 ((  I 		 	 	 	 	 	   &&w'-'7B'?'?#I I Jr   c                 L     |j         dg|R  }t          | ||j        |          S Nr4   r9   r   r   r   r   r   r   r%   s        r   int_slt_implr   5  2    
'
c
)D
)
)
)CgwEEEr   c                 L     |j         dg|R  }t          | ||j        |          S Nz<=r   r   s        r   int_sle_implr   :  2    
'
d
*T
*
*
*CgwEEEr   c                 L     |j         dg|R  }t          | ||j        |          S N>r   r   s        r   int_sgt_implr   ?  r   r   c                 L     |j         dg|R  }t          | ||j        |          S Nz>=r   r   s        r   int_sge_implr   D  r   r   c                 L     |j         dg|R  }t          | ||j        |          S r   icmp_unsignedr   r   r   s        r   int_ult_implr   I  2    
'

+d
+
+
+CgwEEEr   c                 L     |j         dg|R  }t          | ||j        |          S r   r   r   s        r   int_ule_implr   N  2    
'

,t
,
,
,CgwEEEr   c                 L     |j         dg|R  }t          | ||j        |          S r   r   r   s        r   int_ugt_implr   S  r   r   c                 L     |j         dg|R  }t          | ||j        |          S r   r   r   s        r   int_uge_implr   X  r   r   c                 L     |j         dg|R  }t          | ||j        |          S Nr0   r   r   s        r   int_eq_implr   ]  r   r   c                 L     |j         dg|R  }t          | ||j        |          S Nr5   r   r   s        r   int_ne_implr   b  r   r   c                       fd}|S )Nc                 @   |\  }}|                     d|t          |j        d                    }|                     
|t          |j        d                    }|                    
||          }|                    |||          }	t          | ||j        |	          S Nr4   r   r9   r   r6   r   selectr   r   r   r   r   r   leftrightcmp_zerolt_zeroge_zeror%   ops             r   implz%int_signed_unsigned_cmp.<locals>.implh  s    u &&sD(49a2H2HII%%b$A0F0FGG''D%88nnXw88!'7COSIIIr   r   r   r   s   ` r   int_signed_unsigned_cmpr   g  s(    J J J J J  Kr   c                       fd}|S )Nc                 @   |\  }}|                     d|t          |j        d                    }|                     
t          |j        d          |          }|                    
||          }|                    |||          }	t          | ||j        |	          S r   r   r   s             r   r   z%int_unsigned_signed_cmp.<locals>.impl|  s    u&&sE8EJ3J3JKK%%b(5:q*A*A5II''D%88nnXw88!'7COSIIIr   r   r   s   ` r   int_unsigned_signed_cmpr   {  s(    J J J J J Kr   c                     |\  }t          |j        d           }|                    d||          }|                    |          }|                    |||          }t          | ||j        |          S r   )r   r6   r9   negr   r   r   )	r   r   r   r   rD   rF   ltznegatedr%   s	            r   int_abs_implr     sk    
CQAFD!!D


c1d
+
+Ckk!nnG
..gq
)
)CgwEEEr   c                 8    |\  }t          | ||j        |          S r   r   r   r   r   r   r   rD   s        r   identity_implr         
CQgwCCCr   c                 8    |\  }t          | ||j        |          S r   r   r   s        r   uint_abs_implr     r   r   c                     |j         \  }}|\  }}|                     ||||j                  }|                     ||||j                  }|                    ||          }t	          | ||j        |          S r   )r   r   r   shlr   	r   r   r   r   valtyamttyr   amtr%   s	            r   int_shl_implr     sq    XNUEJS#
,,wUCO
<
<C
,,wUCO
<
<C
++c3

CgwEEEr   c                 4   |j         \  }}|\  }}|                     ||||j                  }|                     ||||j                  }|j        j        r|                    ||          }n|                    ||          }t          | ||j        |          S r   )r   r   r   r   ashrlshrr   r   s	            r   int_shr_implr     s    XNUEJS#
,,wUCO
<
<C
,,wUCO
<
<C
 %ll3$$ll3$$gwEEEr   c                     |j         \  }}|\  }}|                     ||||j                  }|                     ||||j                  }	|                    ||	          }
t	          | ||j        |
          S r   )r   r   r   r8   r   r   r   r   r   atbtavbvcavcbcr%   s              r   int_and_implr     sq    xHRHR
,,wB
8
8C
,,wB
8
8C
,,sC
 
 CgwEEEr   c                     |j         \  }}|\  }}|                     ||||j                  }|                     ||||j                  }	|                    ||	          }
t	          | ||j        |
          S r   )r   r   r   or_r   r   s              r   int_or_implr     q    xHRHR
,,wB
8
8C
,,wB
8
8C
++c3

CgwEEEr   c                     |j         \  }}|\  }}|                     ||||j                  }|                     ||||j                  }	|                    ||	          }
t	          | ||j        |
          S r   )r   r   r   r?   r   r   s              r   int_xor_implr     r   r   c                     |j         \  }|\  }|                    |          }|                     ||||j                  }t	          | ||j        |          S r   )r   r   r   r   r   r   r   r   r   typr   r%   s          r   int_negate_implr     sR    HESES
++c

C
,,wS#/
:
:CgwEEEr   c                     |j         \  }|\  }|                     ||||j                  }t          | ||j        |          S r   r   r   r   r   r   s          r   int_positive_implr     A    HESES
,,wS#/
:
:CgwEEEr   c           
         |j         \  }|\  }|                    |t          |j        t	          d|j        j        z  d                              }|                     ||||j                  }t          | ||j        |          S )N1   )	r   r?   r   r6   intwidthr   r   r   r   s          r   int_invert_implr    ss    HESES
++c8CHc#2F.J.JKK
L
LC
,,wS#/
:
:CgwEEEr   c                 2   |\  }t          |j        d          }t          |j        d          }t          |j        d          }|                    d||          }|                    d||          }	t	          j        ||j                  }
|                    d          }|                    d          }|                    d          }|                    d	          }|                    d
          }|                    |||           |                    |          5  |	                    ||
           |
                    |           ddd           n# 1 swxY w Y   |                    |          5  |                    |	||           ddd           n# 1 swxY w Y   |                    |          5  |	                    ||
           |
                    |           ddd           n# 1 swxY w Y   |                    |          5  |	                    ||
           |
                    |           ddd           n# 1 swxY w Y   |                    |           |                    |
          }t          | ||j        |          S )z
    np.sign(int)
    r/   r1   r   r0   r   z.zeroz.postestz.posz.negz.exitN)r   r6   r   r9   r
   r_   append_basic_blockcbranch
goto_blockrA   branchposition_at_endrB   r   r   )r   r   r   r   rD   POSNEGrF   r   cmp_pospresultbb_zero
bb_postestbb_posbb_negbb_exitr%   s                    r   int_sign_implr    sd    CQ
161

C
162

CAFAD$$T1d33H!!#q$//G!'1622G((11G++J77J''//F''//F((11GOOHgz222			G	$	$    dG$$$w                              
		J	'	' 1 10001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
		F	#	#    c7###w                              
		F	#	#    c7###w                              G$$$
,,w

CgwEEEsH   !,EE E9FF!$F!=,G55G9<G9,IIIc                     |j         \  }|\  }|                     ||||j                  }|                    |          }t	          | ||j        |          S r   )r   r   r   r   r   r   s          r   bool_negate_implr    sR    HESES
,,wS#/
:
:C
++c

CgwEEEr   c                     |j         \  }|\  }|                     ||||j                  }t          | ||j        |          S r   r   r   s          r   bool_unary_positive_implr    r   r   c                 D     |j         | }t          | ||j        |          S r   )faddr   r   r   s        r   real_add_implr  f  &    
',
CgwEEEr   c                 D     |j         | }t          | ||j        |          S r   )fsubr   r   r   s        r   real_sub_implr!  k  r  r   c                 D     |j         | }t          | ||j        |          S r   )r   r   r   r   s        r   real_mul_implr#  p  r  r   c                     t          j        ||d                   5  | j                            |d           d d d            n# 1 swxY w Y    |j        | }t          | ||j        |          S )Nr/   rq   )r
   rd   ra   rb   rr   r   r   r   s        r   real_div_implr%  u  s    	$q'	*	* M M,,W6KLLLM M M M M M M M M M M M M M M
',
CgwEEEs   AAAc                    |j         |j         k    sJ |j         }|j        }|                     d|j         g          }t          j        |||t          j        |          f          }t          j        |||          }|j        ryd|_	        t          j
        |                    d                    }	|j        \  }
}}t          | |	|
|          \  }}|	                    ||           |	                    |           t          j        ||          }|                    ||||f          }||                    |          fS )Nz.numba.python.remlinkonce_odrentry)r6   modulemanglerr   FunctionTypePointerTyper
   get_or_insert_functionis_declarationlinkage	IRBuilderr  r   real_divmod_func_bodyrA   retr_   callrB   )r   r   rD   rE   floattyr)  fnamefntyfn	fnbuilderfxfypmoddivmodquotients                   r   real_divmodr?  |  s.   6QVfG^FOO/!&::E?7Wgr~g7N7N$OPPD		'e	<	<B	 #
L!6!6w!?!?@@	wB()RDDST"""cw00D||BAt--HW\\$''''r   c           	       	   t          j        ||j                  }t          j        ||j                  }t          j        ||j                  }|                    ||          }|                    |                    ||          |          }|                    ||           |                    ||           |                    d          }	|                    d          }
|                    d          }|                    d||	          }|                    d||	          }|                    d||	          }|	                    |d          5 \  }}|5  |
                    d||          }|                    |          5  |                    |                    ||          |           |                    |                    ||          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |5  |                    ||
|	          }|                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ~~|                    |          }|                    d||	          }|                    |          5  t          j        t          j        d}|t%          |j                           }|                     t(          j        t-          j        ||                    } |||g          }|                    ||          }|                    ||          }t1          |j        d	          }|                    d
||          }|                    |||          }|                    ||           d d d            n# 1 swxY w Y   t          j        ||          5  |                    ||          }|                    ||           |                    |                    ||          |          }|                    ||           d d d            n# 1 swxY w Y   |                    |          |                    |          fS )N        g       r   r5   r4   Tr2   )r   doubleg      ?r   )r
   r_   r6   fremrr   r   rA   fcmp_unorderedfcmp_orderedr@   r   r;   r  r   rB   r   float32float64strget_functionr   floorr   r   r   ifnotr   )r   r   vxwxr;  pdiv	pfloordivr=  r<  rF   NZEROrG   
mod_istruewx_ltzmod_ltzif_nonzero_modif_zero_modwx_ltz_ne_mod_ltz
div_istruerealtypemaprealtypefloorfnfloordivfloordivdifffloordivincrHALFpreds                              r   r1  r1    s   \ w00Dw00D#GRW55I
,,r2

C
,,w||B,,b
1
1CMM#tMM#t 773<<DGGDMME
''#,,C''c488J!!#r400F""3T22G	D	1	1 %5Rnk 	; 	; !( 5 5dFG L L!233 ; ;gll344d;;;gll333T:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;  	% 	% ..55CMM#t$$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%% % % % % % % % % % % % % % %  	S
,,t

C%%dC66J		$	$ + + %!&0 0s27||,&&tz'-'7('K'KM M77SE**||C22||Hc22%%##Ct<<>>$h??h	***+ + + + + + + + + + + + + + + 
w
	+	+ + +ll3$$c4   <<S" 5 5r::h	***	+ + + + + + + + + + + + + + + <<	""GLL$6$666s   I-H	AG*H*G..H1G.2H5IH	IH		I.I<II	II	II#&I#-C9N22N69N6A-QQQc                 R   |\  }}t          j        ||j        d          }t          j        ||j        d          }|                    t          j        ||          d          5 \  }	}
|	5  | j                            |d|          sX|                    ||          }|                    ||          }|	                    ||           |	                    ||           d d d            n# 1 swxY w Y   |
5  t          | |||          \  }}|	                    ||           |	                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        ||                    |          |                    |          f          S )NrX   rY   r[   Fr2   zmodulo by zero)r
   r_   r6   r@   r`   ra   rb   rr   rC  rA   r?  rj   rB   )r   r   r   r   locrD   rE   rX   r[   rd   re   rf   rg   s                r   real_divmod_implrc    sa   DAqwV<<<D

gqvE
:
:
:C	/;;E 
 
 "4w 	& 	&&77,c3 3 & LLA&&LLA&&a&&&a%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&  	" 	"wA66DAqMM!T"""MM!S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" " " " " " " " " " " " " " "  g&||D117<<3D3DEG G Gs\   (E!.A5C/#E!/C3	3E!6C3	7E!<AE
>E!
E	E!E	E!!E%(E%c                 l   |\  }}t          j        ||j                  }|                    t          j        ||          d          5 \  }}	|5  | j                            |d|          s,|                    ||          }
|                    |
|           d d d            n# 1 swxY w Y   |	5  t          | |||          \  }}
|                    |
|           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          | ||j        |                    |                    S )NFr2   ra  )r
   r_   r6   r@   r`   ra   rb   rC  rA   r?  r   r   rB   )r   r   r   r   rb  rD   rE   r%   rd   re   r[   _s               r   real_mod_implrf    s   DAq

gqv
.
.C	/;;E 
 
 $4w 	( 	(&77,c3 3 ( ll1a((c3'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(  	$ 	$ '1a88FAsMM#s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ gw%ll3//1 1 1[   
DA	B%D%B)	)D,B)	-D2,C*D*C.	.D1C.	2DDDc                 l   |\  }}t          j        ||j                  }|                    t          j        ||          d          5 \  }}	|5  | j                            |d|          s,|                    ||          }
|                    |
|           d d d            n# 1 swxY w Y   |	5  t          | |||          \  }
}|                    |
|           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          | ||j        |                    |                    S )NFr2   rq   )r
   r_   r6   r@   r`   ra   rb   rr   rA   r?  r   r   rB   )r   r   r   r   rb  rD   rE   r%   rd   re   rX   re  s               r   real_floordiv_implri  +  s   DAq

gqv
.
.C	/;;E 
 
 %4w 	) 	)&77.5 5 ) ||Aq))dC(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)  	% 	%!'7Aq99GD!MM$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%% % % % % % % % % % % % % % % gw%ll3//1 1 1rg  c                    |\  }}|j         }| j        r-|                     t          j        |          } |||          }n4|                    d|j        g          }	|                    |	||f          }t          | ||j	        |          S )Nzllvm.pow)
r)  implement_powi_as_math_callrI  r   r   declare_intrinsicr6   r3  r   r   )
r   r   r   r   rD   rE   r)  impr%   r7  s
             r   real_power_implrn  >  s    DAq^F* '""48S11c'4  %%j16(;;ll21v&&gwEEEr   c                 L     |j         dg|R  }t          | ||j        |          S r   rE  r   r   r   s        r   real_lt_implrq  J  2    
'
s
*T
*
*
*CgwEEEr   c                 L     |j         dg|R  }t          | ||j        |          S r   rp  r   s        r   real_le_implrt  O  2    
'
t
+d
+
+
+CgwEEEr   c                 L     |j         dg|R  }t          | ||j        |          S r   rp  r   s        r   real_gt_implrw  T  rr  r   c                 L     |j         dg|R  }t          | ||j        |          S r   rp  r   s        r   real_ge_implry  Y  ru  r   c                 L     |j         dg|R  }t          | ||j        |          S r   rp  r   s        r   real_eq_implr{  ^  ru  r   c                 L     |j         dg|R  }t          | ||j        |          S r   )rD  r   r   r   s        r   real_ne_implr}  c  s2    
 '
 
-
-
-
-CgwEEEr   c                     |j         \  }t          j        ||          }|                     t          j        |          } |||          S r   )r   r   r   rI  r   fabs)r   r   r   r   rC   r   s         r   real_abs_implr  h  sF    8DR

2r
"
"C	3//D4r   c                 t    ddl m} |                    ||d                   }t          | ||j        |          S Nr   mathimpl)numba.cpythonr  negate_realr   r   )r   r   r   r   r  r%   s         r   real_negate_implr  o  sC    &&&&&&


wQ
0
0CgwEEEr   c                     |j         \  }|\  }|                     ||||j                  }t          | ||j        |          S r   r   r   s          r   real_positive_implr  u  r   r   c           	         |\  }t          |j        d          }t          |j        d          }t          |j        d          }t          j        ||j                  }|                    d||          }	|                    d||          }
|                    |	          5 \  }}|5  |                    ||           ddd           n# 1 swxY w Y   |5  |                    |
          5 \  }}|5  |                    ||           ddd           n# 1 swxY w Y   |5  |                    ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |                    |          }t          | ||j	        |          S )z
    np.sign(float)
    r/   r1   r   r   r4   N)
r   r6   r
   r_   rE  r@   rA   rB   r   r   )r   r   r   r   rD   r  r  rF   r  is_posis_neggt_zeronot_gt_zeror   not_lt_zeror%   s                   r   real_sign_implr  |  s%    CQ
161

C
162

CAFAD!'1622G!!#q$//F!!#q$//F		 	  
.$:Wk 	( 	(MM#w'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	. 	.(( .,BWk 0 0MM#w///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  . . MM!W---. . . . . . . . . . . . . . .. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. 
. ,,w

CgwEEEs   !F'C
>F
C	FC	FE4-E3D	
EDEDE#E	:EE

EE
EE4E!!E4$E!%E4(F4E8	8F;E8	<FFFc                 d    |                      |||          }|j        }t          | |||          S Nr   )make_complexrealr   r   r   r   r   cplxr%   s         r   complex_real_implr    7    E::D
)CgwS999r   c                 d    |                      |||          }|j        }t          | |||          S r  )r  imagr   r  s         r   complex_imag_implr    r  r   c                     ddl m} |                     ||j        d         |d                   }|                    ||j                  |_        |                                }t          | ||j        |          S r  )	r  r  r  r   r  r  	_getvaluer   r   )r   r   r   r   r  zr%   s          r   complex_conjugate_implr    sq    &&&&&&Wchqk47;;A!!'1622AF
++--CgwEEEr   c                 &    t          | |||          S r   r   )r   r   r   r   s       r   real_real_implr    s    gwU;;;r   c                 X    t          j        |j                  }t          | |||          S r   )r
   get_null_valuer6   r   )r   r   r   r   r%   s        r   real_imag_implr    s(    

 
,
,CgwS999r   c                 <    t          | ||j        |d                   S Nr   r   r   r   r   r   s       r   real_conjugate_implr    s    gwaIIIr   c           	         |\  }}|j         d         }|j        }|                     |||          }|                     |||          }	|                     ||          }
|j        }|                                }|	                                }|
                                }|                     |d          }|                     |d          }|                    d|	j        |          }|                    d|	j        |          }|	                    ||          }|
                    |          5 \  }}|5  t          | ||||f          }|                     |||          }|j        |
_        |j        |
_        d d d            n# 1 swxY w Y   |5  t          j        dt          j        di|         }t          j        t          j                    |j        gdz            }t'          j        |||          }|                    ||||f           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |          }t/          | ||j        |          S )Nr   r  r  r0   numba_cpowf
numba_cpow   )r   underlying_floatmake_helperr)  _getpointerget_constantrE  r  r  r8   r@   complex_mul_implr   	complex64
complex128r   r+  VoidTyper6   r
   r-  r3  rB   r   r   )r   r   r   r   cacbrC   ftyr#   r$   cr)  papbpcTWOrF   b_real_is_twob_imag_is_zerob_is_twothen	otherwiser%   cres	func_namer6  cpows                              r   complex_power_implr    s   HR	!B

CGRr22AGRr22AGR((A^F	
B	
B	
B 

sA
&
&CQ''D((qvs;;M))$==N||M>::H		"	" -&7tY 	 	"7GS2r(CCC&&w#&>>DYAFYAF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	- 	-  , I ?2;==27)a-@@D1&$	JJDLLB|,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-- - - - - - - - - - - - - - -$ ,,r

CgwEEEs\   2H88AF	=H8	F	H8F	H8A?H!H8!H%	%H8(H%	)H88H<?H<c                    |\  }}|j         d         }|                     |||          }|                     |||          }|                     ||          }	|j        }
|j        }|j        }|j        }|                    |
|          |	_        |                    ||          |	_        |	                                }t          | ||j        |          S Nr   r  )r   r  r  r  r  r  r   r   r   r   r   r   cxcyrC   rD   rE   r  r#   r$   r  dr%   s                  r   complex_add_implr        HR	!BWb33AWb33AWb))A	A	A	A	A\\!QAF\\!QAF
++--CgwEEEr   c                    |\  }}|j         d         }|                     |||          }|                     |||          }|                     ||          }	|j        }
|j        }|j        }|j        }|                    |
|          |	_        |                    ||          |	_        |	                                }t          | ||j        |          S r  )r   r  r  r  r   r  r   r   r  s                  r   complex_sub_implr    r  r   c                 \   |\  }}|j         d         }|                     |||          }|                     |||          }|                     ||          }	|j        }
|j        }|j        }|j        }|                    |
|          }|                    ||          }|                    |
|          }|                    ||          }|                    ||          |	_        |                    ||          |	_        |	                                }t          | ||j	        |          S )z'
    (a+bi)(c+di)=(ac-bd)+i(ad+bc)
    r   r  )
r   r  r  r  r   r   r  r  r   r   )r   r   r   r   r  r  rC   rD   rE   r  r#   r$   r  r  acbdadbcr%   s                      r   r  r  +  s    HR	!BWb33AWb33AWb))A	A	A	A	A	a		B	a		B	a		B	a		B\\"b!!AF\\"b!!AF
++--CgwEEEr   nanc                 f    d }|                      ||||          }t          | ||j        |          S )Nc                    | j         }| j        }|j         }|j        }|s|st          d          t          |          t          |          k    rK|st	          t
          t
                    S ||z  }|||z  z   }t	          |||z  z   |z  |||z  z
  |z            S |st	          t
          t
                    S ||z  }||z  |z   }t	          | j         |z  | j        z   |z  | j        |z  | j         z
  |z            S )Nzcomplex division by zero)r  r  r   r   complexNAN)r#   r$   arealaimagbrealbimagratiodenoms           r   complex_divz%complex_div_impl.<locals>.complex_divE  s%    	@U 	@#$>???u::U## )sC(((EMEEEM)E&%/&%/1 1 1
  )sC(((EMEEME)E%!&(E1%!&(E13 3 3r   r   r   r   )r   r   r   r   r  r%   s         r   complex_div_implr  D  sB    3 3 36 
"
"7Kd
C
CCgwEEEr   c                 Z   ddl m} |j        \  }|\  }|                     |||          }|                     ||          }|                    ||j                  |_        |                    ||j                  |_        |                                }t          | ||j	        |          S )Nr   r  r  )
r  r  r   r  r  r  r  r  r   r   )	r   r   r   r   r  r   r   cmplxr%   s	            r   complex_negate_implr  d  s    &&&&&&HESES  #S 99E


w
,
,C##GUZ88CH##GUZ88CH
--//CgwEEEr   c                 8    |\  }t          | ||j        |          S r   r   r   r   r   r   r   s        r   complex_positive_implr  p  s    ESgwEEEr   c                 d   |\  }}|j         d         }|                     |||          }|                     |||          }|                    d|j        |j                  }	|                    d|j        |j                  }
|                    |	|
          }t          | ||j        |          S )Nr   r  r0   )r   r  rE  r  r  r8   r   r   )r   r   r   r   r  r  r   rD   rE   reals_are_eqimags_are_eqr%   s               r   complex_eq_implr  u  s    HR
(1+CWc44AWc44A''afaf==L''afaf==L
,,|\
2
2CgwEEEr   c                 d   |\  }}|j         d         }|                     |||          }|                     |||          }|                    d|j        |j                  }	|                    d|j        |j                  }
|                    |	|
          }t          | ||j        |          S )Nr   r  r5   )r   r  rD  r  r  r   r   r   )r   r   r   r   r  r  r   rD   rE   reals_are_neimags_are_ner%   s               r   complex_ne_implr    s    HR
(1+CWc44AWc44A))$??L))$??L
++lL
1
1CgwEEEr   c                 f    d }|                      ||||          }t          | ||j        |          S )z)
    abs(z) := hypot(z.real, z.imag)
    c                 @    t          j        | j        | j                  S r   )r   hypotr  r  )r  s    r   complex_absz%complex_abs_impl.<locals>.complex_abs  s    z!&!&)))r   r  )r   r   r   r   r  r%   s         r   complex_abs_implr    sB    * * * 
"
"7Kd
C
CCgwEEEr   c                     |d         S )z;
    The no-op .item() method on booleans and numbers.
    r   r   r  s       r   number_item_implr    s     7Nr   c                     |j         \  }|\  }|                     ||||j                  }|                    |          }t	          | ||j        |          S r   )r   r   r   r<   r   )r   r   r   r   r   r   istruer%   s           r   number_not_implr    sR    HESES\\'3S_==F
,,v

CgwEEEr   c                     |\  }|S r   r   r  s        r   bool_as_boolr    s    ESJr   c                 ^    |\  }|                     d|t          |j        d                    S )Nr5   r   )r   r   r6   r  s        r   int_as_boolr    s-    ES  sHSXq,A,ABBBr   c                 ^    |\  }|                     d|t          |j        d                    S )Nr5   rA  )rD  r   r6   r  s        r   float_as_boolr    s-    ES!!$Xch-D-DEEEr   c                    |j         \  }|\  }|                     |||          }|j        |j        }}t	          |j        d          }	|                    d||	          }
|                    d||	          }|                    |
|          S )NrA  r5   )r   r  r  r  r   r6   rD  r   )r   r   r   r   r   r   r  r  r  zeroreal_istrueimag_istrues               r   complex_as_boolr    s    HESES  #s33EUZ$DDIs##D((tT::K((tT::K;;{K000r   c                 ~    |                      ||j        |j                  }|                     |||j        |          S r   )get_constant_genericliteral_typeliteral_valuer   r   r   fromtytotyr   lits         r   literal_int_to_numberr    sC    

&
&
 
C
 <<f&94@@@r   c                 J   |j         |j         k    r|S |j         |j         k     r)|                    ||                     |                    S |j        r)|                    ||                     |                    S |                    ||                     |                    S r   )ry   truncget_value_typer   sextzextr   r   r  r  r   s        r   integer_to_integerr    s    }''
		(	(}}S'"8"8">">???	 ?||C!7!7!=!=>>> ||C!7!7!=!=>>>r   c                 T    |                     ||                     |                    S r   )inttoptrr  r  s        r   integer_to_voidptrr    s&    C!7!7!=!=>>>r   c                     |                      |          }|j        |j        k     r|                    ||          S |                    ||          S r   )r  ry   fpextfptruncr   r   r  r  r   r   s         r   float_to_floatr    sL    

 
 
&
&C&&}}S#&&&sC(((r   c                     |                      |          }|j        r|                    ||          S |                    ||          S r   )r  r   sitofpuitofpr  s         r   integer_to_floatr"    sG    

 
 
&
&C} (~~c3'''~~c3'''r   c                     |                      |          }|j        r|                    ||          S |                    ||          S r   )r  r   fptosifptouir  s         r   float_to_integerr&    sG    

 
 
&
&C{ (~~c3'''~~c3'''r   c                     |                      ||||j                  }|                     |j        d          }|                     ||          }||_        ||_        |                                S r  )r   r  r  r  r  r  r  )r   r   r  r  r   r  r  r  s           r   non_complex_to_complexr(  !  sg    <<fd.CDDD 5q99D  $//EEJEJ??r   c                 *   |j         }|j         }|                     |||          }|                     ||          }|                     ||j        ||          |_        |                     ||j        ||          |_        |                                S r  )r  r  r   r  r  r  )	r   r   r  r  r   srctydsttysrcdsts	            r   complex_to_complexr.  +  s    #E!E


wc

:
:C


w
-
-C||GSXue<<CH||GSXue<<CH==??r   c                 0    |                      |||          S r   )is_truer  s        r   any_to_booleanr1  6  s    ??7FC000r   c                     |                     |t          j        d                    }|                     ||t          j        |          S )N    )r  r   IntTyper   r   int32)r   r   r  r  r   asints         r   boolean_to_anyr7  :  s7    LLbjnn--E<<T:::r   c                 |    |                      ||j        |j                  }|                     ||j        |          S r   )r  r	  r
  r0  r  s         r   literal_int_to_booleanr9  A  sA    

&
&
 
C
 ??7F$7===r   c                     |j         }|                     |||j                  }|                     |||j                  }t	          j        ||f          S r   )r  r  r  r  r   literal_struct)r   r   rC   pyvalr  r  r  s          r   constant_complexr=  M  sQ    

C''ejAAD''ejAAD"D$<000r   c                     t          |t          j                  rt          |          }|                     |          } ||          S r   )r\   npbool_boolr  )r   r   rC   r<  r   s        r   constant_integerrB  V  sD    
 %"" U

 
 
$
$C3u::r   c                     t          | t          j        t          j        f          rMt          |t          j        j                  r0| j        |j        j        k    rt          j	        d          d }|S dS dS )z) Typing for the np scalar 'view' method. zOChanging the dtype of a 0d array is only supported if the itemsize is unchangedc                 "    t          | |          S r   r   )scalarviewtys     r   r   zscalar_view.<locals>.implm  s    &&)))r   N)
r\   r   Floatrw   abstract	DTypeSpecry   r^   r	   TypingError)rE  rF  r   s      r   scalar_viewrK  d  s    6EK788 	65>#;<<	?fl333$() ) )	* 	* 	*	 	 	 	r   r   )sr   r   numpyr?  llvmliter   llvmlite.irr   numba.core.imputilsr   
numba.corer   r   r	   r
   numba.cpython.unsafe.numbersr   r   r&   r*   r-   rR   rV   rh   rl   ro   rs   ru   rz   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  rc  rf  ri  rn  rq  rt  rw  ry  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  r7  r9  r=  rB  rK  r   r   r   <module>rR     s                           2 2 2 2 2 2 5 5 5 5 5 5 5 5 5 5 5 5 / / / / / /  "F F FF F FF F F66 66 66r6 6 6  >G G G  F F F    (F (F (F^: : :zF F F
F F F
F F F
F F F
F F F
F F F
F F F
F F F
F F F
F F F
  (	 	 	F F FD D D
D D D
F F F	F 	F 	FF F FF F FF F FF F FF F FF F F'F 'F 'FTF F FF F FbF F F
F F F
F F F
F F F( ( (,i7 i7 i7ZG G G G21 1 1 1&1 1 1 1&	F 	F 	FF F F
F F F
F F F
F F F
F F F
F F F
  F F FF F FF F F@: : :: : :F F F< < <: : :J J J'F 'F 'FRF F F F F F F F F. eEllF F F@	F 	F 	FF F F
	F 	F 	F	F 	F 	FF F FF  F F F  
C C C
F F F
1 1 14A A A? ? ?? ? ?) ) )( ( (( ( (    1 1 1; ; ;> > >1 1 1      r   