
    X-Ph/#              	      n   d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZ dD ]DZ eeed            eeeged	e
            eeegede
            eeeegede
           EdD ]&Z eeegeded          Z eeegeded           'eefdgdZ edde          Z  ed d!e          Z! ed"d#e          Z" ed$d%e          Z# ed&d'e          Z$ ed(d)e          Z%eefdhd-Z& e&d.d/            e&d0d1            e&d2d3            e&d4d5            e&d6d7            e&d8d9            e&d:d;e<            e&d=d>e<            e&d?d@e<            e&dAdBe<            e&dCdDeeE            e&dFd/            e&dGd1            e&dHd3            e&dId5            e&dJd7            e&dKd9            e&dLd;e<            e&dMd>e<            e&dNd@e<            e&dOdBe<           didPZ' e'd0dQ          Z( e'dRdS          Z) eeegedTedUV          Z* eeegedWedUV          Z+ eeegedXeY          Z, eeegedZeY          Z- eeeged[eY          Z. eeeged\eY          Z/ eeeged]eY          Z0 eeeged^eY          Z1 eeged_eY          Z2 eeged`eY          Z3 eegedaeY          Z4 eegedbeY          Z5 eg edceY          Z6 eg eddeY          Z7 eg edeeY          Z8dfS )ja<  Arbitrary-precision integer primitive ops.

These mostly operate on (usually) unboxed integers that use a tagged pointer
representation (CPyTagged) and correspond to the Python 'int' type.

See also the documentation for mypyc.rtypes.int_rprimitive.

Use mypyc.ir.ops.IntOp for operations on fixed-width/C integers.
    )annotations)
ERR_ALWAYS	ERR_MAGICERR_MAGIC_OVERLAPPING	ERR_NEVERPrimitiveDescription)RTypebit_rprimitivebool_rprimitivec_pyssize_t_rprimitivefloat_rprimitiveint16_rprimitiveint32_rprimitiveint64_rprimitiveint_rprimitiveobject_rprimitivestr_rprimitive
void_rtype)	binary_op	custom_opfunction_opload_address_opunary_op)zbuiltins.intzmypy_extensions.i64zmypy_extensions.i32zmypy_extensions.i16zmypy_extensions.u8PyLong_Type)nametypesrcCPyTagged_FromFloatr   	arg_typesreturn_typec_function_name
error_kindCPyLong_FromStrCPyLong_FromStrWithBase)zbuiltins.strzbuiltins.reprCPyTagged_Str   )r   r    r!   r"   r#   priorityCPyBool_Str   opstrprimitive_namer!   r	   r#   intreturnr   c                B    t          | t          t          g|||          S )N)r   r    r!   r-   r#   r   r   )r+   r-   r!   r#   s       X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/primitives/int_ops.pyint_binary_primitiver3   e   s/     !>2%       z==int_eq)r+   r-   r!   z!=int_ne<int_ltz<=int_le>int_gtz>=int_ger   r"   Nonec                F    t          | t          t          g|||           d S )Nr   r1   )r   r"   r!   r#   s       r2   int_binary_opr?   y   s9     !>2'     r4   +CPyTagged_Add-CPyTagged_Subtract*CPyTagged_Multiply&CPyTagged_And|CPyTagged_Or^CPyTagged_Xorz//CPyTagged_FloorDivide)r#   %CPyTagged_Remainderz>>CPyTagged_Rshiftz<<CPyTagged_Lshift/CPyTagged_TrueDivide)r!   r#   z+=z-=z*=z&=z|=z^=z//=z%=z>>=z<<=c                H    t          | t          t          |t                    S )N)r   arg_typer!   r"   r#   )r   r   r   )r   r"   s     r2   int_unary_oprU      s(    "'   r4   CPyTagged_Negate~CPyTagged_InvertCPyTagged_IsEq_T)r    r!   r"   r#   is_pureCPyTagged_IsLt_CPyInt64_Divide)r    r!   r"   r#   CPyInt64_RemainderCPyInt32_DivideCPyInt32_RemainderCPyInt16_DivideCPyInt16_RemainderCPyLong_AsInt64CPyTagged_FromSsize_tCPyTagged_FromInt64CPyLong_AsInt32CPyInt32_OverflowCPyInt16_OverflowCPyUInt8_OverflowN)
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   )9__doc__
__future__r   mypyc.ir.opsr   r   r   r   r   mypyc.ir.rtypesr	   r
   r   r   r   r   r   r   r   r   r   r   mypyc.primitives.registryr   r   r   r   r   int_namer   int_to_str_opr3   r5   r6   r8   r9   r;   r<   r?   rU   
int_neg_opint_invert_op
int_equal_int_less_than_int64_divide_opint64_mod_opint32_divide_opint32_mod_opint16_divide_opint16_mod_opint_to_int64_opssize_t_to_int_opint64_to_int_opint_to_int32_opint32_overflowint16_overflowuint8_overflow r4   r2   <module>r      s}    # " " " " "                                         c b b b b b b b b b b b b b ( (H O(9}MMMM K#$"-    K!"%)    K!>2%1     .  DK!""'  M K"#"%     8FYb	 	 	 	 	 
	hN	[	[	[		hN	[	[	[		X>	Z	Z	Z		hN	[	[	[		X>	Z	Z	Z		hN	[	[	[ (	    $ c? # # # c' ( ( ( c' ( ( ( c? # # # c> " " " c? # # # d+	 B B B B c(Y ? ? ? ? d&9 = = = = d&9 = = = = 	-=J_    dO $ $ $ d( ) ) ) d( ) ) ) dO $ $ $ dN # # # dO $ $ $ e, C C C C d)i @ @ @ @ e'I > > > > e'I > > > >    \#122
S"455 Y~.%  
 ~.%   )!12 %$	   y!12 ($	   )!12 %$	   y!12 ($	   )!12 %$	   y!12 ($	   ) ! %$	   I%&+	    ) )	   ) ! %$	   '	   '	   '	  r4   