
    shD                     *   S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  S rS	 rS
 rS rS rS rS rS r\" S5      r\" S5      r\S 5       r\S 5       rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)S$ r*g)%z'
Implement the cmath module functions.
    N)impl_ret_untracked)types)	signature)mathimpl)overloadc                 P    U R                  SUR                  UR                  5      $ )Nuno)fcmp_unorderedrealimagbuilderzs     k/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/np/math/cmathimpl.pyis_nanr      s    !!%88    c                     U R                  [        R                  " XR                  5      [        R                  " XR                  5      5      $ N)or_r   is_infr   r   r   s     r   r   r      s2    ;;xw7w79 9r   c                     U R                  [        R                  " XR                  5      [        R                  " XR                  5      5      $ r   )and_r   	is_finiter   r   r   s     r   r   r      s6    <<**7FF; **7FF;= =r   c                     UR                   u  nUu  nU R                  XUS9n[        X5      n[        XUR                  U5      $ Nvalue)argsmake_complexr   r   return_typecontextr   sigr   typr   r   ress           r   isnan_float_implr&       F    HHESGUW7A

CgEEr   c                     UR                   u  nUu  nU R                  XUS9n[        X5      n[        XUR                  U5      $ r   )r   r   r   r   r    r!   s           r   isinf_float_implr)   (   r'   r   c                     UR                   u  nUu  nU R                  XUS9n[        X5      n[        XUR                  U5      $ r   )r   r   r   r   r    r!   s           r   isfinite_float_implr+   1   sF    HHESGUW7A
G
CgEEr   c           	          [        X4 Vs/ s H  n[        U[        R                  5      PM     sn5      (       a  S nU$ g s  snf )Nc                    [         R                  " U5      (       d8  U (       d  [        U 5      $ [         R                  " U 5      (       a  [	        X5      $ [         R
                  " U5      n[         R                  " U5      nUS:X  a   [         R                  " U 5      (       a  X -  nOX -  nUS:X  a   [         R                  " U 5      (       a  X0-  nOX0-  n[	        X#5      $ )N        )mathisfiniteabsisinfcomplexcossin)rphir   r   s       r   implimpl_cmath_rect.<locals>.impl<   s    ==%%q6M::a=="1?*88C=D88C=Drzdjjmm		rzdjjmm		4&&r   )all
isinstancer   Float)r6   r7   r$   r8   s       r   impl_cmath_rectr=   :   s=    
QH=HSJsEKK(H=>>	'* - ?=s   $Ac                    ^  U 4S jnU$ )Nc           	        > UR                   u  nUu  nU R                  XUS9nUR                  nUR                  n[        R
                  " X5      n	[        R
                  " X5      n
[        UR                  /UR                  4S-  [        R                  4S-  -   Q76 nU R                  UTUXxX45      n[        XX,5      $ )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   wrapper(intrinsic_complex_unary.<locals>.wrapperU   s      U ;FFFF ((4((4coo S # 4 46:emm=MPQ=QQS	&&w
I)*{(HJ!'C==r    )rI   rJ   s   ` r   intrinsic_complex_unaryrM   T   s    > Nr   naninfc                    U(       am  U(       aR  [         R                  " U5      n[         R                  " U5      n[         R                  " U 5      n[	        Xd-  Xe-  5      $ [	        [
        [
        5      $ [         R                  " U 5      (       a  U(       a  [	        X 5      $ [	        X5      $ U S:  ab  U(       aK  [         R                  " U5      n[         R                  " U5      nUS:w  a  Xp-  nUS:w  a  X-  n[	        Xx5      $ [	        U [
        5      $ U(       aR  [         R                  " U 5      n[         R                  " U5      n[         R                  " U5      n[	        Xd-  Xe-  5      $ Sn[	        Xf5      $ )zcmath.exp(x + y j)r.   r   )r/   r4   r5   expr3   NANisnan)	rD   rE   rF   rG   csr6   r   r   s	            r   exp_implrV   k   s    AAA15!%((3$$	A1= 1= 	
S88A;D88A;D qy	qy	4&&1c?" AAA15!%((A1= r   c                     [         R                  " [         R                  " X5      5      n[         R                  " X5      n[	        XE5      $ )zcmath.log(x + y j))r/   loghypotatan2r3   )rD   rE   rF   rG   abs         r   log_implr]      s3     	A!"A

1A1=r   c                 L    Uu  pES nU R                  XX#5      n[        XX'5      $ )zcmath.log(z, base)c                 \    [         R                  " U 5      [         R                  " U5      -  $ r   )cmathrX   )r   bases     r   log_baselog_base_impl.<locals>.log_base   s    yy|eiio--r   rC   r   )r"   r   r#   r   r   ra   rb   r%   s           r   log_base_implre      s/    IQ. 
"
"7c
@Cg99r   c                 X   ^ [        U [        R                  5      (       d  g SmU4S jnU$ )NgUk@c                 |   > [         R                  " U 5      n [        U R                  T-  U R                  T-  5      $ )zcmath.log10(z))r`   rX   r3   r   r   )r   LN_10s    r   
log10_impl$impl_cmath_log10.<locals>.log10_impl   s/    IIaL qvv~qvv~66r   r;   r   Complex)r   ri   rh   s     @r   impl_cmath_log10rm      s)    a'' E7 r   c                 L    [        U [        R                  5      (       d  gS nU$ )zcmath.phase(x + y j)Nc                 X    [         R                  " U R                  U R                  5      $ r   )r/   rZ   r   r   )rD   s    r   r8   phase_impl.<locals>.impl   s    zz!&&!&&))r   rk   rD   r8   s     r   
phase_implrr      s"     a''*Kr   c                 L    [        U [        R                  5      (       d  g S nU$ )Nc                     U R                   U R                  p![        R                  " X5      [        R                  " X!5      4$ r   )r   r   r/   rY   rZ   )rD   r6   is      r   r8   polar_impl.<locals>.impl   s.    vvqvv1zz!A!111r   rk   rq   s     r   
polar_implrw      s"    a''2 Kr   c                    ^
 SnSU-   nUR                   S   R                  nUR                  S:X  a  [        R                  O[        R
                  nXu-  m
U
4S jnU R                  XX#5      n	[        XX)5      $ )Ng;f?      ?r   @   c                   > U R                   nU R                  nUS:X  a  US:X  a  [        [        U5      U5      $ [        R
                  " U5      (       a  [        [        U5      U5      $ [        R                  " U5      (       a  [        X5      $ [        R
                  " U5      (       aT  US:  a+  [        [        X"-
  5      [        R                  " X5      5      $ [        U[        R                  " X"-
  U5      5      $ [        U5      T:  d  [        U5      T:  a  US-  nUS-  nSnOSnUS:  a;  [        R                  " U[        R                  " X5      -   S-  5      nUnUSU-  -  nOX[        R                  " U* [        R                  " X5      -   S-  5      n[        U5      SU-  -  n[        R                  " XB5      nU(       a  [        US-  U5      $ [        XV5      $ )zcmath.sqrt(z)r.         ?TFr         ?r@   )
r   r   r3   r1   r/   r2   rS   copysignsqrtrY   )r   r[   r\   scaletr   r   THRESs          r   	sqrt_implsqrt_impl.<locals>.sqrt_impl   s    FFFF8S3q61%%::a==3q61%%::a==1= ::a==3ws15z4==+>??q$--q"9:: q6U?c!foIAIAEE6		1tzz!//367ADA;D		A2

1 00C78Aq6QU#D==&D4!8T**4&&r   )r   rA   bitwidthr   DBL_MAXFLT_MAXrC   r   )r"   r   r#   r   SQRT2ONE_PLUS_SQRT2	theargfltMAXr   r%   r   s             @r   r   r      sw     5E5jN,,I'00B6(

H<L<LC
  E('T 
"
"7s
ACg99r   c                 D    S nU R                  XX#5      n[        XX%5      $ )Nc                 l    [         R                  " [        U R                  * U R                  5      5      $ )zcmath.cos(z) = cmath.cosh(z j))r`   coshr3   r   r   )r   s    r   cos_implcos_impl.<locals>.cos_impl  s"    zz'166'166233r   rd   )r"   r   r#   r   r   r%   s         r   r   r     s(    4 
"
"7c
@Cg99r   c                 L    [        U [        R                  5      (       d  g S nU$ )Nc                 z   U R                   nU R                  n[        R                  " U5      (       a  [        R                  " U5      (       a  [        U5      nUnOjUS:X  a  [        U5      nUnOV[        R                  " U[        R                  " U5      5      n[        R                  " U[        R                  " U5      5      nUS:  a  U* n[        X45      $ [        [        R                  " U5      [        R                  " U5      -  [        R                  " U5      [        R                  " U5      -  5      $ )zcmath.cosh(z)r.   )r   r   r/   r2   rS   r1   r~   r4   r5   r3   r   sinhr   rD   rE   r   r   s        r   	cosh_impl"impl_cmath_cosh.<locals>.cosh_impl  s    FFFF::a==zz!}}1vc1v}}Q4}}Q43wu4&&txx{TYYq\1HHQK$))A,.0 	0r   rk   )r   r   s     r   impl_cmath_coshr     s#    a''0, r   c                 D    S nU R                  XX#5      n[        XX%5      $ )Nc                     [         R                  " [        U R                  * U R                  5      5      n[        UR                  UR                  * 5      $ )z#cmath.sin(z) = -j * cmath.sinh(z j))r`   r   r3   r   r   r   r6   s     r   sin_implsin_impl.<locals>.sin_impl7  8    JJww/0qvvw''r   rd   )r"   r   r#   r   r   r%   s         r   r   r   6  (    (
 
"
"7c
@Cg99r   c                 L    [        U [        R                  5      (       d  g S nU$ )Nc                    U R                   nU R                  n[        R                  " U5      (       au  [        R                  " U5      (       a  UnUnOJ[        R
                  " U5      n[        R                  " U5      nUS:w  a  X1-  nUS:w  a  U[        U5      -  n[        X45      $ [        [        R
                  " U5      [        R                  " U5      -  [        R                  " U5      [        R                  " U5      -  5      $ )zcmath.sinh(z)r.   )r   r   r/   r2   rS   r4   r5   r1   r3   r   r   r   s        r   	sinh_impl"impl_cmath_sinh.<locals>.sinh_implD  s    FFFF::a==zz!}}xx{xx{2:ID2:CFND4&&txx{TYYq\1xx{TYYq\13 	3r   rk   )r   r   s     r   impl_cmath_sinhr   @  s#    a''3& r   c                 D    S nU R                  XX#5      n[        XX%5      $ )Nc                     [         R                  " [        U R                  * U R                  5      5      n[        UR                  UR                  * 5      $ )z#cmath.tan(z) = -j * cmath.tanh(z j))r`   tanhr3   r   r   r   s     r   tan_impltan_impl.<locals>.tan_impl\  r   r   rd   )r"   r   r#   r   r   r%   s         r   r   r   [  r   r   c                 L    [        U [        R                  5      (       d  g S nU$ )Nc                 "   U R                   nU R                  n[        R                  " U5      (       an  [        R                  " SU5      n[        R                  " U5      (       a  SnO.[        R                  " S[        R
                  " SU-  5      5      n[        X45      $ [        R                  " U5      n[        R                  " U5      nS[        R                  " U5      -  nXV-  nSX-  -   n	[        USXf-  -   -  U	-  Xi-  U-  U-  5      $ )zcmath.tanh(z)ry   r.          @)
r   r   r/   r2   r~   r5   r3   r   tanr   )
r   rD   rE   r   r   txtycxtxtydenoms
             r   	tanh_impl"impl_cmath_tanh.<locals>.tanh_implj  s    FFFF::a====Q'Dzz!}}}}R"q&)9:4&& YYq\XXa[$))A,wT[ "rw,%'jB"$& 	&r   rk   )r   r   s     r   impl_cmath_tanhr   f  s#    a''&, r   c                    ^^ [         R                  " S5      m[        R                  S-  mUU4S jnU R	                  XX#5      n[        XX%5      $ )N   c           	        > [        U R                  5      T:  d  [        U R                  5      T:  a  [        R                  " [        U R                  5      U R                  5      n[        R
                  " [        R                  " [        R                  " U R                  S-  U R                  S-  5      5      T-   U R                  * 5      n[        X5      $ [        R                  " [        SU R                  -
  U R                  * 5      5      n[        R                  " [        SU R                  -   U R                  5      5      nS[        R                  " UR                  UR                  5      -  n[        R                  " UR                  UR                  -  UR                  UR                  -  -
  5      n[        X5      $ )zcmath.acos(z)r}   ry   r   )r1   r   r   r/   rZ   r~   rX   rY   r3   r`   r   asinhr   r   r   s1s2LN_4r   s        r   	acos_implacos_impl.<locals>.acos_impl  s+    qvv;#aff+"5 ::c!&&k1662D==AFFSL!&&3,?@4GD 4&&GBK!&&9:BGBK89B

277BGG44D::bgg/"''BGG2CCDD4&&r   r/   rX   r   r   rC   r   )r"   r   r#   r   r   r%   r   r   s         @@r   r   r     sF    88A;Dq E'$ 
"
"7s
ACg99r   c                    ^^ [        U [        R                  5      (       d  g [        R                  " S5      m[
        R                  S-  mUU4S jnU$ )Nr   c                 @  > [        U R                  5      T:  d  [        U R                  5      T:  a~  [        R                  " [        R
                  " U R                  S-  U R                  S-  5      5      T-   n[        R                  " U R                  U R                  5      n[        X5      $ [        R                  " [        U R                  S-
  U R                  5      5      n[        R                  " [        U R                  S-   U R                  5      5      n[        R                  " UR                  UR                  -  UR                  UR                  -  -   5      nS[        R                  " UR                  UR                  5      -  n[        X5      $ )zcmath.acosh(z)r}   ry   r   )r1   r   r   r/   rX   rY   rZ   r3   r`   r   r   r   s        r   
acosh_impl$impl_cmath_acosh.<locals>.acosh_impl  s    qvv;#aff+"5 88DJJqvv|QVVc\BCdJD::affaff-D4&&GAFFRK89BGAFFRK89B::bgg/"''BGG2CCDD

277BGG44D4&&r   )r;   r   rl   r/   rX   r   r   )r   r   r   r   s     @@r   impl_cmath_acoshr     sA    a''88A;Dq E'$ r   c                    ^^ [         R                  " S5      m[        R                  S-  mUU4S jnU R	                  XX#5      n[        XX%5      $ )Nr   c           	        > [        U R                  5      T:  d  [        U R                  5      T:  a  [        R                  " [        R
                  " [        R                  " U R                  S-  U R                  S-  5      5      T-   U R                  5      n[        R                  " U R                  [        U R                  5      5      n[        X5      $ [        R                  " [        SU R                  -   U R                  * 5      5      n[        R                  " [        SU R                  -
  U R                  5      5      n[        R                  " UR                  UR                  -  UR                  UR                  -  -
  5      n[        R                  " U R                  UR                  UR                  -  UR                  UR                  -  -
  5      n[        X5      $ )zcmath.asinh(z)r}   ry   )r1   r   r   r/   r~   rX   rY   rZ   r3   r`   r   r   r   s        r   
asinh_implasinh_impl.<locals>.asinh_impl  s=    qvv;#aff+"5==AFFSL!&&3,?@4GD ::affc!&&k2D4&&GBK!&&9:BGBK89B::bgg/"''BGG2CCDD::affbgg&7"''BGG:K&KLD4&&r   r   )r"   r   r#   r   r   r%   r   r   s         @@r   r   r     sF    88A;Dq E'  
"
"7
BCg99r   c                 D    S nU R                  XX#5      n[        XX%5      $ )Nc                     [         R                  " [        U R                  * U R                  5      5      n[        UR                  UR                  * 5      $ )z%cmath.asin(z) = -j * cmath.asinh(z j))r`   r   r3   r   r   r   s     r   	asin_implasin_impl.<locals>.asin_impl  s8    KK01qvvw''r   rd   )r"   r   r#   r   r   r%   s         r   r   r     s(    (
 
"
"7s
ACg99r   c                 D    S nU R                  XX#5      n[        XX%5      $ )Nc                    [         R                  " [        U R                  * U R                  5      5      n[
        R                  " U R                  5      (       aE  [
        R                  " U R                  5      (       a   [        UR                  UR                  5      $ [        UR                  UR                  * 5      $ )z%cmath.atan(z) = -j * cmath.atanh(z j))r`   atanhr3   r   r   r/   r2   rS   r   s     r   	atan_implatan_impl.<locals>.atan_impl  sr    KK01::aff$**QVV"4"4166166**166AFF7++r   rd   )r"   r   r#   r   r   r%   s         r   r   r     s(    , 
"
"7s
ACg99r   c                 <  ^^^	 [         R                  " S5      n[         R                  " [        R                  S-  5      m[         R                  " [        R
                  5      m	[         R                  S-  mUUU	4S jnU R                  XX#5      n[        XX&5      $ )Nr   r@   c           	        > U R                   S:  a  SnU * n OSn[        U R                  5      n[        R                  " U R                   5      (       d  U R                   T	:  d  UT	:  a  [        R
                  " U R                  5      (       a"  [        R                  " SU R                   5      nOn[        R
                  " U R                   5      (       a  SnOF[        R                  " U R                   S-  U R                  S-  5      nU R                   S-  U-  U-  n[        R                  " TU R                  * 5      * nGO>U R                   S:X  a  UT
:  a  US:X  a  [        nU R                  nGO[        R                  " [        R                  " U5      [        R                  " [        R                  " US5      5      -  5      * n[        R                  " [        R                  " SU* 5      S-  U R                  5      nO|X"-  nS	U R                   -
  n[        R                  " SU R                   -  Xw-  U-   -  5      S
-  n[        R                  " SU R                  -  US	U R                   -   -  U-
  5      * S-  n[        R                  " U R                  5      (       a  [        nU(       a  [        U* U* 5      $ [        X55      $ )zcmath.atanh(z)r.   TFr}   g      @ry   r   r@      r|   g       )r   r1   r   r/   rS   r2   r~   rY   INFrX   r   rZ   log1prR   r3   )r   negateayr   hr   sqayzr1PI_12THRES_LARGETHRES_SMALLs           r   
atanh_implatanh_impl.<locals>.atanh_impl  s    66B;FAF[::aff+!5k9Izz!&&!!}}R0AFF## JJqvv|QVVc\:vvby{1}MM%!&&11DVVr\b;.Rxvv2!%4::b"+=!>"? @ @}}TZZRC%81%<affE7Daff*C::b166kSY-=>?$FDJJsQVV|"a!&&j1D8: :<?@D ::affDD54%((4&&r   )	r/   rX   r   r   r   FLT_MINpirC   r   )
r"   r   r#   r   r   r   r%   r   r   r   s
          @@@r   r   r     sq    88A;D))H,,q01K))H,,-KGGaKE*'X 
"
"7
BCg99r   )+__doc__r`   r/   numba.core.imputilsr   
numba.corer   numba.core.typingr   numba.cpythonr   numba.core.extendingr   r   r   r   r&   r)   r+   r=   rM   floatrR   r   rV   r]   re   rm   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   r   r   <module>r      s   
   2  ' " )99=FFF4& ElEl &! &!R  :"9:z:<:6:<:4::0::3:r   