
    J/PhD                     (   d Z ddlZddlZddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZmZ ddlmZ  ed          Zej        Zd	 Zd
 Zd Z eej        ej                  d             Z eej        ej                  d             Z eej        ej                  d             Z eej                  d             Zd Z ed          Z  ed          Z! eej"        ej                  ed                         Z# eej$        ej                  ed                         Z% eej$        ej        ej                  d             Z& eej'                  d             Z( eej)                  d             Z* eej+                  d             Z, eej-        ej                  d             Z. eej/        ej                  d             Z0 eej1                  d             Z2 eej3        ej                  d             Z4 eej5                  d             Z6 eej7        ej                  d             Z8 eej9                  d             Z: eej;        ej                  d              Z< eej=                  d!             Z> eej?        ej                  d"             Z@ eejA        ej                  d#             ZB eejC        ej                  d$             ZD eejE        ej                  d%             ZFdS )&z'
Implement the cmath module functions.
    N)Registryimpl_ret_untracked)typescgutils)	signature)builtinsmathimpl)overload	cmathimplc                 D    |                      d|j        |j                  S )Nuno)fcmp_unorderedrealimagbuilderzs     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cpython/cmathimpl.pyis_nanr      s    !!%888    c                     |                      t          j        | |j                  t          j        | |j                            S N)or_r	   is_infr   r   r   s     r   r   r      s9    ;;xw77w779 9 9r   c                     |                      t          j        | |j                  t          j        | |j                            S r   )and_r	   	is_finiter   r   r   s     r   r   r      s;    <<*7AF;; *7AF;;= = =r   c                     |j         \  }|\  }|                     |||          }t          ||          }t          | ||j        |          S Nvalue)argsmake_complexr   r   return_typecontextr   sigr"   typr!   r   ress           r   isnan_float_implr*      Q    HESGUWc77A
!

CgwEEEr   c                     |j         \  }|\  }|                     |||          }t          ||          }t          | ||j        |          S r   )r"   r#   r   r   r$   r%   s           r   isinf_float_implr-   '   r+   r   c                     |j         \  }|\  }|                     |||          }t          ||          }t          | ||j        |          S r   )r"   r#   r   r   r$   r%   s           r   isfinite_float_implr/   0   sQ    HESGUWc77A
GQ

CgwEEEr   c                 F    t          d | |fD                       rd }|S d S )Nc                 B    g | ]}t          |t          j                  S  )
isinstancer   Float).0r(   s     r   
<listcomp>z#impl_cmath_rect.<locals>.<listcomp>;   s$    ===SJsEK((===r   c                    t          j        |          s5| st          |           S t          j        |           rt	          | |          S t          j        |          }t          j        |          }|dk    rt          j        |           r|| z  }n|| z  }|dk    rt          j        |           r|| z  }n|| z  }t	          ||          S )N        )mathisfiniteabsisinfcomplexcossin)rphir   r   s       r   implzimpl_cmath_rect.<locals>.impl<   s    =%% + "q66M:a== +"1c??*8C==D8C==Drzzdjmmz		rzzdjmmz		4&&&r   )all)r@   rA   rB   s      r   impl_cmath_rectrD   9   sE    
==QH===>> 	' 	' 	'* - r   c                       fd}|S )Nc           	      r   |j         \  }|\  }|                     |||          }|j        }|j        }t	          j        ||          }	t	          j        ||          }
t          |j        g|j        fdz  t          j
        fdz  z   R  }|                     |||||	|
