
    bin                        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	 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+ Z.y)-    N)raises)arraysqrt)assert_equalassert_allclose)	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	d
       t	        |j
                  ddgd	d
       t	        j
                  g dd	d
       t	        j
                  g dd	d
       t	        j
                  g dd	d
       t	        j
                  g dd	d
       y # 1 sw Y   xY w)Nr      ignoreall            7QE=atolrtol)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          ^/home/cdr/jupyterlab/.venv/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		  	qca8q!f7;jwQ?m'B.W1E1wQG	  	 s   AE  E	c                 B   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgdd       t        |j                  ddgdd       t        |j                  g d	dd       t        |j                  g d
dd       t        |j                  g ddd       t        |j                  g d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   )r   chebysr   r"   )r#   S0S1S2S3S4S5s          r*   test_chebyszTestCheby.test_chebys   s    [[^[[^[[^[[^[[^[[^qca8q!f7;jwQ?m'B.W1E1aH    c                 B   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgdd       t        |j                  ddgdd       t        |j                  g d	dd       t        |j                  g d
dd       t        |j                  g ddd       t        |j                  g ddd       y )Nr   r   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    [[^[[^[[^[[^[[^[[^qca8q!f7;jwQ?m'B.W1E3'Jr6   c                 B   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgdd       t        |j                  ddgdd       t        |j                  g d	dd       t        |j                  g d
dd       t        |j                  g ddd       t        |j                  g ddd       y )Nr   r   r   r   r   r   r   r   )r   r   r-   )r8   r   r   r   )r9   r   r   r   )    r   ir      r   )r   chebyur   r"   )r#   U0U1U2U3U4U5s          r*   test_chebyuzTestCheby.test_chebyu;   s    [[^[[^[[^[[^[[^[[^qca8q!f7;jwQ?m'B0wQG3'Jr6   N)__name__
__module____qualname__r+   r5   rB   rN    r6   r*   r   r      s    H IKKr6   r   c                   `    e Zd Zd Zej
                  j                  dddg      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	d
       t        |j                  t        d|z  dg      d	d
       t        |j                  t        d|z  |dz   z  d| g      d	d
       t        |j                  t        dt        j                  |d      z  dd|z  |dz   z  dg      dz  d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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
       y )Nr         ?r   皙ɿr   r   r   r   r   r   ig      @p~=rD   g      @r:      g      .@)
r    randomanyr   
gegenbauerr   r"   r   scpoch)r#   aCa0Ca1Ca2Ca3Ca4Ca5s           r*   test_gegenbauerzTestGegenbauer.test_gegenbauerL   s   bii  3&66!q&>Aooa"ooa"ooa"ooa"ooa"ooa"uaSza@uac1XW1Euac1q5k1qb%9:$1	.ua1oqAq1uq%IJ3N$1	.ua1oq#bggam:K&'1a!e&6  77: ;$1	. 	ua1oq#bggam:K&'BGGAqM)91&>  ??C D$1	.r6   r_   r   r   c                     t        j                  d|      }t        |j                  t	        j
                  dg             y )Nr         ?)r   r\   r   r"   r    asarray)r#   r_   Cn0s      r*   test_n_zero_gh8888z!TestGegenbauer.test_n_zero_gh8888d   s-     ooa#SUUBJJt,-r6   c                    d}t        j                  t        |      5  t        j                  dt
        j                         d d d        t        j                  t        |      5  t        j                  dd       d d d        t        j                  t        |      5  t        j                  dt
        j                          d d d        y # 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   y xY w)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_alphaj   s    >]]:W5 	'OOArvv&	']]:W5 	%OOAt$	%]]:W5 	(OOAw'	( 	(		' 	'	% 	%	( 	(s#   %C&C &C'CC$'C0N)	rO   rP   rQ   rf   ro   markparametrizerk   rt   rR   r6   r*   rT   rT   J   s5    .0 [[S1a&). *.
(r6   rT   c                       e Zd Zd Zd Zy)TestHermitec                 B   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgdd       t        |j                  ddgdd       t        |j                  g d	dd       t        |j                  g d
dd       t        |j                  g ddd       t        |j                  g ddd       y )Nr   r   r   r   r   r   r   r   )r   r   r   )r8   r   rD   r   )r9   r   ir      Afcz=)rE   r   i`r   x   r   )r   hermiter   r"   )r#   H0H1H2H3H4H5s          r*   test_hermitezTestHermite.test_hermitev   s    \\!_\\!_\\!_\\!_\\!_\\!_qca8q!f7;jwQ?n7C1aH6W1Mr6   c                    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
d       t        |j                  |	j                  d
d       t        |j                  |
j                  d
d       t        |j                  |j                  d
d       t        |j                  |j                  d
d       t        |j                  |j                  d
d       y )Nrh   r   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   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cee':cee':cee':cee':cee':cee':r6   N)rO   rP   rQ   r   r   rR   r6   r*   rx   rx   u   s    N;r6   rx   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d	       t        |j                  |	j                  dd	       t        |j                  |
j                  dd	       t        |j                  |j                  dd	       t        |j                  |j                  d
d	       t        |j                  |j                  d
d	       y Nr   r-   r   r   r   r   r   r   r   r{   )r    r   r   sh_legendrelegendrer   r"   )r#   r   Ps0Ps1Ps2Ps3Ps4Ps5pse0pse1pse2pse3pse4pse5s                 r*   test_sh_legendrezTestShLegendre.test_sh_legendre   sv   yy!B q!q!q!q!q!q!t}}Q%t}}Q%t}}Q%t}}Q%t}}Q%t}}Q%tvvG!<tvvG!<tvvG!<tvvG!<tvvG!<tvvG!<r6   N)rO   rP   rQ   r   rR   r6   r*   r   r          =r6   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d	       t        |j                  |	j                  dd	       t        |j                  |
j                  dd	       t        |j                  |j                  dd	       t        |j                  |j                  d
d	       t        |j                  |j                  d
d	       y 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   d   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#tvvG!<tvvG!<tvvG!<tvvG!<tvvG!<tvvG!<r6   N)rO   rP   rQ   r   rR   r6   r*   r   r      r   r6   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d	       t        |j                  |	j                  dd	       t        |j                  |
j                  dd	       t        |j                  |j                  dd	       t        |j                  |j                  d
d	       t        |j                  |j                  dd	       y )Nr   r-   r   r   r   r   r   r   r   r{   rX   )r    r   r   	sh_chebyurG   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   r6   N)rO   rP   rQ   r   rR   r6   r*   r   r      r   r6   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	d
       t        |j                  |j                  d	d
       t        |j                  |j                  d	d
       t        |j                  |j                  d	d
       t        |	j                  |j                  d	d
       t        |
j                  |j                  d	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Ar6   r   r-   r   r   r   r   r   r   r   )r    r   rZ   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   sI   	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cee':cee':cee':cee':cee':cee':r6   N)rO   rP   rQ   r   rR   r6   r*   r   r      s    ;r6   r   c                       e Zd Zd Zy)TestCallc           	      N   g }t        d      D ]  }|j                  dj                  g d| d| d| d| d| d| d	| d
| d| d| d| d| d| d| d| d      j                         D cg c]  }|j	                          c}        t        j                  d      5  |D ]F  }t        |      }t         |d       t        j                  |j                        d      dd|       H 	 d d d        y c c}w # 1 sw Y   y xY w)Nr    z
                orth.jacobi(z),0.3,0.9)
                orth.sh_jacobi(z+,0.3,0.9)
                orth.genlaguerre(z$,0.3)
                orth.laguerre(z)
                orth.hermite(z#)
                orth.hermitenorm(z")
                orth.gegenbauer(z",0.3)
                orth.chebyt(z)
                orth.chebyu(z)
                orth.chebyc(z)
                orth.chebys(z!)
                orth.sh_chebyt(z!)
                orth.sh_chebyu(z )
                orth.legendre(z#)
                orth.sh_legendre(z)
                r   r   g)\(?gv!>r   )r   r   err_msg)rangeextendjoinsplitstripr    r!   evalr   r   coef)r#   polyr   xpstrr   s         r*   	test_callzTestCall.test_call  s   q 	AKK   C   !s#" #$%  !c	"	
  S
!" #$%! "#$ C  C  C  C   !"s#  !"s#  !c"" #$%  UW#q  	& [[X& 	C CJ%*;"))AFF*;E*B%+!TCC	C 	C%$	C 	Cs   
D
 ADD$N)rO   rP   rQ   r   rR   r6   r*   r   r     s    Cr6   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   r   T       r-   r   r   )r   r   genlaguerrer    r   )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Lr6   N)rO   rP   rQ   r   rR   r6   r*   r   r     s    Mr6   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   rR   )r   s    r*   fzverify_gauss_quad.<locals>.f7  s#    AvAF
