
    xKg                        d Z ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZ ddlmZ ddlmZ ddlmZmZmZ d	Zd
ZdZddZej6                  fdZd Zd Zd Zd Z d Z!d Z"d Z#e"Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z* e+e*eejX                  ejZ                         d Z.d Z/d Z0 ee0d !      d"        Z1 e+e/d#e0ejd                         d$ Z3d% Z4d& Z5d' Z6d( Z7d) Z8d* Z9d+ Z:d, Z;d- Z<d. Z=d/ Z>d0 Z?d1 Z@d2 ZAd3 ZBd4 ZCd5 ZDd6 ZEd7 ZFd8 ZGd9 ZHd: ZId; ZJd< ZKd= ZLd> ZMd? ZNd@ ZOdA ZPdB ZQdC ZRdD ZSdE ZTdF ZUdG ZVdH ZWdI ZXdJ ZYdK ZZdL Z[dM Z\dN Z]dO Z^dP Z_dQ Z`dR ZadS ZbdT ZcdU ZddV ZedW ZfdX ZgdY ZhdZ Zid[ Zjd\ Zkd] Zld^ Zmd_ Znd` Zoda Zpdb Zqdc Zrdd Zsde Ztdf Zudg Zvdh Zwdi Zxdj Zydk Zzdl Z{dm Z|dn Z}do Z~dp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)zCodegen for functions used as kernels in NumPy functions

Typically, the kernels of several ufuncs that can't map directly to
Python builtins
    Noverload)impl_ret_untracked)typingtypeserrorsloweringcgutils)register_jitable)
npdatetime)	cmathimplmathimplnumbersg+eG?g&{?g9B.?c                 p   t        |      |k(  sJ t        | j                        |k(  sJ | j                  d   |}t        fd| j                  D              r| j                  |k(  sKddl}|j                         j                  j                  j                  }dj                  ||       }J |       y)zchecks that the following are true:
    - args and sig.args have arg_count elements
    - all input types are homogeneous
    - return type is 'return_type' if provided, otherwise it must be
      homogeneous with the input types.
    r   Nc              3   (   K   | ]	  }|k(    y wN ).0argtys     U/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/np/npyfuncs.py	<genexpr>z/_check_arity_and_homogeneity.<locals>.<genexpr>)   s     ,8CR8s   z"{0} called with invalid types: {1})
lenargsallreturn_typeinspectcurrentframef_backf_codeco_nameformat)sigr   arityr   r   fnamemsgr   s          @r   _check_arity_and_homogeneityr'      s     t9sxx=E!!!	!B,388,,K1O$$&--44<<299%Ecu	 2P    c           
         |j                   }| j                  |      }t        j                  j	                  ||gt        |j                        z        }t        j                  |||      }	t        ||j                        D 
cg c]  \  }
}| j                  ||
||       }}
}|j                  |	|      }| j                  ||t        j                  |j                        S c c}}
w )Nname)moduleget_argument_typellvmliteirFunctionTyper   r   r
   insert_pure_functionzipcastcallr   float64r   )contextbuilderr#   r   	func_namer   modltyfntyfnr   argty	cast_argsresults                 r   _call_func_by_name_with_castr@   0   s    
 ..C

#
#B
'C;;##C#s388})<=D		%	%c4i	@B#&tSXX#69#6ZS% gsE26#6  9 \\"i(F<<HH	9s   C%c                 R   |j                   d   }	 ||   }|j                  }
|t        j                  v r	| j                  ||      }|D cg c]  }t        j                  ||       }}|j                         g|z   }|gt        |j                         z   }|D cg c]!  }| j                  |      j                         # }}t         j"                  j%                  t         j"                  j'                         |      }t        j(                  |
||      }|j+                  ||       |j-                  |d         }|S |j                   D cg c]  }| j/                  |       }}| j/                  |j0                        }t         j"                  j%                  ||      }t        j2                  |
||      }| j5                  |||j                   |      }|S # t        $ r5}dj                  |t        |            }	t	        j
                  |	      d }~ww xY wc c}w c c}w c c}w )Nr   z!No {0} function for real type {1}r*   )r   KeyErrorr"   strr   LoweringErrorr,   r   complex_domainmake_complexr
   alloca_once_value_getpointerlistget_value_type
as_pointerr.   r/   r0   VoidTypeget_or_insert_functionr4   loadr-   r   r1   call_external_function)r6   r7   r#   r   table	user_namer   r8   er&   r9   outr   ptrargs	call_argscall_argtyscall_argltysr;   r<   retvalatyargtypesrestypes                          r   _dispatch_func_by_name_typer\   @   s    
!B("I	
 ..C	U!!! ""7B/"$"s ,,Wc:" 	 $__&''1	
 dT#((^+"-/"-B  ..r2==?"- 	 /{{''(<(<(>M++CyAR#il+ M ?BhhGhsG--c2hG++COO<{{'':))#t)D//SXXtLME  (188CFK""3''($/ Hs)   G H&HH$	H"0HHc                 P   t        ||d       |\  }}|j                  d   }| j                  |d      }| j                  |d      }| j                  |d|j                  j                  dz
  z        }	|j                  d||      }
|j                  d||      }|j                  d|	|      }|j                  ||      }|j                  |
|      }|j                  |d      5 \  }}|5  |j                  }d d d        |5  |j                  }|j                  ||      }|j                  ||      }|j                  d||      }|j                  d||      }|j                  ||      }|j                  d	||      }|j                  ||      }|j                  |||      }|j                  ||      }d d d        d d d        |j!                  |j                        }|j#                  |       |j#                         |S # 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   cxY w)
N   r      ==Flikely>!=)r'   r   get_constanttypewidthicmp_unsignedand_or_if_elsebasic_blocksdivsremicmp_signedxorselectaddphiadd_incoming)r6   r7   r#   r   numdenr   ZERO	MINUS_ONEMIN_INTden_is_zeroden_is_minus_onenum_is_min_intcould_cause_sigfpe
force_zerothen	otherwisebb_thenbb_otherwisedivr9   num_gt_zeroden_gt_zeronot_same_signmod_not_zeroneeds_fixing	fix_valueresult_otherwiser?   s                                r   np_int_sdiv_implr   ~   s    dA.HC	!BA&D$$R,I""2qSXX^^A-='>?G''dC8K,,T9cB**4#>N &6G[*<=J	E	26GtY))G "..L,,sC(C,,sC(C!--c3=K!--c3=K#KK[AM"00sDAL"<<|DL|YEI&{{3	:  
3 [[#F
g&
(,7M% TY 
3	2s=   "H(H5
H?B3H2HH	HH	HH%c                    t        ||d       |\  }}|j                  d   }| j                  |d      }|j                  d||      }|j                  }	t        j                  ||      5  |j                  }
|j                  ||      }|j                  d||      }|j                  d||      }|j                  ||      }|j                  d||      }|j                  ||      }|j                  |||      }|j                  ||      }d d d        |j                  |j                        }|j                  ||	       |j                  
       |S # 1 sw Y   JxY w)Nr^   r   re   rd   )r'   r   rf   ri   rm   r
   if_unlikelyro   rp   rq   rj   rr   rs   rt   rg   ru   )r6   r7   r#   r   rv   rw   r   rx   den_not_zerobb_no_ifbb_ifr9   r   r   r   r   r   r   	final_modr?   s                       r   np_int_srem_implr      sE    dA.HC	!BA&D((tS9L""H			Wl	3##ll3s#))#sD9))#sD9K=,,T3=||M<@NN<d;	KK	3/	 