f          }t          | |||          S )Nr       )r"   r#   r   r   r	   r   r   r$   underlying_floatr   booleancompile_internalr   )r&   r   r'   r"   r(   r!   r   xyx_is_finitey_is_finite	inner_sigr)   
inner_funcs                r   wrapperz(intrinsic_complex_unary.<locals>.wrapperU   s      #U ;;FF (!44(!44co S # 46:em=MPQ=QQS S S	&&w
I)*A{K(HJ J!'7C===r   r2   )rP   rQ   s   ` r   intrinsic_complex_unaryrR   T   s#    > > > > > Nr   naninfc                    |rn|rRt          j        |          }t          j        |          }t          j        |           }t	          ||z  ||z            S t	          t
          t
                    S t          j        |           r"|rt	          | |           S t	          | |          S | dk    re|rNt          j        |          }t          j        |          }|dk    r|| z  }|dk    r|| z  }t	          ||          S t	          | t
                    S |rRt          j        |           }t          j        |          }t          j        |          }t	          ||z  ||z            S d}t	          ||          S )zcmath.exp(x + y j)r8   r   )r9   r>   r?   expr=   NANisnan)	rK   rL   rM   rN   csr@   r   r   s	            r   exp_implr[   j   sb     $! 	%AAA1q5!a%(((3$$$	A ! 	!1a== 1a== 	
S 	#8A;;D8A;;D qyy	qyy	4&&&1c??"  	!AAA1q5!a%(((A1a== r   c                     t          j        t          j        | |                    }t          j        ||           }t	          ||          S )zcmath.log(x + y j))r9   loghypotatan2r=   )rK   rL   rM   rN   abs         r   log_implrb      s>     	Aq!!""A
1aA1a==r   c                 f    |\  }}d }|                      ||||          }t          | |||          S )zcmath.log(z, base)c                 T    t          j        |           t          j        |          z  S r   )cmathr]   )r   bases     r   log_basezlog_base_impl.<locals>.log_base   s    y||eioo--r   rJ   r   )r&   r   r'   r"   r   rf   rg   r)   s           r   log_base_implri      sK     IQ. . . 
"
"7Hc4
@
@CgwS999r   c                 N    t          | t          j                  sd S dfd}|S )NgUk@c                 l    t          j        |           } t          | j        z  | j        z            S )zcmath.log10(z))re   r]   r=   r   r   )r   LN_10s    r   
log10_implz$impl_cmath_log10.<locals>.log10_impl   s.    IaLL qv~qv~666r   r3   r   Complex)r   rm   rl   s     @r   impl_cmath_log10rp      sB    a''  E7 7 7 7 7 r   c                 D    t          | t          j                  sdS d }|S )zcmath.phase(x + y j)Nc                 @    t          j        | j        | j                  S r   )r9   r_   r   r   )rK   s    r   rB   zphase_impl.<locals>.impl   s    z!&!&)))r   rn   rK   rB   s     r   
phase_implrt      s1     a'' * * *Kr   c                 D    t          | t          j                  sd S d }|S )Nc                 r    | j         | j        }}t          j        ||          t          j        ||          fS r   )r   r   r9   r^   r_   )rK   r@   is      r   rB   zpolar_impl.<locals>.impl   s2    vqv1z!QAq!1!111r   rn   rs   s     r   
polar_implrx      s1    a'' 2 2 2 Kr   c                    
 d}d|z   }|j         d         j        }|j        dk    rt          j        nt          j        }||z  

fd}|                     ||||          }	t          | |||	          S )Ng;f?      ?r   @   c                    | j         }| j        }|dk    r#|dk    rt          t          |          |          S t	          j        |          rt          t          |          |          S t	          j        |          rt          ||          S t	          j        |          r_|dk     r3t          t          ||z
            t	          j        ||                    S t          |t	          j        ||z
  |                    S t          |          k    st          |          k    r|dz  }|dz  }d}nd}|dk    r8t	          j        |t	          j	        ||          z   dz            }|}|d|z  z  }nXt	          j        | t	          j	        ||          z   dz            }t          |          d|z  z  }t	          j        ||          }|rt          |dz  |          S t          ||          S )zcmath.sqrt(z)r8         ?TFr         ?rG   )
