
    ^Mh}                        d dl Z d dl mZ 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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- Z0dS )/    N)raises)arraysqrt)assert_array_almost_equalassert_equalassert_almost_equalassert_allclose)	integrategammac                   &    e Zd Zd Zd Zd Zd ZdS )	TestChebyc                 n   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            n# 1 swxY w Y   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	           d S )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          c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/special/tests/test_orthogonal.pytest_chebyczTestCheby.test_chebyc   sN   [^^[^^[X&&& 	  	 QBQBQBQB		  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	""$s2...!"$!uR000!"$xxx333!"$zzz"555!"$|||B777!"$~~~b99999s   ABB"B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           d S )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00!"$xxx333!"$zzz"555!"$|||B777!"$~~~b9999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           d S )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00!"$xxx333!"$zzz"555!"$|||B777!"$'7'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           d S )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00!"$xxx333!"$zzz"555!"$~~~b999!"$'7'7'7;;;;;r5   N)__name__
__module____qualname__r*   r4   rA   rM    r5   r)   r   r      sP        : : : : : :< < << < < < <r5   r   c                   f    e Zd Zd Zej                            dddg          d             Zd ZdS )TestGegenbauerc                    dt           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           d S )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_gegenbauerM   sI   bi   3&6!q&>> 	Aoa""oa""oa""oa""oa""oa""!#%qc

2666!#%qs1gr:::!#%qsAaCyA2.>(?(?CCC!#%q1~a1ac
/0/2 )3 )336)779	; 	; 	;!#%q1~aBGAaLL@P/01ac/< )= )==@)AAC	E 	E 	E!#%q1~aBGAaLL@P/0BGAaLL/D )E )EEI)JJL	N 	N 	N 	N 	Nr5   r^   r   r   c                     t          j        d|          }t          |j        t	          j        dg                     d S )Nr         ?)r   r[   r   r!   r   asarray)r"   r^   Cn0s      r)   test_n_zero_gh8888z!TestGegenbauer.test_n_zero_gh8888b   s9     oa##SUBJt,,-----r5   c                    d}t          j        t          |          5  t          j        dt
          j                   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        dt
          j                    d d d            d S # 1 swxY w Y   d S )Nz*`alpha` must be a finite number greater...)matchr   r         r   )pytestr   
ValueErrorr   r[   r   naninf)r"   messages     r)   test_valid_alphazTestGegenbauer.test_valid_alphah   s   >]:W555 	' 	'OArv&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']:W555 	% 	%OAt$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]:W555 	( 	(OAw'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s5    A

