
    Ed؟                     :   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZm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mZ ddlmZ ddlmZ ddlmZmZm Z m!Z!m"Z"m#Z#m$Z$  e	d          Z% G d de          Z& G d de&          Z'd Z( G d de&          Z) G d de&          Z* G d de&          Z+ G d de          Z, G d de          Z- G d d e&          Z. G d! d"e          Z/ G d# d$e&          Z0 G d% d&e&          Z1 G d' d(e&          Z2d)S )*z
This module mainly implements special orthogonal polynomials.

See also functions.combinatorial.numbers which contains some
combinatorial polynomials.

    )Rational)FunctionArgumentIndexError)S)Dummy)binomial	factorialRisingFactorial)re)exp)floor)sqrt)cossec)gamma)hyper)chebyshevt_polychebyshevu_polygegenbauer_polyhermite_polyjacobi_polylaguerre_polylegendre_polyxc                   .    e Zd ZdZed             Zd ZdS )OrthogonalPolynomialz+Base class for orthogonal polynomials.
    c                     |j         rG|dk    rC|                     t          |          t                                        t          |          S d S d S )Nr   )
is_integer_ortho_polyint_xsubsclsnr   s      Clib/python3.11/site-packages/sympy/functions/special/polynomials.py_eval_at_orderz#OrthogonalPolynomial._eval_at_order    sU    < 	;AF 	;??3q662..33B:::	; 	; 	; 	;    c                 ~    |                      | j        d         | j        d                                                   S )Nr      )funcargs	conjugate)selfs    r&   _eval_conjugatez$OrthogonalPolynomial._eval_conjugate%   s.    yy1ty|'='='?'?@@@r(   N)__name__
__module____qualname____doc__classmethodr'   r/    r(   r&   r   r      sM          ; ; [;A A A A Ar(   r   c                   <    e Zd ZdZed             ZddZd Zd ZdS )	jacobia  
    Jacobi polynomial $P_n^{\left(\alpha, \beta\right)}(x)$.

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

    ``jacobi(n, alpha, beta, x)`` gives the $n$th Jacobi polynomial
    in $x$, $P_n^{\left(\alpha, \beta\right)}(x)$.

    The Jacobi polynomials are orthogonal on $[-1, 1]$ with respect
    to the weight $\left(1-x\right)^\alpha \left(1+x\right)^\beta$.

    Examples
    ========

    >>> from sympy import jacobi, S, conjugate, diff
    >>> from sympy.abc import a, b, n, x

    >>> jacobi(0, a, b, x)
    1
    >>> jacobi(1, a, b, x)
    a/2 - b/2 + x*(a/2 + b/2 + 1)
    >>> jacobi(2, a, b, x)
    a**2/8 - a*b/4 - a/8 + b**2/8 - b/8 + x**2*(a**2/8 + a*b/4 + 7*a/8 + b**2/8 + 7*b/8 + 3/2) + x*(a**2/4 + 3*a/4 - b**2/4 - 3*b/4) - 1/2

    >>> jacobi(n, a, b, x)
    jacobi(n, a, b, x)

    >>> jacobi(n, a, a, x)
    RisingFactorial(a + 1, n)*gegenbauer(n,
        a + 1/2, x)/RisingFactorial(2*a + 1, n)

    >>> jacobi(n, 0, 0, x)
    legendre(n, x)

    >>> jacobi(n, S(1)/2, S(1)/2, x)
    RisingFactorial(3/2, n)*chebyshevu(n, x)/factorial(n + 1)

    >>> jacobi(n, -S(1)/2, -S(1)/2, x)
    RisingFactorial(1/2, n)*chebyshevt(n, x)/factorial(n)

    >>> jacobi(n, a, b, -x)
    (-1)**n*jacobi(n, b, a, x)

    >>> jacobi(n, a, b, 0)
    gamma(a + n + 1)*hyper((-b - n, -n), (a + 1,), -1)/(2**n*factorial(n)*gamma(a + 1))
    >>> jacobi(n, a, b, 1)
    RisingFactorial(a + 1, n)/factorial(n)

    >>> conjugate(jacobi(n, a, b, x))
    jacobi(n, conjugate(a), conjugate(b), conjugate(x))

    >>> diff(jacobi(n,a,b,x), x)
    (a/2 + b/2 + n/2 + 1/2)*jacobi(n - 1, a + 1, b + 1, x)

    See Also
    ========

    gegenbauer,
    chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly,
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Jacobi_polynomials
    .. [2] http://mathworld.wolfram.com/JacobiPolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/JacobiP/

    c                 N   ||k    r |t          dd          k    r;t          t          j        |          t	          |          z  t          ||          z  S |j        rt          ||          S |t          j        k    rAt          dt          j        z  |          t	          |dz             z  t          ||          z  S t          |dz   |          t          d|z  dz   |          z  t          ||t          j        z   |          z  S || k    rSt          ||z   dz             t          |dz             z  d|z   |dz  z  z  d|z
  |dz  z  z  t          || |          z  S |j        s+|                                r#t          j        |z  t          ||||           z  S |j        r\d| z  t          ||z   dz             z  t          |dz             t	          |          z  z  t!          | |z
  | g|dz   gd          z  S |t          j        k    r#t          |dz   |          t	          |          z  S |t          j        u rL|j        rG||z   d|z  z   j        rt+          d          t          ||z   |z   dz   |          t          j        z  S d S d S t-          ||||          S )N      r*   z,Error. a + b + 2*n should not be an integer.)r   r
   r   Halfr	   