4 [[#F
h'
	5)M 
4	3s   )B!EEc                     t        | | |j                  d   |j                   |      }t        | | |j                  d   |j                   |      }| j	                  ||j                  ||g      S Nr   r`   )r   r   r   r   
make_tupler6   r7   r#   r   r   rems         r   np_int_sdivrem_implr      i    
7G-?S__Q-?-JD
QC
7G-?S__Q-?-JD
QCgsc
CCr(   c                    t        ||d       |\  }}|j                  d   }| j                  |d      }|j                  d||      }|j	                  |d      5 \  }	}
|	5  |j
                  }d d d        |
5  |j                  ||      }|j
                  }d d d        d d d        |j                  |j                        }|j                  |       |j                         |S # 1 sw Y   {xY w# 1 sw Y   ^xY w# 1 sw Y   bxY w)Nr^   r   ra   Frb   )
r'   r   rf   ri   rl   rm   udivrt   rg   ru   )r6   r7   r#   r   rv   rw   r   rx   div_by_zeror   r   r   r   r   r?   s                  r   np_int_udiv_implr      s     dA.HC	!BA&D''dC8K	U	37Hi))G  ,,sC(C"..L 	 
4 [[#F
g&
\*M T Y	 
4	3s<   C? C'-
C?7C3C?'C0	,C?3C<	8C??Dc                    t        ||d       |\  }}|j                  d   }| j                  |d      }|j                  d||      }|j                  }	t        j                  ||      5  |j                  }
|j                  ||      }d d d        |j                  |j                        }|j                  ||	       |j                  
       |S # 1 sw Y   JxY w)Nr^   r   re   )r'   r   rf   ri   rm   r
   r   uremrt   rg   ru   )r6   r7   r#   r   rv   rw   r   rx   r   r   r   r9   r?   s                r   np_int_urem_implr      s     dA.HC	!BA&D((tS9L""H			Wl	3##ll3s# 
4 [[#F
h'
U#M 
4	3s   )CCc                     t        | | |j                  d   |j                   |      }t        | | |j                  d   |j                   |      }| j	                  ||j                  ||g      S r   )r   r   r   r   r   r   s         r   np_int_udivrem_implr      r   r(   c                 :    t        ||d        |j                  | S Nr^   )r'   fdivr6   r7   r#   r   s       r   np_real_div_implr      s!     !dA.7<<r(   c                    t        ||d       |\  }}|j                  d   }| j                  |d      }|j                  ||      }|j	                  d||      }	|j	                  d||      }
|j	                  d||      }|j                  |	|j                  |
|            }|j                  |||      }|j                  ||      S )Nr^   r           re   <)	r'   r   rf   fremfcmp_orderedrj   rq   rr   fadd)r6   r7   r#   r   in1in2r   rx   resres_ne_zeroden_lt_zerores_lt_zeror   r   s                 r   np_real_mod_implr     s     !dA.HC	!BC(D
,,sC
 C&&tS$7K&&sC6K&&sC6K<< 'K EGL|S$7I<<Y''r(   c                 :    t        ||d        |j                  | S r   )r'   r   r   s       r   np_real_fmod_implr     s     dA.7<<r(   c                     t         j                  j                  |j                  d      }|j	                  ||      }|j                  d||      }|j                  |||      S )Nr   r   )r.   r/   Constantrg   fsubr   rr   )r6   r7   r   rx   arg_negatedarg_is_negatives         r   _fabsr     sS    ;;#.D,,tS)K**3T:O>>/;<<r(   c           	         |D cg c]#  }| j                  ||j                  d   |      % c}\  }}|j                  }|j                  }|j                  }	|j                  }
|j                  }t        |||	|
fD cg c]  }|j                  |k(   c}      sJ d       | j                  ||j                        }t        j                  j                  |d      }t        j                  j                  |d      }t        | ||	      }t        | ||
      }|j                  d||      }|j                  |      5 \  }}|5  |j                  d||      }|j                  d||      }|j                  ||      }|j                  |      5 \  }}|5  |j                  ||      |_        |j                  ||      |_        d d d        |5  |j                  |
|	      }|j!                  |
|      }|j#                  |	|      }|j                  ||      }|j!                  ||      }|j!                  ||      }|j#                  ||      } |j%                  ||      }!|j!                  | |      |_        |j!                  |!|      |_        d d d        d d d        d d d        |5  |j                  |	|
      }|j!                  |	|      }|j#                  |
|      }|j                  ||      }|j!                  ||      }|j!                  ||      }|j#                  ||      } |j%                  ||      }!|j!                  | |      |_        |j!                  |!|      |_        d d d        d d d        |j'                         S c c}w c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   |j'                         S xY w)Nr   valuemismatched typesr         ?>=ra   )rF   r   realimagrg   r   make_helperr   r.   r/   r   r   r   rl   rj   r   fmulr   r   	_getvalue)"r6   r7   r#   r   r   r   r   in1rin1iin2rin2iftypeirS   rx   ONEin2r_absin2i_absin2r_abs_ge_in2i_absr   r   in2r_is_zeroin2i_is_zeroin2_is_zeroinn_theninn_otherwiserattmp1tmp2scltmp3tmp4tmp5tmp6s"                                     r   np_complex_div_implr   "  su     !C $$Wchhqk$E!HC 88D88D88D88DIIEdD$'?@'?!'?@AUCUUA


gs
7C;;s+D
++

uc
*C Wgt,HWgt,H"//hI	-	.2C4"//hEL"//hEL!,,|\BK-1J(M  '||D(;CH&||D(;CH	 
 # ",,tT2C"<<c2D"<<d3D!,,sD1C #<<c2D"<<c2D"<<d3D"<<d3D&||D#6CH&||D#6CH # . 6  ,,tT*C<<c*D<<d+D,,sD)C <<c*D<<c*D<<d+D<<d+D||D#.CH||D#.CH 9 
/Z ==?! A" X
 #] .- T6 Y9 
/Z ==?s   (N<N:O A
N2
N%/N	?
N%	B?N	N%N2
O"B?N?!ONN%N"N%%N/*N22N<	7O?O	OO#c                      y r   r   x1x2s     r   _npy_logaddexpr   o      r(   c                 8    t        | d      fd       }y )Ngenerictargetc                 4    | |k7  ry  |       fd}|S )Nc                     | |}}||k(  r|z   S ||z
  }|dkD  r|  |             z   S |dk  r|  |            z   S |S )Nr   r   )r   r   xytmpexpfnlog1pfnshifts        r   implz;_generate_logaddexp.<locals>.ol_npy_logaddexp.<locals>.impl{  se    rqAQ5y !e!GwucT{333QhwuSz222 Jr(   r   )r   r   r   r   constr   r   s      @r   ol_npy_logaddexpz-_generate_logaddexp.<locals>.ol_npy_logaddexpv  s"    85		 r(   r   )
fnoverloadr   r   r   r   s    ``` r   _generate_logaddexpr   r  s     j+ ,r(   c                      y r   r   r   s     r   r   r     r   r(   c                     t        ||d       | j                  j                  t              }|j	                  | j                  g |j
                  i       }| j                  ||      } |||      S r   )r'   typing_contextresolve_value_typer   get_call_typer   get_functionr6   r7   r#   r   r;   r   s         r   np_real_logaddexp_implr     se     dA.!!44^DD


