
    tKg2{                        d dl Zd dl mZmZ d dlmZmZmZmZ d dl	m
Z d dlmZ d dlmZ d dlmZ d dlmc mZ  G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z	 d,dZd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0y)-    N)arraysqrt)assert_array_almost_equalassert_equalassert_almost_equalassert_allclose)raises)	integrategammac                   $    e Zd Zd Zd Zd Zd Zy)	TestChebyc                    t        j                  d      }t        j                  d      }t        j                  d      5  t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }d d d        t	        |j
                  dgd	       t	        |j
                  ddgd	       t	        j
                  g d
d	       t	        j
                  g dd	       t	        j
                  g dd	       t	        j
                  g dd	       y # 1 sw Y   xY w)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          g/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/special/tests/test_orthogonal.pytest_chebycz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D44D=c                 *   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgd       t        |j                  ddgd       t        |j                  g dd       t        |j                  g d	d       t        |j                  g d
d       t        |j                  g dd       y )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_chebyszTestCheby.test_chebys   s    [[^[[^[[^[[^[[^[[^!"$$s2.!"$$!uR0!"$$x3!"$$z"5!"$$|B7!"$$~b9    c                 *   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgd       t        |j                  ddgd       t        |j                  g dd       t        |j                  g d	d       t        |j                  g d
d       t        |j                  g dd       y )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_chebytzTestCheby.test_chebyt,   s    [[^[[^[[^[[^[[^[[^!"$$s2.!"$$!uR0!"$$x3!"$$z"5!"$$|B7!"$$'7;r5   c                 *   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgd       t        |j                  ddgd       t        |j                  g dd       t        |j                  g d	d       t        |j                  g d
d       t        |j                  g dd       y )Nr   r   r   r   r   r   r   )r   r   r,   )r7   r   r   r   )r8   r   r   r   )    r   ir      r   )r   chebyur   r!   )r"   U0U1U2U3U4U5s          r)   test_chebyuzTestCheby.test_chebyu:   s    [[^[[^[[^[[^[[^[[^!"$$s2.!"$$!uR0!"$$x3!"$$z"5!"$$~b9!"$$'7;r5   N)__name__
__module____qualname__r*   r4   rA   rM    r5   r)   r   r      s    : :<<r5   r   c                       e Zd Zd Zy)TestGegenbauerc                    dt         j                  j                         z  dz
  }t        j                  |dk(        rd}t        j                  d|      }t        j                  d|      }t        j                  d|      }t        j                  d|      }t        j                  d|      }t        j                  d|      }t        |j                  t        dg      d	       t        |j                  t        d|z  dg      d	       t        |j                  t        d|z  |dz   z  d| g      d	       t        |j                  t        dt        j                  |d      z  dd
|z  |dz   z  dg      dz  d       t        |j                  t        dt        j                  |d      z  ddt        j                  |d      z  dd|z  |dz   z  g      dz  d       t        |j                  t        dt        j                  |d      z  ddt        j                  |d      z  ddt        j                  |d      z  dg      dz  d       y )Nr         ?r   皙ɿr   r   r   r   r   ig      @   rC   g      @r9      g      .@)
r   randomanyr   
gegenbauerr   r!   r   scpoch)r"   aCa0Ca1Ca2Ca3Ca4Ca5s           r)   test_gegenbauerzTestGegenbauer.test_gegenbauerK   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r5   N)rN   rO   rP   re   rQ   r5   r)   rS   rS   I   s    Nr5   rS   c                       e Zd Zd Zd Zy)TestHermitec                 *   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgd       t        |j                  ddgd       t        |j                  g dd       t        |j                  g d	d       t        |j                  g d
d       t        |j                  g dd       y )Nr   r   r   r   r   r   r   )r   r   r   )r7   r   rC   r   )r8   r   ir      ri   )rD   r   i`r   x   r   )r   hermiter   r!   )r"   H0H1H2H3H4H5s          r)   test_hermitezTestHermite.test_hermiteb   s    \\!_\\!_\\!_\\!_\\!_\\!_!"$$s2.!"$$!uR0!"$$x3!"$${26!"$$r:!"$$':2>r5   c                 v   t        j                  dt        d      z  dg      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      } t        j
                  d      |      } t        j
                  d      |      t        d      z  }	 t        j
                  d      |      dz  }
 t        j
                  d      |      dt        d      z  z  } t        j
                  d      |      d	z  } t        j
                  d      |      d	t        d      z  z  }t        |j                  |j                  d
       t        |j                  |	j                  d
       t        |j                  |
j                  d
       t        |j                  |j                  d
       t        |j                  |j                  d
       t        |j                  |j                  d
       y )N      ?r   r   r   r   r   r          @      @r   )r   poly1dr   r   hermitenormrk   r   r!   )r"   psubrl   rm   rn   ro   rp   rq   he0he1he2he3he4he5s                 r)   test_hermitenormzTestHermite.test_hermitenormp   s   yy#d1g+a)a a a a a a dll1od#dll1od#d1g-dll1od#c)dll1od#qay1dll1od#c)dll1od#s47{3!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0r5   N)rN   rO   rP   rr   r   rQ   r5   r)   rg   rg   a   s    ?1r5   rg   c                       e Zd Zd Zy)TestShLegendrec                    t        j                  ddg      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      } t        j                  d      |      } t        j                  d      |      }	 t        j                  d      |      }
 t        j                  d      |      } t        j                  d      |      } t        j                  d      |      }t        |j                  |j                  d       t        |j                  |	j                  d       t        |j                  |
j                  d       t        |j                  |j                  d       t        |j                  |j                  d	       t        |j                  |j                  d	       y 
Nr   r,   r   r   r   r   r   r   ri   )r   rw   r   sh_legendrelegendrer   r!   )r"   ry   Ps0Ps1Ps2Ps3Ps4Ps5pse0pse1pse2pse3pse4pse5s                 r)   test_sh_legendrezTestShLegendre.test_sh_legendre   sj   yy!B q!q!q!q!q!q!t}}Q%t}}Q%t}}Q%t}}Q%t}}Q%t}}Q%!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2r5   N)rN   rO   rP   r   rQ   r5   r)   r   r          3r5   r   c                       e Zd Zd Zy)TestShChebytc                    t        j                  ddg      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      } t        j                  d      |      } t        j                  d      |      }	 t        j                  d      |      }
 t        j                  d      |      } t        j                  d      |      } t        j                  d      |      }t        |j                  |j                  d       t        |j                  |	j                  d       t        |j                  |
j                  d       t        |j                  |j                  d       t        |j                  |j                  d	       t        |j                  |j                  d	       y r   )r   rw   r   	sh_chebytr:   r   r!   )r"   ry   Ts0Ts1Ts2Ts3Ts4Ts5tse0tse1tse2tse3tse4tse5s                 r)   test_sh_chebytzTestShChebyt.test_sh_chebyt   X   yy!B nnQnnQnnQnnQnnQnnQt{{1~d#t{{1~d#t{{1~d#t{{1~d#t{{1~d#t{{1~d#!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2!#%%r2r5   N)rN   rO   rP   r   rQ   r5   r)   r   r      r   r5   r   c                       e Zd Zd Zy)TestShChebyuc                    t        j                  ddg      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      } t        j                  d      |      } t        j                  d      |      }	 t        j                  d      |      }
 t        j                  d      |      } t        j                  d      |      } t        j                  d      |      }t        |j                  |j                  d       t        |j                  |	j                  d       t        |j                  |
j                  d       t        |j                  |j                  d       t        |j                  |j                  d	       t        |j                  |j                  d
       y )Nr   r,   r   r   r   r   r   r   ri   rW   )r   rw   r   	sh_chebyurF   r   r!   )r"   ry   Us0Us1Us2Us3Us4Us5use0use1use2use3use4use5s                 r)   test_sh_chebyuzTestShChebyu.test_sh_chebyu   r   r5   N)rN   rO   rP   r   rQ   r5   r)   r   r      r   r5   r   c                       e Zd Zd Zy)TestShJacobic                    d }t        j                  ddg      }dt         j                  j                         z  }|dz
  dt         j                  j                         z  z   }t        j                  d||      }t        j                  d||      }t        j                  d||      }t        j                  d||      }t        j                  d||      }	t        j                  d||      }
 t        j
                  d||z
  |dz
        |       |d|      z  } t        j
                  d||z
  |dz
        |       |d|      z  } t        j
                  d||z
  |dz
        |       |d|      z  } t        j
                  d||z
  |dz
        |       |d|      z  } t        j
                  d||z
  |dz
        |       |d|      z  } t        j
                  d||z
  |dz
        |       |d|      z  }t        |j                  |j                  d	       t        |j                  |j                  d	       t        |j                  |j                  d	       t        |j                  |j                  d	       t        |	j                  |j                  d	       t        |
j                  |j                  d	       y )
Nc                 `    t        | dz         t        | |z         z  t        d| z  |z         z  S )Nr   r   r   )nps     r)   convz)TestShJacobi.test_sh_jacobi.<locals>.conv   s/    Q<%A,.q1uqy1AAAr5   r   r,   r   r   r   r   r   r   )r   rw   rY   r   	sh_jacobijacobir   r!   )r"   r   ry   qr   G0G1G2G3G4G5ge0ge1ge2ge3ge4ge5s                    r)   test_sh_jacobizTestShJacobi.test_sh_jacobi   s=   	Byy!B 		  ""aC!BII$$&&&^^Aa"^^Aa"^^Aa"^^Aa"^^Aa"^^Aa"$dkk!AaC!$T*T!AY6$dkk!AaC!$T*T!AY6$dkk!AaC!$T*T!AY6$dkk!AaC!$T*T!AY6$dkk!AaC!$T*T!AY6$dkk!AaC!$T*T!AY6!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0!"$$suuR0r5   N)rN   rO   rP   r   rQ   r5   r)   r   r      s    1r5   r   c                       e Zd Zd Zy)TestCallc           	         g }t        d      D ]J  }|j                  dt        |      z  j                         D cg c]  }|j	                          c}       L t        j                  d      5  |D ]D  }t        |      }t         |d       t        j                  |j                        d      |       F 	 d d d        y c c}w # 1 sw Y   y xY w)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   rw   coef)r"   polyr   xpstrr   s         r)   	test_callzTestCall.test_call   s    qAKK  Qi!   "'!)) ())  ( [[X&J#AeH.?bii.?.F,02  '&'& '&s   C
1A
C