r   r   r=   r;   r9   r<   rX   copysignsqrtr^   )r   r`   ra   scaletr   r   THRESs          r   	sqrt_implzsqrt_impl.<locals>.sqrt_impl   s    FF88S3q661%%%:a== 	&3q661%%%:a== 	!1a== :a== 	;3wws1q5zz4=A+>+>???q$-Aq"9"9::: q66U??c!ffooIAIAEEE66	1tz!Q///3677ADA;DD	A2
1a 0 00C788Aq66QU#D=A&&D 	'4!8T***4&&&r   )r"   rH   bitwidthr	   DBL_MAXFLT_MAXrJ   r   )r&   r   r'   r"   SQRT2ONE_PLUS_SQRT2	theargfltMAXr   r)   r   s             @r   r   r      s     5E5jN,I'0B66(

H<LC
 . E(' (' (' (' ('T 
"
"7IsD
A
ACgwS999r   c                 \    d }|                      ||||          }t          | |||          S )Nc                 \    t          j        t          | j         | j                            S )zcmath.cos(z) = cmath.cosh(z j))re   coshr=   r   r   )r   s    r   cos_implzcos_impl.<locals>.cos_impl  s"    z'16'1622333r   rh   )r&   r   r'   r"   r   r)   s         r   r   r     s@    4 4 4 
"
"7Hc4
@
@CgwS999r   c                 D    t          | t          j                  sd S d }|S )Nc                 L   | j         }| j        }t          j        |          rt          j        |          rt          |          }|}nf|dk    rt          |          }|}nNt          j        |t          j        |                    }t          j        |t          j        |                    }|dk     r| }t          ||          S t          t          j        |          t          j
        |          z  t          j        |          t          j        |          z            S )zcmath.cosh(z)r8   )r   r   r9   r<   rX   r;   r   r>   r?   r=   r   sinhr   rK   rL   r   r   s        r   	cosh_implz"impl_cmath_cosh.<locals>.cosh_impl  s    FF:a== 	'z!}} 
51vvc1vv}Q44}Q443wwu4&&&tx{{TYq\\1HQKK$)A,,.0 0 	0r   rn   )r   r   s     r   impl_cmath_coshr     s2    a'' 0 0 0, r   c                 \    d }|                      ||||          }t          | |||          S )Nc                     t          j        t          | j         | j                            }t          |j        |j                   S )z#cmath.sin(z) = -j * cmath.sinh(z j))re   r   r=   r   r   r   r@   s     r   sin_implzsin_impl.<locals>.sin_impl7  7    Jww//00qvw'''r   rh   )r&   r   r'   r"   r   r)   s         r   r   r   5  @    ( ( (
 
"
"7Hc4
@
@CgwS999r   c                 D    t          | t          j                  sd S d }|S )Nc                    | j         }| j        }t          j        |          rtt          j        |          r|}|}nKt          j        |          }t          j        |          }|dk    r||z  }|dk    r|t          |          z  }t          ||          S t          t          j        |          t          j	        |          z  t          j        |          t          j
        |          z            S )zcmath.sinh(z)r8   )r   r   r9   r<   rX   r>   r?   r;   r=   r   r   r   s        r   	sinh_implz"impl_cmath_sinh.<locals>.sinh_implD  s    FF:a== 	'z!}} 
#x{{x{{2::AID2::CFFND4&&&tx{{TYq\\1x{{TYq\\13 3 	3r   rn   )r   r   s     r   impl_cmath_sinhr   ?  s2    a'' 3 3 3& r   c                 \    d }|                      ||||          }t          | |||          S )Nc                     t          j        t          | j         | j                            }t          |j        |j                   S )z#cmath.tan(z) = -j * cmath.tanh(z j))re   tanhr=   r   r   r   s     r   tan_implztan_impl.<locals>.tan_impl\  r   r   rh   )r&   r   r'   r"   r   r)   s         r   r   r   Z  r   r   c                 D    t          | t          j                  sd S d }|S )Nc                    | j         }| j        }t          j        |          rft          j        d|          }t          j        |          rd}n*t          j        dt          j        d|z                      }t          ||          S t          j        |          }t          j        |          }dt          j	        |          z  }||z  }d||z  z   }	t          |d||z  z   z  |	z  ||	z  |z  |z            S )zcmath.tanh(z)rz   r8          @)
r   r   r9   r<   r   r?   r=   r   tanr   )
r   rK   rL   r   r   txtycxtxtydenoms
             r   	tanh_implz"impl_cmath_tanh.<locals>.tanh_implj  s    FF:a== 	'=Q''Dz!}} ;}R"q&)9)9::4&&& Yq\\Xa[[$)A,,BwTD[ "rBw,%'5jB"$& & 	&r   rn   )r   r   s     r   impl_cmath_tanhr   e  s2    a'' & & &, r   c                     t          j        d          t          j        dz  fd}|                     ||||          }t          | |||          S )N   c           	         t          | j                  k    st          | j                  k    rt          j        t          | j                  | j                  }t          j        t          j        t          j        | j        dz  | j        dz                      z   | j                   }t          ||          S t          j
        t          d| j        z
  | j                             }t          j
        t          d| j        z   | j                            }dt          j        |j        |j                  z  }t          j        |j        |j        z  |j        |j        z  z
            }t          ||          S )zcmath.acos(z)r~   rz   r   )r;   r   r   r9   r_   r   r]   r^   r=   re   r   asinhr   r   r   s1s2LN_4r   s        r   	acos_implzacos_impl.<locals>.acos_impl  s/    qv;;#af++"5"5 :c!&kk1622D=AFSL!&3,??@@4G D 4&&&GBK!&99::BGBK8899B
27BG444D:bg/"'BG2CCDDD4&&&r   r9   r]   r	   r   rJ   r   )r&   r   r'   r"   r   r)   r   r   s         @@r   r   r     sk    8A;;Dq E' ' ' ' ' '$ 
"
"7IsD
A
ACgwS999r   c                     t          | t          j                  sd S t          j        d          t
          j        dz  fd}|S )Nr   c                    t          | j                  k    st          | j                  k    rit          j        t          j        | j        dz  | j        dz                      z   }t          j        | j        | j                  }t          ||          S t          j	        t          | j        dz
  | j                            }t          j	        t          | j        dz   | j                            }t          j
        |j        |j        z  |j        |j        z  z             }dt          j        |j        |j                  z  }t          ||          S )zcmath.acosh(z)r~   rz   r   )r;   r   r   r9   r]   r^   r_   r=   re   r   r   r   s        r   
acosh_implz$impl_cmath_acosh.<locals>.acosh_impl  s    qv;;#af++"5"5 8DJqv|QVc\BBCCdJD:afaf--D4&&&GAFRK8899BGAFRK8899B:bg/"'BG2CCDDD
27BG444D4&&&r   )r3   r   ro   r9   r]   r	   r   )r   r   r   r   s     @@r   impl_cmath_acoshr     s]    a'' 8A;;Dq E' ' ' ' ' '$ r   c                     t          j        d          t          j        dz  fd}|                     ||||          }t          | |||          S )Nr   c           	      .   t          | j                  k    st          | j                  k    rt          j        t          j        t          j        | j        dz  | j        dz                      z   | j                  }t          j        | j        t          | j                            }t          ||          S t          j
        t          d| j        z   | j                             }t          j
        t          d| j        z
  | j                            }t          j        |j        |j        z  |j        |j        z  z
            }t          j        | j        |j        |j        z  |j        |j        z  z
            }t          ||          S )zcmath.asinh(z)r~   rz   )r;   r   r   r9   r   r]   r^   r_   r=   re   r   r   r   s        r   
asinh_implzasinh_impl.<locals>.asinh_impl  s;    qv;;#af++"5"5=AFSL!&3,??@@4G D :afc!&kk22D4&&&GBK!&99::BGBK8899B:bg/"'BG2CCDDD:afbg&7"'BG:K&KLLD4&&&r   r   )r&   r   r'   r"   r   r)   r   r   s         @@r   r   r     sk    8A;;Dq E' ' ' ' ' '  
"
"7JT
B
BCgwS999r   c                 \    d }|                      ||||          }t          | |||          S )Nc                     t          j        t          | j         | j                            }t          |j        |j                   S )z%cmath.asin(z) = -j * cmath.asinh(z j))re   r   r=   r   r   r   s     r   	asin_implzasin_impl.<locals>.asin_impl  s7    K0011qvw'''r   rh   )r&   r   r'   r"   r   r)   s         r   r   r     s@    ( ( (
 
"
"7IsD
A
ACgwS999r   c                 \    d }|                      ||||          }t          | |||          S )Nc                 *   t          j        t          | j         | j                            }t          j        | j                  r3t          j        | j                  rt          |j        |j                  S t          |j        |j                   S )z%cmath.atan(z) = -j * cmath.atanh(z j))re   atanhr=   r   r   r9   r<   rX   r   s     r   	atan_implzatan_impl.<locals>.atan_impl  sr    K0011:af 	,$*QV"4"4 	,1616***16AF7+++r   rh   )r&   r   r'   r"   r   r)   s         r   r   r     s@    , , , 
"
"7IsD
A
ACgwS999r   c                 .  	 t          j        d          }t          j        t          j        dz            t          j        t          j                  	t           j        dz  	fd}|                     ||||          }t          | |||          S )Nr   rG   c           	         | j         dk     rd}|  } nd}t          | j                  }t          j        | j                   s| j         	k    s|	k    rt          j        | j                  rt          j        d| j                   }nQt          j        | j                   rd}n5t          j        | j         dz  | j        dz            }| j         dz  |z  |z  }t          j        | j                    }n| j         dk    r|
k     r|dk    rt          }| j        }nt          j	        t          j
        |          t          j
        t          j        |d                    z             }t          j        t          j        d|           dz  | j                  }nf||z  }d	| j         z
  }t          j        d| j         z  ||z  |z   z            d
z  }t          j        d| j        z  |d	| j         z   z  |z
             dz  }t          j        | j                  rt          }|rt          | |           S t          ||          S )zcmath.atanh(z)r8   TFr~   g      @rz   r   rG      r}   g       )r   r;   r   r9   rX   r<   r   r^   INFr]   r   r_   log1prW   r=   )r   negateayr   hr   sqayzr1PI_12THRES_LARGETHRES_SMALLs           r   
atanh_implzatanh_impl.<locals>.atanh_impl  s=    6B;;FAAF[[:af 	@+!5!5k9I9Iz!&!! %}R00AF## % Jqv|QVc\::vby{1}M%!&111DDVr\\b;..Rxxv2!%4:b"+=+=!>!>"? @ @ @}TZRC%8%81%<afEE7Daf*C:b16kS3Y-=>??$FDJsQV|"a!&j1D8: : :<?@D :af 	D 	'D54%(((4&&&r   )	r9   r]   r   r	   r   FLT_MINpirJ   r   )
r&   r   r'   r"   r   r   r)   r   r   r   s
          @@@r   r   r     s    8A;;D)H,q011K)H,--KGaKE*' *' *' *' *' *' *'X 
"
"7JT
B
BCgwS999r   )G__doc__re   r9   numba.core.imputilsr   r   
numba.corer   r   numba.core.typingr   numba.cpythonr   r	   numba.core.extendingr
   registrylowerr   r   r   rX   ro   r*   r<   r-   r:   r/   rectrD   rR   floatrW   r   rV   r[   r]   rb   ri   log10rp   phasert   polarrx   r   r   r>   r   r   r   r?   r   r   r   r   r   r   r   acosr   acoshr   r   r   asinr   atanr   r   r   r2   r   r   <module>r      s   
   < < < < < < < < % % % % % % % % ' ' ' ' ' ' , , , , , , , , ) ) ) ) ) )8K  9 9 99 9 9= = =
 u{EM""F F #"F u{EM""F F #"F u~u}%%F F &%F 
%*  4  & eElleElluy%-  &! &!  ! &!P uy%-     !  uy%-//: : 0/: 
%+    
%+   
%+   uz5=!!9: 9: "!9:x uy%-  : : ! : 
%*  : uy%-  : : ! : 
%*  4 uy%-  : : ! : 
%*  : uz5=!!: : "!:2 
%+  8 u{EM"": : #":. uz5=!!: : "!: uz5=!!: : "!: u{EM""3: 3: #"3: 3: 3:r   