AA0BBB8!C&&C*-C*N)	rN   rO   rP   re   rn   markparametrizerj   rs   rQ   r5   r)   rS   rS   K   sg        N N N* [S1a&)). . *).
( ( ( ( (r5   rS   c                       e Zd Zd Zd ZdS )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           d S )Nr   r   r   r   r   r   r   )r   r   r   )r7   r   rC   r   )r8   r   ir      ry   )rD   r   i`r   x   r   )r   hermiter   r!   )r"   H0H1H2H3H4H5s          r)   test_hermitezTestHermite.test_hermitet   s    \!__\!__\!__\!__\!__\!__!"$s2...!"$!uR000!"$xxx333!"${{{2666!"$r:::!"$':':':2>>>>>r5   c                 Z   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
           d S )Nrg   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_hermitenormzTestHermite.test_hermitenorm   s   y#d1gg+a))a  a  a  a  a  a  dl1ood##dl1ood##d1gg-dl1ood##c)dl1ood##qay1dl1ood##c)dl1ood##s477{3!"$suR000!"$suR000!"$suR000!"$suR000!"$suR000!"$suR00000r5   N)rN   rO   rP   r   r   rQ   r5   r)   rw   rw   s   s2        ? ? ?1 1 1 1 1r5   rw   c                       e Zd Zd ZdS )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	           d S 
Nr   r,   r   r   r   r   r   r   ry   )r   r   r   sh_legendrelegendrer   r!   )r"   r   Ps0Ps1Ps2Ps3Ps4Ps5pse0pse1pse2pse3pse4pse5s                 r)   test_sh_legendrezTestShLegendre.test_sh_legendre   s   y!B  q!!q!!q!!q!!q!!q!!t}Q%%t}Q%%t}Q%%t}Q%%t}Q%%t}Q%%!#%r222!#%r222!#%r222!#%r222!#%r222!#%r22222r5   N)rN   rO   rP   r   rQ   r5   r)   r   r      #        3 3 3 3 3r5   r   c                       e Zd Zd ZdS )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	           d S 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_chebytzTestShChebyt.test_sh_chebyt      y!B  nQnQnQnQnQnQt{1~~d##t{1~~d##t{1~~d##t{1~~d##t{1~~d##t{1~~d##!#%r222!#%r222!#%r222!#%r222!#%r222!#%r22222r5   N)rN   rO   rP   r   rQ   r5   r)   r   r      r   r5   r   c                       e Zd Zd ZdS )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
           d S )Nr   r,   r   r   r   r   r   r   ry   rW   )r   r   r   	sh_chebyurF   r   r!   )r"   r   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dS )TestShJacobic                 l   d }t          j        ddg          }dt           j                                        z  }|dz
  dt           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	           d S )
Nc                 x    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   s6    Q<<%A,,.q1uqy1A1AAAr5   r   r,   r   r   r   r   r   r   )r   r   rY   r   	sh_jacobijacobir   r!   )r"   r   r   qr   G0G1G2G3G4G5ge0ge1ge2ge3ge4ge5s                    r)   test_sh_jacobizTestShJacobi.test_sh_jacobi   s   	B 	B 	By!B  	  """aC!BI$$&&&&^Aa""^Aa""^Aa""^Aa""^Aa""^Aa""$dk!AaC!$$T**TT!AYY6$dk!AaC!$$T**TT!AYY6$dk!AaC!$$T**TT!AYY6$dk!AaC!$$T**TT!AYY6$dk!AaC!$$T**TT!AYY6$dk!AaC!$$T**TT!AYY6!"$suR000!"$suR000!"$suR000!"$suR000!"$suR000!"$suR00000r5   N)rN   rO   rP   r   rQ   r5   r)   r   r      s#        1 1 1 1 1r5   r   c                       e Zd Zd ZdS )TestCallc           	         g }t          d          D ]D}|                    d dt          |          z                                  D                        Et	          j        d          5  |D ]L}t          |          }t           |d           t	          j        |j	                  d          |           M	 d d d            d S # 1 swxY w Y   d S )	Nr   c                 6    g | ]}|                                 S rQ   )strip).0xs     r)   
<listcomp>z&TestCall.test_call.<locals>.<listcomp>  s,       q   r5   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splitr   r    evalr   r   coef)r"   polyr   pstrr   s        r)   	test_callzTestCall.test_call  sL   q 	 	AKK    Qiii!   "'#      & [X&&& 	2 	2 2 2JJ#AAeHH.?bi.?.?.F.F,02 2 2 2 22	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   ,AC

CCN)rN   rO   rP   r   rQ   r5   r)   r   r      s#        2 2 2 2 2r5   r   c                       e Zd Zd ZdS )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                     d S )Nr   F)monicr   r   T       r,   r   r   )r   r   genlaguerrer   r   )r"   s    r)   test_regressionzTestGenlaguerre.test_regression  s    8T%a%888;;R@@@7T%a$777::C@@@T%a%888")RG:L:LMMMT%a$777Ar79K9KLLLLLr5   N)rN   rO   rP   r   rQ   r5   r)   r   r     s(        M M M M Mr5   r   V瞯<vIh%,=c                     | |d          \  }}	}
t          j        |t          j        d                    } ||d d t           j        f         |          }t          j        ||	z  |j                  }dt          j        |                                          z  }|d d t           j        f         |z  |z  }t          |t          j	        |          ||           t          |	
                                |
||           d t          j        fd||          }t          j         |          |	          }d|d         k     rdn
|d         dz  }t          |d	         ||
           d S )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>.f6  s#    AvAF
"Q&**r5   c                 2     |            |           z  S NrQ   )r   r   weight_funcs    r)   <lambda>z#verify_gauss_quad.<locals>.<lambda>8  s    AAaDDQ$7 r5   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  &  si    yD!!HAq"
	!28F++,,,A	!AAAbjL/1%%A	!QS		B	
RWR[[]]##	#B	AAArzM	R	"	$BBq		4... AEEGGRt,,,+ + +>77777A>>D711Q44D$q'>>44tAw|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           d S )2Nc                       fdS )Nc                 2    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99 r5   rQ   r^   r  s   ``r)   rfztest_roots_jacobi.<locals>.rf>      999999r5   c                       fdS )Nc                 2    t          j        | |          S r   )r\   eval_jacobir   r   r^   r  s     r)   r  z/test_roots_jacobi.<locals>.ef.<locals>.<lambda>A  s    BN1aA66 r5   rQ   r   s   ``r)   efztest_roots_jacobi.<locals>.ef@  s    6666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>C  s    !a%AQ14 r5   rQ   r   s   ``r)   wfztest_roots_jacobi.<locals>.wfB  s    444444r5   rm               rg   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           +=r   g      @r   FTr,   r  r   ffffff
@r   )
r  r\   r  roots_legendrer	   roots_gegenbauerr
   r  assert_raisesro   )r!  r'  r+  vgqxjwjxlwlxcwcr   r  yr  mmuImuI_errs                    r)   test_roots_jacobirP  =  s
   : : :7 7 75 5 5 CC4D%""T5//3AFFFC4D%""T5//3
   C4D%""T5//3%    C3rr#t}}bbdmmS"a@@@C3rr#t}}bbdmmS"bwOOOOC3rr#t}}bbdmmS"cNNNNC1c

BBq#JJ1c

CQUCCCCC1c

BBq#JJ1c

CReDDDDC1c

BBq#JJ1c

CSuEEEEC3

BBsAJJ3

CQ777C3

BBsAJJ3

CReDDDDC3

BBsAJJ3

CSuEEEEC5$E4""UD//3AFFFC5$E4""UD//3B   C5$E4""UD//3%    C444ROOOOC444R%PPPPC444R%    C2tbbTllBBr4LL#r15IIIIC2tbbTllBBr4LL#r2EJJJJC2tbbTllBBr4LL#r3UKKKKC2tbbTllBBr4LL#r3UKKKKC444R   C444R   C444R    C444R   C444R   C444R    C5$E4""UD//3A   C5$E4""UD//3B   C5$E4""UD//3C    C444RCCCC444R   C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oaAt,,GAq!Aq%'''Aq%'''>""Qq''2q11LCAs))))*boq!Q777*bosAq999*boq"a888*boq!R888*boq"b9999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%           d S )'Nc                       fdS )Nc                 2    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                 2    t          j        | |          S r   )r\   eval_sh_jacobir&  s     r)   r  z2test_roots_sh_jacobi.<locals>.ef.<locals>.<lambda>  s    B-aAq99 r5   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 )Nrg   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   rm   g      ?r?  rg   r   r.  r/  r0  r1  r2  rU   r7  r   r3  r4  r   r6  r9  r8  r:  皙?r<  r>  r=  g(#=r5  r   FTr@  r   r  rA  r,   r   )r  r\   rT  r	   r
   r  rD  ro   )r!  r'  r+  rE  r   r  rL  r  rM  rN  rO  s              r)   test_roots_sh_jacobir[    sZ   = = =: : :? ? ? CC444BBBBC444B
   C444B%    C3bbcllBBsCLL"b!<<<C3bbcllBBsCLL"b"5IIIIC3bbcllBBsCLL"b#EJJJJC1c

BBq#JJ1c

BA666C1c

BBq#JJ1c

BBWEEEEC1c

BBq#JJ1c

BCeDDDDC1c

BBq#JJ1c

BA666C1c

BBq#JJ1c

BBUCCCCC1c

BBq#JJ1c

BCeDDDDC4D%""T5//2r1EEEC4D%""T5//2r2FFFC4D%""T5//2r%    C4rr$}}bbsmmRQUKKKKC4rr$}}bbsmmRReLLLLC4rr$}}bbsmmRSuMMMMC444BPPPPC444BOOOOC444B%    aAu--DAq Aq$//GAq!Aq%'''Aq%'''>""Qq''1a00LCAs))))*b0!Q:::*b0#q!<<<*b0!Q:::*b0!Q;;;*b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           d S )Nr   r.  r7  r0  r1  r/  FTr@  r     r   rA  )r\   roots_hermiteeval_hermiter   r{   r   r  r   rq   r	   r
   r  r  rD  ro   
rootfevalfweightfr   r  rL  r  rM  rN  rO  s
             r)   test_roots_hermiterd    s   EOEl1oo)GeUGbfWbfa@@@eUGbfWbfbuMMMMeUGbfWbfcNNNN Au%%DAqq$''GAq!Aq%'''Aq%'''>'BF7BF;;LCAs)))) C''DAqsD))GAq!Aq%'''Aq%'''CFFAue,,,*b.222*b.4444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           d S )Nc                    t          j        | |j        f          }t           j        dz  t          j        d|dz  z            z  |dd d f<   | dk    rt          d          |z  |dd d f         z  |dd d f<   t          d|           D ]T}t          d|z            |z  ||dz
  d d f         z  t          |dz
  |z            ||dz
  d d f         z  z
  ||d d f<   U|S )N      пrm   r   r   r   r   rg   )r   zerossizepiexpr   r   )r   nodesHks       r)   hermite_recursionz1test_roots_hermite_asy.<locals>.hermite_recursion  s    Ha_%%"&eQh"7"77!AAA#q55#YY&1QQQ3/AacF1a[[ U Uc!eu,q1QQQx7$#qy//AaPQcRSRSRSeH:TT!AAA#r5   r   r@  c                    t          j        |           \  }} | dz   |          }t          |dd d f         t          j        |           ||           t          t          |          t          t          j                  ||           d S )Nr   r,   )r   _roots_hermite_asyr	   r   rh  r  r   rj  )r  r  r  r   r  rm  ro  s         r)   testz$test_roots_hermite_asy.<locals>.test  s}    &q))1ac1%%"QQQ$!dD999ARUT488888r5      r/  r0     i,  i-  i  i  i  i  i  i  )r   r@  rQ   )rr  ro  s    @r)   test_roots_hermite_asyru    s
     9 9 9 9 9 9 	D5D5D5D5D5D5D5DEDED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           d S )Nr   r.  r7  r0  r1  r/  FTr@  r  r   rA  )r\   roots_hermitenormeval_hermitenormr   r   r   r  r   rq   r	   r
   r  rD  ro   r`  s
             r)   test_roots_hermitenormry    sA    EEq!!-GeUGbfWbfa@@@eUGbfWbfbuMMMMeUGbfWbfcNNNN5))DAq"1d++GAq!Aq%'''Aq%'''>'BF7BF;;LCAs))))*b2A666*b2C8888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!           d S )"Nc                       fdS )Nc                 0    t          j        | |          S r   )r\   rC  r   r  r^   s     r)   r  z6test_roots_gegenbauer.<locals>.rootf.<locals>.<lambda>#  s    R0Ar:: r5   rQ   r^   s   `r)   ra  z$test_roots_gegenbauer.<locals>.rootf"  s    :::::r5   c                       fdS )Nc                 0    t          j        | |          S r   )r\   eval_gegenbauerr   r   r^   s     r)   r  z6test_roots_gegenbauer.<locals>.evalf.<locals>.<lambda>%  s    B.q!Q77 r5   rQ   r~  s   `r)   rb  z$test_roots_gegenbauer.<locals>.evalf$  s    777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'2 r5   rQ   r~  s   `r)   rc  z&test_roots_gegenbauer.<locals>.weightf&  s    22222r5   rg  r-  rg   r   r.  r/  r0  r1  r2  皙?r7  r   r  2      g     Pe@g-A=   g     @r<  r   r   FTr@  r,   r  rA  r   r,  )	r  r\   eval_chebytrC  r	   r
   r  rD  ro   ra  rb  rc  rE  r   r  rL  r  rM  rN  rO  s              r)   test_roots_gegenbauerr  !  sW   ; ; ;8 8 83 3 3 CCeeeEllGGENNCQ???CeeeEllGGENNCReLLLLCeeeEllGGENNCSuMMMMCc

