
    J/Phk                        d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  e eeej                            d          dd                             Zej        r? ej        d	          ej         ej        d
          ej         ej        d          ej         ej        d          ej         ej        d          ej         ej        d          ej         ej        d          ej         ej        d          ej          ej        d          ej!         ej        d          ej"         ej        d          ej#         ej        d          ej$         ej        d          ej%         ej        d          ej&         ej        e'          ej(        iZ)n= ej        d	          ej*         ej        d
          ej+         ej        d          ej,         ej        d          ej-         ej        d          ej.         ej        d          ej/         ej        d          ej0         ej        d          ej1         ej        d          ej2         ej        d          ej3         ej        d          ej4         ej        d          ej5         ej        d          ej6         ej        d          ej7         ej        e'          ej(        iZ) ej8        dej9                  Z: ej8        dej9                  Z; ej        d          j<        Z=d Z>d Z?d Z@ejA        dejB        dejC        dejD        d iZEd! ZFd" ZGd# ZHd$ ZId% ZJd& ZKd' ZLd( ZMd) ZN G d* d+ e jO        d,d-                    ZPd. ZQd?d0ZRd1 ZSd2 ZTd3 ZUd4 ZVd5 ZWd@d6ZXd@d7ZYd8 ZZd9 Z[d: Z\d; Z]d< Z^d= Z_d> Z`dS )A    N)errorstypesconfig)	signature)npdatetime_helpers)TypingError)is_nonelike.   boolint8int16int32int64uint8uint16uint32uint64float32float64float16	complex64
complex128z[<>=\|]([a-z])(\d+)?$z[<>=\|]([mM])8?(\[([a-z]+)\])?$U1c                 &   t                               | j                  }|st          j        |           |                                }|d         }|dk    rc| j        dvrt          j        d          | j        t          z  }|t          |d                   k    s
J d            t          j        |          S |dk    r>| j        }|t          |d                   k    s
J d            t          j        |          S t          j        |           )	Nr   Uz=|z%Does not support non-native byteorder   zUnicode char size mismatchSzChar size mismatch)
re_typestrmatchstrr   NumbaNotImplementedErrorgroups	byteorderitemsizesizeof_unicode_charintr   UnicodeCharSeqCharSeq)dtypemr#   typecodecounts        V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/np/numpy_support.py_from_str_dtyper/   E   s   ##A 5-e444XXZZFayH3?$&&1 3> ? ? ?"55F1I&&&(D&&&#E***	SF1I&&&(<&&&}U### -e444    c                 H   t                               | j                  }|st          j        |           |                                }|d         }|d         pd}|dk    rt          j        |          S |dk    rt          j        |          S t          j        |           )Nr   r    r+   M)	re_datetimestrr    r!   r   r"   r#   r   NPTimedelta
NPDatetime)r*   r+   r#   r,   units        r.   _from_datetime_dtyper8   ^   s    UY''A 5-e444XXZZFayH!9?D3 &&&	S%%%-e444r0   c                 ,   t          |           t           u r/t          | t          j                  rt          j        |           } n t          | dd          t          |           S 	 t          |          S # t          $ r Y nw xY w	 | j	        }|dv rt          |           S |dv rt          |           S |dv r;| j        4t          | j        d                   }t          j        || j                  S n# t"          $ r Y nw xY wt%          j        |           )z
    Return a Numba Type instance corresponding to the given Numpy *dtype*.
    NumbaNotImplementedError is raised on unsupported Numpy dtypes.
    fieldsNSUmMVr   )type
issubclassnpgenericr*   getattrfrom_struct_dtype
FROM_DTYPEKeyErrorcharr/   r8   subdtype
from_dtyper   NestedArrayshapeAttributeErrorr   r"   )r*   rF   subtypes      r.   rH   rH   m   s0   
 E{{dz%<<	$	'	'	3 '''%     ;z 4<<"5)))4<<'...3;;5>5 !233G$Wek:::     
)%
0
00s$   'A4 4
B BC2 2
C?>C?M8m8r   r   c                    t          j        |           } t          | t           j        t           j        t           j        f          r!t          j        t          |                     S t          | t           j	                  rt          j        d          S t          | t           j
        t           j        f          rTt          t          |                    }| j        rt          j        |d| j        d          S t          j        |          S t          | t           j        t           j        f          r8t          t          |                    }t          j        d|| j        fz            S t          | t           j                  rt'          |           S t          | t           j                  rt+          | j                  S t          | t           j        j                  rt+          | j                  S t          | t           j                  rt+          | j                  S t          | t           j                  r<t+          | j                  t5          | j                  f}t          j        |          S t          | t           j                  rt          j        t:                    S |  d}t=          j        |          )z
    Return a numpy dtype instance corresponding to the given Numba type.
    NotImplementedError is if no correspondence is known.
    ?[]z%s%dz' cannot be represented as a NumPy dtype) r   	unliteral
isinstanceComplexIntegerFloatr@   r*   r!   Booleanr6   r5   _as_dtype_lettersr>   r7   r)   r(   r-   Recordas_struct_dtype
EnumMemberas_dtypenpytypesDTypeNumberClassrI   tuplerJ   PyObjectobjectr   r"   )nbtypeletterspecmsgs       r.   r]   r]      s/   
 _V$$F&5=%-EFF %xF$$$&5=** x}}&5+U->?@@ $"4<<0; 	$8<===8F###&5=%*>?@@ 9"4<<0x&&,!77888&%,'' 'v&&&&%*++ &%%%&%..// &%%%&%+,, &%%%&%+,, &&fl(;(;<x~~&%.))  x
<
<
<C

)#
.
..r0   c                    t          | t          j                  sJ g }g }g }g }| j        D ]\  }}|                     |          s|                    |           |                    t          |                     |                    |                     |                     |                    | j        |         j	                   |||| j
        |d}t          | |           t          j        || j                  S )z8Convert Numba Record type to NumPy structured dtype
    )namesformatsoffsetsr%   titles)align)rT   r   rZ   membersis_titleappendr]   offsetr:   titlesize_check_struct_alignmentr@   r*   aligned)recri   rj   rk   rl   ktr:   s           r.   r[   r[      s     c5<(((((EGGF / /1||A 	/LLOOONN8A;;'''NN3::a==)))MM#*Q--... H F C(((8F#+....r0   c                     | j         rlt          |d         |d                   D ]Q\  }}|                     |          }|j        }|,||k    r&d}t	          |                    |||                    PdS dS )z(Check alignment compatibility with Numpyri   rj   NzbNumPy is using a different alignment ({}) than Numba/LLVM ({}) for {}. This is likely a NumPy bug.)ru   zipalignof	alignment
ValueErrorformat)rv   r:   rw   dt
llvm_align	npy_alignrg   s          r.   rt   rt      s    
{ 
H&*;<< 		H 		HEArQJI%)z*A*A2 
 !Iz2!F!FGGG
H 
H		H 		Hr0   c                    t          | t          j                  r| j        }nU	 t          j        t	          |                     }n2# t
          $ r% t          j        dt	          |           z            w xY wt          |          S )Nz#no corresponding numpy dtype for %r)	rT   r@   rA   r*   r>   	TypeErrorr   r"   rH   )valr*   s     r.   map_arrayscalar_typer      s    #rz"" 	N 		NHT#YY''EE 	N 	N 	N1 3ACG993M N N N	N es   !A /A5c                 6    t          | t          j                  S N)rT   r@   ndarray)r   s    r.   is_arrayr      s    c2:&&&r0   c                 J    | j         d         rd}n| j         d         rd}nd}|S )NC_CONTIGUOUSCF_CONTIGUOUSFA)flags)r   layouts     r.   
map_layoutr      s8    
y  	>	" Mr0   c                     t          d          }d}t          |           D ]3\  }}t          |t          j                  r|j        |k    r	|}|j        }4|J |S )z
    Given the array-compatible input types to an operation (e.g. ufunc),
    select the appropriate input for wrapping the operation output,
    according to each input's __array_priority__.

    An index into *inputs* is returned.
    z-infN)float	enumeraterT   r   ArrayCompatiblearray_priority)inputsmax_prioselected_indexindextys        r.   select_array_wrapperr      sr     V}}HNv&& ) )	rr5011 	)!H,,"N(H%%%r0   c                     |t          |                   }||f}|                     d|i           }|3|j        t          j        j        k    r|S t          j        d|          |j        S )a.  
    Given the array-compatible input types to an operation (e.g. ufunc),
    and the operation's formal output type (a types.Array instance),
    resolve the actual output type using the typing *context*.

    This uses a mechanism compatible with Numpy's __array_priority__ /
    __array_wrap__.
    __array_wrap__Nz__array_wrap__ failed for )r   resolve_function_typer   r   Arrayr   r   return_type)contextr   formal_outputselected_inputargssigs         r.   resolve_output_typer     sz     0889N=(D

'
'(8$
C
CC
{(EK,FFF
 !   44!IJJJ?r0   c                     ddl m} |j        }	 ||                    |           v }nF# t          $ r9 d |j        |j        z   D             }dt          fd|D                       }Y nw xY w|S )aR  Return whether the *loop* for the *ufunc* is supported -in nopython-.

    *loop* should be a UFuncLoopSpec instance, and *ufunc* a numpy ufunc.

    For ufuncs implemented using the ufunc_db, it is supported if the ufunc_db
    contains a lowering definition for 'loop' in the 'ufunc' entry.

    For other ufuncs, it is type based. The loop will be considered valid if it
    only contains the following letter types: '?bBhHiIlLqQfd'. Note this is
    legacy and when implementing new ufuncs the ufunc_db should be preferred,
    as it allows for a more fine-grained incremental support.
    r   )ufunc_dbc                     g | ]	}|j         
S  )rF   .0xs     r.   
<listcomp>z(supported_ufunc_loop.<locals>.<listcomp>E  s    MMMafMMMr0   z?bBhHiIlLqQfdc              3       K   | ]}|v V  	d S r   r   )r   rx   supported_typess     r.   	<genexpr>z'supported_ufunc_loop.<locals>.<genexpr>I  s(      FFaQ/1FFFFFFr0   )numba.npr   	ufunc_sigget_ufunc_inforE   numpy_inputsnumpy_outputsall)ufuncloopr   loop_sigsupported_loop
loop_typesr   s         @r.   supported_ufunc_loopr   +  s     "!!!!!~HG "X%<%<U%C%CC G G G NMd&7$:L&LMMM
) FFFF:FFFFFG s   ( A A+*A+c                   B    e Zd ZdZdZed             Zed             ZdS )UFuncLoopSpecz
    An object describing a ufunc loop's inner types.  Properties:
    - inputs: the inputs' Numba types
    - outputs: the outputs' Numba types
    - ufunc_sig: the string representing the ufunc's type signature, in
      Numpy format (e.g. "ii->i")
    r   c                 $    d | j         D             S )Nc                 ,    g | ]}t          |          S r   r]   r   s     r.   r   z.UFuncLoopSpec.numpy_inputs.<locals>.<listcomp>\  s    111111r0   )r   selfs    r.   r   zUFuncLoopSpec.numpy_inputsZ  s    11T[1111r0   c                 $    d | j         D             S )Nc                 ,    g | ]}t          |          S r   r   r   s     r.   r   z/UFuncLoopSpec.numpy_outputs.<locals>.<listcomp>`  s    222222r0   )outputsr   s    r.   r   zUFuncLoopSpec.numpy_outputs^  s    22T\2222r0   N)__name__
