
    J/Phn"                     H   d Z ddlZddlmZ ddlmZmZmZmZ ddl	m
Z
mZmZ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ej        r<ej        ej        ej        fej        ej        ej        fej         ej!        ej"        fiZ#nej$        ej%        ej&        fiZ#e#'                                D ]\  Z(Z) ee(ge)R    eej*        ej*                  d             Z+d Z,ed             Z- eej.                  d             Z/ e0d          D ]\  Z1Z2 e,e1e2           dS )z=
Implementation of the range object for fixed-size integers.
    N)prange)typescgutilserrorsconfig)lower_builtin
lower_castiterator_implimpl_ret_untracked)	signature)	intrinsicoverloadoverload_attributeregister_jitable)internal_prangec                 *    t          j        |           S )zn
    Return the Structure representation of the given *typ* (an
    instance of types.RangeIteratorType).
    )r   create_struct_proxy)typs    V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cpython/rangeobj.pymake_range_iteratorr      s    
 &s+++    c                 <   	 t          j                  	t          t                     t          t                     t          t
                     	 fd                                    }t          t                      t          t                      t          t
                      	 fd                                    }t          t                       t          t                       t          t
                       	fd                                    }t          t                    	 fd            }t          d          	fd            }t                     G  fddt                                          d S )	Nc                     |\  } | |          }|                      d          |_        ||_        |                      d          |_        t	          | ||                                          S )z2
        range(stop: int) -> range object
        r      )get_constantstartstopstepr   	_getvalue)	contextbuildersigargsr   state
RangeStateint_typerange_state_types	         r   range1_implz$make_range_impl.<locals>.range1_impl   sy     
7G,,**8Q77
))(A66
!'")"2"'//"3"35 5 	5r   c                     |\  }} | |          }||_         ||_        |                     d          |_        t	          | |	|                                          S )z>
        range(start: int, stop: int) -> range object
        r   )r   r   r   r   r   r   )
r    r!   r"   r#   r   r   r$   r%   r&   r'   s
          r   range2_implz$make_range_impl.<locals>.range2_impl+   sk     t
7G,,
))(A66
!'")"2"'//"3"35 5 	5r   c                     |\  }}} | |          }||_         ||_        ||_        t          | |	|                                          S )zI
        range(start: int, stop: int, step: int) -> range object
        )r   r   r   r   r   )
r    r!   r"   r#   r   r   r   r$   r%   r'   s
           r   range3_implz$make_range_impl.<locals>.range3_impl<   s^     #d
7G,,

!'")"2"'//"3"35 5 	5r   c                     |\  } | ||          }                     | ||          }t          | |	|                    |j                            S )z
        len(range)
        )from_range_stater   loadcount)
r    r!   r"   r#   valuer$   res	RangeIterr%   r&   s
          r   	range_lenz"make_range_impl.<locals>.range_lenM   sX    
 
7GU33(('5AA!'7Hgll39>U>UVVVr   getiterc                     |\  } | ||          }                     | ||                                          }t          | |	|          S )z 
        range.__iter__
        )r.   r   r   )
r    r!   r"   r#   r1   r$   r2   r3   r%   range_iter_types
          r   getiter_range32_implz-make_range_impl.<locals>.getiter_range32_implW   sV    
 
7GU33(('5AAKKMM!'7OSIIIr   c                   4    e Zd Ze fd            Z fdZdS )"make_range_impl.<locals>.RangeIterc           
      L    | ||          }|j         }|j        }|j        }t          j        ||j                  }|                    ||           t          j        ||j                  }	||_        ||_        ||_        |	|_        |	                    ||          }
|
                    d          }|
                    d          }|                    d|
|          }|                    d||          }|                    ||          }|                    d||          }t          j        ||          5  |j                            |t"          d           ddd           n# 1 swxY w Y   |                    |          5 \  }}|5  |                    ||j                   ddd           n# 1 swxY w Y   |5  |                    |
|          }|                    |||                    |                    }|                    d||          }|                    |                    |
|          |                    |||                    }|                    ||j                   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |S )z[
            Create a RangeIter initialized from the given RangeState *state*.
            r   r   >z==)zrange() arg 3 must not be zeroN)r   r   r   r   alloca_oncetypestoreiterr0   subr   icmp_signedxoricmp_unsignedif_unlikely	call_convreturn_user_exc
ValueErrorif_elsesremselectnegaddsdiv)clsr    r!   r$   selfr   r   r   startptrcountptrdiffzeroonepos_diffpos_stepsign_differs	zero_stepthenorelseremunevennewcountr&   s                         r   r.   z3make_range_impl.<locals>.RangeIter.from_range_stated   s   
 3w((DKE:D:D*7EJ??HMM%****7EJ??H DIDIDI!DJ;;tU++D''!44D&&x33C**3d;;H**3d;;H";;x::L--dD$??I$Wi88 W W!11':2UW W WW W W W W W W W W W W W W W W
 .. 
8.4 4 4MM$
3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4  8 8!,,tT22C!..3C8H8HIIC$00c4@@F&{{7<<d+C+C+2>>&#t+L+L N  NHMM(DJ7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 Ksm   ;"E))E-0E-	JF7+J7F;	;J>F;	?JB2J6JJ	J	J	
JJ Jc                 l   |                     
d          }| j        }|                    |          }|                    d||          }|                    |           |                    |          5  |                    | j                  }|                    |           |                     
d          }	|                    |	                    ||	dg          |           |                    |
                    || j                  | j                   d d d            d S # 1 swxY w Y   d S )Nr   r<   r   nsw)flags)r   r0   r/   rB   	set_validif_thenr@   yield_r?   rA   rM   r   )rP   r    r!   resultrT   rR   r0   is_validr1   rU   r&   s             r   iternextz+make_range_impl.<locals>.RangeIter.iternext   sm   ''!44DzHLL**E**3t<<HX&&&** H HTY//e$$$**8Q77gkk%UGkDDhOOOgkk%;;TYGGGH H H H H H H H H H H H H H H H H Hs   5B'D))D-0D-N)__name__