CN)rN   rO   rP   r   rQ   r5   r)   r   r      s    2r5   r   c                       e Zd Zd Zy)TestGenlaguerrec                    t         t        j                  ddd      d      d       t         t        j                  ddd      d      d       t        t        j                  ddd      t        j                  dd	g             t        t        j                  ddd      t        j                  dd
g             y )Nr   F)monicr   ru   T       r,   r   r   )r   r   genlaguerrer   rw   )r"   s    r)   test_regressionzTestGenlaguerre.test_regression  s    8T%%a%8;R@7T%%a$7:C@T%%a%8"))RG:LMT%%a$7Ar79KLr5   N)rN   rO   rP   r   rQ   r5   r)   r   r     s    Mr5   r   c                     | |d      \  }}	}
t        j                  |t        j                  d            } ||d d t         j                  f   |      }t        j                  ||	z  |j
                        }dt        j                  |j                               z  }|d d t         j                  f   |z  |z  }t        |t        j                  |      ||       t        |	j                         |
||       d t        j                  fd||      }t        j                   |      |	      }d|d   k  rdn|d   dz  }t        |d	   ||
       y )NTlong)dtyper   c                 *    | dz  d| dz  z  z
  | z   dz
  S )Nr   r   rQ   )r   s    r)   fzverify_gauss_quad.<locals>.f$  s#    AvAF