__module____qualname____doc__	__slots__propertyr   r   r   r0   r.   r   r   N  sY          I2 2 X2 3 3 X3 3 3r0   r   _UFuncLoopSpec)r   r   r   c                     t          |           dk    rt          | d         g|R  S t          t          j        |           g|R  S )Nr   r   )lenr   r   Tuple)out_tysin_tyss     r.   _ufunc_loop_sigr   c  sM    
7||q-f----W--77777r0   safec                     t          j        |           } t          j        |          }|r| j        dv r|j        dv rdS t          j        | ||          S )aW  
    A variant of np.can_cast() that can allow casting any integer to
    any real or complex type, in case the operation has mixed-kind
    inputs.

    For example we want `np.power(float32, int32)` to be computed using
    SP arithmetic and return `float32`.
    However, `np.sqrt(int32)` should use DP arithmetic and return `float64`.
    iucfT)r@   r*   kindcan_cast)from_tohas_mixed_inputscastings       r.   ufunc_can_castr   j  sU     HUOOE	"B EJ$..27d??t;ub'***r0   c                    |d| j                  }|| j         d         }t          |          | j         k    sJ 	 d |D             }n# t          j        $ r Y dS w xY w	 d |D             }n# t          j        $ r Y dS w xY wt	          d |D                       ot	          d |D                       }d }d }| j        D ]*}	|	d| j                  }