chebyshevtis_zerolegendre
chebyshevu
gegenbauerr   assoc_legendre	is_Numbercould_extract_minus_signNegativeOner7   r   OneInfinityis_positiver   
ValueErrorr   )r$   r%   abr   s        r&   evalzjacobi.eval~   s    6 	pHROO# n&qvq11IaLL@:aQRCSCSSS n1~~%af n&qx33iA6F6FFTUWXIYIYYY&q1ua00?1Q37A3N3NNQ[\]_`cdci_iklQmQmmm1"W 	pQ##eAEll2a!eqs^Cq1uPQRSPSnTWefgjkikmnWoWooo{ 	+ ))++ >}a'&Aq1"*=*===y :QB%A	"2"22eAEllYq\\6QRrAvrlQUGR889 :AEz J&q1ua009Q<<??aj J= JA!/ Y()WXXX*1q519q=!<<qzIIJ JJ J q!Q***r(      c                    ddl m} |dk    rt          | |          |dk    r| j        \  }}}}t	          d          }d||z   |z   |z   dz   z  }||z   d|z  z   dz   t          ||z   dz   ||z
            z  ||z
  t          ||z   |z   dz   ||z
            z  z  }	 ||t          ||||          |	t          ||||          z  z   z  |d|dz
  f          S |dk    r| j        \  }}}}t	          d          }d||z   |z   |z   dz   z  }d||z
  z  ||z   d|z  z   dz   t          ||z   dz   ||z
            z  ||z
  t          ||z   |z   dz   ||z
            z  z  z  }	 ||t          ||||          |	t          ||||          z  z   z  |d|dz
  f          S |dk    r@| j        \  }}}}t          j        ||z   |z   dz   z  t          |dz
  |dz   |dz   |          z  S t          | |          )	Nr   Sumr*   r:   kr;   r9   rM   )	sympy.concrete.summationsrP   r   r,   r   r
   r7   r   r<   )
r.   argindexrP   r%   rJ   rK   r   rQ   f1f2s
             r&   fdiffzjacobi.fdiff   st   111111q= 	5$T8444] 	5JAq!Qc

Aa!eai!ma'(Bq51Q3;?oa!eaiQ&G&GGE_QUQY]AEBBBDB3rVAq!Q//"VAq!Q5G5G2GGH1aQRUVQV-XXX] 	5JAq!Qc

Aa!eai!ma'(BA1q51Q3;?oa!eaiQRUVQV6W6W"WE_QUQY]AEBBB#D EB3rVAq!Q//"VAq!Q5G5G2GGH1aQRUVQV-XXX] 	5JAq!Q6QUQY]+fQUAE1q5!.L.LLL$T8444r(   c                 p   ddl m} |j        s	|j        du rt	          d          t          d          }t          | |          t          ||z   |z   dz   |          z  t          ||z   dz   ||z
            z  t          |          z  d|z
  dz  |z  z  }dt          |          z   |||d|f          z  S )Nr   rO   F*Error: n should be a non-negative integer.rQ   r*   r:   )rR   rP   is_negativer   rI   r   r
   r	   )	r.   r%   rJ   rK   r   kwargsrP   rQ   kerns	            r&   _eval_rewrite_as_polynomialz"jacobi._eval_rewrite_as_polynomial   s    111111= 	KALE1 	KIJJJ#JJA&&QQ)J)JJ_]^ab]bef]fhilmhmMnMnn!!"Q	A~.9Q<<##dQ1I"6"666r(   c                     | j         \  }}}}|                     ||                                |                                |                                          S Nr,   r+   r-   )r.   r%   rJ   rK   r   s        r&   r/   zjacobi._eval_conjugate   sA    Y
