
    g,:                        d Z ddlmZmZmZm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 ddlmZ ddlmZmZ dd	lmZ dd
lmZmZ  G d de          Z G d de          Z G d de          Z G d de          ZdS )z Elliptic Integrals.     )SpiIRational)FunctionArgumentIndexError)Dummyuniquely_named_symbol)sign)atanh)sqrt)sintan)gamma)hypermeijergc                   V    e Zd ZdZed             ZddZd ZddZd Z	d	 Z
d
 Zd ZdS )
elliptic_kaN  
    The complete elliptic integral of the first kind, defined by

    .. math:: K(m) = F\left(\tfrac{\pi}{2}\middle| m\right)

    where $F\left(z\middle| m\right)$ is the Legendre incomplete
    elliptic integral of the first kind.

    Explanation
    ===========

    The function $K(m)$ is a single-valued function on the complex
    plane with branch cut along the interval $(1, \infty)$.

    Note that our notation defines the incomplete elliptic integral
    in terms of the parameter $m$ instead of the elliptic modulus
    (eccentricity) $k$.
    In this case, the parameter $m$ is defined as $m=k^2$.

    Examples
    ========

    >>> from sympy import elliptic_k, I
    >>> from sympy.abc import m
    >>> elliptic_k(0)
    pi/2
    >>> elliptic_k(1.0 + I)
    1.50923695405127 + 0.625146415202697*I
    >>> elliptic_k(m).series(n=3)
    pi/2 + pi*m/8 + 9*pi*m**2/128 + O(m**3)

    See Also
    ========

    elliptic_f

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Elliptic_integrals
    .. [2] https://functions.wolfram.com/EllipticIntegrals/EllipticK

    c                 D   |j         rt          t          j        z  S |t          j        u r<dt          t	          dd          z  z  t          t	          dd                    dz  z  S |t          j        u rt          j        S |t          j        u r;t          t	          dd                    dz  dt          dt          z            z  z  S |t          j
        t          j        t          t          j
        z  t          t          j        z  t          j        fv rt          j        S d S )N               )is_zeror   r   Halfr   r   OneComplexInfinityNegativeOner   InfinityNegativeInfinityr   Zero)clsms     f/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/functions/special/elliptic_integrals.pyevalzelliptic_k.eval:   s    9 
	af9!&[[R!Q''hr1oo(>(>(AAA!%ZZ$$!-!Q((!+QtAbDzz\::1:q11QZ<Q''):< < <6M< <    r   c                 ~    | j         d         }t          |          d|z
  t          |          z  z
  d|z  d|z
  z  z  S )Nr   r   r   )args
elliptic_er   )selfargindexr%   s      r&   fdiffzelliptic_k.fdiffH   s>    IaL1Q
1 55!QUDDr(   c                     | j         d         }|j        o	|dz
  j        du r'|                     |                                          S d S )Nr   r   Fr*   is_realis_positivefunc	conjugater,   r%   s     r&   _eval_conjugatezelliptic_k._eval_conjugateL   sH    IaLI-1q5-%7799Q[[]]+++ 87r(   r   c                     ddl m}  ||                     t                                        |||                    S )Nr   hyperexpandnlogx)sympy.simplifyr9   rewriter   _eval_nseries)r,   xr;   r<   cdirr9   s         r&   r?   zelliptic_k._eval_nseriesQ   sE    ......{4<<..<<Q!$<OOPPPr(   c                     t           t          j        z  t          t          j        t          j        ft          j        f|          z  S N)r   r   r   r   r   r,   r%   kwargss      r&   _eval_rewrite_as_hyperz!elliptic_k._eval_rewrite_as_hyperU   s,    !&y/!%1====r(   c                     t          t          j        t          j        fg ft          j        ft          j        ff|           dz  S Nr   )r   r   r   r#   rD   s      r&   _eval_rewrite_as_meijergz#elliptic_k._eval_rewrite_as_meijergX   s6    ("-	AF9/ErJJ1LLr(   c                 2    | j         d         }|j        rdS d S )Nr   T)r*   is_infiniter5   s     r&   _eval_is_zerozelliptic_k._eval_is_zero[   s&    IaL= 	4	 	r(   c           
          ddl m} t          t          d|          j                  }| j        d         } |dt          d|t          |          dz  z  z
            z  |dt          dz  f          S Nr   Integraltr   r   )	sympy.integrals.integralsrP   r	   r
   namer*   r   r   r   )r,   r*   rE   rP   rQ   r%   s         r&   _eval_rewrite_as_Integralz$elliptic_k._eval_rewrite_as_Integral`   su    666666'T22788IaLx$q1SVVQY;///!Q1>>>r(   Nr   r   )__name__
__module____qualname____doc__classmethodr'   r.   r6   r?   rF   rI   rL   rT    r(   r&   r   r      s        * *X   [E E E E, , ,
Q Q Q Q> > >M M M  
? ? ? ? ?r(   r   c                   B    e Zd ZdZed             Zd	dZd Zd Zd Z	dS )

elliptic_fa  
    The Legendre incomplete elliptic integral of the first
    kind, defined by

    .. math:: F\left(z\middle| m\right) =
              \int_0^z \frac{dt}{\sqrt{1 - m \sin^2 t}}

    Explanation
    ===========

    This function reduces to a complete elliptic integral of
    the first kind, $K(m)$, when $z = \pi/2$.

    Note that our notation defines the incomplete elliptic integral
    in terms of the parameter $m$ instead of the elliptic modulus
    (eccentricity) $k$.
    In this case, the parameter $m$ is defined as $m=k^2$.

    Examples
    ========

    >>> from sympy import elliptic_f, I
    >>> from sympy.abc import z, m
    >>> elliptic_f(z, m).series(z)
    z + z**5*(3*m**2/40 - m/30) + m*z**3/6 + O(z**6)
    >>> elliptic_f(3.0 + I/2, 1.0 + I)
    2.909449841483 + 1.74720545502474*I

    See Also
    ========

    elliptic_k

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Elliptic_integrals
    .. [2] https://functions.wolfram.com/EllipticIntegrals/EllipticF

    c                 "   |j         rt          j        S |j         r|S d|z  t          z  }|j        r|t          |          z  S |t          j        t          j        fv rt          j        S |                                rt          | |           S d S rH   )
r   r   r#   r   
is_integerr   r!   r"   could_extract_minus_signr^   )r$   zr%   ks       r&   r'   zelliptic_f.eval   s    9 	6M9 	HaCF< 	&Z]]?"1:q12226M'')) 	&r1%%%%	& 	&r(   r   c                 F   | j         \  }}t          d|t          |          dz  z  z
            }|dk    rd|z  S |dk    rRt          ||          d|z  d|z
  z  z  t	          ||          d|z  z  z
  t          d|z            dd|z
  z  |z  z  z
  S t          | |          )Nr   r   r   )r*   r   r   r+   r^   r   )r,   r-   rb   r%   fms        r&   r.   zelliptic_f.fdiff   s    y1!aA	k/""q==R4K]]q!$$ac1q5k2Z15E5Eqs5KK!HHaQil+, - x000r(   c                     | j         \  }}|j        o	|dz
  j        du r:|                     |                                |                                          S d S )Nr   Fr0   r,   rb   r%   s      r&   r6   zelliptic_f._eval_conjugate   sR    y1I-1q5-%7799Q[[]]AKKMM::: 87r(   c           
          ddl m} t          t          d|          j                  }| j        d         | j        d         }} |dt          d|t          |          dz  z  z
            z  |d|f          S rN   )rR   rP   r	   r
   rS   r*   r   r   )r,   r*   rE   rP   rQ   rb   r%   s          r&   rT   z$elliptic_f._eval_rewrite_as_Integral   s{    666666'T22788y|TYq\1x4Ac!ffaiK001Aq!9===r(   c                 P    | j         \  }}|j        rdS |j        r	|j        rdS d S d S )NT)r*   r   is_extended_realrK   rg   s      r&   rL   zelliptic_f._eval_is_zero   sI    y19 	4 	!- 	4	 	 	 	r(   NrU   )
rW   rX   rY   rZ   r[   r'   r.   r6   rT   rL   r\   r(   r&   r^   r^   g   s{        ' 'R & & [&1 1 1 1; ; ;
> > >    r(   r^   c                   \     e Zd ZdZedd            ZddZd Zd fd	Zd	 Z	d
 Z
d Z xZS )r+   a  
    Called with two arguments $z$ and $m$, evaluates the
    incomplete elliptic integral of the second kind, defined by

    .. math:: E\left(z\middle| m\right) = \int_0^z \sqrt{1 - m \sin^2 t} dt

    Called with a single argument $m$, evaluates the Legendre complete
    elliptic integral of the second kind

    .. math:: E(m) = E\left(\tfrac{\pi}{2}\middle| m\right)

    Explanation
    ===========

    The function $E(m)$ is a single-valued function on the complex
    plane with branch cut along the interval $(1, \infty)$.

    Note that our notation defines the incomplete elliptic integral
    in terms of the parameter $m$ instead of the elliptic modulus
    (eccentricity) $k$.
    In this case, the parameter $m$ is defined as $m=k^2$.

    Examples
    ========

    >>> from sympy import elliptic_e, I
    >>> from sympy.abc import z, m
    >>> elliptic_e(z, m).series(z)
    z + z**5*(-m**2/40 + m/30) - m*z**3/6 + O(z**6)
    >>> elliptic_e(m).series(n=4)
    pi/2 - pi*m/8 - 3*pi*m**2/128 - 5*pi*m**3/512 + O(m**4)
    >>> elliptic_e(1 + I, 2 - I/2).n()
    1.55203744279187 + 0.290764986058437*I
    >>> elliptic_e(0)
    pi/2
    >>> elliptic_e(2.0 - I)
    0.991052601328069 + 0.81879421395609*I

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Elliptic_integrals
    .. [2] https://functions.wolfram.com/EllipticIntegrals/EllipticE2
    .. [3] https://functions.wolfram.com/EllipticIntegrals/EllipticE

    Nc                 4   |||}}d|z  t           z  }|j        r|S |j        rt          j        S |j        r|t          |          z  S |t          j        t          j        fv rt          j        S |	                                rt          | |           S d S |j        r
t           dz  S |t          j
        u rt          j
        S |t          j        u rt          t          j        z  S |t          j        u rt          j        S |t          j        u rt          j        S d S rH   )r   r   r   r#   r`   r+   r!   r"   r   ra   r   r   )r$   r%   rb   rc   s       r&   r'   zelliptic_e.eval   s   =aqA!BAy y *v *A&qz1#5666((++-- *"A2q))))* * y 	)!taeuaj|#a(((z!a'''(( ('r(   r   c                    t          | j                  dk    rc| j        \  }}|dk    r%t          d|t          |          dz  z  z
            S |dk    r't	          ||          t          ||          z
  d|z  z  S n8| j        d         }|dk    r%t	          |          t          |          z
  d|z  z  S t          | |          )Nr   r   r   )lenr*   r   r   r+   r^   r   r   )r,   r-   rb   r%   s       r&   r.   zelliptic_e.fdiff  s    ty>>Q9DAq1}}A#a&&!)O,,,Q"1a((:a+;+;;acBB  	!A1}}"1
