U
    :qLe>                     @   s   d dl mZmZ dd Zedd Zedd Zedd	 Zed
d Zedd Zedd Z	edd Z
edd Zedd Zed"ddZed#ddZedd Zedd Zedd  Zd!S )$   )defundefun_wrappedc                 C   s<  |  |\}}| |}| j }|sld| jg|dgg ||d  gg g df}|rf|d d  || 7  < |fS | | p| |dkp| |dko| |dk}| jd d }|r| j| j|||ddd	d
}	| j|| j	d|d|d}
n|}
| j|
|
|d}| j
d||d}| j|d	d
}| j|
d	d
}|rdd|
g||gg g || ||d  gg |f}|g}nld|g||gg g || ||d  gg |f}d| j|g|d ddgg || g||d  gd| g|f}||g}|r4| |	}tt|D ]F}|| d d  || 7  < || d | || d d qt|S )z
    Combined calculation of the Hermite polynomial H_n(z) (and its
    generalization to complex n) and the parabolic cylinder
    function D.
             ?r             )prec      пTexact)_convert_paramconvertmpq_1_2piisnpintreimr	   fmulsqrtfdivfnegexprangelenappendtuple)ctxnzZparabolic_cylinderZntypqT1Zcan_use_2f0expprecuwZw2Zrw2Znrw2ZnwtermsT2Zexpui r(   r/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/mpmath/functions/orthogonal.py_hermite_param   sB    
&**:
r*   c                    s    j  fddg f|S )Nc                      s   t  dS )Nr   r*   r(   r   r   r   r(   r)   <lambda>>       zhermite.<locals>.<lambda>	hypercombr   r   r   kwargsr(   r,   r)   hermite<   s    r3   c                    s    j  fddg f|S )a8  
    Gives the parabolic cylinder function in Whittaker's notation
    `D_n(z) = U(-n-1/2, z)` (see :func:`~mpmath.pcfu`).
    It solves the differential equation

    .. math ::

        y'' + \left(n + \frac{1}{2} - \frac{1}{4} z^2\right) y = 0.

    and can be represented in terms of Hermite polynomials
    (see :func:`~mpmath.hermite`) as

    .. math ::

        D_n(z) = 2^{-n/2} e^{-z^2/4} H_n\left(\frac{z}{\sqrt{2}}\right).

    **Plots**

    .. literalinclude :: /plots/pcfd.py
    .. image :: /plots/pcfd.png

    **Examples**

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> pcfd(0,0); pcfd(1,0); pcfd(2,0); pcfd(3,0)
        1.0
        0.0
        -1.0
        0.0
        >>> pcfd(4,0); pcfd(-3,0)
        3.0
        0.6266570686577501256039413
        >>> pcfd('1/2', 2+3j)
        (-5.363331161232920734849056 - 3.858877821790010714163487j)
        >>> pcfd(2, -10)
        1.374906442631438038871515e-9

    Verifying the differential equation::

        >>> n = mpf(2.5)
        >>> y = lambda z: pcfd(n,z)
        >>> z = 1.75
        >>> chop(diff(y,z,2) + (n+0.5-0.25*z**2)*y(z))
        0.0

    Rational Taylor series expansion when `n` is an integer::

        >>> taylor(lambda z: pcfd(5,z), 0, 7)
        [0.0, 15.0, 0.0, -13.75, 0.0, 3.96875, 0.0, -0.6015625]

    c                      s   t  dS Nr   r+   r(   r,   r(   r)   r-   v   r.   zpcfd.<locals>.<lambda>r/   r1   r(   r,   r)   pcfd@   s    6r5   c                 K   s"   |  |\}}| | | j |S )a  
    Gives the parabolic cylinder function `U(a,z)`, which may be
    defined for `\Re(z) > 0` in terms of the confluent
    U-function (see :func:`~mpmath.hyperu`) by

    .. math ::

        U(a,z) = 2^{-\frac{1}{4}-\frac{a}{2}} e^{-\frac{1}{4} z^2}
            U\left(\frac{a}{2}+\frac{1}{4},
            \frac{1}{2}, \frac{1}{2}z^2\right)

    or, for arbitrary `z`,

    .. math ::

        e^{-\frac{1}{4}z^2} U(a,z) =
            U(a,0) \,_1F_1\left(-\tfrac{a}{2}+\tfrac{1}{4};
            \tfrac{1}{2}; -\tfrac{1}{2}z^2\right) +
            U'(a,0) z \,_1F_1\left(-\tfrac{a}{2}+\tfrac{3}{4};
            \tfrac{3}{2}; -\tfrac{1}{2}z^2\right).

    **Examples**

    Connection to other functions::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> z = mpf(3)
        >>> pcfu(0.5,z)
        0.03210358129311151450551963
        >>> sqrt(pi/2)*exp(z**2/4)*erfc(z/sqrt(2))
        0.03210358129311151450551963
        >>> pcfu(0.5,-z)
        23.75012332835297233711255
        >>> sqrt(pi/2)*exp(z**2/4)*erfc(-z/sqrt(2))
        23.75012332835297233711255
        >>> pcfu(0.5,-z)
        23.75012332835297233711255
        >>> sqrt(pi/2)*exp(z**2/4)*erfc(-z/sqrt(2))
        23.75012332835297233711255

    )r   r5   r   )r   ar   r2   r   _r(   r(   r)   pcfux   s    ,r8   c                    s     |\}  j j|dkr d r fdd} j|g f|} r| r| |}|S  fdd} j|gf|S dS )a  
    Gives the parabolic cylinder function `V(a,z)`, which can be
    represented in terms of :func:`~mpmath.pcfu` as

    .. math ::

        V(a,z) = \frac{\Gamma(a+\tfrac{1}{2}) (U(a,-z)-\sin(\pi a) U(a,z)}{\pi}.

    **Examples**

    Wronskian relation between `U` and `V`::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> a, z = 2, 3
        >>> pcfu(a,z)*diff(pcfv,(a,z),(0,1))-diff(pcfu,(a,z),(0,1))*pcfv(a,z)
        0.7978845608028653558798921
        >>> sqrt(2/pi)
        0.7978845608028653558798921
        >>> a, z = 2.5, 3
        >>> pcfu(a,z)*diff(pcfv,(a,z),(0,1))-diff(pcfu,(a,z),(0,1))*pcfv(a,z)
        0.7978845608028653558798921
        >>> a, z = 0.25, -1
        >>> pcfu(a,z)*diff(pcfv,(a,z),(0,1))-diff(pcfu,(a,z),(0,1))*pcfv(a,z)
        0.7978845608028653558798921
        >>> a, z = 2+1j, 2+3j
        >>> chop(pcfu(a,z)*diff(pcfv,(a,z),(0,1))-diff(pcfu,(a,z),(0,1))*pcfv(a,z))
        0.7978845608028653558798921

    Qr   c                     s    j ddd} t   d}t  | d}|D ]2}|d d |d d |d   q:    d j  }|D ] }|d | |d d q|| S )	Ny             Tr   r   r                 ?   r   )r   r*   r   expjpir   r   )jzZT1termsZT2termsTr#   r   r   r    rr   r(   r)   h   s    "zpcfv.<locals>.hc           
         s     d}  d} |} j |g}| |   dg|   gg |   gg|f}|g  |   ddgd |   gg |  d  gd g|f} |   \}}|d | |d | ||fD ]$}	|	d d |	d |   q||fS )Nr
   r   r   r   r;   )square_exp_argr   r   cospi_sinpir   )
