
    g>                         d dl mZmZ d Zed        Zed        Zed        Zed        Zed        Z	 ed        Z	ed	        Z
ed
        Zed        Zedd       Zedd       Zed        Zed        Zed        Zy)   )defundefun_wrappedc                    | j                  |      \  }}| j                  |      }| j                   }|s6d| j                  g|dgg ||dz
  z  gg g df}|r|d   dxx   ||z  z  cc<   |fS | j	                  |       xs@ | j                  |      dkD  xs* | j                  |      dk(  xr | j                  |      dkD  }| j                  dz  dz   }|rL| j                  | j                  |||      dd	
      }	| j                  || j                  d|      |      }
n|}
| j                  |
|
|      }| j                  d||      }| j                  |d	
      }| j                  |
d	
      }|rd|
g||gg g ||z  ||dz
  z  gg |f}|g}nGd|g||gg g ||z  ||dz
  z  gg |f}d| j                  |g|dz   ddgg ||z  g||dz
  z  gd|z
  g|f}||g}|rn| j                  	      }t        t        |            D ]F  }||   d   dxx   ||z  z  cc<   ||   d   j                  |       ||   d   j                  d       H t!        |      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zparabolic_cylinderntypqT1can_use_2f0expprecuww2rw2nrw2nwtermsT2expuis                      P/var/www/openai/venv/lib/python3.12/site-packages/mpmath/functions/orthogonal.py_hermite_paramr3      s      #GAtAA	A  [1c(BAaC	2r1<qE!H!OHs
++qb/ +SVVAY] +	a	)CFF1IM hhqj2oGHHSXXawX/dHCHHQ'2HA	!QW	%B
((1bw(
'C88Ct8$D	!4	 BVaVRac1ac7^R=Wq!fb"qsAqsGnb$>_qsCmR!A#AaC	AaC5"LBwwqzs5z"A!HQKNac!N!HQKt$!HQKq! # <    c                 :       j                    fdg fi |S )Nc                       t         d      S )Nr   r3   r   r    r!   s   r2   <lambda>zhermite.<locals>.<lambda>>       Q1!=r4   	hypercombr   r    r!   kwargss   ``` r2   hermiter?   <   s    3===rLVLLr4   c                 :       j                    fdg fi |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                       t         d      S Nr   r7   r8   s   r2   r9   zpcfd.<locals>.<lambda>v   r:   r4   r;   r=   s   ``` r2   pcfdrC   @   s    l 3===rLVLLr4   c                 j    | j                  |      \  }}| j                  | | j                  z
  |      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   rC   r   )r   ar!   r>   r    _s         r2   pcfurG   x   s4    X a DAq88QBs{{NA&&r4   c                    	  j                  |      \  } j                         j                   j                  	|dk(  rf j	                  dz        rR 	fd}  j
                  |g fi |} j                        r" j                        r j                  |      }|S  	fd}  j
                  |gfi |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                     j                  	dd      } t         z
  	d      }t        z
  | d      }|D ]A  }|d   j                  d       |d   j                  d       |d   j                  z
         C j                  z  z
        j	                  dj
                  z        z  }|D ]*  }|d   j                  |       |d   j                  d       , ||z   S )	Ny             Tr   r   r                 ?   r   )r   r3   r   expjpir   r   )
jzT1termsT2termsTr(   r   r    r$   rr!   s
        r2   hzpcfv.<locals>.h   s    !S-B$S1"Q$15G$S!A#r15G!B!A!AaC   

AaCE#chhqx&88A!A!A  W$$r4   c                 B   
j                  d      }
j                  d      }
j                  |      }
j                  
j                  |      g}| | z  z   dg| z  z
  gg | z  z   gg|f}|gz    | z  z
  ddgdz
  | z  z
  gg | z  dz   z
  gdz   g|f}