| j        r|	| j         d         ng }d|
v r0d	|
v r5d
}t          ||
          D ]=\  }}|j        dv s|dv r|j        |k    rd} n"t          |j        ||d          sd} n>|r:t          ||          D ])\  }}|j        dvrt          ||j        |d          sd} n*|rg	  |||
          } |||          }|
d         dk    s|
dk    r ||||
| j
                  }t          |||	          c S # t          j        $ r Y &w xY w,dS )aj  Find the appropriate loop to be used for a ufunc based on the types
    of the operands

    ufunc        - The ufunc we want to check
    arg_types    - The tuple of arguments to the ufunc, including any
                   explicit output(s).
    return value - A UFuncLoopSpec identifying the loop, or None
                   if no matching loop is found.
    Nc                 ,    g | ]}t          |          S r   r   r   s     r.   r   z,ufunc_find_matching_loop.<locals>.<listcomp>  s    ;;;!(1++;;;r0   c                 ,    g | ]}t          |          S r   r   r   s     r.   r   z,ufunc_find_matching_loop.<locals>.<listcomp>  s    ===18A;;===r0   c              3   (   K   | ]}|j         d v V  dS )r   Nr   r   r   s     r.   r   z+ufunc_find_matching_loop.<locals>.<genexpr>  (      55BGtO555555r0   c              3   (   K   | ]}|j         d v V  dS )r   Nr   r   s     r.   r   z+ufunc_find_matching_loop.<locals>.<genexpr>  r   r0   c                     t          |          t          |           k    sJ d t          | |          D             }|d |t          |           d         D             z  }|S )z
        Return a list of Numba types representing *ufunc_letters*,
        except when the letter designates a datetime64 or timedelta64,
        in which case the type is taken from *numba_types*.
        c                 b    g | ],\  }}|d v r|n t          t          j        |                    -S )r<   rH   r@   r*   )r   tpre   s      r.   r   zBufunc_find_matching_loop.<locals>.choose_types.<locals>.<listcomp>  sP     D D DR ~~:bhv6F6F+G+G D D Dr0   c                 P    g | ]#}t          t          j        |                    $S r   r   )r   re   s     r.   r   zBufunc_find_matching_loop.<locals>.choose_types.<locals>.<listcomp>  s@     B B B RXf--.. B B Br0   N)r   rz   )numba_typesufunc_lettersr   s      r.   choose_typesz.ufunc_find_matching_loop.<locals>.choose_types  s     =!!S%5%55555D D#&{M#B#BD D D 	 B B -c+.>.>.?.? @B B B 	Br0   c                     d }fd}|dk    r9t           fd D                       r d         j        } |||          }n|S |S |dk    r' d         j        } d         j        }	 |||	|          S |dk    r' d         j        }	 d         j        } |||	|          S |d         d	k    r d         j        } |||          }|S d