W33\sxx\2
FCc*Dr(   c                      y r   r   r   s     r   _npy_logaddexp2r    r   r(   c                      y r   r   r   s    r   npy_log2_1pr    r   r(   r   r   c                 *     | t               fd}|S )Nc                 4    t        j                  |       z  S r   )nplog1p)r   LOG2Es    r   r   zol_npy_log2_1p.<locals>.impl  s    rxx{""r(   )
_NPY_LOG2E)r   r   r	  s     @r   ol_npy_log2_1pr    s    jME#Kr(   r   c                     t        ||d       | j                  j                  t              }|j	                  | j                  g |j
                  i       }| j                  ||      } |||      S r   )r'   r   r   r  r   r   r   r   s         r   np_real_logaddexp2_implr    se     dA.!!44_ED


W33\sxx\2
FCc*Dr(   c                 &   |\  }}|j                   t        fd|D              sJ d       |j                  \  }}| j                  |||t        j
                        }| j                  |||t        j
                        }|j                  ||      S )Nc              3   <   K   | ]  }|j                   k(    y wr   )rg   )r   r   lltypes     r   r   z&np_int_truediv_impl.<locals>.<genexpr>  s     ,t!qvvv~ts   zmust have homogeneous types)rg   r   r   r3   r   r5   r   )	r6   r7   r#   r   rv   rw   numtydentyr  s	           @r   np_int_truediv_implr    s     HCXXF,t,,K.KK,88LE5
,,wUEMM
:C
,,wUEMM
:C<<C  r(   c                     t        | |||      }t        j                  |j                  |j                        }t	        | |||f      S r   )r   r   	signaturer   np_real_floor_impl)r6   r7   r#   r   r   ss         r   np_real_floor_div_implr    s?    
7GS$
7C#//:AgwC6::r(   c                     t        | | |j                  d   |j                   |      }t        | | |j                  d   |j                   |      }| j	                  ||j                  ||g      S r   )r  r   r   r   r   r   s         r   np_real_divmod_implr    sj    
 '3E3??13Esxx3PRV
WC
7G-?S__Q-?-JD
QCgsc
CCr(   c                 ~   |j                   d   j                  }t        j                  ||      }|D cg c]#  }| j	                  ||j                   d   |      % c}\  }}|j
                  }	|j                  }
|j
                  }|j                  }|	j                  }t        |	|
||fD cg c]  }|j                  |k(   c}      sJ d       t        j                  j                  |d      }| j                  ||j                        }||_        t        | ||      }t        | ||      }|j                  d||      }|j!                  |      5 \  }}|5  |j#                  ||      }|j%                  |
|      }|j%                  ||      }|j'                  |	|      }|j'                  ||      }|j#                  ||      }t)        | |||f      |_        d d d        |5  |j#                  ||      }|j%                  |	|      }|j%                  ||      }|j'                  |
|      }|j'                  ||      }|j#                  ||      }t)        | |||f      |_        d d d        d d d        |j+                         S c c}w c c}w # 1 sw Y   xY w# 1 sw Y   7xY w# 1 sw Y   |j+                         S xY w)Nr   r   r   r   r   )r   underlying_floatr   r  rF   r   r   rg   r   r.   r/   r   r   r   r   r   rl   r   r   r   r  r   )r6   r7   r#   r   
float_kind	floor_sigr   r   r   r   r   r   r   r   r   rx   rS   r   r   r   r   r   r   r   r   r   r   r   s                               r   np_complex_floor_div_implr    s    !--J  Z8I  !C $$Wchhqk$E!HC 88D88D88D88DIIEdD$'?@'?!'?@AUCUUA;;s+D


gs
7CCHWgt,HWgt,H"//hI	-	.2C4,,tT*C<<c*D<<c*D<<d+D<<d+D<<d+D)'7IwOCH  ,,tT*C<<c*D<<c*D<<d+D<<d+D<<d+D)'7IwOCH  
/& ==?M! A T Y 
/& ==?sI   (J+JJ$BJ
J$!BJ"J$J	J$J!	J$$J<c                 L    t        ||d       t        j                  | |||      S r   r'   r   complex_power_implr   s       r   np_complex_power_implr#    %     dA.%%gwTBBr(   c                 L    t        ||d       t        j                  | |||      S r   )r'   r   real_power_implr   s       r   real_float_power_implr'    s%     dA.""7GS$??r(   c                 L    t        ||d       t        j                  | |||      S r   r!  r   s       r   np_complex_float_power_implr)    r$  r(   c                 L    t        ||d       t        j                  | |||      S r   )r'   r   gcd_implr   s       r   np_gcd_implr,  (  %     dA.WgsD99r(   c                     |j                   \  }}||cxk(  r|j                  k(  sJ  J |\  }}d }| j                  ||||      }	t        | ||j                  |	      S )Nc                 Z    | dk(  rdS t        | |t        j                  ||       z  z        S )z7
        Like gcd, heavily cribbed from Julia.
        r   )absr  gcd)abs     r   lcmznp_lcm_impl.<locals>.lcm6  s.     Fq<AbffQl):$; <<r(   )r   r   compile_internalr   )
