
    xfg$                        d dl Zd dlmZmZ d dlZd dlmZ d dlm	c m
Z d dlmZ d Zd Zd Z G d d	      Z G d
 d      Zd Zej(                  j+                  dg d      ej(                  j+                  dd dej,                  g      d               Zej(                  j+                  dg d      ej(                  j+                  ddej,                  g      ej(                  j+                  ddej,                  g      d                      Zej(                  j+                  dg d      ej(                  j+                  dddej,                  g      ej(                  j+                  dddej,                  g      d                      Zy)    N)assert_assert_allclose)_ufuncs)FuncDatac                  >   t        j                  ddd      } dt         j                  j                         z  dz
  }t        j                  | t        j
                  |      z        }t        j                  | |      }t        t        j                  ||d             y )Nr   i'           gV瞯<rtol)
nparangerandomrandcosarccosr   eval_chebytr   allclose)nxv1v2s       J/usr/lib/python3/dist-packages/scipy/special/tests/test_orthogonal_eval.pytest_eval_chebytr   
   so    
		!UAA	"))..
QA	"))A,	B			Q	"BBKKBU+,    c            	          t        t        j                  t        j                  ddd                   t        t        j                  t        j                  ddd                   y )Nr   g?)r   r   isnanr   eval_genlaguerre r   r   !test_eval_genlaguerre_restrictionr!      sB    BHHW--aQ789BHHW--c2q9:;r   c                      t        j                  d      5  t        j                  dd       t        j                  dd       t        j
                  ddd       d d d        y # 1 sw Y   y xY w)Nraiseallr
   r   )r   errstater   eval_legendreeval_laguerreeval_gegenbauerr    r   r   test_warningsr*      sU    		! )a#a#1a(	) ) )s   AA$$A-c                   ~    e Zd ZdZg g ddddf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)	TestPolyszQ
    Check that the eval_* functions agree with the constructed polynomials

    
   :0yE>c	                    t         j                  j                  d       g }	t        j                  |      D ]#  }
|D cg c]-  \  }}|||z
  t         j                  j	                  |      z  z   / }}}t        j
                  |      j                  }|sdg}|D ]  }|r|
ft        |      z   }n|
f}|d   |d   |d   z
  t         j                  j	                  |      z  z   }|d   |d<   |d   |d<   t        j                   || j                        }t         j                  t        j                  ||df      | ||      f   }|	j                  |        & t        j                  |	d      }	fd}t        j                  d      5  t        ||	t!        t#        t%        |      dz               d	|
      }|j'                          d d d        y c c}}w # 1 sw Y   y xY w)N  r   r
   axisc                  L    | d   j                  t              f| dd  z   }  |  S )Nr   r
   )astypeint)pfuncs    r   polyfuncz&TestPolys.check_poly.<locals>.polyfunc?   s,    1S!#ae+A8Or   r#   r$   r	   r   r   )r   r   seedr   r   asarrayTtuplepoly1dcoefc_tileappendconcatenater&   r   listrangelencheck)selfr7   clsparam_rangesx_rangennnparamnxr   datasetr   abparamsr6   r   polyzr8   dss    `                  r   
check_polyzTestPolys.check_poly'   s   
		t2 	"ABNO31Qa1Q3		v 666OFOZZ'))F 
"uQxAAAJ'!*wqz"9299>>";M!MMqz!qz!yya.EE"''!bV,aa89q!
"	"" ..q1	 [[W% 	(GT%L8I!8K2L-Mr#%BHHJ	 	- P,	 	   2G?GG(c                 p    | j                  t        j                  t        j                  ddgddgd       y )NgGzr-   r   r
   h㈵>rI   rJ   r   )rU   r   eval_jacobiorthjacobirG   s    r   test_jacobizTestPolys.test_jacobiH   s2    ++T[[&1;%?!#Qd 	 	4r   c                 p    | j                  t        j                  t        j                  ddgddgd       y )Nr
   r-   r   r
   r   r
   rY   rZ   )rU   r   eval_sh_jacobir\   	sh_jacobir^   s    r   test_sh_jacobizTestPolys.test_sh_jacobiM   s2    ..&-v%6A! 	 	#r   c                 n    | j                  t        j                  t        j                  dgddgd       y )NgV-߿r-   r   r
   gHz>rZ   )rU   r   r)   r\   