15!<< x000r(   c                 v   t          | j                  dk    rY| j        \  }}|j        o	|dz
  j        du r:|                     |                                |                                          S d S | j        d         }|j        o	|dz
  j        du r'|                     |                                          S d S )Nr   r   Fr   rn   r*   r1   r2   r3   r4   rg   s      r&   r6   zelliptic_e._eval_conjugate  s    ty>>Q9DAq	1q1u1e;;yy>>> <; 	!A	1q1u1e;;yy/// <;r(   r   c                     ddl m} t          | j                  dk    r9 ||                     t
                                        |||                    S t                                          |||          S )Nr   r8   r   r:   )r=   r9   rn   r*   r>   r   r?   super)r,   r@   r;   r<   rA   r9   	__class__s         r&   r?   zelliptic_e._eval_nseries  sx    ......ty>>Q;t||E22@@ad@SSTTTww$$Q!$$777r(   c                     t          |          dk    rI|d         }t          dz  t          t          dd          t          j        ft          j        f|          z  S d S )Nr   r   r   r   )rn   r   r   r   r   r   r   r,   r*   rE   r%   s       r&   rF   z!elliptic_e._eval_rewrite_as_hyper$  sO    t99>>QAqD%"a!& 9AE8QGGGG >r(   c                     t          |          dk    rR|d         }t          t          j        t	          dd          fg ft          j        ft          j        ff|            dz  S d S )Nr   r   r   r   r   )rn   r   r   r   r   r#   ru   s       r&   rI   z#elliptic_e._eval_rewrite_as_meijerg)  sj    t99>>QAafhq!nn5r:fY	2QB8 8 889: : >r(   c           	      (   ddl m} t          | j                  dk    rt          dz  | j        d         fn| j        \  }}t          t          d|          j                  } |t          d|t          |          dz  z  z
            |d|f          S )Nr   rO   r   r   rQ   )