r6   r7   r#   r   xtyytyr   r   r4  r   s
             r   np_lcm_implr8  0  sg    xxHC#((((((DAq= 
"
"7Cd
;CgwEEr(   c                    t        ||d       |d   }|j                  d   }|j                  }| j                  |d      }| j                  |d      }| j                  |d      }	| j                  |t	        d            }
| j                  ||      }||_        ||_        t        j                  t        j                  g|gdz   }||j                         g}t        | |||      }t        | |||      }t        | |||      }|j!                  |||      }|j!                  ||	|
      }|j!                  |||      |_        |j                         S )Nr`   r   r   r         nanr^   )r'   r   r  rf   floatrF   r   r   r   r  r   booleanr   np_complex_ge_implnp_complex_eq_implnp_complex_lt_implrr   )r6   r7   r#   r   opr   float_tyrx   r   ry   NANr?   cmp_sigcmp_argsarg1_ge_arg2arg1_eq_arg2arg1_lt_arg2real_when_gereal_when_nges                      r   np_complex_sign_implrK  C  sF    !dA.	aB	!B""H#.D#.C$$Xt4I


xu
6C!!'2.FFKFKu}}8tax8GF$$&'H%gwJL%gwJL%gwJL>>,c:LNN<C@M..|]KFKr(   c                 J    t        ||d       t        j                  |d|      S )Nr`   z	llvm.rintr'   r   call_fp_intrinsicr   s       r   np_real_rint_implrO  c  #     dA.%%g{DAAr(   c                 h   t        ||d       |j                  d   }|j                  }| j                  |||d         }| j                  ||      }t	        j
                  |gdz   }t        | |||j                  g      |_        t        | |||j                  g      |_        |j                         S )Nr`   r   r   r^   )
r'   r   r  rF   r   r  rO  r   r   r   )	r6   r7   r#   r   r   rB  r   rS   	inner_sigs	            r   np_complex_rint_implrS  i  s     !dA.	!B""H


w$q'

:C


w
+C  8*Q,/I '9sxxjICH '9sxxjICH==?r(   c                 L    t        ||d       t        j                  | |||      S Nr`   )r'   r   exp_implr   s       r   np_real_exp_implrW  |  r-  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   rV  r   s       r   np_complex_exp_implrY    %     dA.gwT::r(   c                     t        ||d       |d   j                  }t        j                  j	                  ||g      }t        j                  |j                  |d      }|j                  ||d   g      S )Nr`   r   z	llvm.exp2r*   	r'   rg   r.   r/   r0   r
   r1   r,   r4   r6   r7   r#   r   ll_tyr;   r<   s          r   np_real_exp2_implr_    e     dA.GLLE;;##EE84D		%	%gnnd+6
8B<<T!WI&&r(   c                    t        ||d       |j                  d   }|j                  }| j                  |||d         }| j                  ||      }| j	                  |t
              }|j                  ||j                        |_        |j                  ||j                        |_        t        | |||j                         g      S Nr`   r   r   )r'   r   r  rF   rf   
_NPY_LOGE2r   r   r   rY  r   )	r6   r7   r#   r   r   rB  r   r   loge2s	            r   np_complex_exp2_implre    s     dA.	!B""H


w$q'

:C


w
+C  :6E||E388,CH||E388,CHws}}6GHHr(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   log_implr   s       r   np_real_log_implrh    r-  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   rg  r   s       r   np_complex_log_implrj    rZ  r(   c                     t        ||d       |d   j                  }t        j                  j	                  ||g      }t        j                  |j                  |d      }|j                  ||d   g      S )Nr`   r   z	llvm.log2r*   r\  r]  s          r   np_real_log2_implrl    r`  r(   c                 f   t        ||d       |j                  d   }|j                  }t        | |||      }| j	                  |||      }| j                  |t              }|j                  ||j                        |_        |j                  ||j                        |_	        |j                         S rb  )r'   r   r  rj  rF   rf   r
  r   r   r   r   )r6   r7   r#   r   r   rB  r   log2es           r   np_complex_log2_implro    s     dA.	!B""H
gwT
:C


w#

6C  :6E||E388,CH||E388,CH==?r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   
log10_implr   s       r   np_real_log10_implrr    %     dA.wd;;r(   c                 f   t        ||d       |j                  d   }|j                  }t        | |||      }| j	                  |||      }| j                  |t              }|j                  ||j                        |_        |j                  ||j                        |_	        |j                         S rb  )r'   r   r  rj  rF   rf   _NPY_LOG10Er   r   r   r   )r6   r7   r#   r   r   rB  r   log10es           r   np_complex_log10_implrw    s     dA.	!B""H
gwT
:C


w#

6C!!(K8F||FCHH-CH||FCHH-CH==?r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   
expm1_implr   s       r   np_real_expm1_implrz    rs  r(   c                 *   t        ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |d      }| j                  |||d         }t        | |||j                  g      }	| j                  ||      }
t        | |||j                  g      }t        | |||j                  g      }|j                  |	|      }|j                  |	|      |
_
        |j                  ||      |
_        |
j                         S )Nr`   r   r^   r:  r   )r'   r   r  r   r  rf   rF   rW  r   np_real_cos_implr   np_real_sin_implr   r   r   )r6   r7   r#   r   r   rB  float_unary_sigry   r   r2  rS   cos_imagsin_imagr   s                 r   np_complex_expm1_implr    s     dA.	!B""H&&
15O$$Xt4I


w$q'

:C'?SXXJGA


w
+C/CHH:NH/CHH:NH
,,q(
#C||Ax(CH||C+CH==?r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   
log1p_implr   s       r   np_real_log1p_implr    rs  r(   c                    t        ||d       |j                  d   }|j                  }t        j                  |gdz   }t        j                  |gdz   }| j                  |d      }| j                  |||d         }	| j                  ||      }
|j                  |	j                  |      }t        | ||||	j                  g      }t        | |||	j                  |g      |
_
        t        | |||g      |