j                  | z  z         \  }}|d   j	                  |       |d   j	                  |       ||fD ]-  }	|	d   j	                  d       |	d   j	                  | z
         / ||fS )Nr   r   r   r   rL   )square_exp_argr   r   cospi_sinpir   )r    r)   r(   elY1Y2csYr   r$   rR   r!   s             r2   rS   zpcfv.<locals>.h   sI   ""1e,A""1c*A
ACGGAJ'AaR1QNQqsUGR!A#a%1#q@BaSA2qs1ua+ac!A#gYQqSU1WI!uaOB??1QqS5)DAqqELLOqELLO"X!A!AaC   r6Mr4   )r   r   r   mpq_1_4isintr<   _is_real_type_re)
r   rE   r!   r>   ntyperS   vr    r$   rR   s
   ` `    @@@r2   pcfvrd      s    @ !!!$HAuAAAA|		!A#	% 	% CMM!R*6*QC$5$5a$8
A	 s}}Q.v..r4   c                       j                  |      \  } j                         fd} j                  |      } j                        r" j                        r j	                  |      }|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   X  K   j                  j                  dj                  z  z               } j                  dj                  z  z         j                  dj                  z  z
        z
  dz  } j                  dz  d| z  z   }j                  dj                  dj                  z  z        z         j                  j                  z        z
  }j                  |dz        j                  dj                  z  z        z  }|j                  |      z  j                  j                  z  j                  d      z        z   |j                  |       z  j                  j                   z  j                  d      z        z   y w)Nr   y               @   r   r   g      ?r   )
arggammajloggammar   r   r   expjrG   rM   )phi2rhokCr   r    r!   s       r2   r.   zpcfw.<locals>.terms  sX    wwsyysuuQw/0Sq[)CLLSUU1W,EErIffQhT!HHQ366!,,-q0AAHHQqSMCGGDKM22#((3-#((3557Acjj6G4G"HHH#((C4. 388SUUF1Ha

48H6H#IIIs   F'F*)r   r   sum_accuratelyr`   ra   )r   rE   r!   r>   rF   r.   rc   r    s   ` `    @r2   pcfwrr      sk    , a DAqAAJ 	5!A
 1 1! 4GGAJHr4   c                    | j                        rdz   z  S | j                  dz         r:| j                  dz         rt        d      fd} | j                  |gfi |S fd} | j                  |gfi |S )Nr   r   r   z#Gegenbauer function with two limitsc           	      X    d| z  }g g |z   gdz   |g |z   g| dz   gddz
  z  f}|gS Nr   r   r    )rE   a2rQ   r    r!   s      r2   rS   zgegenbauer.<locals>.h=  sM    1BB21b	QB":#wQqS	IA3Jr4   c           	      X    dz  }g g | |z   g| dz   |g|  | |z   gdz   gddz
  z  f}|gS ru   rv   )r    rw   rQ   rE   r!   s      r2   rS   zgegenbauer.<locals>.hB  sM    qSQrTFQqS"IAbDzAcE7C1IEs
r4   )r   NotImplementedErrorr<   r   r    rE   r!   r>   rS   s    ```  r2   
gegenbauerr{   3  s     {{1~!A#w
{{1S5 ;;qs%&KLL	 s}}Q.v.. 3==QC*6**r4   c                 :   | j                        sfd} | j                  ||gfi |S | j                        sfd} | j                  ||gfi |S | j                  |z   |       | j                  | d|z   z   z   dz   dz
  dz  fi |z  S )Nc                 b    g g | z   dz   g| dz   dz   g|  z   | z   dz   gdz   gdz
  dz  ffS Nr   r   rv   r    rE   bxs    r2   rS   zjacobi.<locals>.hK  sQ    ac!eWqsAaCjA2qs1uQw-!A#1c	RTTr4   c                 Z    g g  g| dz    | z
  g|  |z   | z   dz   gdz   gdz   dz  ffS r~   rv   r   s     r2   rS   zjacobi.<locals>.hO  sM    qbTAaC!A;!QqSU1W!uqsCiPRRr4   r   r   )r   r<   r_   binomialhyp2f1)r   r    rE   r   r   r>   rS   s     ```  r2   jacobir   H  s    ;;q>	Us}}Q.v..99Q<	Ss}}QA1&11<<!AQBqs1uQwqsAaC7!Mf!MMMr4   c                 <    fd} | j                   ||gfi |S )Nc                 B    g g | z   dz   g| dz   dz   g g| dz   gffS rB   rv   )rE   r    r!   s    r2   rS   zlaguerre.<locals>.hZ  s;    R!A#a%1Q3!*rdQqSE1=??r4   r;   rz   s    ` `  r2   laguerrer   U  s#    