1ayyAKKMM1;;==!++--HHHr(   N)rM   	r0   r1   r2   r3   r4   rL   rV   r\   r/   r5   r(   r&   r7   r7   -   st        N N` #+ #+ [#+J5 5 5 587 7 7I I I I Ir(   r7   c                 >   t          d          ||z   dz   z  t          | |z   dz             t          | |z   dz             z  z  d| z  |z   |z   dz   z  t          |           t          | |z   |z   dz             z  z  }t          | |||          t	          |          z  S )a  
    Jacobi polynomial $P_n^{\left(\alpha, \beta\right)}(x)$.

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

    ``jacobi_normalized(n, alpha, beta, x)`` gives the $n$th
    Jacobi polynomial in $x$, $P_n^{\left(\alpha, \beta\right)}(x)$.

    The Jacobi polynomials are orthogonal on $[-1, 1]$ with respect
    to the weight $\left(1-x\right)^\alpha \left(1+x\right)^\beta$.

    This functions returns the polynomials normilzed:

    .. math::

        \int_{-1}^{1}
          P_m^{\left(\alpha, \beta\right)}(x)
          P_n^{\left(\alpha, \beta\right)}(x)
          (1-x)^{\alpha} (1+x)^{\beta} \mathrm{d}x
        = \delta_{m,n}

    Examples
    ========

    >>> from sympy import jacobi_normalized
    >>> from sympy.abc import n,a,b,x

    >>> jacobi_normalized(n, a, b, x)
    jacobi(n, a, b, x)/sqrt(2**(a + b + 1)*gamma(a + n + 1)*gamma(b + n + 1)/((a + b + 2*n + 1)*factorial(n)*gamma(a + b + n + 1)))

    Parameters
    ==========

    n : integer degree of polynomial

    a : alpha value

    b : beta value

    x : symbol

    See Also
    ========

    gegenbauer,
    chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly,
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Jacobi_polynomials
    .. [2] http://mathworld.wolfram.com/JacobiPolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/JacobiP/

    r:   r*   )r   r   r	   r7   r   )r%   rJ   rK   r   nfactors        r&   jacobi_normalizedrc      s    F tta!eai E!a%!)$4$4uQUQY7G7G$GHA#'A+/#&/llU1q519q=5I5I&IKG !Q1W--r(   c                   <    e Zd ZdZed             ZddZd Zd ZdS )	rA   a  
    Gegenbauer polynomial $C_n^{\left(\alpha\right)}(x)$.

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

    ``gegenbauer(n, alpha, x)`` gives the $n$th Gegenbauer polynomial
    in $x$, $C_n^{\left(\alpha\right)}(x)$.

    The Gegenbauer polynomials are orthogonal on $[-1, 1]$ with
    respect to the weight $\left(1-x^2\right)^{\alpha-\frac{1}{2}}$.

    Examples
    ========

    >>> from sympy import gegenbauer, conjugate, diff
    >>> from sympy.abc import n,a,x
    >>> gegenbauer(0, a, x)
    1
    >>> gegenbauer(1, a, x)
    2*a*x
    >>> gegenbauer(2, a, x)
    -a + x**2*(2*a**2 + 2*a)
    >>> gegenbauer(3, a, x)
    x**3*(4*a**3/3 + 4*a**2 + 8*a/3) + x*(-2*a**2 - 2*a)

    >>> gegenbauer(n, a, x)
    gegenbauer(n, a, x)
    >>> gegenbauer(n, a, -x)
    (-1)**n*gegenbauer(n, a, x)

    >>> gegenbauer(n, a, 0)
    2**n*sqrt(pi)*gamma(a + n/2)/(gamma(a)*gamma(1/2 - n/2)*gamma(n + 1))
    >>> gegenbauer(n, a, 1)
    gamma(2*a + n)/(gamma(2*a)*gamma(n + 1))

    >>> conjugate(gegenbauer(n, a, x))
    gegenbauer(n, conjugate(a), conjugate(x))

    >>> diff(gegenbauer(n, a, x), x)
    2*a*gegenbauer(n - 1, a + 1, x)

    See Also
    ========

    jacobi,
    chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Gegenbauer_polynomials
    .. [2] http://mathworld.wolfram.com/GegenbauerPolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/GegenbauerC3/

    c                    |j         rt          j        S |t          j        k    rt	          ||          S |t          j        k    rt          ||          S |t          j        k    rt          j        S |j        s|t          j        k    rt          |          t          j        k    dk    rt          j
        S t          t          j        ||z   z            t          t          j        |z            z  t          d|z  |z             z  t          d|z            t          |dz             z  z  S |                                r"t          j        |z  t!          |||           z  S |j        rxd|z  t%          t          j                  z  t          |t          j        |z  z             z  t          d|z
  dz            t          |dz             z  t          |          z  z  S |t          j        k    r;t          d|z  |z             t          d|z            t          |dz             z  z  S |t          j        u r$|j        rt+          ||          t          j        z  S d S d S t-          |||          S )NTr:   r*   )rY   r   Zeror<   r?   rF   r@   rE   rC   r   ComplexInfinityr   Pir   r   rD   rA   r>   r   rG   rH   r
   r   )r$   r%   rJ   r   s       r&   rL   zgegenbauer.evala  s;    = 	6M ; 	Aq>>!!%Z 	a###!- 	6M{ 	,AM! ;qEEAFNt+ ;,,ac
OOc!$q&kk9E!A#a%LLH!&qseAaCjj!8: ;
 ))++ ?}a'*QA2*>*>>>y G1tADzz)E!afQh,,?,??Aqy))E!a%LL8588CE GAEz >QqS1W~~qseAEll)BCCaj >= >*1a001:==> >> > #1a+++r(   r;   c                    ddl m} |dk    rt          | |          |dk    r| j        \  }}}t	          d          }ddd||z
  z  z   z  ||z   z  ||z   d|z  z   ||z
  z  z  }d|dz   z  |d|z  z   d|z  d|z  z   dz   z  z  d||z   d|z  z   z  z   }|t          |||          z  |t          |||          z  z   }	 ||	|d|dz
  f          S |dk    r(| j        \  }}}d|z  t          |dz
  |dz   |          z  S t          | |          )Nr   rO   r*   r:   rQ   r9   r;   )rR   rP   r   r,   r   rA   )
r.   rS   rP   r%   rJ   r   rQ   factor1factor2r[   s
             r&   rV   zgegenbauer.fdiff  sw   111111q= 	5$T8444] 	5iGAq!c

A1a!e},-Q7A= s=#'(1u<. /GQiA!G!ac	A#>?QUQqS[!"G:aA...Aq!9L9L1LLD3taAE]+++] 	5iGAq!Q3z!a%Q2222$T8444r(   c           	         ddl m} t          d          }d|z  t          |||z
            z  d|z  |d|z  z
  z  z  t	          |          t	          |d|z  z
            z  z  } |||dt          |dz            f          S )Nr   rO   rQ   r9   r:   )rR   rP   r   r
   r	   r   )r.   r%   rJ   r   rZ   rP   rQ   r[   s           r&   r\   z&gegenbauer._eval_rewrite_as_polynomial  s    111111#JJa/!QU333qsa!A#g6FF1	!ac' 2 224s4!Qac

+,,,r(   c                     | j         \  }}}|                     ||                                |                                          S r^   r_   )r.   r%   rJ   r   s       r&   r/   zgegenbauer._eval_conjugate  5    )1ayyAKKMM1;;==999r(   Nr;   r`   r5   r(   r&   rA   rA     so        A AF &, &, [&,P5 5 5 5,- - -: : : : :r(   rA   c                   L    e Zd ZdZ ee          Zed             ZddZ	d Z
dS )r=   a  
    Chebyshev polynomial of the first kind, $T_n(x)$.

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

    ``chebyshevt(n, x)`` gives the $n$th Chebyshev polynomial (of the first
    kind) in $x$, $T_n(x)$.

    The Chebyshev polynomials of the first kind are orthogonal on
    $[-1, 1]$ with respect to the weight $\frac{1}{\sqrt{1-x^2}}$.

    Examples
    ========

    >>> from sympy import chebyshevt, diff
    >>> from sympy.abc import n,x
    >>> chebyshevt(0, x)
    1
    >>> chebyshevt(1, x)
    x
    >>> chebyshevt(2, x)
    2*x**2 - 1

    >>> chebyshevt(n, x)
    chebyshevt(n, x)
    >>> chebyshevt(n, -x)
    (-1)**n*chebyshevt(n, x)
    >>> chebyshevt(-n, x)
    chebyshevt(n, x)

    >>> chebyshevt(n, 0)
    cos(pi*n/2)
    >>> chebyshevt(n, -1)
    (-1)**n

    >>> diff(chebyshevt(n, x), x)
    n*chebyshevu(n - 1, x)

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Chebyshev_polynomial
    .. [2] http://mathworld.wolfram.com/ChebyshevPolynomialoftheFirstKind.html
    .. [3] http://mathworld.wolfram.com/ChebyshevPolynomialoftheSecondKind.html
    .. [4] http://functions.wolfram.com/Polynomials/ChebyshevT/
    .. [5] http://functions.wolfram.com/Polynomials/ChebyshevU/

    c                    |j         s|                                r!t          j        |z  t	          ||           z  S |                                rt	          | |          S |j        r)t          t          j        t          j        z  |z            S |t          j	        k    rt          j	        S |t          j
        u rt          j
        S d S |j        r|                     | |          S |                     ||          S r^   )rC   rD   r   rE   r=   r>   r   r<   rh   rF   rG   rY   r'   r#   s      r&   rL   zchebyshevt.eval  s    { 	0 ))++ <}a'*Q*;*;;;))++ )!1"a(((y .16AD=1,---AEz "uaj "z!" " } 0))1"a000))!Q///r(   r:   c                     |dk    rt          | |          |dk    r | j        \  }}|t          |dz
  |          z  S t          | |          Nr*   r:   )r   r,   r@   r.   rS   r%   r   s       r&   rV   zchebyshevt.fdiff  s^    q= 	5$T8444] 	59DAqz!a%++++$T8444r(   c           	          ddl m} t          d          }t          |d|z            |dz  dz
  |z  z  ||d|z  z
  z  z  } |||dt	          |dz            f          S Nr   rO   rQ   r:   r*   )rR   rP   r   r   r   r.   r%   r   rZ   rP   rQ   r[   s          r&   r\   z&chebyshevt._eval_rewrite_as_polynomial  sw    111111#JJ1Q31a4!8a-/!a!A#g,>s4!Qac

+,,,r(   Nr:   )r0   r1   r2   r3   staticmethodr   r   r4   rL   rV   r\   r5   r(   r&   r=   r=     sn        @ @D ,//K0 0 [00	5 	5 	5 	5- - - - -r(   r=   c                   L    e Zd ZdZ ee          Zed             ZddZ	d Z
dS )r@   a  
    Chebyshev polynomial of the second kind, $U_n(x)$.

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

    ``chebyshevu(n, x)`` gives the $n$th Chebyshev polynomial of the second
    kind in x, $U_n(x)$.

    The Chebyshev polynomials of the second kind are orthogonal on
    $[-1, 1]$ with respect to the weight $\sqrt{1-x^2}$.

    Examples
    ========

    >>> from sympy import chebyshevu, diff
    >>> from sympy.abc import n,x
    >>> chebyshevu(0, x)
    1
    >>> chebyshevu(1, x)
    2*x
    >>> chebyshevu(2, x)
    4*x**2 - 1

    >>> chebyshevu(n, x)
    chebyshevu(n, x)
    >>> chebyshevu(n, -x)
    (-1)**n*chebyshevu(n, x)
    >>> chebyshevu(-n, x)
    -chebyshevu(n - 2, x)

    >>> chebyshevu(n, 0)
    cos(pi*n/2)
    >>> chebyshevu(n, 1)
    n + 1

    >>> diff(chebyshevu(n, x), x)
    (-x*chebyshevu(n, x) + (n + 1)*chebyshevt(n + 1, x))/(x**2 - 1)

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt, chebyshevt_root, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Chebyshev_polynomial
    .. [2] http://mathworld.wolfram.com/ChebyshevPolynomialoftheFirstKind.html
    .. [3] http://mathworld.wolfram.com/ChebyshevPolynomialoftheSecondKind.html
    .. [4] http://functions.wolfram.com/Polynomials/ChebyshevT/
    .. [5] http://functions.wolfram.com/Polynomials/ChebyshevU/

    c                    |j         s|                                r!t          j        |z  t	          ||           z  S |                                rI|t          j        k    rt          j        S | dz
                                  st	          | dz
  |           S |j        r)t          t          j        t          j	        z  |z            S |t          j
        k    rt          j
        |z   S |t          j        u rt          j        S d S |j        r7|t          j        k    rt          j        S |                     | dz
  |           S |                     ||          S )Nr:   )rC   rD   r   rE   r@   rf   r>   r   r<   rh   rF   rG   rY   r'   r#   s      r&   rL   zchebyshevu.evale  sS   { 	0 ))++ <}a'*Q*;*;;;))++ 2% 26M"q&::<< 2&rAvq1111y .16AD=1,---AEz "uqy aj "z!" " } 0% :6M..rAvq9999))!Q///r(   r:   c                     |dk    rt          | |          |dk    r@| j        \  }}|dz   t          |dz   |          z  |t          ||          z  z
  |dz  dz
  z  S t          | |          rs   )r   r,   r=   r@   rt   s       r&   rV   zchebyshevu.fdiff  s    q= 	5$T8444] 	59DAqUjQ222QAq9I9I5IIaQRdUVhWW$T8444r(   c           	         ddl m} t          d          }t          j        |z  t          ||z
            z  d|z  |d|z  z
  z  z  t          |          t          |d|z  z
            z  z  } |||dt          |dz            f          S Nr   rO   rQ   r:   rR   rP   r   r   rE   r	   r   rw   s          r&   r\   z&chebyshevu._eval_rewrite_as_polynomial  s    111111#JJ}a)E# # cQ1W%&)21	!ac'8J8J)JLs4!Qac