_        |
j                         S )Nr`   r   r^      r   r   )r'   r   r  r   r  rf   rF   r   r   np_real_hypot_implr   np_real_atan2_implrh  r   )r6   r7   r#   r   r   rB  r~  float_binary_sigr   r   rS   real_plus_onels                r   np_complex_log1p_implr    s    dA.	!B""H&&
15O''(A6


x
-C


w$q'

:C


w
+CLL3/M7G-=)3884	6A!'74D#&88]";=CH/A3GCH==?r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   	sqrt_implr   s       r   np_real_sqrt_implr    %     dA.gwT::r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   r  r   s       r   np_complex_sqrt_implr    s%     dA.wd;;r(   c                 L    t        ||d       |j                  |d   |d         S Nr`   r   )r'   mulr   s       r   np_int_square_implr  !  s'     dA.;;tAwQ((r(   c                 L    t        ||d       |j                  |d   |d         S r  )r'   r   r   s       r   np_real_square_implr  &  s'     dA.<<Qa))r(   c                     t        ||d       t        j                  |j                  gdz   }t	        j
                  | |||d   |d   g      S Nr`   r  r   )r'   r   r  r   r   complex_mul_impl)r6   r7   r#   r   
binary_sigs        r   np_complex_square_implr  *  sS     dA.!!COO#4Q#67J##GWj&*1gtAw%79 9r(   c                 t    t        ||d       t        d      d        fd}| j                  ||||      S )Nr`   T)fastmathc                 h    | dk  rt        j                  |  d       S t        j                  | d      S )Nr   gUUUUUU?)r  powerr  s    r   cbrtznp_real_cbrt_impl.<locals>.cbrt9  s0    q5HHaR+++88Ay))r(   c                 ^    t        j                  |       rt         j                  S  |       S r   )r  isnanr;  )r   r  s    r   _cbrtz np_real_cbrt_impl.<locals>._cbrt@  s     88A;66MAwr(   )r'   r   r5  )r6   r7   r#   r   r  r  s        @r   np_real_cbrt_implr  4  sF     dA. t$* %*
 ##GUC>>r(   c                 R   t        ||d       |j                  }t        j                  |gdz   }| j	                  ||d   |t
        j                        }| j                  t
        j                  d      }|j                  ||      }| j	                  ||t
        j                  |      S r  )	r'   r   r   r  r3   r   r5   rf   r   )	r6   r7   r#   r   r   r  in_as_floatr   result_as_floats	            r   np_int_reciprocal_implr  K  s     !dA.	B!!B46*J,,wQU]]CK


u}}a
0Cll34O<<%--DDr(   c                 ~    t        ||d       | j                  |j                  d      }|j                  ||d         S )Nr`   r   r   )r'   rf   r   r   )r6   r7   r#   r   r   s        r   np_real_reciprocal_implr  Y  s9     dA.


s
4C<<T!W%%r(   c                 >   t        ||d       |j                  d   }|j                  }| j                  |d      }| j                  |d      }| j	                  |||d         }| j	                  ||      }	|j
                  }
|j                  }t        | ||
      }t        | ||      }|j                  d||      }|j                  |      5 \  }}|5  |j                  ||
      }|j                  ||      }|j                  |
|      }|j                  ||      }|j                  ||      }||	_        |j                  ||      |	_        d d d        |5  |j                  |
|      }|j                  |
|      }|j                  ||      }|j                  ||      }|j                  ||      |	_        |j                  ||      |	_        d d d        d d d        |	j                         S # 1 sw Y   xY w# 1 sw Y   -xY w# 1 sw Y   |	j                         S xY w)Nr`   r   r   r   r   <=)r'   r   r  rf   rF   r   r   r   r   rl   r   r   r   r   r   )r6   r7   r#   r   r   rB  rx   r   r   rS   r   r   in1r_absin1i_absin1i_abs_le_in1r_absr   r   rtmp0dinv_dminus_rs                         r   np_complex_reciprocal_implr  _  s    !dA.	!B""H#.D


x
-C


w$q'

:C


w
+C88D88DWgt,HWgt,H"//hI	-	.2C4T4(A<<a(DT4(ALLa(Ell4+GCH||GU3CH  T4(A<<a(DT4(ALLa(E||Au-CH||D%0CH  
/" ==?! T Y 
/" ==?s>   HA9G,
HA7G8H,G5	1H8H	=HHc                 L    t        ||d       t        j                  | |||      S rU  )r'   r   sin_implr   s       r   r}  r}    r-  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   r  r   s       r   np_complex_sin_implr    rZ  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   cos_implr   s       r   r|  r|    r-  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   r  r   s       r   np_complex_cos_implr    rZ  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   tan_implr   s       r   np_real_tan_implr    r-  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   	asin_implr   s       r   np_real_asin_implr    r  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   	acos_implr   s       r   np_real_acos_implr    r  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   	atan_implr   s       r   np_real_atan_implr    r  r(   c                 L    t        ||d       t        j                  | |||      S r   )r'   r   atan2_float_implr   s       r   r  r    %     dA.$$WgsDAAr(   c                 L    t        ||d       t        j                  | |||      S r   )r'   r   hypot_float_implr   s       r   r  r    r  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   	sinh_implr   s       r   np_real_sinh_implr    r  r(   c                    t        ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |||d         }| j                  ||      }|j                  }	|j                  }
t        | |||
g      }t        | |||	g      }t        | |||
g      }t        | |||	g      }|j                  ||      |_        |j                  ||      |_        |j                         S Nr`   r   r^   )r'   r   r  r   r  rF   r   r   r}  r  r|  np_real_cosh_implr   r   )r6   r7   r#   r   r   ftyfsig1r   rS   xrxisxishxrcxichxrs                  r   np_complex_sinh_implr    s     !dA. 
!B


CseAg&EWb$q'2A


w
+C	
B	
B
7GURD
9CWgurd;D
7GURD
9CWgurd;D||C&CH||C&CH==?r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   	cosh_implr   s       r   r  r    r  r(   c                    t        ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |||d         }| j                  ||      }|j                  }	|j                  }
t        | |||
g      }t        | |||	g      }t        | |||
g      }t        | |||	g      }|j                  ||      |_        |j                  ||      |_        |j                         S r  )r'   r   r  r   r  rF   r   r   r|  r  r}  r  r   r   )r6   r7   r#   r   r   r  r  r   rS   r  r  r  r  r  r  s                  r   np_complex_cosh_implr    s     !dA.	!B


CseAg&EWb$q'2A


w
+C	
B	
B
7GURD
9CWgurd;D
7GURD
9CWgurd;D||C&CH||C&CH==?r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   	tanh_implr   s       r   np_real_tanh_implr    r  r(   c                    t        ||d       |j                  d   }|j                  }t        j                  |gdz   }| j                  |d      }| j                  |||d         }| j                  ||      }	|j                  }
|j                  }t        | |||g      }t        | |||g      }t        | |||
g      }t        | |||
g      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j                  ||      }|j!                  ||      }|j                  ||      |	_        |j                  ||      |	_        |	j#                         S )Nr`   r   r^   r   )r'   r   r  r   r  rf   rF   r   r   r}  r|  r  r  r   r   r   r   r   )r6   r7   r#   r   r   r  r  r   r   rS   r  r  sicishrchr_rsis_rcicsqr_rcsqr_icr  r  rs_rcis_icis_rcrs_icnumrnumis                                 r   np_complex_tanh_implr    s    !dA.	!B