__module____qualname__classmethodr.   rg   )r&   s   r   r3   r:   a   s[         
,	 ,	 ,	 ,	 
,	\	H 	H 	H 	H 	H 	H 	Hr   r3   )	r   r   r   ranger   r   lenr
   r   )
r&   r'   r7   r(   r*   r,   r4   r8   r3   r%   s
   ```     @@r   make_range_implrn      s?   ,-=>>J5(##68$$?H--5 5 5 5 5 5 .- %$ $#5 5(H--68X..?Hh775 5 5 5 5 5 87 /. .-5 5(Hh7768Xx88?HhAA5 5 5 5 5 BA 98 875 3())W W W W W W *)W 9.//J J J J J J 0/J #_55>H >H >H >H >H >H >H'88 >H >H 65>H >H >Hr   c                      t          j        |d          } fd|D             }t          j        |          S )N   c                 T    g | ]$}                     |j        j                  %S  )castdtype).0vr!   r    fromtytotys     r   
<listcomp>z"range_to_range.<locals>.<listcomp>   s?           \\'1flDJ??      r   )r   unpack_tuplemake_anonymous_struct)r    r!   rw   rx   valolditemsitemss   ````   r   range_to_ranger      sd    #GS!44H                  E(%888r   c                 x     t            fd            t          t          j        |          fd            }d S )Nc                 t    t          |t          j                  rfd}t          |j        |          |fS d S )Nc                 r    |\  }t          j        ||d          }t          | ||j        |                   S )Nrp   )r   rz   r   return_type)r    r!   r"   r#   r|   r~   indexs         r   codegenz?make_range_attr.<locals>.rangetype_attr_getter.<locals>.codegen   s?    ,Wc1==)'7CO*/,8 8 8r   )
isinstancer   	RangeTyper   rt   )	typingctxar   r   s      r   rangetype_attr_getterz.make_range_attr.<locals>.rangetype_attr_getter   sS    a)) 	28 8 8 8 8
 QWa(('11	2 	2r   c                     fd}|S )Nc                      |           S )Nrr   )rnger   s    r   getz0make_range_attr.<locals>.range_attr.<locals>.get   s    ((...r   rr   )r   r   r   s     r   
range_attrz#make_range_attr.<locals>.range_attr   s!    	/ 	/ 	/ 	/ 	/
r   )r   r   r   r   )r   	attributer   r   s   `  @r   make_range_attrr      sc    2 2 2 2 Y2 33    43  r   c                     | j         dk    r|| j        k     s|| j        k    rdS | j         dk     r|| j        k    s|| j        k    rdS || j        z
  | j         z  dk    S )Nr   F)r   r   r   robjr|   s     r   impl_contains_helperr      sk    y1}}#
**cTY.>.>u	QC49,,dj0@0@u4:*q00r   c                 R   d }t          | t          j                  sd S t          |t          j        t          j        f          rt
          S t          |t          j                  rd }|S t          |t          j                  rd }|S t          |t          j                  s|S d S )Nc                     dS )NFrr   r   s     r   
impl_falsez!impl_contains.<locals>.impl_false   s    ur   c                 R    |dz  dk    rdS t          | t          |                    S )Nr   r   F)r   intr   s     r   implzimpl_contains.<locals>.impl   s*    Qw!||u+D#c((;;;r   c                     |j         dk    rdS |j        dz  dk    rdS t          | t          |j                            S )Nr   Fr   )imagrealr   r   r   s     r   r   zimpl_contains.<locals>.impl   s@    x1}}uA""u+D#ch--@@@r   )	r   r   r   IntegerBooleanr   FloatComplexNumber)r   r|   r   r   s       r   impl_containsr      s       dEO,, 	C%-7	8	8 ##	C	%	% 	< 	< 	<
 	C	'	' 	A 	A 	A U\**  r   )r   r   r   )r   r   )3__doc__operatornumbar   
numba.corer   r   r   r   numba.core.imputilsr   r	   r
   r   numba.core.typingr   numba.core.extendingr   r   r   r   numba.parfors.parforr   r   rn   USE_LEGACY_TYPE_SYSTEMint32range_state32_typerange_iter32_typeint64range_state64_typerange_iter64_typeuint64unsigned_range_state64_typeunsigned_range_iter64_typerange_impl_mappy_intr'   r7   r~   r&   state_typesr   r   r   r   containsr   	enumerateixattrrr   r   r   <module>r      sj           5 5 5 5 5 5 5 5 5 5 5 5G G G G G G G G G G G G ' ' ' ' ' ' Z Z Z Z Z Z Z Z Z Z Z Z 0 0 0 0 0 0, , ,IH IH IHX 
  	u/1HIu/1HI95;[\NN 	u-u/DEN ,1133 , ,HkOH+{+++++EOU_--9 9 .-9  $ 1 1 1 
(
  @ 	344 . .HBO"-----. .r   