EE#JJc2q999Cc

EE#JJc2rFFFFCc

EE#JJc2sGGGGCa%%((GGAJJR333Ca%%((GGAJJR%@@@@Ca%%((GGAJJR5AAAACb		5599ggbkk3A666Cb		5599ggbkk3BUCCCCCb		5599ggbkk3CeDDDDCb		5599ggbkk3AEBBBBCb		5599ggbkk3BUCCCCCb		5599ggbkk3CeDDDD Cc

EE#JJc2quEEEECc

EE#JJc2rFFFFCc

EE#JJc2sGGGGCeeeEllGGENNCQXNNNNCeeeEllGGENNCReLLLLCeeeEllGGENNCSuMMMM Cc

EE#JJc2quEEEECc

EE#JJc2rFFFFCc

EE#JJc2sGGGGCeeeEllGGENNCQUKKKKCeeeEllGGENNCReLLLLCeeeEllGGENNCSuMMMM
 Ca".''!**c2q999Ca".''!**c2r:::Ca".''!**c2sGGGGq!U++DAq!!Q--GAq!Aq%'''Aq%'''>''!**b!44LCAs))))*b11a888*b13:::*b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           d S )Nr   r-  rg   r.  r1  r/  r0  FTr@  r,   r   r  r   rA  )r   r:   r   r  r\   roots_chebytr  r	   r
   r  rD  ro   rc  r   r  rL  r  rM  rN  rO  s           r)   test_roots_chebytr  a  $   k!nn(Gbor~wRKKKbor~wRLLLbor~wR " " " " ?1e$$DAqoa&&GAq!Aq%'''Aq%'''>'2q11LCAs))))*boq111*bos33333r5   c                      t          j        d          \  } }| d d         | dd          }}t          ||d d d                     t          | d         d           d S )N   r  rW   r,   r   )r\   r  r   )r   r  posnegs       r)   test_chebyt_symmetryr  s  sd    ?2DAq"vqvCs44R4yj!!!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           d S )Nr   r-  rg   r.  r1  FTr@  r,   r   r  r   rA  )r   rF   r   r  r\   roots_chebyueval_chebyur	   r
   r  rD  ro   r  s           r)   test_roots_chebyur  y     k!nn(Gbor~wRKKKbor~wRLLLbor~wRMMM?1e$$DAqoa&&GAq!Aq%'''Aq%'''>'2q11LCAs))))*boq111*bos3333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           d S )Nr   r   r   r.  r1  r/  r0  FTr@  r   r   r  r   rA  )r   r   r   r  r\   roots_chebyceval_chebycr	   r
   r  rD  ro   r  s           r)   test_roots_chebycr    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           d S )Nr   r   r   r.  r1  FTr@  r   r   r  r   rA  )r   r-   r   r  r\   roots_chebyseval_chebysr	   r
   r  rD  ro   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           d S Nr   r?  rg   r.  r1  r7  r0  FTr@  r   r   r  rA  )r   r   r   r  r\   roots_sh_chebyteval_sh_chebytr	   r
   r  rD  ro   r  s           r)   test_roots_sh_chebytr    0   nQ+Gb("*;Wb"aPPPb("*;Wb"bQQQb("*;Wb"' ' ' ' a''DAq D))GAq!Aq%'''Aq%'''>'1a00LCAs))))*b0!444*b0#6666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           d S r  )r   r   r   r  r\   roots_sh_chebyueval_sh_chebyur	   r
   r  rD  ro   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           d S )Nr   r-  rg   r.  r7  r0  r1  r/  FTr@  r,   r   r  r   rA  )r   r   r   r  r\   rB  eval_legendrer	   r
   r  rD  ro   r  s           r)   test_roots_legendrer    s>   mA*Gb')97CQOOOb')97Cu& & & &b')97C' ' ' ' Q&&DAq4((GAq!Aq%'''Aq%'''>'2q11LCAs))))*b/333*b/5555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           d S )Nr   r?  rg   r.  r7  r0  r1  r/  FTr@  r   r   r  rA  )r   r   r   r  r\   roots_sh_legendreeval_sh_legendrer	   r
   r  rD  ro   r  s           r)   test_roots_sh_legendrer    s@   q!!-Gb*B,?"bRSTTTb*B,?"bu& & & &b*B,?"b' ' ' ' 5))DAq"1d++GAq!Aq%'''Aq%'''>'1a00LCAs))))*b2A666*b2C8888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           d S )Nr   r?  r.  r7  r0  r1  r/  FTr@  r   r  rA  )r   laguerrer   r  r\   roots_laguerreeval_laguerrer   rq   r	   r
   r  rD  ro   r  s           r)   test_roots_laguerrer    sG   mA*Gb')97BPQRRRb')97Bu& & & &b')97B' ' ' ' Q&&DAq4((GAq!Aq%'''Aq%'''>'1bf55LCAs))))*b/333*b/55555r5   c            
      v   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           d S )Nc                       fdS )Nc                 0    t          j        | |          S r   )r\   roots_genlaguerrer}  s     r)   r  z7test_roots_genlaguerre.<locals>.rootf.<locals>.<lambda>  s    R1!Q;; r5   rQ   r~  s   `r)   ra  z%test_roots_genlaguerre.<locals>.rootf  s    ;;;;;r5   c                       fdS )Nc                 0    t          j        | |          S r   )r\   eval_genlaguerrer  s     r)   r  z7test_roots_genlaguerre.<locals>.evalf.<locals>.<lambda>  s    B/1a88 r5   rQ   r~  s   `r)   rb  z%test_roots_genlaguerre.<locals>.evalf  s    88888r5   c                       fdS )Nc                 :    | z  t          j        |            z  S r   )r   rk  r  s    r)   r  z9test_roots_genlaguerre.<locals>.weightf.<locals>.<lambda>  s    a"&!**, r5   rQ   r~  s   `r)   rc  z'test_roots_genlaguerre.<locals>.weightf  s    ,,,,,r5   rm   r?  r   r.  r7  r0  r1  r/  r  g+F=r   gN<=r  r  r@  r5  )r  r  r   FTr   r  r   rA  r   g)
r  r   rq   r\   r  r	   r
   r  rD  ro   r  s              r)   test_roots_genlaguerrer  
  sQ   < < <9 9 9- - - CCdUU4[[''$--RVQ???CdUU4[[''$--RVReLLLLCdUU4[[''$--RVSuMMMMCc

EE#JJb"&!<<<Cc

EE#JJb"&"5IIIICc

EE#JJb"&#GLLLLCa%%((GGAJJBFA666Ca%%((GGAJJBFBUCCCCCa%%((GGAJJBFChGGGGCb		5599ggbkk2rvq999Cb		5599ggbkk2rvrFFFFCb		5599ggbkk2rvsGGGGCb		5599ggbkk2rvq999Cb		5599ggbkk2rvrFFFFCb		5599ggbkk2rvsUSSSS1e,,DAq"1a..GAq!Aq%'''Aq%'''>''"++r26::LCAs))))*b2Aq999*b2C;;;*b2At<<<<<r5   c                  @     t          j        d          d           d S )NA   rZ  )r\   r:   rQ   r5   r)   test_gh_6721r  4  s     BIbMM#r5   )r   r   )1rn   r   rD  numpyr   r   r   numpy.testingr   r   r   r	   scipyr
   scipy.specialspecialr\   r   scipy.special._orthogonal_orthogonalr   r   rS   rw   r   r   r   r   r   r   r  rP  r[  rd  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  rQ   r5   r)   <module>r     s    * * * * * *            A A A A A A A A A A A A                   ( ( ( ( ( ( ( ( (9< 9< 9< 9< 9< 9< 9< 9<x%( %( %( %( %( %( %( %(P$1 $1 $1 $1 $1 $1 $1 $1N3 3 3 3 3 3 3 303 3 3 3 3 3 3 303 3 3 3 3 3 3 301 1 1 1 1 1 1 1<2 2 2 2 2 2 2 2<M M M M M M M M (-. . . ..^: ^: ^:@5= 5= 5=n5 5 58  :9 9 9(>< >< ><@4 4 4$  4 4 4"4 4 4$4 4 4"7 7 7$7 7 7$6 6 6&9 9 9&6 6 6&'= '= '=T    r5   