CseAg&E


sC
(CWb$q'2A


w
+C	
B	
B	'7EB4	8B	'7EB4	8B
GWebT
:CWgurd;D	b#	B
,,r4
 C	b$	B	b#	B\\"b!F\\"b!FVV$ALLa ELLR ELLb!ELLb!ELLR E<<u%D<<u%D||D%(CH||D%(CH==?r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   
asinh_implr   s       r   np_real_asinh_implr  B  rs  r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   
acosh_implr   s       r   np_real_acosh_implr  J  rs  r(   c                    t        ||d       |j                  d   }t        j                  |gdz   }| j	                  ||d      }|d   }t        j                  | ||||g      }t        j                  | ||||g      }	t        | |||g      }
t        | |||	g      }t        j                  | |||
|g      }t        j                  | ||||g      }t        | |||g      S )Nr`   r   r  y      ?        )r'   r   r   r  get_constant_genericr   complex_add_implcomplex_sub_implr  r  rj  )r6   r7   r#   r   r   csig2r   r   
x_plus_onex_minus_onesqrt_x_plus_onesqrt_x_minus_one	prod_sqrtlog_args                 r   np_complex_acosh_implr
  O  s    !dA.	!Brd1f%E

&
&wJ
?CQA))'7EAEHDJ KJ**7GUQFIEK LK*7GS:,OO+GWcK=Q(('5+:+;+=>I &&wBKAM NG wwi@@r(   c                 L    t        ||d       t        j                  | |||      S rU  )r'   r   
atanh_implr   s       r   np_real_atanh_implr  m  rs  r(   c                 J    t        ||d       t        j                  |d|      S )Nr`   z
llvm.floorrM  r   s       r   r  r  u  #     dA.%%g|TBBr(   c                 J    t        ||d       t        j                  |d|      S )Nr`   z	llvm.ceilrM  r   s       r   np_real_ceil_implr  ~  rP  r(   c                 J    t        ||d       t        j                  |d|      S )Nr`   z
llvm.truncrM  r   s       r   np_real_trunc_implr    r  r(   c                 J    t        ||d       t        j                  |d|      S )Nr`   z	llvm.fabsrM  r   s       r   np_real_fabs_implr    rP  r(   c                    t        ||dt        j                         |j                  d   }|D cg c]  }| j	                  |||       c}\  }}|j
                  }|j                  }	|j
                  }
|j                  }|j                  d||
      }|j                  d|	|      }|j                  d||
      }|j                  d|	|      }|j                  ||      }|j                  ||      }|j                  ||      S c c}w )	Nr^   r   r   r   rd   ordra   r   
r'   r   r=  r   rF   r   r   r   rj   rk   )r6   r7   r#   r   r   r   r   r   r  r  yryixr_gt_yrno_nan_xi_yixr_eq_yrxi_ge_yi
first_termsecond_terms                     r   r>  r>         !dA5==I	!BHLM$$Wb$<MHC	B	B	B	B##CR0H''r26L##D"b1H##D"b1Hh5J,,x2K;;z;// N   Dc                    t        ||dt        j                         |j                  d   }|D cg c]  }| j	                  |||       c}\  }}|j
                  }|j                  }	|j
                  }
|j                  }|j                  d||
      }|j                  d|	|      }|j                  d||
      }|j                  d|	|      }|j                  ||      }|j                  ||      }|j                  ||      S c c}w )	Nr^   r  r   r   r   r  ra   r  r  )r6   r7   r#   r   r   r   r   r   r  r  r  r  xr_lt_yrr  r  xi_le_yir   r!  s                     r   np_complex_le_implr'    r"  r#  c                    t        ||dt        j                         |j                  d   }|D cg c]  }| j	                  |||       c}\  }}|j
                  }|j                  }	|j
                  }
|j                  }|j                  d||
      }|j                  d|	|      }|j                  d||
      }|j                  d|	|      }|j                  ||      }|j                  ||      }|j                  ||      S c c}w )Nr^   r  r   r   rd   r  ra   r  )r6   r7   r#   r   r   r   r   r   r  r  r  r  r  r  r  xi_gt_yir   r!  s                     r   np_complex_gt_implr*         !dA5==I	!BHLM$$Wb$<MHC	B	B	B	B##CR0H''r26L##D"b1H##CR0Hh5J,,x2K;;z;// Nr#  c                    t        ||dt        j                         |j                  d   }|D cg c]  }| j	                  |||       c}\  }}|j
                  }|j                  }	|j
                  }
|j                  }|j                  d||
      }|j                  d|	|      }|j                  d||
      }|j                  d|	|      }|j                  ||      }|j                  ||      }|j                  ||      S c c}w )Nr^   r  r   r   r   r  ra   r  )r6   r7   r#   r   r   r   r   r   r  r  r  r  r%  r  r  xi_lt_yir   r!  s                     r   r@  r@    r+  r#  c                 ~   t        ||dt        j                         |j                  d   }|D cg c]  }| j	                  |||       c}\  }}|j
                  }|j                  }	|j
                  }
|j                  }|j                  d||
      }|j                  d|	|      }|j                  ||      S c c}w )Nr^   r  r   r   ra   )	r'   r   r=  r   rF   r   r   r   rj   )r6   r7   r#   r   r   r   r   r   r  r  r  r  r  xi_eq_yis                 r   r?  r?    s     !dA5==I	!BHLM$$Wb$<MHC	B	B	B	B##D"b1H##D"b1H<<(++ N   B:c                 ~   t        ||dt        j                         |j                  d   }|D cg c]  }| j	                  |||       c}\  }}|j
                  }|j                  }	|j
                  }
|j                  }|j                  d||
      }|j                  d|	|      }|j                  ||      S c c}w )Nr^   r  r   r   re   )	r'   r   r=  r   rF   r   r   fcmp_unorderedrk   )r6   r7   r#   r   r   r   r   r   r  r  r  r  xr_ne_yrxi_ne_yis                 r   np_complex_ne_implr5     s     !dA5==I	!BHLM$$Wb$<MHC	B	B	B	B%%dB3H%%dB3H;;x** Nr0  c                     | j                  |||      }t        j                  ||j                        }t        j                  ||j                        }|j                  ||      S )Nr   )rF   r
   is_truer   r   rk   )r6   r7   r   valcomplex_valre_trueim_trues          r   _complex_is_truer<    sV    &&w#&>Koog{'7'78Goog{'7'78G;;w((r(   c                     t        ||dt        j                         t        j                  ||d         }t        j                  ||d         }|j                  ||      S Nr^   r  r   r`   )r'   r   r=  r
   r7  rj   r6   r7   r#   r   r2  r3  s         r   np_logical_and_implr@    sM     dA5==Ia)Aa)A<<1r(   c                     t        ||dt        j                         t        | ||j                  d   |d         }t        | ||j                  d   |d         }|j                  ||      S r>  )r'   r   r=  r<  r   rj   r?  s         r   np_complex_logical_and_implrB  %  s]     dA5==I'388A;Q@A'388A;Q@A<<1r(   c                     t        ||dt        j                         t        j                  ||d         }t        j                  ||d         }|j                  ||      S r>  )r'   r   r=  r
   r7  rk   r?  s         r   np_logical_or_implrD  ,  M     dA5==Ia)Aa)A;;q!r(   c                     t        ||dt        j                         t        | ||j                  d   |d         }t        | ||j                  d   |d         }|j                  ||      S r>  )r'   r   r=  r<  r   rk   r?  s         r   np_complex_logical_or_implrG  3  ]     dA5==I'388A;Q@A'388A;Q@A;;q!r(   c                     t        ||dt        j                         t        j                  ||d         }t        j                  ||d         }|j                  ||      S r>  )r'   r   r=  r
   r7  rq   r?  s         r   np_logical_xor_implrJ  :  rE  r(   c                     t        ||dt        j                         t        | ||j                  d   |d         }t        | ||j                  d   |d         }|j                  ||      S r>  )r'   r   r=  r<  r   rq   r?  s         r   np_complex_logical_xor_implrL  A  rH  r(   c                 n    t        ||dt        j                         t        j                  ||d         S Nr`   r  r   )r'   r   r=  r
   is_falser   s       r   np_logical_not_implrP  H  s+     dA5==IGT!W--r(   c                     t        ||dt        j                         t        | ||j                  d   |d         }|j                  |      S rN  )r'   r   r=  r<  r   not_)r6   r7   r#   r   r2  s        r   np_complex_logical_not_implrS  M  s>     dA5==I'388A;Q@A<<?r(   c                 r    t        ||d       |\  }}|j                  d||      }|j                  |||      S Nr^   r   r'   rp   rr   )r6   r7   r#   r   arg1arg2arg1_sge_arg2s          r   np_int_smax_implrZ  \  >     dA.JD$''dD9M>>-t44r(   c                 r    t        ||d       |\  }}|j                  d||      }|j                  |||      S rU  r'   ri   rr   )r6   r7   r#   r   rW  rX  arg1_uge_arg2s          r   np_int_umax_implr_  c  >     dA.JD$))$d;M>>-t44r(   c                 
   t        ||d       |\  }}|j                  d||      }|j                  d||      }|j                  |||      }|j                  d||      }	|j                  |	||      }