+,,,r(   Nrx   )r0   r1   r2   r3   ry   r   r   r4   rL   rV   r\   r5   r(   r&   r@   r@      sn        @ @D ,//K0 0 [0>	5 	5 	5 	5- - - - -r(   r@   c                   (    e Zd ZdZed             ZdS )chebyshevt_rootaR  
    ``chebyshev_root(n, k)`` returns the $k$th root (indexed from zero) of
    the $n$th Chebyshev polynomial of the first kind; that is, if
    $0 \le k < n$, ``chebyshevt(n, chebyshevt_root(n, k)) == 0``.

    Examples
    ========

    >>> from sympy import chebyshevt, chebyshevt_root
    >>> chebyshevt_root(3, 2)
    -sqrt(3)/2
    >>> chebyshevt(3, chebyshevt_root(3, 2))
    0

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly
    c                     d|k    r||k     st          d|d|          t          t          j        d|z  dz   z  d|z  z            S )Nr   must have 0 <= k < n, got k = 	 and n = r:   r*   rI   r   r   rh   r$   r%   rQ   s      r&   rL   zchebyshevt_root.eval  sb    a 	2a!e 	2*+,11aa1 2 2 2141q>1Q3'(((r(   Nr0   r1   r2   r3   r4   rL   r5   r(   r&   r   r     s9         > ) ) [) ) )r(   r   c                   (    e Zd ZdZed             ZdS )chebyshevu_roota<  
    ``chebyshevu_root(n, k)`` returns the $k$th root (indexed from zero) of the
    $n$th Chebyshev polynomial of the second kind; that is, if $0 \le k < n$,
    ``chebyshevu(n, chebyshevu_root(n, k)) == 0``.

    Examples
    ========

    >>> from sympy import chebyshevu, chebyshevu_root
    >>> chebyshevu_root(3, 2)
    -sqrt(2)/2
    >>> chebyshevu(3, chebyshevu_root(3, 2))
    0

    See Also
    ========

    chebyshevt, chebyshevt_root, chebyshevu,
    legendre, assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly
    c                     d|k    r||k     st          d|d|          t          t          j        |dz   z  |dz   z            S )Nr   r   r   r*   r   r   s      r&   rL   zchebyshevu_root.eval  s^    a 	2a!e 	2*+,11aa1 2 2 214Q<Q'(((r(   Nr   r5   r(   r&   r   r     s9         > ) ) [) ) )r(   r   c                   L    e Zd ZdZ ee          Zed             ZddZ	d Z
