
    (ph}                        S SK r S SK Jr  S SKrS SKJrJr  S SKJrJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  S SKJs  Jr   " S S5      r " S	 S
5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r S,S jrS rS r S r!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S% r*S& r+S' r,S( r-S) r.S* r/S+ r0g)-    N)raises)arraysqrt)assert_array_almost_equalassert_equalassert_almost_equalassert_allclose)	integrategammac                   ,    \ rS rSrS rS rS rS rSrg)	TestCheby   c                    [         R                  " S5      n[         R                  " S5      n[        R                  " SS9   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nS S S 5        [	        UR
                  S/S	5        [	        UR
                  SS/S	5        [	        WR
                  / S
QS	5        [	        WR
                  / SQS	5        [	        WR
                  / SQS	5        [	        WR
                  / SQS	5        g ! , (       d  f       N= f)Nr      ignoreall               )r   r   )r   r   r   )r   r   r   r   )r   r   r   r   r   )orthchebycnperrstater   c)selfC0C1C2C3C4C5s          V/var/www/html/venv/lib/python3.13/site-packages/scipy/special/tests/test_orthogonal.pytest_chebycTestCheby.test_chebyc   s    [[^[[^[[X&QBQBQBQB	 ' 	""$$s2.!"$$!uR0!"$$x3!"$$z"5!"$$|B7!"$$~b9 '&s   AD88
Ec                 6   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        UR                  S/S5        [        UR                  SS/S5        [        UR                  / SQS5        [        UR                  / S	QS5        [        UR                  / S
QS5        [        UR                  / SQS5        g )Nr   r   r   r   r   r   r   )r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   )r   chebysr   r"   )r#   S0S1S2S3S4S5s          r*   test_chebysTestCheby.test_chebys    s    [[^[[^[[^[[^[[^[[^!"$$s2.!"$$!uR0!"$$x3!"$$z"5!"$$|B7!"$$~b9    c                 6   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        UR                  S/S5        [        UR                  SS/S5        [        UR                  / SQS5        [        UR                  / S	QS5        [        UR                  / S
QS5        [        UR                  / SQS5        g )Nr   r   r   r   r   r   r   )r   r   r.   )r   r   r   r   )   r   ir   r   )   r   r   r   r   )r   chebytr   r"   )r#   T0T1T2T3T4T5s          r*   test_chebytTestCheby.test_chebyt.   s    [[^[[^[[^[[^[[^[[^!"$$s2.!"$$!uR0!"$$x3!"$$z"5!"$$|B7!"$$'7;r8   c                 6   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        UR                  S/S5        [        UR                  SS/S5        [        UR                  / SQS5        [        UR                  / S	QS5        [        UR                  / S
QS5        [        UR                  / SQS5        g )Nr   r   r   r   r   r   r   )r   r   r.   )r:   r   r   r   )r;   r   r   r   )    r   ir      r   )r   chebyur   r"   )r#   U0U1U2U3U4U5s          r*   test_chebyuTestCheby.test_chebyu<   s    [[^[[^[[^[[^[[^[[^!"$$s2.!"$$!uR0!"$$x3!"$$z"5!"$$~b9!"$$'7;r8    N)	__name__
__module____qualname____firstlineno__r+   r6   rD   rQ   __static_attributes__rS   r8   r*   r   r      s    : :<<r8   r   c                   h    \ rS rSrS r\R                  R                  SSS/5      S 5       rS r	Sr
g	)
TestGegenbauerK   c                    S[         R                  R                  5       -  S-
  n[         R                  " US:H  5      (       a  Sn[        R                  " SU5      n[        R                  " SU5      n[        R                  " SU5      n[        R                  " SU5      n[        R                  " SU5      n[        R                  " SU5      n[        UR                  [        S/5      S	5        [        UR                  [        SU-  S/5      S	5        [        UR                  [        SU-  US-   -  SU* /5      S	5        [        UR                  [        S[        R                  " US5      -  SS
U-  US-   -  S/5      S-  S5        [        UR                  [        S[        R                  " US5      -  SS[        R                  " US5      -  SSU-  US-   -  /5      S-  S5        [        UR                  [        S[        R                  " US5      -  SS[        R                  " US5      -  SS[        R                  " US5      -  S/5      S-  S5        g )Nr         ?r   皙ɿr   r   r   r   r   ig      @   rG   g      @r<   r   g      .@)
r    randomanyr   
gegenbauerr   r"   r   scpoch)r#   aCa0Ca1Ca2Ca3Ca4Ca5s           r*   test_gegenbauerTestGegenbauer.test_gegenbauerM   s   bii  3&66!q&>>Aooa"ooa"ooa"ooa"ooa"ooa"!#%%qc
26!#%%qs1gr:!#%%qsAaCyA2.>(?C!#%%q1~a1ac
/0/2 )336)779	;!#%%q1~aBGGAaL@P/01ac/< )==@)AAC	E!#%%q1~aBGGAaL@P/0BGGAaL/D )EEI)JJL	Nr8   re   r   r   c                     [         R                  " SU5      n[        UR                  [        R
                  " S/5      5        g )Nr         ?)r   rb   r   r"   r    asarray)r#   re   Cn0s      r*   test_n_zero_gh8888!TestGegenbauer.test_n_zero_gh8888b   s-     ooa#SUUBJJt,-r8   c                    Sn[         R                  " [        US9   [        R                  " S[
        R                  5        S S S 5        [         R                  " [        US9   [        R                  " SS5        S S S 5        [         R                  " [        US9   [        R                  " S[
        R                  * 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nh= f! , (       d  f       g = f)Nz*`alpha` must be a finite number greater...)matchr   r         r   )pytestr   
ValueErrorr   rb   r    naninf)r#   messages     r*   test_valid_alphaTestGegenbauer.test_valid_alphah   s    >]]:W5OOArvv& 6]]:W5OOAt$ 6]]:W5OOAw' 65	 655555s#   &C#C'C.
C
C+.
C<rS   N)rT   rU   rV   rW   rl   rw   markparametrizerr   r|   rX   rS   r8   r*   rZ   rZ   K   s6    N* [[S1a&). *.
(r8   rZ   c                        \ rS rSrS rS rSrg)TestHermites   c                 6   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        UR                  S/S5        [        UR                  SS/S5        [        UR                  / SQS5        [        UR                  / S	QS5        [        UR                  / S
QS5        [        UR                  / SQS5        g )Nr   r   r   r   r   r   r   )r   r   r   )r:   r   rG   r   )r;   r   ir      r   )rH   r   i`r   x   r   )r   hermiter   r"   )r#   H0H1H2H3H4H5s          r*   test_hermiteTestHermite.test_hermitet   s    \\!_\\!_\\!_\\!_\\!_\\!_!"$$s2.!"$$!uR0!"$$x3!"$${26!"$$r:!"$$':2>r8   c                    [         R                  " S[        S5      -  S/5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R
                  " S5      " U5      n[        R
                  " S5      " U5      [        S5      -  n	[        R
                  " S5      " U5      S-  n
[        R
                  " S5      " U5      S[        S5      -  -  n[        R
                  " S5      " U5      S	-  n[        R
                  " S5      " U5      S	[        S5      -  -  n[        UR                  UR                  S
5        [        UR                  U	R                  S
5        [        UR                  U
R                  S
5        [        UR                  UR                  S
5        [        UR                  UR                  S
5        [        UR                  UR                  S
5        g )Nro   r   r   r   r   r   r          @      @r   )r    poly1dr   r   hermitenormr   r   r"   )r#   psubr   r   r   r   r   r   he0he1he2he3he4he5s                 r*   test_hermitenormTestHermite.test_hermitenorm   s   yy#d1g+a)a a a a a a ll1od#ll1od#d1g-ll1od#c)ll1od#qay1ll1od#c)ll1od#s47{3!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0r8   rS   N)rT   rU   rV   rW   r   r   rX   rS   r8   r*   r   r   s   s    ?1r8   r   c                       \ rS rSrS rSrg)TestShLegendre   c                    [         R                  " SS/5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      " U5      n[        R                  " S5      " U5      n	[        R                  " S5      " U5      n
[        R                  " S5      " U5      n[        R                  " S5      " U5      n[        R                  " S5      " U5      n[        UR                  UR                  S5        [        UR                  U	R                  S5        [        UR                  U
R                  S5        [        UR                  UR                  S5        [        UR                  UR                  S	5        [        UR                  UR                  S	5        g 
Nr   r.   r   r   r   r   r   r   r   )r    r   r   sh_legendrelegendrer   r"   )r#   r   Ps0Ps1Ps2Ps3Ps4Ps5pse0pse1pse2pse3pse4pse5s                 r*   test_sh_legendreTestShLegendre.test_sh_legendre   s^   yy!B q!q!q!q!q!q!}}Q%}}Q%}}Q%}}Q%}}Q%}}Q%!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2r8   rS   N)rT   rU   rV   rW   r   rX   rS   r8   r*   r   r          3r8   r   c                       \ rS rSrS rSrg)TestShChebyt   c                    [         R                  " SS/5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      " U5      n[        R                  " S5      " U5      n	[        R                  " S5      " U5      n
[        R                  " S5      " U5      n[        R                  " S5      " U5      n[        R                  " S5      " U5      n[        UR                  UR                  S5        [        UR                  U	R                  S5        [        UR                  U
R                  S5        [        UR                  UR                  S5        [        UR                  UR                  S	5        [        UR                  UR                  S	5        g r   )r    r   r   	sh_chebytr=   r   r"   )r#   r   Ts0Ts1Ts2Ts3Ts4Ts5tse0tse1tse2tse3tse4tse5s                 r*   test_sh_chebytTestShChebyt.test_sh_chebyt   L   yy!B nnQnnQnnQnnQnnQnnQ{{1~d#{{1~d#{{1~d#{{1~d#{{1~d#{{1~d#!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2r8   rS   N)rT   rU   rV   rW   r   rX   rS   r8   r*   r   r      r   r8   r   c                       \ rS rSrS rSrg)TestShChebyu   c                    [         R                  " SS/5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      " U5      n[        R                  " S5      " U5      n	[        R                  " S5      " U5      n
[        R                  " S5      " U5      n[        R                  " S5      " U5      n[        R                  " S5      " U5      n[        UR                  UR                  S5        [        UR                  U	R                  S5        [        UR                  U
R                  S5        [        UR                  UR                  S5        [        UR                  UR                  S	5        [        UR                  UR                  S
5        g )Nr   r.   r   r   r   r   r   r   r   r_   )r    r   r   	sh_chebyurJ   r   r"   )r#   r   Us0Us1Us2Us3Us4Us5use0use1use2use3use4use5s                 r*   test_sh_chebyuTestShChebyu.test_sh_chebyu   r   r8   rS   N)rT   rU   rV   rW   r   rX   rS   r8   r*   r   r      r   r8   r   c                       \ rS rSrS rSrg)TestShJacobi   c                    S n[         R                  " SS/5      nS[         R                  R                  5       -  nUS-
  S[         R                  R                  5       -  -   n[        R                  " SXC5      n[        R                  " SXC5      n[        R                  " SXC5      n[        R                  " SXC5      n[        R                  " SXC5      n	[        R                  " SXC5      n
[        R
                  " SXC-
  US-
  5      " U5      U" SU5      -  n[        R
                  " SXC-
  US-
  5      " U5      U" SU5      -  n[        R
                  " SXC-
  US-
  5      " U5      U" SU5      -  n[        R
                  " SXC-
  US-
  5      " U5      U" SU5      -  n[        R
                  " SXC-
  US-
  5      " U5      U" SU5      -  n[        R
                  " SXC-
  US-
  5      " U5      U" SU5      -  n[        UR                  UR                  S	5        [        UR                  UR                  S	5        [        UR                  UR                  S	5        [        UR                  UR                  S	5        [        U	R                  UR                  S	5        [        U
R                  UR                  S	5        g )
Nc                 ^    [        U S-   5      [        X-   5      -  [        SU -  U-   5      -  $ )Nr   r   r   )nps     r*   conv)TestShJacobi.test_sh_jacobi.<locals>.conv   s-    Q<%,.q1uqy1AAAr8   r   r.   r   r   r   r   r   r   )r    r   r`   r   	sh_jacobijacobir   r"   )r#   r   r   qr   G0G1G2G3G4G5ge0ge1ge2ge3ge4ge5s                    r*   test_sh_jacobiTestShJacobi.test_sh_jacobi   s   	Byy!B 		  ""aC!BII$$&&&^^Aa"^^Aa"^^Aa"^^Aa"^^Aa"^^Aa"kk!AC!$T*T!AY6kk!AC!$T*T!AY6kk!AC!$T*T!AY6kk!AC!$T*T!AY6kk!AC!$T*T!AY6kk!AC!$T*T!AY6!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0r8   rS   N)rT   rU   rV   rW   r   rX   rS   r8   r*   r   r      s    1r8   r   c                       \ rS rSrS rSrg)TestCall   c                    / n[        S5       HJ  nUR                  S[        US9-  R                  5        Vs/ s H  o3R	                  5       PM     sn5        ML     [
        R                  " SS9   U HC  n[        U5      n[        U" S5      [
        R                  " UR                  5      " S5      US9  ME     S S S 5        g s  snf ! , (       d  f       g = f)Nr   aW  
                orth.jacobi(%(n)d,0.3,0.9)
                orth.sh_jacobi(%(n)d,0.3,0.9)
                orth.genlaguerre(%(n)d,0.3)
                orth.laguerre(%(n)d)
                orth.hermite(%(n)d)
                orth.hermitenorm(%(n)d)
                orth.gegenbauer(%(n)d,0.3)
                orth.chebyt(%(n)d)
                orth.chebyu(%(n)d)
                orth.chebyc(%(n)d)
                orth.chebys(%(n)d)
                orth.sh_chebyt(%(n)d)
                orth.sh_chebyu(%(n)d)
                orth.legendre(%(n)d)
                orth.sh_legendre(%(n)d)
                )r   r   r   g)\(?)err_msg)rangeextenddictsplitstripr    r!   evalr   r   coef)r#   polyr   xpstrr   s         r*   	test_callTestCall.test_call  s    qAKK  Qi!   "'!)) ())  ( [[X&J#AeHbii.?.F,02  '&'& '&s   C
0A
C
CrS   N)rT   rU   rV   rW   r  rX   rS   r8   r*   r   r      s    2r8   r   c                       \ rS rSrS rSrg)TestGenlaguerrei  c                 t   [        [        R                  " SSSS9" S5      S5        [        [        R                  " SSSS9" S5      S5        [        [        R                  " SSSS9[        R                  " SS	/5      5        [        [        R                  " SSSS9[        R                  " SS
/5      5        g )Nr   F)monicr   r   T       r.   r   r   )r   r   genlaguerrer    r   )r#   s    r*   test_regressionTestGenlaguerre.test_regression  s    T%%a%8;R@T%%a$7:C@T%%a%8"))RG:LMT%%a$7Ar79KLr8   rS   N)rT   rU   rV   rW   r  rX   rS   r8   r*   r  r    s    Mr8   r  c                   ^^ U " US5      u  pn
[         R                  " U[         R                  " S5      S9nU" US S 2[         R                  4   U5      n[         R                  " X-  UR
                  5      nS[         R                  " UR                  5       5      -  nUS S 2[         R                  4   U-  U-  n[        U[         R                  " U5      Xg5        [        U	R                  5       XU5        S m[        R                  " UU4S jX45      n[         R                  " T" U5      U	5      nSUS   :  a  SOUS   S-  n[        US	   UUS
9  g )NTlong)dtyper   c                 *    U S-  SU S-  -  -
  U -   S-
  $ )Nr   r   rS   )r  s    r*   fverify_gauss_quad.<locals>.f6  s#    AvAF
"Q&**r8   c                 &   > T" U 5      T" U 5      -  $ NrS   )r  r  weight_funcs    r*   <lambda>#verify_gauss_quad.<locals>.<lambda>8  s    AaDQ$7r8   gư>
   r   rtol)r    aranger  newaxisdotTr   diagonalr	   eyesumr
   quadvdot)	root_func	eval_funcr  re   bNr  atolr  wmur   vvvvdresIresGr  s     `              @r*   verify_gauss_quadr0  &  s    D!HA"
		!288F+,A!AbjjL/1%A	QSS	B	
RWWR[[]#	#B	ArzzM	R	"	$BBq	4. AEEGRt,+>>7>D771Q4D$q'>4tAw|DDGT-r8   c            
      f   S n S nS n[         nU" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	S
S9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSS
S9  U" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS	S
S9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSSS
S9  U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS 5      U" SS 5      U" SS 5      SSSS
S9  U" U " SS 5      U" SS 5      U" SS 5      SSS	SS9  U" U " SS 5      U" SS 5      U" SS 5      SSSSS9  U" U " S!S"5      U" S!S"5      U" S!S"5      SSSS
S9  U" U " S!S"5      U" S!S"5      U" S!S"5      SSS	SS9  U" U " S!S"5      U" S!S"5      U" S!S"5      SSSSS9  U" U " S#S$5      U" S#S$5      U" S#S$5      SSS5        U" U " S#S$5      U" S#S$5      U" S#S$5      SSS	SS9  U" U " S#S$5      U" S#S$5      U" S#S$5      SSSSS9  [        R                  " S%S&S&5      u  pE[        R                  " S%5      u  pg[	        XFS'S'5        [	        XWS'S'5        [        R                  " S%S(S(5      u  pE[        R
                  " S%S)5      u  p[	        XHS'S'5        [	        XYS'S'5        [        R                  " SSS*S+5      u  p[        R                  " SSS*S,5      u  pn[	        XS'S'5        [	        XS'S'5        [        R                  " U" SS*5      S-S5      u  nn[	        XUS.9  [        [        [        R                  S/SS5        [        [        [        R                  S0SS5        [        [        [        R                  S*S1S5        [        [        [        R                  S*SS15        [        [        [        R                  S*S1S15        g )2Nc                    ^ ^ U U4S j$ )Nc                 6   > [         R                  " U TTU5      $ r  )rc   roots_jacobir   r*  re   r&  s     r*   r  /test_roots_jacobi.<locals>.rf.<locals>.<lambda>?  s    R__Q1b9r8   rS   re   r&  s   ``r*   rftest_roots_jacobi.<locals>.rf>  	    99r8   c                    ^ ^ U U4S j$ )Nc                 6   > [         R                  " U TTU5      $ r  )rc   eval_jacobir   r  re   r&  s     r*   r  /test_roots_jacobi.<locals>.ef.<locals>.<lambda>A  s    BNN1aA6r8   rS   r7  s   ``r*   eftest_roots_jacobi.<locals>.ef@  s	    66r8   c                    ^ ^ U U4S j$ )Nc                 &   > SU -
  T-  SU -   T-  -  $ )Nr   rS   r  re   r&  s    r*   r  /test_roots_jacobi.<locals>.wf.<locals>.<lambda>C  s    !a%AQ14r8   rS   r7  s   ``r*   wftest_roots_jacobi.<locals>.wfB  s	    44r8   rv               ro   r      -q=r(  d   dy=r]   7QE=-=r   vIh%L=?r   vIh%<=g7QU==
ףp=2@L;@g^~z=̌G@r^   g     @   g     @绽|=g      @g     @@g     @@      @皙9Q@rI           +=r   g      @r   FTr.   r  r   ffffff
@r   )
r0  rc   r4  roots_legendrer	   roots_gegenbauerr
   r"  assert_raisesrx   )r8  r@  rF  vgqxjwjxlwlxcwcr  r)  yr+  mmuImuI_errs                    r*   test_roots_jacobirl  =  s   :75 C4D%"T5/3AF4D%"T5/3
4D%"T5/3% 3r#t}bdmS"a@3r#t}bdmS"bwO3r#t}bdmS"cN1c
Bq#J1c
CQUC1c
Bq#J1c
CReD1c
Bq#J1c
CSuE3
BsAJ3
CQ73
BsAJ3
CReD3
BsAJ3
CSuE5$E4"UD/3AF5$E4"UD/3B5$E4"UD/3% 444RO444R%P444R% 2tbTlBr4L#r15I2tbTlBr4L#r2EJ2tbTlBr4L#r3UK2tbTlBr4L#r3UK444R444R444R 444R444R444R 5$E4"UD/3A5$E4"UD/3B5$E4"UD/3C 444RC444R444R __QS)FBq!FBBE5)BE5) __QS)FB  C(FBBE5)BE5)??1aE*DAooaAt,GA!A%'A%'>>"Qq'2q1LCA)*booq!Q7*boosAq9*booq"a8*booq!R8*booq"b9r8   c            
         S n S nS n[         nU" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	S
S9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSS
S9  U" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSS
S9  U" U " SS5      U" SS5      U" SS5      SSS5        U" U " SS5      U" SS5      U" SS5      SSS	5        U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSSS
S9  U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSSSS9  U" U " SS5      U" SS5      U" SS5      SSS	SS9  U" U " SS5      U" SS5      U" SS5      SSSS
S9  [        R                  " SSSS5      u  pE[        R                  " SSSS 5      u  pgn[        XFS!S!5        [        XWS!S!5        [        R
                  " U" SS5      S"S5      u  p[        XU
S#9  [        [        [        R                  S"SS5        [        [        [        R                  S$SS5        [        [        [        R                  SSS5        [        [        [        R                  SSS%5        [        [        [        R                  SS&S%5        g )'Nc                    ^ ^ U U4S j$ )Nc                 6   > [         R                  " U TTU5      $ r  )rc   roots_sh_jacobir5  s     r*   r  2test_roots_sh_jacobi.<locals>.rf.<locals>.<lambda>  s    R//1a<r8   rS   r7  s   ``r*   r8   test_roots_sh_jacobi.<locals>.rf  s	    <<r8   c                    ^ ^ U U4S j$ )Nc                 6   > [         R                  " U TTU5      $ r  )rc   eval_sh_jacobir>  s     r*   r  2test_roots_sh_jacobi.<locals>.ef.<locals>.<lambda>  s    B--aAq9r8   rS   r7  s   ``r*   r@   test_roots_sh_jacobi.<locals>.ef  r:  r8   c                    ^ ^ U U4S j$ )Nc                 ,   > SU -
  TT-
  -  U TS-
  -  -  $ )Nro   rS   rD  s    r*   r  2test_roots_sh_jacobi.<locals>.wf.<locals>.<lambda>  s    #'q1u-a#g>r8   rS   r7  s   ``r*   rF   test_roots_sh_jacobi.<locals>.wf  s	    >>r8   rv   g      ?r[  ro   r   rJ  rK  rL  rM  rN  r]   rS  r   rO  rP  r   rR  rU  rT  rV  皙?rX  rZ  rY  g(#=rQ  r   FTr\  r   r  r]  r.   r   )r0  rc   rp  r	   r
   r"  r`  rx   )r8  r@  rF  ra  r  r)  rh  r+  ri  rj  rk  s              r*   test_roots_sh_jacobir}    s   =:? C444BB444B
444B% 3bclBsCL"b!<3bclBsCL"b"5I3bclBsCL"b#EJ1c
Bq#J1c
BA61c
Bq#J1c
BBWE1c
Bq#J1c
BCeD1c
Bq#J1c
BA61c
Bq#J1c
BBUC1c
Bq#J1c
BCeD4D%"T5/2r1E4D%"T5/2r2F4D%"T5/2r% 4r$}bsmRQUK4r$}bsmRReL4r$}bsmRSuM444BP444BO444B% aAu-DA  Aq$/GA!A%'A%'>>"Qq'1a0LCA)*b00!Q:*b00#q!<*b00!Q:*b00!Q;*b00!R<r8   c            
         [         R                  n [         R                  n[        R                  " S5      R
                  n[        XU[        R                  * [        R                  S5        [        XU[        R                  * [        R                  SSS9  [        XU[        R                  * [        R                  SSS9  [         R                  " SS5      u  p4[         R                  " SS5      u  pVn[        X5S	S	5        [        XFS	S	5        [        R                  " U[        R                  * [        R                  5      u  p[        XxU	S
9  [         R                  " SS5      u  p4[         R                  " SS5      u  pVn[        X5S	S	5        [        XFS	S	5        [        [        U5      US	S	5        [        [        [         R                  S5        [        [        [         R                  S5        g )Nr   rJ  rS  rL  rM  rK  FTr\  r     r   r]  )rc   roots_hermiteeval_hermiter   r   r  r0  r    rz   r	   r
   r"  r!  r`  rx   
rootfevalfweightfr  r)  rh  r+  ri  rj  rk  s
             r*   test_roots_hermiter    sa   EOOEll1o))GeGbffWbffa@eGbffWbffbuMeGbffWbffcN Au%DAq$'GA!A%'A%'>>'BFF7BFF;LCA) C'DAsD)GA!A%'A%'CFAue,*b..2*b..4r8   c                     ^ S mSU4S jjn U " SSS9  U " SSS9  U " SSS9  U " SSS9  U " S	SS9  U " S
SS9  U " SSS9  U " SSS9  U " SSS9  U " SSS9  g )Nc                    [         R                  " XR                  45      n[         R                  S-  [         R                  " SUS-  -  5      -  USS S 24'   U S:  as  [        S5      U-  USS S 24   -  USS S 24'   [        SU 5       HD  n[        SU-  5      U-  X#S-
  S S 24   -  [        US-
  U-  5      X#S-
  S S 24   -  -
  X#S S 24'   MF     U$ )N      пrv   r   r   r   r   ro   )r    zerossizepiexpr   r   )r   nodesHks       r*   hermite_recursion1test_roots_hermite_asy.<locals>.hermite_recursion  s    HHa_%"&&eQh"77!A#q5#Y&1Q3/AacF1a[c!eu,q1Qx7$#qy/APQcRSeH:TTA# !r8   c                    > [         R                  " U 5      u  p4T" U S-   U5      n[        USS S 24   [        R                  " U 5      X5        [        [        U5      [        [        R                  5      X5        g )Nr   r.   )r   _roots_hermite_asyr	   r    r  r!  r   r  )r'  r  r(  r  r)  r  r  s         r*   test$test_roots_hermite_asy.<locals>.test  sY    &&q)ac1%"Q$!d9ARUUT8r8      rK  rL     i,  i-  i  i  i  i  i  i  )V瞯<r\  rS   )r  r  s    @r*   test_roots_hermite_asyr    ss    9 	5555555EEEr8   c            
          [         R                  n [         R                  n[        R                  " S5      R
                  n[        XU[        R                  * [        R                  S5        [        XU[        R                  * [        R                  SSS9  [        XU[        R                  * [        R                  SSS9  [         R                  " SS5      u  p4[         R                  " SS5      u  pVn[        X5S	S	5        [        XFS	S	5        [        R                  " U[        R                  * [        R                  5      u  p[        XxU	S
9  [        [        [         R                  S5        [        [        [         R                  S5        g )Nr   rJ  rS  rL  rM  rK  FTr\  r  r   r]  )rc   roots_hermitenormeval_hermitenormr   r   r  r0  r    rz   r	   r
   r"  r`  rx   r  s
             r*   test_roots_hermitenormr    s     EEq!--GeGbffWbffa@eGbffWbffbuMeGbffWbffcN5)DA""1d+GA!A%'A%'>>'BFF7BFF;LCA)*b22A6*b22C8r8   c            
      	   S n S nS n[         nU" U " S5      U" S5      U" S5      SSS5        U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSS5        U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSS5        U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSS5        U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSS	S
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      U" S5      U" S5      SSSSS
9  U" U " S5      [        R                  U" S5      SSS5        U" U " S5      [        R                  U" S5      SSS5        U" U " S5      [        R                  U" S5      SSSS	S
9  [        R                  " SSS5      u  pE[        R                  " SSS5      u  pgn[	        XFSS5        [	        XWSS5        [
        R                  " U" S5      SS5      u  p[	        XU
S9  [        [        [        R                  SS5        [        [        [        R                  SS5        [        [        [        R                  S S!5        g )"Nc                    ^  U 4S j$ )Nc                 4   > [         R                  " U TU5      $ r  )rc   r_  r   r*  re   s     r*   r  6test_roots_gegenbauer.<locals>.rootf.<locals>.<lambda>#  s    R00Ar:r8   rS   re   s   `r*   r  $test_roots_gegenbauer.<locals>.rootf"  s	    ::r8   c                    ^  U 4S j$ )Nc                 4   > [         R                  " U TU5      $ r  )rc   eval_gegenbauerr   r  re   s     r*   r  6test_roots_gegenbauer.<locals>.evalf.<locals>.<lambda>%  s    B..q!Q7r8   rS   r  s   `r*   r  $test_roots_gegenbauer.<locals>.evalf$  s	    77r8   c                    ^  U 4S j$ )Nc                     > SU S-  -
  TS-
  -  $ )Nr   r   r]   rS   r  re   s    r*   r  8test_roots_gegenbauer.<locals>.weightf.<locals>.<lambda>'  s    !a1f*!c'2r8   rS   r  s   `r*   r  &test_roots_gegenbauer.<locals>.weightf&  s	    22r8   r  rI  ro   r   rJ  rK  rL  rM  rN  皙?rS  r   r  2      g     Pe@g-A=   g     @rX  r   r   FTr\  r.   r  r]  r   rH  )	r0  rc   eval_chebytr_  r	   r
   r"  r`  rx   r  r  r  ra  r  r)  rh  r+  ri  rj  rk  s              r*   test_roots_gegenbauerr  !  sv   ;83 CeeElGENCQ?eeElGENCReLeeElGENCSuMc
E#Jc2q9c
E#Jc2rFc
E#Jc2sGa%(GAJR3a%(GAJR%@a%(GAJR5Ab	59gbk3A6b	59gbk3BUCb	59gbk3CeDb	59gbk3AEBb	59gbk3BUCb	59gbk3CeD c
E#Jc2quEc
E#Jc2rFc
E#Jc2sGeeElGENCQXNeeElGENCReLeeElGENCSuM c
E#Jc2quEc
E#Jc2rFc
E#Jc2sGeeElGENCQUKeeElGENCReLeeElGENCSuM
 a"..'!*c2q9a"..'!*c2r:a"..'!*c2sGq!U+DA!!!Q-GA!A%'A%'>>'!*b!4LCA)*b111a8*b113:*b111d;r8   c            
         [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSSSS9  [        R
                  " SS5      u  p[        R
                  " SS	5      u  p4n[        XS
S
5        [        X$S
S
5        [        R                  " U SS5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g )Nr   rI  ro   rJ  rM  rK  rL  FTr\  r.   r   r  r   r]  )r   r=   r  r0  rc   roots_chebytr  r	   r
   r"  r`  rx   r  r  r)  rh  r+  ri  rj  rk  s           r*   test_roots_chebytr  a      kk!n((Gboor~~wRKboor~~wRLboor~~wR " ??1e$DAooa&GA!A%'A%'>>'2q1LCA)*booq1*boos3r8   c                      [         R                  " S5      u  pU S S U SS  p2[        X2S S S2   * 5        [        U S   S5        g )N   r  r_   r.   r   )rc   r  r   )r  r)  posnegs       r*   test_chebyt_symmetryr  s  sE    ??2DA"vqv4R4yj!2r8   c                     [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        R
                  " SS5      u  p[        R
                  " SS5      u  p4n[        XSS5        [        X$SS5        [        R                  " U S	S
5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g )Nr   rI  ro   rJ  rM  FTr\  r.   r   r  r   r]  )r   rJ   r  r0  rc   roots_chebyueval_chebyur	   r
   r"  r`  rx   r  s           r*   test_roots_chebyur  y      kk!n((Gboor~~wRKboor~~wRLboor~~wRM??1e$DAooa&GA!A%'A%'>>'2q1LCA)*booq1*boos3r8   c            
         [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSSSS9  [        R
                  " SS5      u  p[        R
                  " SS	5      u  p4n[        XS
S
5        [        X$S
S
5        [        R                  " U SS5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g )Nr   r	  r   rJ  rM  rK  rL  FTr\  r   r   r  r   r]  )r   r   r  r0  rc   roots_chebyceval_chebycr	   r
   r"  r`  rx   r  s           r*   test_roots_chebycr    r  r8   c                     [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        R
                  " SS5      u  p[        R
                  " SS5      u  p4n[        XSS5        [        X$SS5        [        R                  " U S	S
5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g )Nr   r	  r   rJ  rM  FTr\  r   r   r  r   r]  )r   r/   r  r0  rc   roots_chebyseval_chebysr	   r
   r"  r`  rx   r  s           r*   test_roots_chebysr    r  r8   c            
         [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSSSS9  [        R
                  " SS5      u  p[        R
                  " SS	5      u  p4n[        XS
S
5        [        X$S
S
5        [        R                  " U SS5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g Nr   r[  ro   rJ  rM  rS  rL  FTr\  r   r   r  r]  )r   r   r  r0  rc   roots_sh_chebyteval_sh_chebytr	   r
   r"  r`  rx   r  s           r*   test_roots_sh_chebytr        nnQ++Gb(("*;*;Wb"aPb(("*;*;Wb"bQb(("*;*;Wb"' a'DA  D)GA!A%'A%'>>'1a0LCA)*b00!4*b00#6r8   c            
         [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSSSS9  [        R
                  " SS5      u  p[        R
                  " SS	5      u  p4n[        XS
S
5        [        X$S
S
5        [        R                  " U SS5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g r  )r   r   r  r0  rc   roots_sh_chebyueval_sh_chebyur	   r
   r"  r`  rx   r  s           r*   test_roots_sh_chebyur    r  r8   c            
         [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSSSS9  [        [        R
                  [        R                  U SSSSS9  [        R
                  " SS	5      u  p[        R
                  " SS
5      u  p4n[        XSS5        [        X$SS5        [        R                  " U SS5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g )Nr   rI  ro   rJ  rS  rL  rM  rK  FTr\  r.   r   r  r   r]  )r   r   r  r0  rc   r^  eval_legendrer	   r
   r"  r`  rx   r  s           r*   test_roots_legendrer    s    mmA**Gb'')9)97CQOb'')9)97Cu&b'')9)97C' Q&DA4(GA!A%'A%'>>'2q1LCA)*b//3*b//5r8   c            
         [         R                  " S5      R                  n [        [        R
                  [        R                  U SSS5        [        [        R
                  [        R                  U SSSSS9  [        [        R
                  [        R                  U SSSSS9  [        R
                  " SS	5      u  p[        R
                  " SS
5      u  p4n[        XSS5        [        X$SS5        [        R                  " U SS5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g )Nr   r[  ro   rJ  rS  rL  rM  rK  FTr\  r   r   r  r]  )r   r   r  r0  rc   roots_sh_legendreeval_sh_legendrer	   r
   r"  r`  rx   r  s           r*   test_roots_sh_legendrer    s   q!--Gb**B,?,?"bRSTb**B,?,?"bu&b**B,?,?"b' 5)DA""1d+GA!A%'A%'>>'1a0LCA)*b22A6*b22C8r8   c            
         [         R                  " S5      R                  n [        [        R
                  [        R                  U S[        R                  S5        [        [        R
                  [        R                  U S[        R                  SSS9  [        [        R
                  [        R                  U S[        R                  SSS9  [        R
                  " SS5      u  p[        R
                  " SS	5      u  p4n[        XS
S
5        [        X$S
S
5        [        R                  " U S[        R                  5      u  pg[        XVUS9  [        [        [        R
                  S5        [        [        [        R
                  S5        g )Nr   r[  rJ  rS  rL  rM  rK  FTr\  r   r  r]  )r   laguerrer  r0  rc   roots_laguerreeval_laguerrer    rz   r	   r
   r"  r`  rx   r  s           r*   test_roots_laguerrer    s   mmA**Gb'')9)97BPQRb'')9)97Bu&b'')9)97B' Q&DA4(GA!A%'A%'>>'1bff5LCA)*b//3*b//5r8   c                  $   S n S nS n[         nU" U " S5      U" S5      U" S5      S[        R                  S5        U" U " S5      U" S5      U" S5      S[        R                  SSS	9  U" U " S5      U" S5      U" S5      S[        R                  S
SS	9  U" U " S5      U" S5      U" S5      S[        R                  S5        U" U " S5      U" S5      U" S5      S[        R                  SSS	9  U" U " S5      U" S5      U" S5      S[        R                  S
SS	9  U" U " S5      U" S5      U" S5      S[        R                  S5        U" U " S5      U" S5      U" S5      S[        R                  SSS	9  U" U " S5      U" S5      U" S5      S[        R                  S
SS	9  U" U " S5      U" S5      U" S5      S[        R                  S5        U" U " S5      U" S5      U" S5      S[        R                  SSS	9  U" U " S5      U" S5      U" S5      S[        R                  S
SS	9  U" U " S5      U" S5      U" S5      S[        R                  S5        U" U " S5      U" S5      U" S5      S[        R                  SSS	9  U" U " S5      U" S5      U" S5      S[        R                  S
SSS9  [        R                  " SSS5      u  pE[        R                  " SSS5      u  pgn[        XFSS5        [        XWSS5        [        R                  " U" S5      S[        R                  5      u  p[        XU
S9  [        [        [        R                  SS5        [        [        [        R                  SS5        [        [        [        R                  SS5        g )Nc                    ^  U 4S j$ )Nc                 4   > [         R                  " U TU5      $ r  )rc   roots_genlaguerrer  s     r*   r  7test_roots_genlaguerre.<locals>.rootf.<locals>.<lambda>  s    R11!Q;r8   rS   r  s   `r*   r  %test_roots_genlaguerre.<locals>.rootf  s	    ;;r8   c                    ^  U 4S j$ )Nc                 4   > [         R                  " U TU5      $ r  )rc   eval_genlaguerrer  s     r*   r  7test_roots_genlaguerre.<locals>.evalf.<locals>.<lambda>  s    B//1a8r8   rS   r  s   `r*   r  %test_roots_genlaguerre.<locals>.evalf  s	    88r8   c                    ^  U 4S j$ )Nc                 >   > U T-  [         R                  " U * 5      -  $ r  )r    r  r  s    r*   r  9test_roots_genlaguerre.<locals>.weightf.<locals>.<lambda>  s    a"&&!*,r8   rS   r  s   `r*   r  'test_roots_genlaguerre.<locals>.weightf  s	    ,,r8   rv   r[  r   rJ  rS  rL  rM  rK  r  g+F=r   gN<=r  r  r\  rQ  )r  r(  r   FTr   r  r   r]  r   g)
r0  r    rz   rc   r  r	   r
   r"  r`  rx   r  s              r*   test_roots_genlaguerrer  
  s   <9- CdU4['$-RVVQ?dU4['$-RVVReLdU4['$-RVVSuMc
E#Jb"&&!<c
E#Jb"&&"5Ic
E#Jb"&&#GLa%(GAJBFFA6a%(GAJBFFBUCa%(GAJBFFChGb	59gbk2rvvq9b	59gbk2rvvrFb	59gbk2rvvsGb	59gbk2rvvq9b	59gbk2rvvrFb	59gbk2rvvsUS1e,DA""1a.GA!A%'A%'>>'"+r266:LCA)*b22Aq9*b22C;*b22At<r8   c                  <    [         R                  " S5      " S5        g )NA   r|  )rc   r=   rS   r8   r*   test_gh_6721r  4  s    IIbM#r8   )r  gvIh%,=)1rw   r   r`  numpyr    r   r   numpy.testingr   r   r   r	   scipyr
   scipy.specialspecialrc   r   scipy.special._orthogonal_orthogonalr   r   rZ   r   r   r   r   r   r   r  r0  rl  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rS   r8   r*   <module>r     s     *  A A    ( (9< 9<x%( %(P$1 $1N3 303 303 301 1<2 2<M M (-..^:@5=n58:9(><@4$4"4$4"7$7$6&9&6&'=Tr8   