"Q&**r5   c                 &     |        |       z  S NrQ   )r   r   weight_funcs    r)   <lambda>z#verify_gauss_quad.<locals>.<lambda>&  s    AaDQ$7r5   gư>
   r   rtol)r   aranger   newaxisdotTr   diagonalr   eyesumr
   quadvdot)	root_func	eval_funcr   r^   bNr   atolr   wmur   vvvvdresIresGr   s     `              @r)   verify_gauss_quadr    s    D!HAq"
		!288F+,A!AbjjL/1%A	!QSS	B	
RWWR[[]#	#B	ArzzM	R	"	$BBq	4. AEEGRt,+>>7A>D771Q4D$q'>4tAw|DDGT-r5   c            	      &   d } d }d }t         } | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d
        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd
        | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd	d
        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      dddd
        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd        | | dd        |dd        |dd       dddd
        | | dd        |dd        |dd       ddd	d        | | dd        |dd        |dd       dddd        | | d!d"       |d!d"       |d!d"      dddd
        | | d!d"       |d!d"       |d!d"      ddd	d        | | d!d"       |d!d"       |d!d"      dddd        | | d#d$       |d#d$       |d#d$      ddd        | | d#d$       |d#d$       |d#d$      ddd	d        | | d#d$       |d#d$       |d#d$      dddd       t        j                  d%d&d&      \  }}t        j                  d%      \  }}t	        ||d'd'       t	        ||d'd'       t        j                  d%d(d(      \  }}t        j
                  d%d)      \  }}	t	        ||d'd'       t	        ||	d'd'       t        j                  ddd*d+      \  }
}t        j                  ddd*d,      \  }}}t	        |
|d'd'       t	        ||d'd'       t        j                   |dd*      d-d      \  }}t	        |||.       t        t        t        j                  d/dd       t        t        t        j                  d0dd       t        t        t        j                  d*d1d       t        t        t        j                  d*dd1       t        t        t        j                  d*d1d1       y )2Nc                       fdS )Nc                 4    t        j                  | |      S r   )r\   roots_jacobir   r   r^   r   s     r)   r   z/test_roots_jacobi.<locals>.rf.<locals>.<lambda>-  s    R__Q1b9r5   rQ   r^   r   s   ``r)   rfztest_roots_jacobi.<locals>.rf,  	    99r5   c                       fdS )Nc                 4    t        j                  | |      S r   )r\   eval_jacobir   r   r^   r   s     r)   r   z/test_roots_jacobi.<locals>.ef.<locals>.<lambda>/  s    BNN1aA6r5   rQ   r  s   ``r)   efztest_roots_jacobi.<locals>.ef.  s	    66r5   c                       fdS )Nc                 &    d| z
  z  d| z   z  z  S )Nr   rQ   r   r^   r   s    r)   r   z/test_roots_jacobi.<locals>.wf.<locals>.<lambda>1  s    !a%AQ14r5   rQ   r  s   ``r)   wfztest_roots_jacobi.<locals>.wf0  s	    44r5                     rt   r      -q=r   d   dy=rU   7QE=-=r   vIh%L=?r   vIh%<=g7QU==
ףp=2@L;@g^~z=̌G@rV   g     @   g     @绽|=g      @g     @@g     @@      @皙9Q@rE           +=rv   g      @r   FTr,   r   r   ffffff
@r   )
r  r\   r
  roots_legendrer   roots_gegenbauerr
   r   assert_raises
ValueError)r  r  r  vgqxjwjxlwlxcwcr   r   yr  mmuImuI_errs                    r)   test_roots_jacobir>  +  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BE5)BE5) __QS)FB  C(FBBE5)BE5)??1aE*DAqooaAt,GAq!Aq%'Aq%'>>"Qq'2q1LCAs)*booq!Q7*boosAq9*booq"a8*booq!R8*booq"b9r5   c            	      @   d } d }d }t         } | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d
        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd
        | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd
        | | dd       |dd       |dd      ddd        | | dd       |dd       |dd      ddd	        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      dddd
        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      dddd        | | dd       |dd       |dd      ddd	d        | | dd       |dd       |dd      dddd
       t        j                  dddd      \  }}t        j                  dddd       \  }}}t        ||d!d!       t        ||d!d!       t	        j
                   |dd      d"d      \  }	}
t        ||	|
#       t        t        t        j                  d"dd       t        t        t        j                  d$dd       t        t        t        j                  ddd       t        t        t        j                  ddd%       t        t        t        j                  dd&d%       y )'Nc                       fdS )Nc                 4    t        j                  | |      S r   )r\   roots_sh_jacobir  s     r)   r   z2test_roots_sh_jacobi.<locals>.rf.<locals>.<lambda>  s    R//1a<r5   rQ   r  s   ``r)   r  z test_roots_sh_jacobi.<locals>.rf  s	    <<r5   c                       fdS )Nc                 4    t        j                  | |      S r   )r\   eval_sh_jacobir  s     r)   r   z2test_roots_sh_jacobi.<locals>.ef.<locals>.<lambda>  s    B--aAq9r5   rQ   r  s   ``r)   r  z test_roots_sh_jacobi.<locals>.ef  r  r5   c                       fdS )Nc                 ,    d| z
  z
  z  | dz
  z  z  S )Nrt   rQ   r  s    r)   r   z2test_roots_sh_jacobi.<locals>.wf.<locals>.<lambda>  s    #'q1u-a#g>r5   rQ   r  s   ``r)   r  z test_roots_sh_jacobi.<locals>.wf  s	    >>r5   r  g      ?r,  rt   r   r  r  r  r  r  rU   r$  r   r   r!  r   r#  r&  r%  r'  皙?r)  r+  r*  g(#=r"  r   FTr-  r   r   r.  r,   r   )r  r\   rB  r   r
   r   r1  r2  )r  r  r  r3  r   r   r:  r  r;  r<  r=  s              r)   test_roots_sh_jacobirI    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-DAq  Aq$/GAq!Aq%'Aq%'>>"Qq'1a0LCAs)*b00!Q:*b00#q!<*b00!Q:*b00!Q;*b00!R<r5   c            	         t         j                  } t         j                  }t        j                  d      j
                  }t        | ||t        j                   t        j                  d       t        | ||t        j                   t        j                  dd       t        | ||t        j                   t        j                  dd       t        j                  dd      \  }}t        j                  dd      \  }}}t        ||d	d	       t        ||d	d	       t        j                  |t        j                   t        j                        \  }}	t        |||	
       t        j                  dd      \  }}t        j                  dd      \  }}}t        ||d	d	       t        ||d	d	       t        t        |      |d	d	       t        t        t         j                  d       t        t        t         j                  d       y )Nr   r  r$  r  r  r  FTr-  r      r   r.  )r\   roots_hermiteeval_hermiter   rk   r   r  r   infr   r
   r   r   r1  r2  
rootfevalfweightfr   r   r:  r  r;  r<  r=  s
             r)   test_roots_hermiterS    s{   EOOEll1o))GeUGbffWbffa@eUGbffWbffbuMeUGbffWbffcN Au%DAqq$'GAq!Aq%'Aq%'>>'BFF7BFF;LCAs) C'DAqsD)GAq!Aq%'Aq%'CFAue,*b..2*b..4r5   c                      d dfd	}  | dd        | dd        | dd        | dd        | d	d        | d
d        | dd        | dd        | dd        | dd       y )Nc                    t        j                  | |j                  f      }t         j                  dz  t        j                  d|dz  z        z  |dd d f<   | dkD  rtt        d      |z  |dd d f   z  |dd d f<   t        d|       D ]F  }t        d|z        |z  ||dz
  d d f   z  t        |dz
  |z        ||dz
  d d f   z  z
  ||d d f<   H |S )N      пr  r   r   r   ru   rt   )r   zerossizepiexpr   r   )r   nodesHks       r)   hermite_recursionz1test_roots_hermite_asy.<locals>.hermite_recursion  s    HHa_%"&&eQh"77!A#q5#Y&1Q3/AacF1a[c!eu,q1Qx7$#qy/AaPQcRSeH:TT!A# !r5   c                     t        j                  |       \  }} | dz   |      }t        |dd d f   t        j                  |       ||       t        t        |      t        t        j                        ||       y )Nr   r,   )r   _roots_hermite_asyr   r   rW  r   r   rY  )r   r   r   r   r   r\  r^  s         r)   testz$test_roots_hermite_asy.<locals>.test  s_    &&q)1ac1%"Q$!dD9ARUUT48r5      r  r     i,  i-  i  i  i  i  i  i  )V瞯<r-  rQ   )ra  r^  s    @r)   test_roots_hermite_asyre    ss    9 	5555555EEEr5   c            	      <   t         j                  } t         j                  }t        j                  d      j
                  }t        | ||t        j                   t        j                  d       t        | ||t        j                   t        j                  dd       t        | ||t        j                   t        j                  dd       t        j                  dd      \  }}t        j                  dd      \  }}}t        ||d	d	       t        ||d	d	       t        j                  |t        j                   t        j                        \  }}	t        |||	
       t        t        t         j                  d       t        t        t         j                  d       y )Nr   r  r$  r  r  r  FTr-  r   r   r.  )r\   roots_hermitenormeval_hermitenormr   rx   r   r  r   rN  r   r
   r   r1  r2  rO  s
             r)   test_roots_hermitenormri    s      EEq!--GeUGbffWbffa@eUGbffWbffbuMeUGbffWbffcN5)DAq""1d+GAq!Aq%'Aq%'>>'BFF7BFF;LCAs)*b22A6*b22C8r5   c            	      	   d } d }d }t         } | | d       |d       |d      ddd        | | d       |d       |d      dddd	
        | | d       |d       |d      dddd
        | | d       |d       |d      ddd        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      ddd        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      ddd        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd	
        | | d       |d       |d      dddd
        | | d       |d       |d      dddd
        | | d      t        j                   |d      ddd        | | d      t        j                   |d      ddd        | | d      t        j                   |d      dddd	
       t        j                  ddd      \  }}t        j                  ddd      \  }}}t	        ||dd       t	        ||dd       t        j                   |d      dd      \  }	}
t	        ||	|
       t        t        t        j                  dd       t        t        t        j                  dd       t        t        t        j                  d d!       y )"Nc                       fdS )Nc                 2    t        j                  | |      S r   )r\   r0  r   r   r^   s     r)   r   z6test_roots_gegenbauer.<locals>.rootf.<locals>.<lambda>  s    R00Ar:r5   rQ   r^   s   `r)   rP  z$test_roots_gegenbauer.<locals>.rootf  s	    ::r5   c                       fdS )Nc                 2    t        j                  | |      S r   )r\   eval_gegenbauerr   r   r^   s     r)   r   z6test_roots_gegenbauer.<locals>.evalf.<locals>.<lambda>  s    B..q!Q7r5   rQ   rn  s   `r)   rQ  z$test_roots_gegenbauer.<locals>.evalf  s	    77r5   c                       fdS )Nc                      d| dz  z
  dz
  z  S )Nr   r   rU   rQ   r   r^   s    r)   r   z8test_roots_gegenbauer.<locals>.weightf.<locals>.<lambda>  s    !a1f*!c'2r5   rQ   rn  s   `r)   rR  z&test_roots_gegenbauer.<locals>.weightf  s	    22r5   rV  r  rt   r   r  r  r  r  r  皙?r$  r   r   2      g     Pe@g-A=   g     @r)  r   r   FTr-  r,   r   r.  r   r  )	r  r\   eval_chebytr0  r   r
   r   r1  r2  rP  rQ  rR  r3  r   r   r:  r  r;  r<  r=  s              r)   test_roots_gegenbauerr|    s   ;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+DAq!!!Q-GAq!Aq%'Aq%'>>'!*b!4LCAs)*b111a8*b113:*b111d;r5   c            	         t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | dddd       t	        j
                  dd      \  }}t	        j
                  dd	      \  }}}t        ||d