gegenbauerr^   s    r   test_gegenbauerzTestPolys.test_gegenbauerR   s/    //&2^b!W! 	 	#r   c                 j    | j                  t        j                  t        j                  g ddg       y Nr   r
   rI   rJ   )rU   r   r   r\   chebytr^   s    r   test_chebytzTestPolys.test_chebytW   *    ++T[[%'"a 	 	:r   c                 j    | j                  t        j                  t        j                  g ddg       y rk   )rU   r   eval_chebyur\   chebyur^   s    r   test_chebyuzTestPolys.test_chebyu[   ro   r   c                 j    | j                  t        j                  t        j                  g ddg       y Nr	   rl   )rU   r   eval_chebysr\   chebysr^   s    r   test_chebyszTestPolys.test_chebys_   ro   r   c                 j    | j                  t        j                  t        j                  g ddg       y ru   )rU   r   eval_chebycr\   chebycr^   s    r   test_chebyczTestPolys.test_chebycc   ro   r   c                     t        j                  d      5  | j                  t        j                  t
        j                  g ddg       d d d        y # 1 sw Y   y xY wNignorer$   r   r
   rl   )r   r&   rU   r   eval_sh_chebytr\   	sh_chebytr^   s    r   test_sh_chebytzTestPolys.test_sh_chebytg   sK    [[X& 	=OOG22DNN)+aV  =	= 	= 	=   4AAc                 j    | j                  t        j                  t        j                  g ddg       y Nr   r
   rl   )rU   r   eval_sh_chebyur\   	sh_chebyur^   s    r   test_sh_chebyuzTestPolys.test_sh_chebyul   s*    ..%'!Q 	 	9r   c                 j    | j                  t        j                  t        j                  g ddg       y rk   )rU   r   r'   r\   legendrer^   s    r   test_legendrezTestPolys.test_legendrep   s*    --t}}%'"a 	 	:r   c                     t        j                  d      5  | j                  t        j                  t
        j                  g ddg       d d d        y # 1 sw Y   y xY wr   )r   r&   rU   r   eval_sh_legendrer\   sh_legendrer^   s    r   test_sh_legendrezTestPolys.test_sh_legendret   sM    [[X& 	=OOG44d6F6F)+aV  =	= 	= 	=r   c                 l    | j                  t        j                  t        j                  dgddg       y NrX   r   d   rl   )rU   r   r   r\   genlaguerrer^   s    r   test_genlaguerrezTestPolys.test_genlaguerrey   s/    00$2B2B&1]QH 	 	Fr   c                 j    | j                  t        j                  t        j                  g ddg       y Nr   r   rl   )rU   r   r(   r\   laguerrer^   s    r   test_laguerrezTestPolys.test_laguerre}   s*    --t}}%'!S 	 	;r   c                 j    | j                  t        j                  t        j                  g ddg       y Nir   rl   )rU   r   eval_hermiter\   hermiter^   s    r   test_hermitezTestPolys.test_hermite   s*    ,,dll%'$ 	 	>r   c                 j    | j                  t        j                  t        j                  g ddg       y r   )rU   r   eval_hermitenormr\   hermitenormr^   s    r   test_hermitenormzTestPolys.test_hermitenorm   s,    00$2B2B%'$ 	 	>r   N)__name__
__module____qualname____doc__rU   r_   re   ri   rn   rs   ry   r}   r   r   r   r   r   r   r   r   r    r   r   r,   r,   !   si    
 24RB$B4
#
#
::::=
9:=
F;>>r   r,   c                   x    e Zd ZdZg g ddddf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)TestRecurrencezI
    Check that the eval_* functions sig='ld->d' and 'dd->d' agree.

    r-   r.   c                    t         j                  j                  d       g }t        j                  |      D ]#  }	|D 
cg c]-  \  }
}|
||
z
  t         j                  j	                  |      z  z   / }}
}t        j
                  |      j                  }|sdg}|D ]  }|r|	ft        |      z   }n|	f}|d   |d   |d   z
  t         j                  j	                  |      z  z   }|d   |d<   |d   |d<   t        t        |      dz   dz  dz         }t         j                  t        j                  ||df      | ||fz   i |f   }|j                  |        & t        j                  |d      }fd}t        j                  d	
      5  t        ||t!        t#        t        |      dz               d|      }|j%                          d d d        y c c}}
w # 1 sw Y   y xY w)Nr0   r   r
   d->dsigr1   c                      | d   j                  t              f| dd  z   } t        dt        |       dz
  dz  z   dz         } | i |S )Nr   r
   lr   r   r   )r4   r5   dictrE   )r6   kwr7   s     r   r8   z+TestRecurrence.check_poly.<locals>.polyfunc   sQ    1S!#ae+A#s1vaxn,U23B>b>!r   r#   r$   r	   r   r   )r   r   r9   r   r   r:   r;   r<   r   rE   r?   r@   rA   rB   r&   r   rC   rD   rF   )rG   r7   rI   rJ   rK   rL   rM   r   rN   r   rO   rP   rQ   r6   r   r   rS   r8   rT   s    `                 r   rU   zTestRecurrence.check_poly   s   
		t2 	"ABNO31Qa1Q3		v 666OFOZZ'))F 