rR   rP   rn   r*   r   r	   r
   rS   r   r   )r,   r*   rE   rP   rb   r%   rQ   s          r&   rT   z$elliptic_e._eval_rewrite_as_Integral/  s    666666'*49~~':':1dil##	1'T22788xQ3q6619_--1ay999r(   rC   rU   rV   )rW   rX   rY   rZ   r[   r'   r.   r6   r?   rF   rI   rT   __classcell__)rs   s   @r&   r+   r+      s        - -^ ) ) ) [)41 1 1 10 0 08 8 8 8 8 8H H H
: : :: : : : : : :r(   r+   c                   >    e Zd ZdZedd            Zd Zd	dZd ZdS )
elliptic_piaO  
    Called with three arguments $n$, $z$ and $m$, evaluates the
    Legendre incomplete elliptic integral of the third kind, defined by

    .. math:: \Pi\left(n; z\middle| m\right) = \int_0^z \frac{dt}
              {\left(1 - n \sin^2 t\right) \sqrt{1 - m \sin^2 t}}

    Called with two arguments $n$ and $m$, evaluates the complete
    elliptic integral of the third kind:

    .. math:: \Pi\left(n\middle| m\right) =
              \Pi\left(n; \tfrac{\pi}{2}\middle| m\right)

    Explanation
    ===========

    Note that our notation defines the incomplete elliptic integral
    in terms of the parameter $m$ instead of the elliptic modulus
    (eccentricity) $k$.
    In this case, the parameter $m$ is defined as $m=k^2$.

    Examples
    ========

    >>> from sympy import elliptic_pi, I
    >>> from sympy.abc import z, n, m
    >>> elliptic_pi(n, z, m).series(z, n=4)
    z + z**3*(m/6 + n/3) + O(z**4)
    >>> elliptic_pi(0.5 + I, 1.0 - I, 1.2)
    2.50232379629182 - 0.760939574180767*I
    >>> elliptic_pi(0, 0)
    pi/2
    >>> elliptic_pi(1.0 - I/3, 2.0 + I)
    3.29136443417283 + 0.32555634906645*I

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Elliptic_integrals
    .. [2] https://functions.wolfram.com/EllipticIntegrals/EllipticPi3
    .. [3] https://functions.wolfram.com/EllipticIntegrals/EllipticPi

    Nc           	      x   ||||}}}|j         rt          ||          S |t          j        u r]t          ||          t	          d|t          |          dz  z  z
            t          |          z  t          ||          z
  d|z
  z  z   S d|z  t          z  }|j	        r|t          ||          z  S |j         rBt          t	          |dz
            t          |          z            t	          |dz
            z  S ||k    rXt          ||          t          d||          z
  t          |          t	          d|t          |          dz  z  z
            z  z   S |t          j        t          j        fv rt          j        S |t          j        t          j        fv rt          j        S |                                rt          || |           S |j         rt          ||          S |j        r|j        s|j        r|j        rt          j        S d S d S |j         rt%          |          S |t          j        u rt          j        S |j         rt          dt	          d|z
            z  z  S |t          j        k    rt          j        t)          |dz
            z  S ||k    rt          |          d|z
  z  S |t          j        t          j        fv rt          j        S |t          j        t          j        fv rt          j        S |j         rt%          |          S |j        r|j        s|j        r|j        rt          j        S d S d S )Nr   r   )r   r^   r   r   r   r   r   r+   r   r`   rz   r   r!   r"   r#   ra   rj   rK   r   r   r   )r$   r;   r%   rb   rc   s        r&   r'   zelliptic_pi.evalc  s<   =A!qAy 4!!Q'''ae"1a((a!CFFAI+o..s1vv5#Aq))*,-E33 4 !BA| .Q**** 
.T!a%[[Q/00a!e<<a"1a((;q!Q+?+??AtA#a&&!)O4445 6qz1#5666vqz1#5666v++-- .#Ar1----y (!!Q'''! am &+,=v    y !!}}$ae(( 	1T!a%[[=))ae)$q1u++55a!!}}a!e,,qz1#5666vqz1#5666vy %!!}}$! am &+,=v   r(   c                    t          | j                  dk    r| j        \  }}}|j        o	|dz
  j        du r`|j        o	|dz
  j        du rO|                     |                                |                                |                                          S d S d S | j        \  }}|                     |                                |                                          S )Nr   r   Frp   )r,   r;   rb   r%   s       r&   r6   zelliptic_pi._eval_conjugate  s    ty>>QiGAq!	1q1u1e;;	1q1u1e;;yyq{{}}MMM <;;; 9DAq99Q[[]]AKKMM:::r(   r   c                    t          | j                  dk    r,| j        \  }}}t          d|t          |          dz  z  z
            d|t          |          dz  z  z
  }}|dk    rvt	          ||          ||z
  t          ||          z  |z  z   |dz  |z
  t          |||          z  |z  z   ||z  t          d|z            z  d|z  z  z
  d||z
  z  |dz
  z  z  S |dk    rd||z  z  S |dk    rSt	          ||          |dz
  z  t          |||          z   |t          d|z            z  d|dz
  z  |z  z  z
  d||z
  z  z  S n| j        \  }}|dk    rTt	          |          ||z
  t          |          z  |z  z   |dz  |z
  t          ||          z  |z  z   d||z
  z  |dz
  z  z  S |dk    r/t	          |          |dz
  z  t          ||          z   d||z
  z  z  S t          | |          )Nr   r   r   )	rn   r*   r   r   r+   r^   rz   r   r   )r,   r-   r;   rb   r%   re   fns          r&   r.   zelliptic_pi.fdiff  sF   ty>>QiGAq!!aA	k/**A#a&&!)OB1}}"1a((AE:a3C3C+CA+EEA;q!Q#7#779:"S1XXqt,-/0!a%y!a%/@B B Q"R%y Q"1a((!a%0#Aq!,,-#ac((
Aq1uIbL1245q1uI? ? 
 9DAq1}}"1Q
1(=a(??A;q!#4#44Q679:AEAE9JL LQ"1q1u-Aq0A0AAAq1uINN x000r(   c                 ~   ddl m} t          | j                  dk    r%| j        d         | j        d         t          dz  }}}n| j        \  }}}t          t          d|          j                  } |dd|t          |          dz  z  z
  t          d|t          |          dz  z  z
            z  z  |d|f          S )Nr   rO   r   r   rQ   )
rR   rP   rn   r*   r   r	   r
   rS   r   r   )r,   r*   rE   rP   r;   r%   rb   rQ   s           r&   rT   z%elliptic_pi._eval_rewrite_as_Integral  s    666666ty>>QilDIaL"Q$!qAAiGAq!'T22788xA#a&&!)OT!aA	k/-B-BBCaAYOOOr(   rC   rU   )	rW   rX   rY   rZ   r[   r'   r6   r.   rT   r\   r(   r&   rz   rz   6  sw        * *X / / / [/b; ; ;1 1 1 1.P P P P Pr(   rz   N)rZ   
sympy.corer   r   r   r   sympy.core.functionr   r   sympy.core.symbolr	   r
   $sympy.functions.elementary.complexesr   %sympy.functions.elementary.hyperbolicr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   'sympy.functions.special.gamma_functionsr   sympy.functions.special.hyperr   r   r   r^   r+   rz   r\   r(   r&   <module>r      s     ) ) ) ) ) ) ) ) ) ) ) ) < < < < < < < < 9 9 9 9 9 9 9 9 5 5 5 5 5 5 7 7 7 7 7 7 9 9 9 9 9 9 = = = = = = = = 9 9 9 9 9 9 8 8 8 8 8 8 8 8W? W? W? W? W? W? W? W?tR R R R R R R Rjw: w: w: w: w: w: w: w:tGP GP GP GP GP( GP GP GP GP GPr(   