d
       t        ||d
d
       t        j                  | dd      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y )Nr   r  rt   r  r  r  r  FTr-  r,   r   r   r   r.  )r   r:   r   r  r\   roots_chebytrz  r   r
   r   r1  r2  rR  r   r   r:  r  r;  r<  r=  s           r)   test_roots_chebytr  O      kk!n((Gboor~~wRKboor~~wRLboor~~wR " ??1e$DAqooa&GAq!Aq%'Aq%'>>'2q1LCAs)*booq1*boos3r5   c                      t        j                  d      \  } }| d d | dd  }}t        ||d d d           t        | d   d       y )N   r   rW   r,   r   )r\   r~  r   )r   r   posnegs       r)   test_chebyt_symmetryr  a  sK    ??2DAq"vqvCs4R4yj!2r5   c                     t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t	        j
                  dd      \  }}t	        j
                  dd      \  }}}t        ||dd       t        ||dd       t        j                  | d	d
      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y )Nr   r  rt   r  r  FTr-  r,   r   r   r   r.  )r   rF   r   r  r\   roots_chebyueval_chebyur   r
   r   r1  r2  r  s           r)   test_roots_chebyur  g      kk!n((Gboor~~wRKboor~~wRLboor~~wRM??1e$DAqooa&GAq!Aq%'Aq%'>>'2q1LCAs)*booq1*boos3r5   c            	         t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | dddd       t	        j
                  dd      \  }}t	        j
                  dd	      \  }}}t        ||d