r   r$   r#   elZY1ZY2csY)r   r    r@   r   r(   r)   rA      s    
8LN)r   r   r   mpq_1_4isintr0   _is_real_type_re)r   r6   r   r2   ntyperA   vr(   r?   r)   pcfv   s     

rO   c                    sT     |\}  fdd} |} rP rP |}|S )aI  
    Gives the parabolic cylinder function `W(a,z)` defined in (DLMF 12.14).

    **Examples**

    Value at the origin::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> a = mpf(0.25)
        >>> pcfw(a,0)
        0.9722833245718180765617104
        >>> power(2,-0.75)*sqrt(abs(gamma(0.25+0.5j*a)/gamma(0.75+0.5j*a)))
        0.9722833245718180765617104
        >>> diff(pcfw,(a,0),(0,1))
        -0.5142533944210078966003624
        >>> -power(2,-0.25)*sqrt(abs(gamma(0.75+0.5j*a)/gamma(0.25+0.5j*a)))
        -0.5142533944210078966003624

    c                  3   s     d j  }  d j   d j   d }  jd d|   } d d j     j  } |d  d j   }| |   j  	d  V  | |    j   	d  V  d S )Nr   y               @   r   r   g      ?r
   )
arggammajloggammar   r   r   expjr8   r<   )Zphi2ZrhokCr,   r(   r)   r%     s    ,.",zpcfw.<locals>.terms)r   r   sum_accuratelyrK   rL   )r   r6   r   r2   r7   r%   rN   r(   r,   r)   pcfw   s    
	