"Q&**r6   c                 &     |        |       z  S NrR   )r   r   weight_funcs    r*   <lambda>z#verify_gauss_quad.<locals>.<lambda>9  s    AaDQ$7 r6   gư>
   r   r   )r    aranger   newaxisdotTr   diagonalr   eyesumr   quadvdot)	root_func	eval_funcr   r_   bNr   r   r   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-r6   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9 r6   rR   r_   r  s   ``r*   rfztest_roots_jacobi.<locals>.rf?  	    99r6   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>B  s    BNN1aA6 r6   rR   r  s   ``r*   efztest_roots_jacobi.<locals>.efA  s	    66r6   c                       fdS )Nc                 &    d| z
  z  d| z   z  z  S )Nr   rR   r   r_   r  s    r*   r   z/test_roots_jacobi.<locals>.wf.<locals>.<lambda>D  s    !a%AQ14 r6   rR   r  s   ``r*   wfztest_roots_jacobi.<locals>.wfC  s	    44r6   rn               rh   r      -q=r   d   dy=rV   r   -=r   vIh%L=?r   vIh%<=g7QU==
ףp=2@L;@g^~z=̌G@rW   g     @   g     @绽|=g      @g     @@g     @@      @皙9Q@rF           +=r   g      @r   FTr-   r  r   ffffff
@r   )
r  r]   r  roots_legendrer   roots_gegenbauerr   r	  assert_raisesrp   )r  r#  r'  vgqxjwjxlwlxcwcr   r  yr  mmuImuI_errs                    r*   test_roots_jacobirK  >  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9r6   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< r6   rR   r  s   ``r*   r  z test_roots_sh_jacobi.<locals>.rf  s	    <<r6   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9 r6   rR   r  s   ``r*   r#  z test_roots_sh_jacobi.<locals>.ef  r  r6   c                       fdS )Nc                 ,    d| z
  z
  z  | dz
  z  z  S )Nrh   rR   r&  s    r*   r   z2test_roots_sh_jacobi.<locals>.wf.<locals>.<lambda>  s!    #'q1u-a#g> r6   rR   r  s   ``r*   r'  z test_roots_sh_jacobi.<locals>.wf  s	    >>r6   rn   g      ?r:  rh   r   r*  r+  r,  r-  r.  rV   r2  r   r   r/  r   r1  r4  r3  r5  皙?r7  r9  r8  g(#=r0  r   FTr;  r   r  r<  r-   r   )r  r]   rO  r   r   r	  r?  rp   )r  r#  r'  r@  r   r  rG  r  rH  rI  rJ  s              r*   test_roots_sh_jacobirV    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<r6   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*  r2  r,  r-  r+  FTr;  r     r   r<  )r]   roots_hermiteeval_hermiter   r}   r   r  r    rr   r   r   r	  r  r?  rp   