d
       t        ||d
d
       t        j                  | dd      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y )Nr   r   ru   r  r  r  r  FTr-  r   r   r   r   r.  )r   r   r   r  r\   roots_chebyceval_chebycr   r
   r   r1  r2  r  s           r)   test_roots_chebycr  x  r  r5   c                     t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t	        j
                  dd      \  }}t	        j
                  dd      \  }}}t        ||dd       t        ||dd       t        j                  | d	d
      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y )Nr   r   ru   r  r  FTr-  r   r   r   r   r.  )r   r-   r   r  r\   roots_chebyseval_chebysr   r
   r   r1  r2  r  s           r)   test_roots_chebysr    r  r5   c            	         t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | dddd       t	        j
                  dd      \  }}t	        j
                  dd	      \  }}}t        ||d
d
       t        ||d
d
       t        j                  | dd      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y Nr   r,  rt   r  r  r$  r  FTr-  r   r   r   r.  )r   r   r   r  r\   roots_sh_chebyteval_sh_chebytr   r
   r   r1  r2  r  s           r)   test_roots_sh_chebytr       nnQ++Gb(("*;*;Wb"aPb(("*;*;Wb"bQb(("*;*;Wb"' a'DAq  D)GAq!Aq%'Aq%'>>'1a0LCAs)*b00!4*b00#6r5   c            	         t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | dddd       t	        j
                  dd      \  }}t	        j
                  dd	      \  }}}t        ||d