|j                  |||
      S Nr^   unor   r'   r2  rr   r   )r6   r7   r#   r   rW  rX  arg1_nanany_nan
nan_resultrF  non_nan_results              r   np_real_maximum_implri  j       dA.JD$%%eT48H$$UD$7G$5J''dD9L^^L$=N>>':~>>r(   c                 
   t        ||d       |\  }}|j                  d||      }|j                  d||      }|j                  |||      }|j                  d||      }	|j                  |	||      }
|j                  |||
      S rb  rd  )r6   r7   r#   r   rW  rX  arg2_nanrf  rg  rF  rh  s              r   np_real_fmax_implrm  y  rj  r(   c                    t        ||d       |j                  d   }t        j                  t        j
                  |      }t        j                  t        j
                  g|gdz   }|\  }}t        | |||g      }	t        | |||g      }
|j                  |	|
      }|j                  |	||      }t        | |||      }|j                  |||      }|j                  |||      S Nr^   r   
r'   r   r   r  r   r=  np_complex_isnan_implrk   rr   r>  r6   r7   r#   r   r   bc_sigbcc_sigrW  rX  re  rl  rf  rg  rF  rh  s                  r   np_complex_maximum_implru         !dA.	!BemmR0Fu}}6tAv6GJD$$WgvvFH$WgvvFHkk(H-G$5J%gwFL^^L$=N>>':~>>r(   c                    t        ||d       |j                  d   }t        j                  t        j
                  |      }t        j                  t        j
                  g|gdz   }|\  }}t        | |||g      }	t        | |||g      }
|j                  |	|
      }|j                  |
||      }t        | |||      }|j                  |||      }|j                  |||      S ro  rp  rr  s                  r   np_complex_fmax_implrx        
 !dA.	!BemmR0Fu}}6tAv6GJD$$WgvvFH$WgvvFHkk(H-G$5J%gwFL^^L$=N>>':~>>r(   c                 r    t        ||d       |\  }}|j                  d||      }|j                  |||      S Nr^   r  rV  )r6   r7   r#   r   rW  rX  arg1_sle_arg2s          r   np_int_smin_implr}    r[  r(   c                 r    t        ||d       |\  }}|j                  d||      }|j                  |||      S r{  r]  )r6   r7   r#   r   rW  rX  arg1_ule_arg2s          r   np_int_umin_implr    r`  r(   c                 
   t        ||d       |\  }}|j                  d||      }|j                  d||      }|j                  |||      }|j                  d||      }	|j                  |	||      }
|j                  |||
      S Nr^   rc  r  rd  r6   r7   r#   r   rW  rX  re  rf  rg  arg1_le_arg2rh  s              r   np_real_minimum_implr    rj  r(   c                 
   t        ||d       |\  }}|j                  d||      }|j                  d||      }|j                  |||      }|j                  d||      }	|j                  |	||      }
|j                  |||
      S r  rd  r  s              r   np_real_fmin_implr    rj  r(   c                    t        ||d       |j                  d   }t        j                  t        j
                  |      }t        j                  t        j
                  g|gdz   }|\  }}t        | |||g      }	t        | |||g      }
|j                  |	|
      }|j                  |	||      }t        | |||      }|j                  |||      }|j                  |||      S ro  
r'   r   r   r  r   r=  rq  rk   rr   r'  r6   r7   r#   r   r   rs  rt  rW  rX  re  rl  rf  rg  r  rh  s                  r   np_complex_minimum_implr    rv  r(   c                    t        ||d       |j                  d   }t        j                  t        j
                  |      }t        j                  t        j
                  g|gdz   }|\  }}t        | |||g      }	t        | |||g      }