rootfevalfweightfr   r  rG  r  rH  rI  rJ  s
             r*   test_roots_hermiter_    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..4r6   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      пrn   r   r   r   r   rh   )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[ Uc!eu,q1Qx7$#qy/AaPQcRSeH:TT!A#Ur6   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    rc  r  r   re  )r  r   r   r   r  rh  rj  s         r*   testz$test_roots_hermite_asy.<locals>.test  s_    &&q)1ac1%"Q$!dD9ARUUT48r6      r+  r,     i,  i-  i  i  i  i  i  i  )V瞯<r;  rR   )rm  rj  s    @r*   test_roots_hermite_asyrq    ss    9 	5555555EEEr6   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*  r2  r,  r-  r+  FTr;  r  r   r<  )r]   roots_hermitenormeval_hermitenormr   r   r   r  r    rr   r   r   r	  r?  rp   r[  s
             r*   test_roots_hermitenormru    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8r6   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]   r>  r   r  r_   s     r*   r   z6test_roots_gegenbauer.<locals>.rootf.<locals>.<lambda>$  s    R00Ar: r6   rR   r_   s   `r*   r\  z$test_roots_gegenbauer.<locals>.rootf#  s	    ::r6   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7 r6   rR   rz  s   `r*   r]  z$test_roots_gegenbauer.<locals>.evalf%  s	    77r6   c                       fdS )Nc                      d| dz  z
  dz
  z  S )Nr   r   rV   rR   r   r_   s    r*   r   z8test_roots_gegenbauer.<locals>.weightf.<locals>.<lambda>(  s    !a1f*!c'2 r6   rR   rz  s   `r*   r^  z&test_roots_gegenbauer.<locals>.weightf'  s	    22r6   rb  r)  rh   r   r*  r+  r,  r-  r.  皙?r2  r   r   2      g     Pe@g-A=   g     @r7  r   r   FTr;  r-   r  r<  r   r(  )	r  r]   eval_chebytr>  r   r   r	  r?  rp   r\  r]  r^  r@  r   r  rG  r  rH  rI  rJ  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;r6   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)  rh   r*  r-  r+  r,  FTr;  r-   r   r  r   r<  )r   r;   r   r  r]   roots_chebytr  r   r   r	  r?  rp   r^  r   r  rG  r  rH  rI  rJ  s           r*   test_roots_chebytr  b      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3r6   c                      t        j                  d      \  } }| d d | dd  }}t        ||d d d           t        | d   d       y )N   r      r-   r   )r]   r  r   )r   r  posnegs       r*   test_chebyt_symmetryr  t  sK    ??2DAq"vqvCs4R4yj!2r6   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)  rh   r*  r-  FTr;  r-   r   r  r   r<  )r   rG   r   r  r]   roots_chebyueval_chebyur   r   r	  r?  rp   r  s           r*   test_roots_chebyur  z      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3r6   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   r   r*  r-  r+  r,  FTr;  r   r   r  r   r<  )r   r   r   r  r]   roots_chebyceval_chebycr   r   r	  r?  rp   r  s           r*   test_roots_chebycr    r  r6   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   r   r*  r-  FTr;  r   r   r  r   r<  )r   r.   r   r  r]   roots_chebyseval_chebysr   r   r	  r?  rp   r  s           r*   test_roots_chebysr    r  r6   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:  rh   r*  r-  r2  r,  FTr;  r   r   r  r<  )r   r   r   r  r]   roots_sh_chebyteval_sh_chebytr   r   r	  r?  rp   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#6r6   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	  r?  rp   r  s           r*   test_roots_sh_chebyur    r  r6   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)  rh   r*  r2  r,  r-  r+  FTr;  r-   r   r  r   r<  )r   r   r   r  r]   r=  eval_legendrer   r   r	  r?  rp   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//5r6   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:  rh   r*  r2  r,  r-  r+  FTr;  r   r   r  r<  )r   r   r   r  r]   roots_sh_legendreeval_sh_legendrer   r   r	  r?  rp   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8r6   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*  r2  r,  r-  r+  FTr;  r   r  r<  )r   laguerrer   r  r]   roots_laguerreeval_laguerrer    rr   r   r   r	  r?  rp   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//5r6   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_genlaguerrery  s     r*   r   z7test_roots_genlaguerre.<locals>.rootf.<locals>.<lambda>  s    R11!Q; r6   rR   rz  s   `r*   r\  z%test_roots_genlaguerre.<locals>.rootf  s	    ;;r6   c                       fdS )Nc                 2    t        j                  | |      S r   )r]   eval_genlaguerrer~  s     r*   r   z7test_roots_genlaguerre.<locals>.evalf.<locals>.<lambda>  s    B//1a8 r6   rR   rz  s   `r*   r]  z%test_roots_genlaguerre.<locals>.evalf  s	    88r6   c                       fdS )Nc                 <    | z  t        j                  |        z  S r   )r    rf  r  s    r*   r   z9test_roots_genlaguerre.<locals>.weightf.<locals>.<lambda>  s    a"&&!*, r6   rR   rz  s   `r*   r^  z'test_roots_genlaguerre.<locals>.weightf  s	    ,,r6   rn   r:  r   r*  r2  r,  r-  r+  r  g+F=r   gN<=r   r  r;  r0  )r   r   r   FTr   r  r   r<  r   g)
r  r    rr   r]   r  r   r   r	  r?  rp   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<r6   c                  :     t        j                  d      d       y )NA   rU  )r]   r;   rR   r6   r*   test_gh_6721r  5  s    BIIbM#r6   )rp  gvIh%,=)/ro   r   r?  numpyr    r   r   numpy.testingr   r   scipyr   scipy.specialspecialr]   r
   scipy.special._orthogonal_orthogonalr   r   rT   rx   r   r   r   r   r   r   r  rK  rV  r_  rq  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  rR   r6   r*   <module>r     s     *   7    ( (9K 9Kx(( ((V$; $;N= =0= =0= =0; ;<C C:M M (-..^:@5=n58:9(><@4$4"4$4"7$7$6&9&6&'=Tr6   