d
       t        ||d
d
       t        j                  | dd      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y r  )r   r   r   r  r\   roots_sh_chebyueval_sh_chebyur   r
   r   r1  r2  r  s           r)   test_roots_sh_chebyur    r  r5   c            	         t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | dddd       t        t        j
                  t        j                  | dddd       t	        j
                  dd	      \  }}t	        j
                  dd
      \  }}}t        ||dd       t        ||dd       t        j                  | dd      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y )Nr   r  rt   r  r$  r  r  r  FTr-  r,   r   r   r   r.  )r   r   r   r  r\   r/  eval_legendrer   r
   r   r1  r2  r  s           r)   test_roots_legendrer    s   mmA**Gb'')9)97CQOb'')9)97Cu&b'')9)97C' Q&DAq4(GAq!Aq%'Aq%'>>'2q1LCAs)*b//3*b//5r5   c            	         t        j                  d      j                  } t        t        j
                  t        j                  | ddd       t        t        j
                  t        j                  | dddd       t        t        j
                  t        j                  | dddd       t	        j
                  dd	      \  }}t	        j
                  dd
      \  }}}t        ||dd       t        ||dd       t        j                  | dd      \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y )Nr   r,  rt   r  r$  r  r  r  FTr-  r   r   r   r.  )r   r   r   r  r\   roots_sh_legendreeval_sh_legendrer   r
   r   r1  r2  r  s           r)   test_roots_sh_legendrer    s   q!--Gb**B,?,?"bRSTb**B,?,?"bu&b**B,?,?"b' 5)DAq""1d+GAq!Aq%'Aq%'>>'1a0LCAs)*b22A6*b22C8r5   c            	      ,   t        j                  d      j                  } t        t        j
                  t        j                  | dt        j                  d       t        t        j
                  t        j                  | dt        j                  dd       t        t        j
                  t        j                  | dt        j                  dd       t	        j
                  dd      \  }}t	        j
                  dd	      \  }}}t        ||d