dS )r?   ay  
    ``legendre(n, x)`` gives the $n$th Legendre polynomial of $x$, $P_n(x)$

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

    The Legendre polynomials are orthogonal on $[-1, 1]$ with respect to
    the constant weight 1. They satisfy $P_n(1) = 1$ for all $n$; further,
    $P_n$ is odd for odd $n$ and even for even $n$.

    Examples
    ========

    >>> from sympy import legendre, diff
    >>> from sympy.abc import x, n
    >>> legendre(0, x)
    1
    >>> legendre(1, x)
    x
    >>> legendre(2, x)
    3*x**2/2 - 1/2
    >>> legendre(n, x)
    legendre(n, x)
    >>> diff(legendre(n,x), x)
    n*(x*legendre(n, x) - legendre(n - 1, x))/(x**2 - 1)

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt, chebyshevt_root, chebyshevu, chebyshevu_root,
    assoc_legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Legendre_polynomial
    .. [2] http://mathworld.wolfram.com/LegendrePolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/LegendreP/
    .. [4] http://functions.wolfram.com/Polynomials/LegendreP2/

    c                    |j         s|                                r!t          j        |z  t	          ||           z  S |                                r6| dz
                                  st	          | t          j        z
  |          S |j        rYt          t          j                  t          t          j
        |dz  z
            t          t          j        |dz  z             z  z  S |t          j        k    rt          j        S |t          j        u rt          j        S d S |j        r| t          j        z
  }|                     ||          S rs   )rC   rD   r   rE   r?   rF   r>   r   rh   r   r<   rG   rY   r'   r#   s      r&   rL   zlegendre.eval#  s-   { 	, ))++ :}a'(1qb//99))++ /QBF3T3T3V3V /QU
A...y "ADzz5!A##6#6uQUQqS[7I7I#IJJae "uaj "z!" "
 } BJ%%a+++r(   r:   c                     |dk    rt          | |          |dk    r=| j        \  }}||dz  dz
  z  |t          ||          z  t          |dz
  |          z
  z  S t          | |          rs   )r   r,   r?   rt   s       r&   rV   zlegendre.fdiff;  s~    q= 	5$T8444] 	5 9DAqadQh<8Aq>>!1HQUA4F4F!FGG$T8444r(   c                     ddl m} t          d          }t          j        |z  t          ||          dz  z  d|z   dz  ||z
  z  z  d|z
  dz  |z  z  } |||d|f          S rv   )rR   rP   r   r   rE   r   rw   s          r&   r\   z$legendre._eval_rewrite_as_polynomialS  s~    111111#JJ}aA 11AE19A2FFQPQ	TU~Us4!Q###r(   Nrx   )r0   r1   r2   r3   ry   r   r   r4   rL   rV   r\   r5   r(   r&   r?   r?     sl        2 2h ,}--K, , [,.5 5 5 50$ $ $ $ $r(   r?   c                   R    e Zd ZdZed             Zed             Zd	dZd Zd Z	dS )
