
    [h>                        S SK JrJr  S r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r	\S	 5       r
\S
 5       r\S 5       r\SS j5       r\SS j5       r\S 5       r\S 5       r\S 5       rg)   )defundefun_wrappedc                    U R                  U5      u  pU R                  U5      nU R                  * nU(       d9  SU R                  /US// XQS-
  -  // / S4nU(       a  US   S==   XQ-  -  ss'   U4$ U R	                  U* 5      =(       dJ    U R                  U5      S:  =(       d/    U R                  U5      S:H  =(       a    U R                  U5      S:  nU R                  S-  S-   nU(       a>  U R                  U R                  X"US9SS	S
9n	U R                  X R                  SUS9US9n
OUn
U R                  XUS9nU R                  SXS9nU R                  US	S
9nU R                  U
S	S
9nU(       a  SU
/X// / XQ-  XQS-
  -  // U4nU/nOBSU/X// / XQ-  XQS-
  -  // U4nSU R                  U/US-   SS// XQ-  /XQS-
  -  /SU-
  /U4nUU/nU(       ao  U R                  W	5      n[        [        U5      5       HF  nUU   S   S==   XQ-  -  ss'   UU   S   R                  U5        UU   S   R                  S5        MH     [!        U5      $ )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                      S/var/www/auris/envauris/lib/python3.13/site-packages/mpmath/functions/orthogonal.py_hermite_paramr3      so      #GAAA	A  [1c(BaC	2r1<qE!HOHs
++qb/ +SVVAY] +	a	)CFF1IM hhqj2oGHHSXXawX/dHCHHQ'2HA	!W	%B
((1b(
'C88Ct8$D	!4	 BVaVRac1c7^R=Wqfb"qsAsGnb$>_qsCmR!#aC	AaC5"LBwwqzs5z"A!HQKNac!N!HQKt$!HQKq! # <    c                 <   ^ ^^ T R                   " U UU4S j/ 40 UD6$ )Nc                      > [        T TTS5      $ )Nr   r3   r   r    r!   s   r2   <lambda>hermite.<locals>.<lambda>>       Q1!=r4   	hypercombr   r    r!   kwargss   ``` r2   hermiter@   <   s    ===rLVLLr4   c                 <   ^ ^^ T R                   " U UU4S j/ 40 UD6$ )a  
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 TTS5      $ Nr   r7   r8   s   r2   r9   pcfd.<locals>.<lambda>v   r;   r4   r<   r>   s   ``` r2   pcfdrE   @   s    l ===rLVLLr4   c                 h    U R                  U5      u  pEU R                  U* U R                  -
  U5      $ )ae  
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   rE   r   )r   ar!   r?   r    _s         r2   pcfurI   x   s2    X a DA88QBs{{NA&&r4   c                   ^ ^^^^	 T R                  U5      u  mnT R                  T5      mT R                  mT R                  m	US:X  av  T R	                  TS-  5      (       a]  U UUU	U4S jnT R
                  " U/ 40 UD6nT R                  T5      (       a'  T R                  T5      (       a  T R                  U5      nU$ U UU	U4S jnT R
                  " UT/40 UD6$ )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                    > TR                  T	SSS9n [        TT* T-
  T	S5      n[        TTT-
  U S5      nU HB  nUS   R                  S5        US   R                  S5        US   R                  TT-
  5        MD     TR                  TT-  T-
  5      TR	                  STR
                  -  5      -  nU H+  nUS   R                  U5        US   R                  S5        M-     X-   $ )	Ny             Tr   r   r                 ?   r   )r   r3   r   expjpir   r   )
jzT1termsT2termsTr(   r   r    r$   rr!   s
        r2   h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  $$r4   c                 @  > T
R                  TS5      nT
R                  TS5      nT
R                  U5      nT
R                  TT
R                  U5      /nUT* U T-  T-   S/TTU -  -
  // TU -  T-   /T/U4nUT/-   T* U T-  T-
  SS/ST-
  TU -  -
  // TU -  S-   T-
  /ST-   /U4nT
R                  TTU -  -   5      u  pxUS   R	                  U5        US   R	                  U5        XV4 H.  n	U	S   R	                  S5        U	S   R	                  TU -
  5        M0     XV4$ )Nr   r   r   r   rN   )square_exp_argr   r   cospi_sinpir   )r    r)   r(   elY1Y2csYr   r$   rT   r!   s             r2   rU   rV      sC   ""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)DAqELLOqELLOX!A!AaC   6Mr4   )r   r   r   mpq_1_4isintr=   _is_real_type_re)
r   rG   r!   r?   ntyperU   vr    r$   rT   s
   ` `    @@@r2   pcfvrg      s    @ !!!$HAuAAAA|		!A#	% 	% MM!R*6*QC$5$5a$8$8
A	 	 }}Q.v..r4   c                   ^ ^^ T R                  U5      u  mnT R                  T5      mU UU4S jnT R                  U5      nT R                  T5      (       a'  T R                  T5      (       a  T R	                  U5      nU$ )a  
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  >#    TR                  TR                  STR                  T-  -   5      5      n TR                  STR                  T-  -   5      TR                  STR                  T-  -
  5      -
  S-  n TR                  S-  SU -  -   nTR                  STR                  STR                  -  T-  5      -   5      TR                  TR                  T-  5      -
  nTR                  US-  5      TR                  STR                  -  T-  5      -  nUTR                  U5      -  TR                  TR                  T-  TTR                  S5      -  5      -  v   UTR                  U* 5      -  TR                  TR                  * T-  TTR                  S5      -  5      -  v   g 7f)Nr   y               @   r   r   g      ?r   )
arggammajloggammar   r   r   expjrI   rO   )phi2rhokCr   r    r!   s       r2   r.   pcfw.<locals>.terms  sW    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_accuratelyrc   rd   )r   rG   r!   r?   rH   r.   rf   r    s   ` `    @r2   pcfwrv      sq    , a DAqAAJ 	5!A
 1 1! 4 4GGAJHr4   c                 .  ^^^ U R                  T5      (       a  STT-   -  $ U R                  TS-   5      (       a@  U R                  TS-   5      (       a  [        S5      eUU4S jnU R                  " UT/40 UD6$ UU4S jnU R                  " UT/40 UD6$ )Nr   r   r   z#Gegenbauer function with two limitsc           	      X   > SU -  n/ / TU-   /TS-   U/T* TU-   /U S-   /SST-
  -  4nU/$ Nr   r   r    )rG   a2rS   r    r!   s      r2   rU   gegenbauer.<locals>.h=  sM    1BB21b	QB":#wQqS	IA3Jr4   c           	      T   > ST-  n/ / X-   /U S-   U/U * X-   /TS-   /SST-
  -  4nU/$ ry   rz   )r    r{   rS   rG   r!   s      r2   rU   r|   B  sI    qSQTFQqS"IADzAcE7C1IEs
r4   )r   NotImplementedErrorr=   r   r    rG   r!   r?   rU   s    ```  r2   
gegenbauerr   3  s     {{1~~!A#w
{{1S5 ;;qs%&KLL	 }}Q.v.. ==QC*6**r4   c                 N  ^^^ U R                  T5      (       d  UUU4S jnU R                  " Xa/40 UD6$ U R                  T5      (       d  UU4S jnU R                  " XaT/40 UD6$ U R                  UT-   U5      U R                  " U* SU-   T-   T-   TS-   ST-
  S-  40 UD6-  $ )Nc                 b   > / / TU -   S-   /U S-   TS-   /U * TT-   U -   S-   /TS-   /ST-
  S-  44$ Nr   r   rz   r    rG   bxs    r2   rU   jacobi.<locals>.hK  sQ    ac!eWqsAaCjA2qs1uQw-!A#1c	RTTr4   c                 Z   > / / T* /U S-   T* U -
  /U * UT-   U -   S-   /TS-   /TS-   S-  44$ r   rz   r   s     r2   rU   r   O  sM    qbTAaC!A;!QqSU1W!uqsCiPRRr4   r   r   )r   r=   rb   binomialhyp2f1)r   r    rG   r   r   r?   rU   s     ```  r2   jacobir   H  s    ;;q>>	U}}Q.v..99Q<<	S}}QA1&11<<!AQBqs1uQwqsAaC7!Mf!MMMr4   c                 <   ^^ UU4S jnU R                   " XR/40 UD6$ )Nc                 B   > / / U T-   S-   /U S-   TS-   /T* /U S-   /T44$ rC   rz   )rG   r    r!   s    r2   rU   laguerre.<locals>.hZ  s;    R!A#a%1Q3!*rdQqSE1=??r4   r<   r   s    ` `  r2   laguerrer   U  s    
@==C*6**r4   c                 >   U R                  U5      (       ah  [        U5      nXS:  -   S-  (       aN  U(       d  U$ U R                  U5      nUSU R                  -  S-
  :  a  U$ US:  a  U =R                  U* -  sl        U R                  " U* US-   SSU-
  S-  40 UD6$ )Nr   r   
   r   )rb   intmagr   r   )r   r    r   r?   r   s        r2   legendrer   ^  s    
yy||FQK1''!*CR[^#RxSD ::qb1Q!Qw1&11r4   c                   ^ U R                  U5      nU R                  U5      nU(       d  U R                  " UT40 UD6$ US:X  a  U4S jnU R                  " XaU/40 UD6$ US:X  a  U4S jnU R                  " XaU/40 UD6$ [        S5      e)Nr   c           	      b   > US-  nST-   ST-
  /X"* // SU-
  /U * U S-   /SU-
  /SST-
  -  4nU4$ Nr   r   rz   r    mgrS   r!   s       r2   rU   legenp.<locals>.hw  U    #A1ac
QGR!A#!QqS	AaC5#qs)KA4Kr4   rN   c           	      b   > US-  nTS-   TS-
  /X"* // SU-
  /U * U S-   /SU-
  /SST-
  -  4nU4$ r   rz   r   s       r2   rU   r   }  r   r4   requires type=2 or type=3)r   r   r=   
ValueErrorr   r    r   r!   typer?   rU   s      `   r2   legenpr   m  s     	AAAA||Aq+F++qy	 }}Q1000qy	 }}Q1000
0
11r4   c                   ^ ^ T R                  U5      nT R                  U5      nT R                  T5      mTS;   a  T R                  $ US:X  a  U U4S jnT R                  " XaU/40 UD6$ US:X  aG  [        T5      S:  a  U U4S jnT R                  " XaU/40 UD6$ U U4S jnT R                  " XaU/40 UD6$ [	        S5      e)	N)r   r   c                   > TR                  U5      u  p#SU-  TR                  -  nUnST-   nST-
  nUS-  nST-
  S-  n	XEXg/SSX* // SU-
  /U * U S-   /SU-
  /U	4n
U* Xg/SU* U/X-   S-   /X-
  S-   US-   /U * U S-   /US-   /U	4nX4$ Nr   r   r   )rY   r   )r    r   cossinr_   r^   rG   r   r(   r)   r%   r/   r   r!   s               r2   rU   legenq.<locals>.h  s    q)HCC#&& AA!A!A!A1aAAq"~rAaC5QqS	AaC5!$B"ab1"a[13q5'ACE1Q3<QqS	AaC5!$B6Mr4   rN   r   c                    > TR                  U5      STR                  TTS-
  TS-   /SU * S-
  SU * U-
  S-
  SU-  SU-  /X-   S-   /U S-   /SSU -   U-   -  SSU -   U-   -  /U S-   /TS-  4nU/$ )Nr   r   r   g      ?r   )rO   r   )r    r   r%   r   r!   s      r2   rU   r     s    jjmQ1Q3!<!AsQBqDFCE3q59c!eWqug1Q3q5k3!A;/!C%!b'B tr4   c                 .  > ST