S )a  
        Sets the output unit of a datetime type based on the input units

        Timedelta is a special dtype that requires the time unit to be
        specified (day, month, etc). Not every operation with timedelta inputs
        leads to an output of timedelta output. However, for those that do,
        the unit of output must be inferred based on the units of the inputs.

        At the moment this function takes care of two cases:
        a) where all inputs are timedelta with the same unit (mm), and
        therefore the output has the same unit.
        This case is used for arr.sum, and for arr1+arr2 where all arrays
        are timedeltas.
        If in the future this needs to be extended to a case with mixed units,
        the rules should be implemented in `npdatetime_helpers` and called
        from this function to set the correct output unit.
        b) where left operand is a timedelta, i.e. the "m?" case. This case
        is used for division, eg timedelta / int.

        At the time of writing, Numba does not support addition of timedelta
        and other types, so this function does not consider the case "?m",
        i.e. where timedelta is the right operand to a non-timedelta left
        operand. To extend it in the future, just add another elif clause.
        c                     g }| D ]d}t          |t          j                  r3|j        dk    r(|                    t          j        |                     O|                    |           e|S )Nr2   )rT   r   r5   r7   rp   )r   r7   new_outputsouts       r.   make_specificzLufunc_find_matching_loop.<locals>.set_output_dt_units.<locals>.make_specific  st    K , ,c5#455 ,#(b..&&u'8'>'>????&&s++++r0   c                 P   g }| D ]}t          |t          j                  rn|j        dk    rct	          j        ||          }|$t          d ddz   d| dz   d| dz             |                    t          j        |                     |                    |           |S )	Nr2   zufunc 'z	' is not zsupported between zdatetime64[z] zand timedelta64[rR   )rT   r   r6   r7   r    combine_datetime_timedelta_unitsr   rp   )r   dt_unittd_unitr   r   r7   