rB   a]  
    ``assoc_legendre(n, m, x)`` gives $P_n^m(x)$, where $n$ and $m$ are
    the degree and order or an expression which is related to the nth
    order Legendre polynomial, $P_n(x)$ in the following manner:

    .. math::
        P_n^m(x) = (-1)^m (1 - x^2)^{\frac{m}{2}}
                   \frac{\mathrm{d}^m P_n(x)}{\mathrm{d} x^m}

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

    Associated Legendre polynomials are orthogonal on $[-1, 1]$ with:

    - weight $= 1$            for the same $m$ and different $n$.
    - weight $= \frac{1}{1-x^2}$   for the same $n$ and different $m$.

    Examples
    ========

    >>> from sympy import assoc_legendre
    >>> from sympy.abc import x, m, n
    >>> assoc_legendre(0,0, x)
    1
    >>> assoc_legendre(1,0, x)
    x
    >>> assoc_legendre(1,1, x)
    -sqrt(1 - x**2)
    >>> assoc_legendre(n,m,x)
    assoc_legendre(n, m, x)

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt, chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre,
    hermite,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Associated_Legendre_polynomials
    .. [2] http://mathworld.wolfram.com/LegendrePolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/LegendreP/
    .. [4] http://functions.wolfram.com/Polynomials/LegendreP2/

    c                     t          |t          d                              t          |f          }t          j        |z  dt          dz  z
  t          |d          z  z  |                                z  S )NT)polysr*   r:   )r   r!   diffr   rE   r   as_expr)r$   r%   mPs       r&   r'   zassoc_legendre._eval_at_order  s\    !Rt,,,112q'::}a1r1u9x1~~"==		KKr(   c                    |                                 rIt          j        | z  t          ||z             t          ||z
            z  z  t	          || |          z  S |dk    rt          ||          S |dk    rQd|z  t          t          j                  z  t          d|z
  |z
  dz            t          d||z
  dz  z
            z  z  S |j	        r|j	        r|j
        r|j
        r|j        rt          | d|d          t          |          |k    rt          | d|d|d          |                     t          |          t          t          |                                                  t"          |          S d S d S d S d S )Nr   r:   r*   z. : 1st index must be nonnegative integer (got )z0 : abs('2nd index') must be <= '1st index' (got z, )rD   r   rE   r	   rB   r?   r   rh   r   rC   r   rY   rI   absr'   r    r"   r!   )r$   r%   r   r   s       r&   rL   zassoc_legendre.eval  s   %%'' 	h=A2&)AE*:*:9QU;K;K*KL~^_bcacefOgOggg6 	"Aq>>!6 	Qa4QT