R                  U5      -  T
R                  -  nT
R                  U5      nST-   nTS-
  nUS-  nST-
  S-  nX#XE/SSXf* // SU-
  /U * U S-   /SU-
  /U4nU* X4U/SSU* U/X-   S-   /X-
  S-   US-   /U * U S-   /US-   /U4n	X4$ r   )sinpir   rO   )r    r   r_   r^   rG   r   r(   r)   r%   r/   r   r!   s             r2   rU   r     s    		!$svv-JJqMaCaCaCqS!GA\B1b>2!uR1I!ua(b!]RQBNQSUGac!eQqS\R1I!ua(vr4   r   )r   nanr=   absr   r   s   `  `   r2   legenqr     s     	AAAAAAG| wwqy	 }}QA1&11qy q6A: ==F5f55 ==F5f55
0
11r4   c                     U(       d<  U R                  U5      (       a&  [        U R                  U5      5      S-  S:X  a  US-  $ U R                  " U* USSU-
  S-  40 UD6$ )Nr   r   r   )r   r   rb   r   rd   r   r   r    r   r?   s       r2   chebytr     sV    399Q<<C
Oa$71$<1u::qb5!A#q3F33r4   c                     U(       d<  U R                  U5      (       a&  [        U R                  U5      5      S-  S:X  a  US-  $ US-   U R                  " U* US-   SSU-
  S-  40 UD6-  $ )Nr   r   r   )rN   r   r   r   s       r2   chebyur     sc    399Q<<C
