
    J/PhD                     D   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ d Zd	 Zd
 Zd Zd Zd Zd Zd Z ed          Z ed          Zed             Zed             Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d  Z&d! Z'd" Z(d# Z)d$ Z*dS )%z'
Implement the cmath module functions.
    N)impl_ret_untracked)types)	signature)mathimpl)overloadc                 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/np/math/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+   1   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<   r=   r>   s      r   impl_cmath_rectr@   :   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   r.   )rL   rM   s   ` r   intrinsic_complex_unaryrN   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)r4   r   )r5   r:   r;   expr9   NANisnan)	rG   rH   rI   rJ   csr<   r   r   s	            r   exp_implrW   k   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))r5   loghypotatan2r9   )rG   rH   rI   rJ   abs         r   log_implr^      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   )cmathrY   )r   bases     r   log_basezlog_base_impl.<locals>.log_base   s    y||eioo--r   rF   r   )r"   r   r#   r   r   rb   rc   r%   s           r   log_base_implre      sI    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))ra   rY   r9   r   r   )r   LN_10s    r   
log10_implz$impl_cmath_log10.<locals>.log10_impl   s.    IaLL qv~qv~666r   r/   r   Complex)r   ri   rh   s     @r   impl_cmath_log10rl      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   )r5   r[   r   r   )rG   s    r   r>   zphase_impl.<locals>.impl   s    z!&!&)))r   rj   rG   r>   s     r   
phase_implrp      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   r5   rZ   r[   )rG   r<   is      r   r>   zpolar_impl.<locals>.impl   s2    vqv1z!QAq!1!111r   rj   ro   s     r   
polar_implrt      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)r4         ?TFr         ?rC   )
r   r   r9   r7   r5   r8   rT   copysignsqrtrZ   )r   r\   r]   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   rD   bitwidthr   DBL_MAXFLT_MAXrF   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))ra   coshr9   r   r   )r   s    r   cos_implzcos_impl.<locals>.cos_impl  s"    z'16'1622333r   rd   )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)r4   )r   r   r5   r8   rT   r7   r{   r:   r;   r9   r   sinhr   rG   rH   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   rj   )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))ra   r   r9   r   r   r   r<   s     r   sin_implzsin_impl.<locals>.sin_impl7  7    Jww//00qvw'''r   rd   )r"   r   r#   r   r   r%   s         r   r   r   6  @    ( ( (
 
"
"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)r4   )r   r   r5   r8   rT   r:   r;   r7   r9   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   rj   )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))ra   tanhr9   r   r   r   s     r   tan_implztan_impl.<locals>.tan_impl\  r   r   rd   )r"   r   r#   r   r   r%   s         r   r   r   [  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)rv   r4          @)
r   r   r5   r8   r{   r;   r9   r   tanr   )
r   rG   rH   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   rj   )r   r   s     r   impl_cmath_tanhr   f  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)rz   rv   r   )r7   r   r   r5   r[   r{   rY   rZ   r9   ra   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   r5   rY   r   r   rF   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)rz   rv   r   )r7   r   r   r5   rY   rZ   r[   r9   ra   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   )r/   r   rk   r5   rY   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)rz   rv   )r7   r   r   r5   r{   rY   rZ   r[   r9   ra   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))ra   r   r9   r   r   r   s     r   	asin_implzasin_impl.<locals>.asin_impl  s7    K0011qvw'''r   rd   )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))ra   atanhr9   r   r   r5   r8   rT   r   s     r   	atan_implzatan_impl.<locals>.atan_impl  sr    K0011:af 	,$*QV"4"4 	,1616***16AF7+++r   rd   )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   rC   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)r4   TFrz   g      @rv   r   rC      ry   g       )r   r7   r   r5   rT   r8   r{   rZ   INFrY   r|   r[   log1prS   r9   )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   )	r5   rY   r|   r   r   FLT_MINpirF   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   )+__doc__ra   r5   numba.core.imputilsr   
numba.corer   numba.core.typingr   numba.cpythonr   numba.core.extendingr   r   r   r   r&   r)   r+   r@   rN   floatrS   r   rW   r^   re   rl   rp   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r   r   <module>r      s]   
   2 2 2 2 2 2       ' ' ' ' ' ' " " " " " " ) ) ) ) ) )9 9 99 9 9= = =F F FF F FF F F  4  & eElleEll &! &! &!R   : : :  "    9: 9: 9:z: : :  <: : :  6: : :  <: : :4  :: : :0: : :: : :3: 3: 3: 3: 3:r   