@3==QC*6**r4   c                    | j                  |      r]t        |      }||dk  z   dz  rG|s|S | j                  |      }|d| j                  z  dz
  k  r|S |dk  r| xj                  | z  c_         | j                  | |dz   dd|z
  dz  fi |S )Nr   r   
   r   )r_   intmagr   r   )r   r    r   r>   r   s        r2   legendrer   ^  s    
yy|FQK1''!*CR[^#RxSD 3::qb1Q!Qw1&11r4   c                 
   | j                  |      }| j                  |      }|s | j                  |fi |S |dk(  rfd} | j                  |||gfi |S |dk(  rfd} | j                  |||gfi |S t        d      )Nr   c           	      d    |dz  }dz   dz
  g|| gg d|z
  g|  | dz   gd|z
  gddz
  z  f}|fS Nr   r   rv   r    mgrQ   r!   s       r2   rS   zlegenp.<locals>.hw  W    #A1ac
QGR!A#!QqS	AaC5#qs)KA4Kr4   rL   c           	      d    |dz  }dz   dz
  g|| gg d|z
  g|  | dz   gd|z
  gddz
  z  f}|fS r   rv   r   s       r2   rS   zlegenp.<locals>.h}  r   r4   requires type=2 or type=3)r   r   r<   
ValueErrorr   r    r   r!   typer>   rS   s      `   r2   legenpr   m  s     	AAAAs||Aq+F++qy	 s}}Q1000qy	 s}}Q1000
0
11r4   c                 z     j                  |      } j                  |      } j                        dv r j                  S |dk(  r fd}  j                  |||gfi |S |dk(  rFt              dkD  r fd}  j                  |||gfi |S  fd}  j                  |||gfi |S t	        d      )	N)r   r   c                 $   j                  |      \  }}d|z  j                  z  }|}dz   }dz
  }|dz  }dz
  dz  }	||||gdd|| gg d|z
  g|  | dz   gd|z
  g|	f}
| ||gd| |g| |z   dz   g| |z
  dz   |dz   g|  | dz   g|dz   g|	f}|
|fS Nr   r   r   )rV   r   )r    r   cossinr\   r[   rE   r   r(   r)   r%   r/   r   r!   s               r2   rS   zlegenq.<locals>.h  s    q)HCC#&& AA!A!A!A1aAQ1Aq1"~rAaC5QqS	AaC5!$B"ab1"a[1Q3q5'AaCE1Q3<QqS	AaC5!$Br6Mr4   rL   r   c                     j                  |      dj                  dz
  dz   gd|  dz
  d|  |z
  dz
  d|z  d|z  g| |z   dz   g| dz   gdd| z   |z   z  dd| z   |z   z  g| dz   gdz  f}|gS )Nr   r   r   g      ?r   )rM   r   )r    r   r%   r   r!   s      r2   rS   zlegenq.<locals>.h  s    jjmQ1Q3!<!AsQBqDFCE3q59c!eWqug1Q3q5k3!A;/!C%!b'B tr4   c                 <   d
j                  |      z  
j                  z  }
j                  |      }dz   }dz
  }|dz  }dz
  dz  }||||gdd|| gg d|z
  g|  | dz   gd|z
  g|f}| |||gdd| |g| |z   dz   g| |z
  dz   |dz   g|  | dz   g|dz   g|f}	||	fS r   )sinpir   rM   )r    r   r\   r[   rE   r   r(   r)   r%   r/   r   r!   s             r2   rS   zlegenq.<locals>.h  s    		!$svv-JJqMaCaCaCqS!GAq\B1qb>2!uR1I!ua(b!Q]RQBNQqSUGac!eQqS\R1I!ua(2vr4   r   )r   nanr<   absr   r   s   `  `   r2   legenqr     s     	AAAAAAG| wwqy	 s}}QA1&11qy q6A: !3==QF5f55 !3==QF5f55
0
11r4   c                     |s6| j                  |      r%t        | j                  |            dz  dk(  r|dz  S  | j                  | |dd|z
  dz  fi |S )Nr   r   r   )r   r   r_   r   ra   r   r   r    r   r>   s       r2   chebytr     sV    399Q<C
Oa$71$<1u3::qb5!A#q3F33r4   c                     |s6| j                  |      r%t        | j                  |            dz  dk(  r|dz  S |dz    | j                  | |dz   dd|z
  dz  fi |z  S )Nr   r   r   )rL   r   r   r   s       r2   chebyur     sc    399Q<C
Oa$71$<1uaC:3::qb!A#uqsAg@@@@r4   c                      j                  |      } j                  |      } j                         j                         j                  |      }|xr |dk\  } j                  |      }|r!|dk  r|r  j                  |dz    |fi |S dk(  r|r|dk  r j                  dz  S |r'|r%t	        |      |kD  r j                  dz  S  fd}	n fd}	  j
                  |	||gfi |S )Nr   r   rK   c           
         t        |      }dj                  |z        d| z  dz   j                  | |z         z  j                  z  j                  | |z
        z  j	                        dz  j                  |      dg}d|z  j                  |      dz   z  ddd|z  d| dz
  g}||g g || z
  | |z   dz   g|dz   gj	                  dz        dz  ffS )Nr   r   r   r   )r   rl   facr   r   sign)rX   r   absmrp   Pr   phithetas        r2   rS   zspherharm.<locals>.h  s    q6DSXXae_A#a%4(/$?"#A QA&3D"teAgFA2rDFAdF1H#5QxE	"A%' ) )r4   c                    j                  | |z
  dz         s+j                  | |z   dz         sj                  d|z
        rdgdgg g g g dffS j                  dz        \  }}dj                  |z        z  d| z  dz   j                  z  j	                  | |z
  dz         j	                  | |z   dz         |dz  |dz  g}ddddd|z  d|z  g}||g d|z
  g|  | dz   gd|z
  g|dz  ffS )Nr   r   r   r   r   g      )r   cos_sinrl   r   ri   )	rX   r   r   r   rp   r   r   r   r   s	         r2   rS   zspherharm.<locals>.h  s   {{1Q3q5!S[[1Q%73;;qs;KrdBBA688{{3u9-HCSXXae_$qs1ucffn1Q3q5!399QqSU#3aa!A CdCE462A2!ur!A#h1sAv>@@r4   )r   r_   	spherharmzeror   r<   )
r   rX   r   r   r   r>   l_isint	l_naturalm_isintrS   s
   `  ``     r2   r   r     s    AAAAKKE
++c
CiilG"AFIiilG1q5Ws}}qsVQs=f==zg!a%xx"}Wq6A:88b= 	)	A 3==QqE,V,,r4   N)r   )	functionsr   r   r3   r?   rC   rG   rd   rr   r{   r   r   r   r   r   r   r   r   rv   r4   r2   <module>r      s:   +7r M M 5M 5Mn ,' ,'\ E/ E/P # #J: + +( 
N 
N + + 2 2 2 2, 32 32j 4 4
 A A
 &- &-r4   