ufunc_names         r.   make_datetime_specificzUufunc_find_matching_loop.<locals>.set_output_dt_units.<locals>.make_datetime_specific  s    K , ,c5#344 ,R-N* *D|)*IJ*I*I*I*>+?*C*C*C*C+D +HW*G*G*G+H , , ,
  &&u'7'='=>>>>&&s++++r0   mmc              3   D   K   | ]}|j         d          j         k    V  dS )r   N)r7   )r   inpr   s     r.   r   zHufunc_find_matching_loop.<locals>.set_output_dt_units.<locals>.<genexpr>  s0      @@#38vay~-@@@@@@r0   r   r<   r   Mmr+   N)r   r7   )
r   r   ufunc_inputsr   r   r   r7   r   r   r   s
   `  `      r.   set_output_dt_unitsz5ufunc_find_matching_loop.<locals>.set_output_dt_units  s2   2	 	 		 	 	 	 	" 4@@@@@@@@@  ay~+mGT::T!! QinGQinG))'7GDDDT!! QinGQinG))'7GDDD!_##!9>D'-66K	 $#r0   eOTr<   Fr   	same_kindr   r+   r   )ninr   r   r"   anyr   noutrz   rF   r   r   r   )r   	arg_typesinput_typesoutput_typesnp_input_typesnp_output_typesr   r   r  	candidater  ufunc_outputsfoundouterinnerr   r   s                    r.   ufunc_find_matching_loopr  |  s    JUYJ'KUYZZ(L	))));;{;;;*   tt=====*   tt
 	55n55555 	655n55555   O O On [ 3A 3A	 %),38:E	5:+,,//2,,== 	 	LE5zT!!Ud]] :&&!EE ' $EJ$4f> >   	 #O] C C  uJd**"5%*#3[B B + "EE 	AA%k<@@&,|]CC  ?c))\T-A-A11&'2>P PG %VWi@@@@@ 2    	A( 4s5   A AAA+ +A>=A>=GG'&G'c                     | j         S r   )isalignedstruct)structs    r.   _is_aligned_structr  7  s    !!r0   c                    | j         rd}t          j        |          g }| j                                        D ][\  }}|dd         \  }}t          |          dk    r|d         nd}t          |          }|||d}	|                    ||	f           \| j        }