rY   c                    sz   |   rd  S |   d rZ|  d r:tdfdd}| j| gf|S  fdd}| j|gf|S )Nr   r   r   z#Gegenbauer function with two limitsc              	      sF   d|  }g g  | g d |g   | g| d gdd  f}|gS Nr   r   r   r(   )r6   a2r>   r   r   r(   r)   rA   =  s    8zgegenbauer.<locals>.hc              	      sF   d  }g g | | g| d |g|  | | g d gdd  f}|gS rZ   r(   )r   r[   r>   )r6   r   r(   r)   rA   B  s    8)r   NotImplementedErrorr0   r   r   r6   r   r2   rA   r(   )r6   r   r   r)   
gegenbauer3  s    
r_   c                    s   |   s, fdd}| j||gf|S | sXfdd}| j|| gf|S | |  || j| d|     d d d f| S )Nc                    sJ   g g  |  d g| d  d g|    |  d g d gd d ffS Nr   r   r(   )r   r6   bxr(   r)   rA   K  s    zjacobi.<locals>.hc                    sF   g g   g| d   |  g|  |  |  d g d gd d ffS r`   r(   )r   r6   )rb   rc   r(   r)   rA   O  s    r   r   )r   r0   rJ   binomialhyp2f1)r   r   r6   rb   rc   r2   rA   r(   ra   r)   jacobiH  s    

rf   c                    s     fdd}| j ||gf|S )Nc                    s4   g g |   d g| d  d g  g| d gffS r4   r(   )r6   r\   r(   r)   rA   Z  s    zlaguerre.<locals>.hr/   r^   r(   r\   r)   laguerreU  s    rg   c                 K   s   |  |rbt|}||dk  d@ rb|s*|S | |}|d| j d k rJ|S |dk rb|  j| 7  _| j| |d dd| d f|S )Nr   r   
   r   )rJ   intmagr	   re   )r   r   rc   r2   rl   r(   r(   r)   legendre^  s    

rm   r   c                    s   |  |}|  |}|s(| j| f|S |dkrP fdd}| j|||gf|S |dkrx fdd}| j|||gf|S tdd S )Nr   c              	      sP   |d }d  d  g|| gg d| g|  | d gd| gdd   f}|fS Nr   r   r(   r   mgr>   r   r(   r)   rA   w  s    Bzlegenp.<locals>.hr;   c              	      sP   |d } d  d g|| gg d| g|  | d gd| gdd   f}|fS rn   r(   ro   rr   r(   r)   rA   }  s    Brequires type=2 or type=3)r   rm   r0   
ValueErrorr   r   rp   r   typer2   rA   r(   rr   r)   legenpm  s    

rw   c                    s     |}  |}  dkr, jS |dkrV fdd} j|||gf|S |dkrtdkr fdd} j|||gf|S  fdd} j|||gf|S td	d S )
N)r   r   c                    s     |\}}d|  j }|}d }d }|d }d d }	||||gdd|| gg d| g|  | d gd| g|	f}
| ||gd| |g| | d g| | d |d g|  | d g|d g|	f}|
|fS Nr   r   rx   )rC   r   )r   rp   cossinrG   rF   r6   rb   r#   r$   r!   r&   r   r   r(   r)   rA     s$       2  zlegenq.<locals>.hr;   r   c                    s     |d jd d gd|  d d|  | d d| d| g| | d g| d gdd|  |  dd|  |  g| d gd f}|gS )Nr   r   r   g      ?rh   )r<   r   )r   rp   r!   r|   r(   r)   rA     s    &   c           
         s   d  |  j } |}d }d }|d }d d }||||gdd|| gg d| g|  | d gd| g|f}| |||gdd| |g| | d g| | d |d g|  | d g|d g|f}	||	fS ry   )sinpir   r<   )
r   rp   rG   rF   r6   rb   r#   r$   r!   r&   r|   r(   r)   rA     s"    
   6  rs   )r   nanr0   absrt   ru   r(   r|   r)   legenq  s    


r   c                 K   sJ   |s,|  |r,t| |d dkr,|d S | j| |dd| d f|S )Nr   r   r   )r   r   rJ   rk   rL   re   r   r   rc   r2   r(   r(   r)   chebyt  s    $r   c                 K   sV   |s,|  |r,t| |d dkr,|d S |d | j| |d dd| d f| S )Nr   r   r   )r;   r   r   r   r(   r(   r)   chebyu  s    $r   c           
         s     |}  |}     |}|o<|dk} |}|rr|dk rr|rr j|d  |f|S dkr|r|dk r jd S |r|rt||kr jd S  fdd}	n fdd}	 j|	||gf|S )Nr   r   r:   c              
      s   t |}d | d|  d  | |   j  | |   d  |dg}d|  |d  ddd| d| d g}||g g ||  | | d g|d g d d ffS )Nrx   r   r   r   )r   rU   facr   r{   sign)rE   rp   ZabsmrW   Pr   phithetar(   r)   rA     s    , ,"zspherharm.<locals>.hc                    s     | | d s2  | | d s2  d| rJdgdgg g g g dffS  d \}}d |  d|  d  j  | | d  | | d |d |d g}ddddd| d| g}||g d| g|  | d gd| g|d ffS )Nr   r   rx   r   r   g      )r   cos_sinrU   r   rR   )rE   rp   rz   r{   rW   r   r   r(   r)   rA     s    2   )r   rJ   	spherharmzeror   r0   )
r   rE   rp   r   r   r2   Zl_isintZ	l_naturalZm_isintrA   r(   r   r)   r     s"    







	r   N)r   )r   )	functionsr   r   r*   r3   r5   r8   rO   rY   r_   rf   rg   rm   rw   r   r   r   r   r(   r(   r(   r)   <module>   s:   9

7
.
H
B



5