|j                  |	|
      }|j                  |
||      }t        | |||      }|j                  |||      }|j                  |||      S ro  r  r  s                  r   np_complex_fmin_implr    ry  r(   c                 \    t        ||dt        j                         t        j                  S Nr`   r  r'   r   r=  r
   	false_bitr   s       r   np_int_isnan_implr          dA5==Ir(   c                 n    t        ||dt        j                         t        j                  ||d         S rN  )r'   r   r=  r   is_nanr   s       r   np_real_isnan_implr    )     dA5==I??7DG,,r(   c                     t        ||dt        j                         |\  }|j                  \  }| j	                  |||      }t        j                  ||      S Nr`   r  r   )r'   r   r=  r   rF   r   r  r6   r7   r#   r   r   r   r9  s          r   rq  rq    sP     dA5==I	BA
((CB&&w!&<KG[11r(   c                 \    t        ||dt        j                         t        j                  S r  )r'   r   r=  r
   true_bitr   s       r   np_int_isfinite_implr     s      dA5==Ir(   c                     t        ||dt        j                         |j                  d|d   t        j
                        S )Nr`   r  re   r   )r'   r   r=  ri   r   NATr   s       r   np_datetime_isfinite_implr  %  s1     dA5==I  tAw
??r(   c                     t        ||dt        j                         |j                  d|d   t        j
                        S )Nr`   r  ra   r   )r'   r   r=  rp   r   r  r   s       r   np_datetime_isnat_implr  *  s1     dA5==ItT!Wjnn==r(   c                 n    t        ||dt        j                         t        j                  ||d         S rN  )r'   r   r=  r   	is_finiter   s       r   np_real_isfinite_implr  /  s+     dA5==IgtAw//r(   c                     t        ||dt        j                         |\  }|j                  \  }| j	                  |||      }t        j                  ||      S r  )r'   r   r=  r   rF   r   r  r  s          r   np_complex_isfinite_implr  4  sP     dA5==I	BA
((CB&&w!&<Kw44r(   c                 \    t        ||dt        j                         t        j                  S r  r  r   s       r   np_int_isinf_implr  <  r  r(   c                 n    t        ||dt        j                         t        j                  ||d         S rN  )r'   r   r=  r   is_infr   s       r   np_real_isinf_implr  A  r  r(   c                     t        ||dt        j                         |\  }|j                  \  }| j	                  |||      }t        j                  ||      S r  )r'   r   r=  r   rF   r   r  r  s          r   np_complex_isinf_implr  F  sP     dA5==I	BA
((CB&&w!&<KG[11r(   c           	      f   t        ||dt        j                         t        j                  | j	                  t        j
                  d      t        j                  | j	                  t        j                  d      t        j                  | j	                  t        j                  d      i}|j                  d   }t        t        d|j                         }| j                  |      }|j                  |j                  |d   |      ||         }|j!                  d||j#                  d            }	|	S )	Nr`   r  i   l        l            r   uintre   )r'   r   r=  float16rf   uint16float32uint32r5   uint64r   getattrbitwidthrJ   rj   bitcastri   rg   )
r6   r7   r#   r   masksarg_ty
arg_int_tyarg_ll_int_tyint_resbool_ress
             r   np_real_signbit_implr  N  s     dA5==I 	w++ELL&Aw++ELL*Ew++ELL:LME
 XXa[F$v&7 89J**:6Mll7??47MB =*G$$T7GLLODHOr(   c                 L    t        ||d       t        j                  | |||      S r   )r'   r   copysign_float_implr   s       r   np_real_copysign_implr  `  s%     dA.''#tDDr(   c                     t        ||d       t        j                  dt        j                  di}t	        | ||||d      S )Nr^   numba_nextafterfnumba_nextafter	nextafter)r'   r   r  r5   r\   )r6   r7   r#   r   dispatch_tables        r   np_real_nextafter_implr  e  sI     dA. 	)(N
 'wd'5{D Dr(   c                    t        ||d       t        j                  dt        j                  di}|j                  \  }t        j                  |j                  ||      }|d   j                  } |t        j                        }t        j                  j                  |||g      }	t        j                  |j                   |	d      }
|j#                  |
||d   g      }||gz   }t%        | ||||d      }|j'                  ||d         S )Nr`   r  r  r   zllvm.copysignr*   r  )r'   r   r  r5   r   r   r  r   rg   r  infr.   r/   r0   r
   r1   r,   r4   r\   r   )r6   r7   r#   r   r  r   rR  r^  ll_infr;   r<   ll_sinf
inner_argsr  s                 r   np_real_spacing_implr  p  s     !dA. 	)(N
 88DR  "b9IGLLE266]F;;##EE5>:D		%	%gnnd+:
<Bll2Q01G
"J+GWi,6,79I <<	47++r(   c                     |\  }}|j                   \  }}| j                  |||t        j                        }t	        j
                  ||t        j                        }t        j                  | ||||f      S r   )r   r3   r   intcr   r  r   
ldexp_impl)	r6   r7   r#   r   r   r   ty1ty2f_fi_sigs	            r   np_real_ldexp_implr    sg     FBxxHC 
gr3

	3BS%**5HwB8DDr(   r   )__doc__mathllvmlite.irr.   numpyr  numba.core.extendingr   numba.core.imputilsr   
numba.corer   r   r   r	   r
   r   numba.npr   numba.np.mathr   r   r   r
  ru  rc  r'   r5   r@   r\   r   r   r   r   r   r   np_int_fmod_implr   r   r   r   r   r   r   r  expr   r  r  r  exp2r  r  r  r  r  r#  r'  r)  r,  r8  rK  rO  rS  rW  rY  r_  re  rh  rj  rl  ro  rr  rw  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  r  r  r  r>  r'  r*  r@  r?  r5  r<  r@  rB  rD  rG  rJ  rL  rP  rS  rZ  r_  ri  rm  ru  rx  r}  r  r  r  r  r  r  r  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r(   r   <module>r     s      ) 2 ? ? 1  6 6
 5
44
* 05}}I .|"J8D.*D $ (&
=GZ	2	 NJ"&& A		 
+i( ) OS+rww ?!$;D0lC@C:F&@B&:
;'	I:
;'
 <

 <0<2;
<)
*9?.E&$T:
;:
;:;;;BB;
8;
6;
#R<<
A<<CBCB0*0*0*0*,"+.).
55???,?*55???,?0
-
2
@
>
0
5
-
2$E
	D,:Er(   