t          |           }t          j        ||
|          S )z:Convert a NumPy structured dtype to Numba Record type
    z-dtypes that contain object are not supported.Nr      )r>   rq   rr   )	hasobjectr   r"   r:   itemsr   rH   rp   r%   r  r   rZ   )r*   rg   r:   nameinfo	elemdtyperq   rr   r   infosrs   ru   s               r.   rC   rC   ;  s      3=-c222Fl((** % %
d"2A2hFt99>>Qt	""
 

 	tUm$$$$
 >D ''G<g...r0   c                     t          | t          j                  r| j        } t          j        |z  }|                    |           S )z;
    Get a ctypes array of *nbytes* starting at *ptr*.
    )rT   ctypesc_void_pvaluec_bytefrom_address)ptrnbytesarrtys      r.   _get_bytes_bufferr)  Y  s?     #v'' iMF"Ec"""r0   c                 H    t          j        t          | |          |          S r   )r@   
frombufferr)  )r&  r'  r*   s      r.   _get_array_from_ptrr,  c  s    =*377???r0   c                    ddl m} 	 | j        } n# t          $ r Y nw xY w|t	          j        |          }t          | t          j                  r|t          d          | }nt          | t          j
                  r || j                  }t          |t          j                  sJ t          |j                  }|||k    rt          d|d|           |}t          j        | t          j                  }nt          d|           |j        t	          j        |t          j                  z  }t'          |||                              |          S )	z
    Return a Numpy array view over the data pointed to by *ptr* with the
    given *shape*, in C order.  If *dtype* is given, it is used as the
    array's dtype, otherwise the array's dtype is inferred from *ptr*'s type.
    r   )from_ctypesNz*explicit dtype required for void* argumentzmismatching dtype 'z' for pointer zexpected a ctypes pointer, got )r*   )numba.core.typing.ctypes_utilsr.  _as_parameter_rK   r@   r*   rT   r!  r"  r   _Pointer	__class__r   CPointerr]   castr%   prodintpr,  reshape)r&  rJ   r*   r.  pptrty	ptr_dtyper'  s           r.   carrayr;  g  sw    ;:::::     #v'' F=HIII	C	)	) 
FCM**%00000U[))	)!3!3)$uucc+ , , ,KV_--issDEEE^bge27;;;;Fq&%0088???s    
c                 n    t          |t                    s|ddd         }t          | ||          j        S )z
    Return a Numpy array view over the data pointed to by *ptr* with the
    given *shape*, in Fortran order.  If *dtype* is given, it is used as the
    array's dtype, otherwise the array's dtype is inferred from *ptr*'s type.
    N)rT   r'   r;  T)r&  rJ   r*   s      r.   farrayr?    s:     eS!! ddd#ue$$&&r0   c                 h   t          |           }|dz
  }|dk    r#| |         dk    r|dz  }|dk    r| |         dk    |dk     rdS |||         k    rdS d}||k     r#| |         dk    r|dz  }||k     r| |         dk    |}||k    r+||         | |         z  ||dz
           k    rdS |dz  }||k    +dS )zvIs the given shape, strides, and itemsize of C layout?

    Note: The code is usable as a numba-compiled function
    r   r=  r   TFr   )dimsstridesr%   ndinneraxouteraxaxs          r.   is_contiguousrH    s   
 
TB1fG
B,,4=A--1 B,,4=A-- {{t 77###u G
G

W 2 21 G

W 2 2 
B
w,,2;b!WR!V_445
a w,, 4r0   c                 h   t          |           }d}||k     r#| |         dk    r|dz  }||k     r| |         dk    ||k    rdS |||         k    rdS |dz
  }||k    r#| |         dk    r|dz  }||k    r| |         dk    |}||k     r+||         | |         z  ||dz            k    rdS |dz  }||k     +dS )zvIs the given shape, strides, and itemsize of F layout?

    Note: The code is usable as a numba-compiled function
    r   r   TFrA  )rB  rC  r%   rD  firstaxlastaxrG  s          r.   