?eQUQYM&:&:5a!eQY;O;O&OPP; 	G1; 	G1< 	GAL 	G} c Z]Z]Z]_`_`_`!abbb1vvz l `c`c`cefefefhihihi!jkkk%%c!ffc#a&&kk::??AFFF	G 	G 	G 	G 	G 	G 	G 	Gr(   r;   c                    |dk    rt          | |          |dk    rt          | |          |dk    rI| j        \  }}}d|dz  dz
  z  ||z  t          |||          z  ||z   t          |dz
  ||          z  z
  z  S t          | |          )Nr*   r:   r;   )r   r,   rB   )r.   rS   r%   r   r   s        r&   rV   zassoc_legendre.fdiff  s    q= 	5$T8444] 		5$T8444] 	5 iGAq!adQh<1^Aq!%<%<!<A~VWZ[V[]^`aGbGb?b!bcc$T8444r(   c           
         ddl m} t          d          }t          d|z  d|z  z
            d|z  t          ||z
            z  t          |          z  t          |d|z  z
  |z
            z  z  t          j        |z  z  |||z
  d|z  z
  z  z  }d|dz  z
  |dz  z   |||dt          ||z
  t          j        z            f          z  S rv   )rR   rP   r   r	   r   rE   r   r<   )r.   r%   r   r   rZ   rP   rQ   r[   s           r&   r\   z*assoc_legendre._eval_rewrite_as_polynomial  s    111111#JJ1qs##QT)AE*:*:%:9< < &QqS1%%&& ''(}a'7889AEAaCK8HIAqDAaC 33taE1q5!&.4I4I-J#K#KKKr(   c                     | j         \  }}}|                     ||                                |                                          S r^   r_   )r.   r%   r   r   s       r&   r/   zassoc_legendre._eval_conjugate  rn   r(   Nro   )
r0   r1   r2   r3   r4   r'   rL   rV   r\   r/   r5   r(   r&   rB   rB   Z  s        7 7r L L [L G G [G 5 5 5 5L L L: : : : :r(   rB   c                   L    e Zd ZdZ ee          Zed             ZddZ	d Z
dS )hermitea  
    ``hermite(n, x)`` gives the $n$th Hermite polynomial in $x$, $H_n(x)$

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

    The Hermite polynomials are orthogonal on $(-\infty, \infty)$
    with respect to the weight $\exp\left(-x^2\right)$.

    Examples
    ========

    >>> from sympy import hermite, diff
    >>> from sympy.abc import x, n
    >>> hermite(0, x)
    1
    >>> hermite(1, x)
    2*x
    >>> hermite(2, x)
    4*x**2 - 2
    >>> hermite(n, x)
    hermite(n, x)
    >>> diff(hermite(n,x), x)
    2*n*hermite(n - 1, x)
    >>> hermite(n, -x)
    (-1)**n*hermite(n, x)

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt, chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    laguerre, assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Hermite_polynomial
    .. [2] http://mathworld.wolfram.com/HermitePolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/HermiteH/

    c                    |j         s|                                r!t          j        |z  t	          ||           z  S |j        r?d|z  t          t          j                  z  t          t          j	        |z
  dz            z  S |t          j
        u rt          j
        S d S |j        rt          d|z            |                     ||          S )Nr:   0The index n must be nonnegative integer (got %r))rC   rD   r   rE   r   r>   r   rh   r   rF   rG   rY   rI   r'   r#   s      r&   rL   zhermite.eval  s    { 	0 ))++ 9}a''!aR..88y "!td14jj(5!%!)Q+?+???aj "z!" " } 0 FJL L L ))!Q///r(   r:   c                     |dk    rt          | |          |dk    r#| j        \  }}d|z  t          |dz
  |          z  S t          | |          rs   )r   r,   r   rt   s       r&   rV   zhermite.fdiff  sb    q= 	5$T8444] 	59DAqQ3wq1ua(((($T8444r(   c           
         ddl m} t          d          }t          j        |z  t          |          t          |d|z  z
            z  z  d|z  |d|z  z
  z  z  }t          |           |||dt          |dz            f          z  S r~   r   rw   s          r&   r\   z#hermite._eval_rewrite_as_polynomial  s    111111#JJ}a9Q<<	!ac'0B0B#BCqsaRSTURUgFVV||CCq!U1Q3ZZ&89999r(   Nrx   )r0   r1   r2   r3   ry   r   r   r4   rL   rV   r\   r5   r(   r&   r   r     sl        1 1f ,|,,K0 0 [0&	5 	5 	5 	5: : : : :r(   r   c                   L    e Zd ZdZ ee          Zed             ZddZ	d Z
dS )laguerrea  
    Returns the $n$th Laguerre polynomial in $x$, $L_n(x)$.

    Examples
    ========

    >>> from sympy import laguerre, diff
    >>> from sympy.abc import x, n
    >>> laguerre(0, x)
    1
    >>> laguerre(1, x)
    1 - x
    >>> laguerre(2, x)
    x**2/2 - 2*x + 1
    >>> laguerre(3, x)
    -x**3/6 + 3*x**2/2 - 3*x + 1

    >>> laguerre(n, x)
    laguerre(n, x)

    >>> diff(laguerre(n, x), x)
    -assoc_laguerre(n - 1, 1, x)

    Parameters
    ==========

    n : int
        Degree of Laguerre polynomial. Must be `n \ge 0`.

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt, chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    assoc_laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Laguerre_polynomial
    .. [2] http://mathworld.wolfram.com/LaguerrePolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/LaguerreL/
    .. [4] http://functions.wolfram.com/Polynomials/LaguerreL3/

    c                    |j         du rt          d          |j        s|                                r=| dz
                                  s%t	          |          t          | dz
  |           z  S |j        rt          j        S |t          j	        u rt          j
        S |t          j
        u rt          j        |z  t          j
        z  S d S |j        r%t	          |          t          | dz
  |           z  S |                     ||          S )NFError: n should be an integer.r*   )r   rI   rC   rD   r   r   r>   r   rF   NegativeInfinityrG   rE   rY   r'   r#   s      r&   rL   zlaguerre.evalc  s   <5  	?=>>>{ 	0 ))++ 3QBF3T3T3V3V 31vvhrAvr2222y 5ua(( 5z!aj 5}a'!*445 5 } 01vvhrAvr2222))!Q///r(   r:   c                     |dk    rt          | |          |dk    r| j        \  }}t          |dz
  d|           S t          | |          rs   )r   r,   assoc_laguerrert   s       r&   rV   zlaguerre.fdiffz  s^    q= 	5$T8444] 	59DAq"1q5!Q////$T8444r(   c                 $   ddl m} |j        r$t          |           | j        | dz
  | fi |z  S |j        du rt          d          t          d          }t          | |          t          |          dz  z  ||z  z  } |||d|f          S )Nr   rO   r*   Fr   rQ   r:   )
rR   rP   rY   r   r\   r   rI   r   r
   r	   rw   s          r&   r\   z$laguerre._eval_rewrite_as_polynomial  s    111111= 	Sq66<D<aR!VaRRR6RRRR<5  	?=>>>#JJr1%%	!a7!Q$>s4!Q###r(   Nrx   )r0   r1   r2   r3   ry   r   r   r4   rL   rV   r\   r5   r(   r&   r   r   )  sl        5 5n ,}--K0 0 [0,	5 	5 	5 	5	$ 	$ 	$ 	$ 	$r(   r   c                   <    e Zd ZdZed             ZddZd Zd ZdS )	r   a,  
    Returns the $n$th generalized Laguerre polynomial in $x$, $L_n(x)$.

    Examples
    ========

    >>> from sympy import assoc_laguerre, diff
    >>> from sympy.abc import x, n, a
    >>> assoc_laguerre(0, a, x)
    1
    >>> assoc_laguerre(1, a, x)
    a - x + 1
    >>> assoc_laguerre(2, a, x)
    a**2/2 + 3*a/2 + x**2/2 + x*(-a - 2) + 1
    >>> assoc_laguerre(3, a, x)
    a**3/6 + a**2 + 11*a/6 - x**3/6 + x**2*(a/2 + 3/2) +
        x*(-a**2/2 - 5*a/2 - 3) + 1

    >>> assoc_laguerre(n, a, 0)
    binomial(a + n, a)

    >>> assoc_laguerre(n, a, x)
    assoc_laguerre(n, a, x)

    >>> assoc_laguerre(n, 0, x)
    laguerre(n, x)

    >>> diff(assoc_laguerre(n, a, x), x)
    -assoc_laguerre(n - 1, a + 1, x)

    >>> diff(assoc_laguerre(n, a, x), a)
    Sum(assoc_laguerre(_k, a, x)/(-a + n), (_k, 0, n - 1))

    Parameters
    ==========

    n : int
        Degree of Laguerre polynomial. Must be `n \ge 0`.

    alpha : Expr
        Arbitrary expression. For ``alpha=0`` regular Laguerre
        polynomials will be generated.

    See Also
    ========

    jacobi, gegenbauer,
    chebyshevt, chebyshevt_root, chebyshevu, chebyshevu_root,
    legendre, assoc_legendre,
    hermite,
    laguerre,
    sympy.polys.orthopolys.jacobi_poly
    sympy.polys.orthopolys.gegenbauer_poly
    sympy.polys.orthopolys.chebyshevt_poly
    sympy.polys.orthopolys.chebyshevu_poly
    sympy.polys.orthopolys.hermite_poly
    sympy.polys.orthopolys.legendre_poly
    sympy.polys.orthopolys.laguerre_poly

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Laguerre_polynomial#Generalized_Laguerre_polynomials
    .. [2] http://mathworld.wolfram.com/AssociatedLaguerrePolynomial.html
    .. [3] http://functions.wolfram.com/Polynomials/LaguerreL/
    .. [4] http://functions.wolfram.com/Polynomials/LaguerreL3/

    c                 n   |j         rt          ||          S |j        sn|j         rt          ||z   |          S |t          j        u r"|dk    rt          j        |z  t          j        z  S |t          j        u r|dk    rt          j        S d S d S |j        rt          d|z            t          |||          S )Nr   r   )r>   r   rC   r   r   rG   rE   r   rY   rI   r   )r$   r%   alphar   s       r&   rL   zassoc_laguerre.eval  s     = 	"Aq>>!{ 	2y "E	5111aj "QU "}a'!*44a(( "QU "z!" " " " } 2 FJL L L %Q5111r(   r;   c                 :   ddl m} |dk    rt          | |          |dk    rA| j        \  }}}t	          d          } |t          |||          ||z
  z  |d|dz
  f          S |dk    r#| j        \  }}}t          |dz
  |dz   |           S t          | |          )Nr   rO   r*   r:   rQ   r;   )rR   rP   r   r,   r   r   )r.   rS   rP   r%   r   r   rQ   s          r&   rV   zassoc_laguerre.fdiff  s    111111q= 	5$T8444] 
	5)KAuac

A3~a22a%i@1aQ-PPP] 	5)KAua"1q5%!)Q7777$T8444r(   c                 N   ddl m} |j        s	|j        du rt	          d          t          d          }t          | |          t          ||z   dz             t          |          z  z  ||z  z  }t          ||z   dz             t          |          z   |||d|f          z  S )Nr   rO   FrX   rQ   r*   )	rR   rP   rY   r   rI   r   r
   r   r	   )r.   r%   r   r   rZ   rP   rQ   r[   s           r&   r\   z*assoc_laguerre._eval_rewrite_as_polynomial  s    111111= 	KALE1 	KIJJJ#JJB AIM**Yq\\9;=>TBQY]##ill2SS1ay5I5IIIr(   c                     | j         \  }}}|                     ||                                |                                          S r^   r_   )r.   r%   r   r   s       r&   r/   zassoc_laguerre._eval_conjugate  s7    i5!yyEOO--q{{}}===r(   Nro   r`   r5   r(   r&   r   r     sq        C CJ 2 2 [2*5 5 5 5"J J J> > > > >r(   r   N)3r3   
sympy.corer   sympy.core.functionr   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.combinatorial.factorialsr   r	   r
   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   'sympy.functions.special.gamma_functionsr   sympy.functions.special.hyperr   sympy.polys.orthopolysr   r   r   r   r   r   r   r!   r   r7   rc   rA   r=   r@   r   r   r?   rB   r   r   r   r5   r(   r&   <module>r      s           < < < < < < < < " " " " " " # # # # # # Y Y Y Y Y Y Y Y Y Y 3 3 3 3 3 3 6 6 6 6 6 6 5 5 5 5 5 5 9 9 9 9 9 9 = = = = = = = = 9 9 9 9 9 9 / / / / / /B B B B B B B B B B B B B B B B B B U3ZZ
A 
A 
A 
A 
A8 
A 
A 
A"_I _I _I _I _I! _I _I _IDF. F. F.\L: L: L: L: L:% L: L: L:fm- m- m- m- m-% m- m- m-`u- u- u- u- u-% u- u- u-p%) %) %) %) %)h %) %) %)P%) %) %) %) %)h %) %) %)Xk$ k$ k$ k$ k$# k$ k$ k$\h: h: h: h: h:X h: h: h:^Y: Y: Y: Y: Y:" Y: Y: Y:@e$ e$ e$ e$ e$# e$ e$ e$Py> y> y> y> y>) y> y> y> y> y>r(   