"uQxAAAJ'!*wqz"9299>>";M!MMqz!qz!s1vaxnU23EE"''!bV,aQD1HR1HHIq!
"	"" ..q1	"
 [[W% 	(GT%L8I!8K2L-Mr#%BHHJ	 	/ P.	 	rV   c                 P    | j                  t        j                  ddgddg       y )NrX   r   r
   rl   )rU   r   r[   r^   s    r   r_   zTestRecurrence.test_jacobi   s*    ++&1;%?!#Q 	 	)r   c                 P    | j                  t        j                  ddgddg       y )Nra   rb   r   r
   rl   )rU   r   rc   r^   s    r   re   zTestRecurrence.test_sh_jacobi   s*    ..&-v%6A 	 	Hr   c                 N    | j                  t        j                  dgddg       y )Nrg   r   r
   rl   )rU   r   r)   r^   s    r   ri   zTestRecurrence.test_gegenbauer   s'    //&2^b!W 	 	Fr   c                 L    | j                  t        j                  g ddg       y rk   )rU   r   r   r^   s    r   rn   zTestRecurrence.test_chebyt   $    ++%'"a 	 	:r   c                 L    | j                  t        j                  g ddg       y rk   )rU   r   rq   r^   s    r   rs   zTestRecurrence.test_chebyu   r   r   c                 L    | j                  t        j                  g ddg       y ru   )rU   r   rw   r^   s    r   ry   zTestRecurrence.test_chebys   r   r   c                 L    | j                  t        j                  g ddg       y ru   )rU   r   r{   r^   s    r   r}   zTestRecurrence.test_chebyc   r   r   c                 L    | j                  t        j                  g ddg       y r   )rU   r   r   r^   s    r   r   zTestRecurrence.test_sh_chebyt   $    ..%'!Q 	 	9r   c                 L    | j                  t        j                  g ddg       y r   )rU   r   r   r^   s    r   r   zTestRecurrence.test_sh_chebyu   r   r   c                 L    | j                  t        j                  g ddg       y rk   )rU   r   r'   r^   s    r   r   zTestRecurrence.test_legendre   s$    --%'"a 	 	:r   c                 L    | j                  t        j                  g ddg       y r   )rU   r   r   r^   s    r   r   zTestRecurrence.test_sh_legendre   s$    00%'!Q 	 	9r   c                 N    | j                  t        j                  dgddg       y r   )rU   r   r   r^   s    r   r   zTestRecurrence.test_genlaguerre   s'    00&1]QH 	 	Fr   c                 L    | j                  t        j                  g ddg       y r   )rU   r   r(   r^   s    r   r   zTestRecurrence.test_laguerre   s$    --%'!S 	 	;r   c                 L    t        j                  dd      }d}t        ||       y )NF         ?gi\m)r   r   r   )rG   vrO   s      r   r   zTestRecurrence.test_hermite   s#      S)!1r   N)r   r   r   r   rU   r_   re   ri   rn   rs   ry   r}   r   r   r   r   r   r   r   r    r   r   r   r      sf    
 -/r$ D)
HF::::99:9F;r   r   c                      t        j                  t        j                  dd            sJ t        j                  t        j                  dd            sJ y )Nr   r   )r   r   r   r   r   r    r   r   test_hermite_domainr      s@    88G((S122288G,,R5666r   r   )r   r
   r	   r   r
   c                 \   t        j                  t        j                  | |            t        j                  t        j                  | |g            k(  sJ t        j                  t        j
                  | |            t        j                  t        j                  | |g            k(  sJ y N)r   r   r   r   anyr   )r   r   s     r   test_hermite_nanr      sx     88G((A./266"((Aq6:J3KKKK88G,,Q23rvvbhh1v>N7OOOOr   )r   r
   r	   g	@alphar	   c                     t        j                  t        j                  | ||            }t        j                  t        j                  | ||g            }||k(  sJ y r   )r   r   r   r   r   )r   r   r   nan_laguerrenan_args        r   test_genlaguerre_nanr      sL    
 88G44QqABLffRXXq%m,-G7"""r   g        gư>c                     t        j                  t        j                  | ||            }t        j                  t        j                  | ||g            }||k(  sJ y r   )r   r   r   r)   r   )r   r   r   nan_gegenbauerr   s        r   test_gegenbauer_nanr     sL    
 XXg55aBCNffRXXq%m,-GW$$$r   )numpyr   numpy.testingr   r   pytestscipy.specialr   scipy.special._orthogonalspecial_orthogonalr\   scipy.special._testutilsr   r   r!   r*   r,   r   r   markparametrizenanr   r   r   r    r   r   <module>r      sf    2  ! ( ( --<)f> f>R` `F7 i(q!RVVn-P . )P n-1bff+.q"&&k*# + / .# n-3266"23tQ/0% 1 4 .%r   