is_fortranrL    s   
 
TBG
B,,4=A--1 B,,4=A-- "}}t 77###u !VF
7

tF|q00! 7

tF|q00 
B
v++2;b!WR!V_445
a v++ 4r0   c                     t           j        t           j        t           j        t           j        t           j        t           j        t           j        j        f}t          | |          S )zs Returns True if the type of 'arr' is supported by the Numba `np.asarray`
    implementation, False otherwise.
    )
r   r   Sequencer   StringLiteralNumberrX   
containersListTyperT   )arroks     r.   type_can_asarrayrU    sA    
 +u~u{E4G
,u'7'@
BB c2r0   c                     t           j        t           j        t           j        t           j        t           j        t           j        f}t          | |          S )z Returns True if the type of 'typ' is a scalar type, according to
    NumPy rules. False otherwise.
    https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types
    )r   rX   rP  UnicodeTyperO  r5   r6   rT   )typrT  s     r.   type_is_scalarrY    s9     -u'8%:M

U-
/Bc2r0   c                     t          | t          t          j        f          s"t	          d                    |                    dS )z2Raises TypingError if the value is not an integer.z{} must be an integerN)rT   r'   r   rV   r   r~   )vr  s     r.   check_is_integerr\    sE    a#u}-.. @188>>???@ @r0   c                 `    | |k     p(t          j        |          ot          j        |            S r   )r@   isnanabs     r.   	lt_floatsrb    s*    
 q55RXa[[4!_5r0   c                 R   t          j        | j                  rat          j        |j                  rFt          j        | j                  rdS t          j        |j                  rdS | j        |j        k     S dS t          j        |j                  rdS t          j        | j                  r+t          j        |j                  r| j        |j        k     S dS t          j        |j                  rdS | j        |j        k     rdS | j        |j        k    r| j        |j        k     S dS )NFT)r@   r^  realimagr_  s     r.   
lt_complexrf    s   	x !8AF 		x +u8AF## +46AF?*5 8AF 	!4x !8AF## !6AF?* 58AF## !4v#t16)) v. 5r0   )r   r   )acollectionsr!  renumpyr@   
numba.corer   r   r   numba.core.typing.templatesr   r   r   numba.core.errorsr   numba.core.cgutilsr	   ra   mapr'   __version__splitnumpy_versionUSE_LEGACY_TYPE_SYSTEMr*   booleanr   r   r   r   r   r   r   r   r   r   r   r   r   rc   pyobjectrD   np_bool_np_int8np_int16np_int32np_int64np_uint8	np_uint16	np_uint32	np_uint64
np_float32
np_float64
np_float16np_complex64np_complex128compileIr   r4   r%   r&   r/   r8   rH   r6   r5   r)   r(   rY   r]   r[   rt   r   r   r   r   r   r   
namedtupler   r   r   r  r  rC   r)  r,  r;  r?  rH  rL  rU  rY  r\  rb  rf  r   r0   r.   <module>r     s        				     , , , , , , , , , , 1 1 1 1 1 1 ' ' ' ' ' ' ) ) ) ) ) ) + * * * * * cc#r~33C88!<==>> 
  )%-%*5;5;5;5;ELELELU]U]U]u 0%.%JJ, 	%.%-5>5>5>5>EOEOEOU-U-U-u1 3%.%J, RZ0"$77
>EEbhtnn- 5 5 525 5 51 1 1@ 
d	t	M3	#	 "/ "/ "/J/ / /6H H H  ' ' '    *  .     F3 3 3 3 3*K*+;+MO O 3 3 3*8 8 8+ + + +$x x xv" " "/ / /<# # #@ @ @#@ #@ #@ #@L' ' ' '  B  B    @ @ @6 6 6! ! ! ! !r0   