Oa$71$<1uaC3::qb!A#uqsAg@@@@r4   c                 4  ^ ^^ T R                  U5      nT R                  U5      nT R                  T5      mT R                  T5      mT R                  U5      nU=(       a    US:  nT R                  U5      nU(       a'  US:  a!  U(       a  T R                  " US-   * UTT40 UD6$ TS:X  a  U(       a  US:  a  T R                  S-  $ U(       a.  U(       a'  [	        U5      U:  a  T R                  S-  $ U UU4S jn	OU UU4S jn	T R
                  " XU/40 UD6$ )Nr   r   rM   c           
        > [        U5      nSTR                  UT-  5      SU -  S-   TR                  X-   5      -  TR                  -  TR                  X-
  5      -  TR	                  T5      S-  TR                  U5      S/nSU-  TR                  U5      S-   -  SSSU-  SU* S-
  /nX4/ / X -
  X-   S-   /US-   /TR	                  ST-  5      S-  44$ )Nr   r   r   r   )r   ro   facr   r   sign)r[   r   absmrs   Pr   phithetas        r2   rU   spherharm.<locals>.h  s    q6DSXXae_A#a%(/?"#A QA&3D"teAgFA2rDFAF1H#5QxE	"A%' ) )r4   c                   > TR                  X-
  S-   5      (       d4  TR                  X-   S-   5      (       d  TR                  SU-
  5      (       a  S/S// / / / S44$ TR                  ST-  5      u  p#STR                  UT-  5      -  SU -  S-   TR                  -  TR	                  X-
  S-   5      TR	                  X-   S-   5      US-  US-  /nSSSSSU-  SU-  /nXE/ SU-
  /U * U S-   /SU-
  /US-  44$ )Nr   r   r   r   r   g      )r   cos_sinro   r   rl   )	r[   r   r   r   rs   r   r   r   r   s	         r2   rU   r     s   {{13q5!!S[[Q%7%73;;qs;K;KrdBBA688{{3u9-HCSXXae_$qs1ucffn13q5!399QSU#3aa!A CdCE462A2!ur!A#h1sAv>@@r4   )r   rb   	spherharmzeror   r=   )
r   r[   r   r   r   r?   l_isint	l_naturalm_isintrU   s
   `  ``     r2   r   r     s    AAAAKKE
++c
CiilG"AFIiilG1q5W}}qsVQs=f==zg!a%xx"}Wq6A:88b= 	) 	)	A ==qE,V,,r4   N)r   )	functionsr   r   r3   r@   rE   rI   rg   rv   r   r   r   r   r   r   r   r   r   rz   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   