
    g>                     V   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dS )   )defundefun_wrappedc                 B   |                      |          \  }}|                     |          }| j         }|s7d| j        g|dgg ||dz
  z  gg g df}|r|d         dxx         ||z  z  cc<   |fS |                     |           pJ|                     |          dk    p1|                     |          dk    o|                     |          dk    }| j        dz  dz   }|r\|                     |                     |||          dd	
          }	|                     || 	                    d|          |          }
n|}
|                     |
|
|          }| 
                    d||          }|                     |d	
          }|                     |
d	
          }|rd|
g||gg g ||z  ||dz
  z  gg |f}|g}nBd|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}|r|                     |	          }t          t          |                    D ]c}||         d         dxx         ||z  z  cc<   ||         d                             |           ||         d                             d           dt!          |          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                      W/var/www/html/ai-engine/env/lib/python3.11/site-packages/mpmath/functions/orthogonal.py_hermite_paramr3      s      ##GAtAA	A   [1c(BAaC	2r1< 	qE!HHH!OHHHs
++qb// +SVVAYY] +	a	)CFF1IIM hqj2oG HHSXXawX//dHCCHHQ'22HA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 "wwqzzs5zz"" 	" 	"A!HQKNNNac!NNN!HQKt$$$!HQKq!!!!<<    c                 0       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?   <   s1    3=======rLLVLLLr4   c                 0       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   @   s4    l 3=======rLLVLLLr4   c                 p    |                      |          \  }}|                     | | 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   s8    X a  DAq88QBs{NA&&&r4   c                    	                       |          \  }                                j         j        	|dk    rq                     dz            rY 	fd}  j        |g fi |}                               r*                               r                     |          }|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                  .                        	dd          } t           z
  	d          }t          z
  | d          }|D ]V}|d                             d           |d                             d           |d                             z
             W                    z  z
                                dj        z            z  }|D ]8}|d                             |           |d                             d           9||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55G$S!A#r155G ! !!B!A!AaC    

AaCE##chhqx&8&88A  !A!AW$$r4   c                    
                     d          }
                     d          }
                    |          }
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}
                    | z  z             \  }}|d                             |           |d                             |           ||fD ];}	|	d                             d           |	d                             | 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   sl   ""1e,,A""1c**A

ACGGAJJ'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OOOqELLOOO"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#|	% 	% 	% 	% 	% 	% 	% 	% 	% CM!R**6**Q 	C$5$5a$8$8 	

A	 	 	 	 	 	 	 	 s}Q..v...r4   c                                           |          \  }                                fd}                     |          }                               r*                               r                     |          }|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   t  K                                            dj        z  z                       }                     dj        z  z                                 dj        z  z
            z
  dz  } j        dz  d| z  z   }                    d                    dj        z  z            z                                 j        z            z
  }                    |dz                                dj        z  z            z  }|                    |          z                      j        z  	                    d          z            z  V  |                    |           z                      j         z  	                    d          z            z  V  d S )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  s     wwsyysuQw//00Sq[))CLLSU1W,E,EErIfQhT!HHQ36!,,,--q0A0AAHHQqSMMCGGDKM222#((3--#((357Acjj6G6G4G"H"HHHHH#((C4.. 388SUF1Ha

48H8H6H#I#IIIIIIIr4   )r   r   sum_accuratelyr`   ra   )r   rE   r!   r>   rF   r.   rc   r    s   ` `    @r2   pcfwrr      s    , a  DAqAAJ J J J J J J 	5!!A
  1 1! 4 4 GGAJJHr4   c                    |                                rdz   z  S |                      dz             r=|                      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 	M%&KLLL	 	 	 	 	 	 s}Q..v...      3=QC**6***r4   c                 4   |                                sfd} | j        ||gfi |S |                               sfd} | j        ||gfi |S |                     |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 	U 	U 	U 	U 	U 	Us}Q..v...99Q<< 2	S 	S 	S 	S 	S 	Ss}QA11&111<<!AQBqs1uQwqsAaC7!M!Mf!M!MMMr4   c                 2    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  sF    
@ @ @ @ @ @3=QC**6***r4   c                    |                      |          r^t          |          }||dk     z   dz  rC|s|S |                     |          }|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|| 
!FFQK1 	! ''!**CR[^##RxxSD 3:qb1Q!Qw11&111r4   r   c                    |                      |          }|                      |          }|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+++qyy	 	 	 	 	 s}Q100000qyy	 	 	 	 	 s}Q100000
0
1
11r4   c                                           |          }                      |          }                                dv r j        S |dk    r fd}  j        |||gfi |S |dk    rAt                    dk    r fd}  j        |||gfi |S  fd}  j        |||gfi |S t	          d          )	N)r   r   c                 "                        |          \  }}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                                          |          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mmQ1Q3!<!AsQBqDFCE3q59c!eWqug1Q3q5k3!A;/!C%!b'B tr4   c                 B   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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    		!$sv-JJqMM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     s7    	AAAAAAG|| wqyy	 	 	 	 	 	 s}QA11&111qyy q66A::      !3=QF55f555      !3=QF55f555
0
1
11r4   c                     |sC|                      |          r.t          |                     |                    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     sm     399Q<< C

OOa$71$<$<1u3:qb5!A#q33F333r4   c                     |sC|                      |          r.t          |                     |                    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     sz     399Q<< C

OOa$71$<$<1uaC:3:qb!A#uqsAg@@@@@@r4   c                                           |          }                      |          }                                                                                     |          }|o|dk    }                     |          }|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	          |          |k    r
 j        dz  S  fd}	n fd}	  j        |	||gfi |S )Nr   r   rK   c           
         t          |          }d                    |z            d| z  dz                       | |z             z  j        z                      | |z
            z                                dz                      |          dg}d|z                      |          dz   z  ddd|z  d| dz
  g}||g g || z
  | |z   dz   g|dz   g                    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   q66DSXXae__A#a%4(/$?"#A QA&3D"teAgFA2rDFAdF1H#5QxE	""A%' ) )r4   c                                         | |z
  dz             s3                     | |z   dz             s                     d|z
            rdgdgg g g g dffS                     dz            \  }}d                    |z            z  d| z  dz   j        z                      | |z
  dz                                 | |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!! 9S[[1Q%7%7 93;;qs;K;K 9rdBBA688{{3u9--HCSXXae__$qs1ucfn1Q3q5!!399QqSU#3#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     sl   AAAAKKE
++c

CiillG"AFIiillG >1q55W5s}qsVQs==f===zzgz!a%%x"} AW Aq66A::8b= 	) 	) 	) 	) 	) 	) 	) 	)	A 	A 	A 	A 	A 	A 	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 7 7r M M M 5M 5M 5Mn ,' ,' ,'\ E/ E/ E/P # # #J: + + +( 
N 
N 
N + + + 2 2 2 2 2 2 2, 32 32 32 32j 4 4 4
 A A A
 &- &- &- &- &-r4   