d
       t        ||d
d
       t        j                  | dt        j                        \  }}t        |||       t        t        t        j
                  d       t        t        t        j
                  d       y )Nr   r,  r  r$  r  r  r  FTr-  r   r   r.  )r   laguerrer   r  r\   roots_laguerreeval_laguerrer   rN  r   r
   r   r1  r2  r  s           r)   test_roots_laguerrer    s   mmA**Gb'')9)97BPQRb'')9)97Bu&b'')9)97B' Q&DAq4(GAq!Aq%'Aq%'>>'1bff5LCAs)*b//3*b//5r5   c            
      l   d } d }d }t         } | | d       |d       |d      dt        j                  d        | | d       |d       |d      dt        j                  dd	        | | d       |d       |d      dt        j                  d
d	        | | d       |d       |d      dt        j                  d        | | d       |d       |d      dt        j                  dd	        | | d       |d       |d      dt        j                  d
d	        | | d       |d       |d      dt        j                  d        | | d       |d       |d      dt        j                  dd	        | | d       |d       |d      dt        j                  d
d	        | | d       |d       |d      dt        j                  d        | | d       |d       |d      dt        j                  dd	        | | d       |d       |d      dt        j                  d
d	        | | d       |d       |d      dt        j                  d        | | d       |d       |d      dt        j                  dd	        | | d       |d       |d      dt        j                  d
dd       t        j                  ddd      \  }}t        j                  ddd      \  }}}t        ||dd       t        ||dd       t        j                   |d      dt        j                        \  }	}
t        ||	|
       t        t        t        j                  dd       t        t        t        j                  dd       t        t        t        j                  dd       y )Nc                       fdS )Nc                 2    t        j                  | |      S r   )r\   roots_genlaguerrerm  s     r)   r   z7test_roots_genlaguerre.<locals>.rootf.<locals>.<lambda>  s    R11!Q;r5   rQ   rn  s   `r)   rP  z%test_roots_genlaguerre.<locals>.rootf  s	    ;;r5   c                       fdS )Nc                 2    t        j                  | |      S r   )r\   eval_genlaguerrerr  s     r)   r   z7test_roots_genlaguerre.<locals>.evalf.<locals>.<lambda>  s    B//1a8r5   rQ   rn  s   `r)   rQ  z%test_roots_genlaguerre.<locals>.evalf  s	    88r5   c                       fdS )Nc                 <    | z  t        j                  |        z  S r   )r   rZ  ru  s    r)   r   z9test_roots_genlaguerre.<locals>.weightf.<locals>.<lambda>  s    a"&&!*,r5   rQ   rn  s   `r)   rR  z'test_roots_genlaguerre.<locals>.weightf  s	    ,,r5   r  r,  r   r  r$  r  r  r  rv  g+F=r   gN<=r   rw  r-  r"  )r   r   r   FTru   r   r   r.  r   g)
r  r   rN  r\   r  r   r
   r   r1  r2  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,DAq""1a.GAq!Aq%'Aq%'>>'"+r266:LCAs)*b22Aq9*b22C;*b22At<r5   c                  :     t        j                  d      d       y )NA   rH  )r\   r:   rQ   r5   r)   test_gh_6721r  "  s    BIIbM#r5   )rd  gvIh%,=)1numpyr   r   r   numpy.testingr   r   r   r   pytestr	   r1  scipyr
   scipy.specialspecialr\   r   scipy.special._orthogonal_orthogonalr   r   rS   rg   r   r   r   r   r   r   r  r>  rI  rS  re  ri  r|  r  r  r  r  r  r  r  r  r  r  r  r  rQ   r5   r)   <module>r     s     A A *    ( (9< 9<xN N0$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r5   