
    sgb%                         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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                  h   t        j                  dddt        j                  d            } dt         j                  j	                         z  dz
  }t        j
                  | t        j                  |      z        }t        j                  | |      }t        t        j                  ||d	             y )
Nr   i'     long)dtype      gV瞯<rtol)nparanger
   randomrandcosarccosr   eval_chebytr   allclose)nxv1v2s       [/var/www/html/venv/lib/python3.12/site-packages/scipy/special/tests/test_orthogonal_eval.pytest_eval_chebytr   
   sz    
		!UARXXf%56A	"))..
QA	"))A,	B			Q	"BBKKBU+,    c                  :    t        j                  dd      dk(  sJ y )Nr   y       @        g     @)r   r    r   r   test_eval_chebyt_gh20129r       s    q&)V333r   c            	          t        t        j                  t        j                  ddd                   t        t        j                  t        j                  ddd                   y )Nr   g?)r   r   isnanr   eval_genlaguerrer   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                  j    | d   j                  t        j                  d            f| dd  z   }  |  S )Nr   r	   r   )astyper   r
   )pfuncs    r   polyfuncz&TestPolys.check_poly.<locals>.polyfuncD   s5    1RXXf-.01QR58A8Or   r'   r(   r   r"   r   )r   r   seedr   r   asarrayTtuplepoly1dcoefc_tileappendconcatenater*   r   listrangelencheck)selfr:   clsparam_rangesx_rangennnparamnxr   datasetr   abparamsr9   r   polyzr;   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r1   r"   r   h㈵>rL   rM   r   )rX   r   eval_jacobiorthjacobirJ   s    r   test_jacobizTestPolys.test_jacobiM   s2    ++T[[&1;%?!#Qd 	 	4r   c                 p    | j                  t        j                  t        j                  ddgddgd       y )Nr   r1   r   r   r   r   r\   r]   )rX   r   eval_sh_jacobir_   	sh_jacobira   s    r   test_sh_jacobizTestPolys.test_sh_jacobiR   s2    ..&-v%6A! 	 	#r   c                 n    | j                  t        j                  t        j                  dgddgd       y )NgV-߿r1   r"   r   gHz>r]   )rX   r   r-   r_   
gegenbauerra   s    r   test_gegenbauerzTestPolys.test_gegenbauerW   s/    //&2^b!W! 	 	#r   c                 j    | j                  t        j                  t        j                  g ddg       y Nr"   r   rL   rM   )rX   r   r   r_   chebytra   s    r   test_chebytzTestPolys.test_chebyt\   *    ++T[[%'"a 	 	:r   c                 j    | j                  t        j                  t        j                  g ddg       y rn   )rX   r   eval_chebyur_   chebyura   s    r   test_chebyuzTestPolys.test_chebyu`   rr   r   c                 j    | j                  t        j                  t        j                  g ddg       y Nr   ro   )rX   r   eval_chebysr_   chebysra   s    r   test_chebyszTestPolys.test_chebysd   rr   r   c                 j    | j                  t        j                  t        j                  g ddg       y rx   )rX   r   eval_chebycr_   chebycra   s    r   test_chebyczTestPolys.test_chebych   rr   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   ro   )r   r*   rX   r   eval_sh_chebytr_   	sh_chebytra   s    r   test_sh_chebytzTestPolys.test_sh_chebytl   sK    [[X& 	=OOG22DNN)+aV  =	= 	= 	=   4AAc                 j    | j                  t        j                  t        j                  g ddg       y Nr   r   ro   )rX   r   eval_sh_chebyur_   	sh_chebyura   s    r   test_sh_chebyuzTestPolys.test_sh_chebyuq   s*    ..%'!Q 	 	9r   c                 j    | j                  t        j                  t        j                  g ddg       y rn   )rX   r   r+   r_   legendrera   s    r   test_legendrezTestPolys.test_legendreu   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*   rX   r   eval_sh_legendrer_   sh_legendrera   s    r   test_sh_legendrezTestPolys.test_sh_legendrey   sM    [[X& 	=OOG44d6F6F)+aV  =	= 	= 	=r   c                 l    | j                  t        j                  t        j                  dgddg       y Nr[   r   d   ro   )rX   r   r$   r_   genlaguerrera   s    r   test_genlaguerrezTestPolys.test_genlaguerre~   s/    00$2B2B&1]QH 	 	Fr   c                 j    | j                  t        j                  t        j                  g ddg       y Nr   r   ro   )rX   r   r,   r_   laguerrera   s    r   test_laguerrezTestPolys.test_laguerre   s*    --t}}%'!S 	 	;r   c                 j    | j                  t        j                  t        j                  g ddg       y Nir   ro   )rX   r   eval_hermiter_   hermitera   s    r   test_hermitezTestPolys.test_hermite   s*    ,,dll%'$ 	 	>r   c                 j    | j                  t        j                  t        j                  g ddg       y r   )rX   r   eval_hermitenormr_   hermitenormra   s    r   test_hermitenormzTestPolys.test_hermitenorm   s,    00$2B2B%'$ 	 	>r   N)__name__
__module____qualname____doc__rX   rb   rh   rl   rq   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   &   si    
 24RB$B4
#
#
::::=
9:=
F;>>r   r0   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.

    r1   r2   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)Nr4   r   r   d->dsigr5   c                      | d   j                  t        j                        }|f| dd  z   } |j                  j                  }t        |t        |       dz
  dz  z   dz         } | i |S )Nr   r   r   r   r   )r8   r   intpr
   chardictrH   )r9   p0p0_type_charkwr:   s       r   r;   z+TestRecurrence.check_poly.<locals>.polyfunc   se    1RWW%B!"A88==L,#a&(C7%?@B>b>!r   r'   r(   r   r"   r   )r   r   r<   r   r   r=   r>   r?   r   rH   rB   rC   rD   rE   r*   r   rF   rG   rI   )rJ   r:   rL   rM   rN   rO   rP   r   rQ   r   rR   rS   rT   r9   r   r   rV   r;   rW   s    `                 r   rX   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	 	3 P2	 	rY   c                 P    | j                  t        j                  ddgddg       y )Nr[   r"   r   ro   )rX   r   r^   ra   s    r   rb   zTestRecurrence.test_jacobi   s*    ++&1;%?!#Q 	 	)r   c                 P    | j                  t        j                  ddgddg       y )Nrd   re   r   r   ro   )rX   r   rf   ra   s    r   rh   zTestRecurrence.test_sh_jacobi   s*    ..&-v%6A 	 	Hr   c                 N    | j                  t        j                  dgddg       y )Nrj   r"   r   ro   )rX   r   r-   ra   s    r   rl   zTestRecurrence.test_gegenbauer   s'    //&2^b!W 	 	Fr   c                 L    | j                  t        j                  g ddg       y rn   )rX   r   r   ra   s    r   rq   zTestRecurrence.test_chebyt   $    ++%'"a 	 	:r   c                 L    | j                  t        j                  g ddg       y rn   )rX   r   rt   ra   s    r   rv   zTestRecurrence.test_chebyu   r   r   c                 L    | j                  t        j                  g ddg       y rx   )rX   r   rz   ra   s    r   r|   zTestRecurrence.test_chebys   r   r   c                 L    | j                  t        j                  g ddg       y rx   )rX   r   r~   ra   s    r   r   zTestRecurrence.test_chebyc   r   r   c                 L    | j                  t        j                  g ddg       y r   )rX   r   r   ra   s    r   r   zTestRecurrence.test_sh_chebyt   $    ..%'!Q 	 	9r   c                 L    | j                  t        j                  g ddg       y r   )rX   r   r   ra   s    r   r   zTestRecurrence.test_sh_chebyu   r   r   c                 L    | j                  t        j                  g ddg       y rn   )rX   r   r+   ra   s    r   r   zTestRecurrence.test_legendre   s$    --%'"a 	 	:r   c                 L    | j                  t        j                  g ddg       y r   )rX   r   r   ra   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   )rX   r   r$   ra   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   )rX   r   r,   ra   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   )rJ   vrR   s      r   r   zTestRecurrence.test_hermite   s#      S)!1r   N)r   r   r   r   rX   rb   rh   rl   rq   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r      sf    
 -/r$"H)
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.   r0   r   r   markparametrizenanr   r   r   r   r   r   <module>r      sk    2  ! ( ( --4
<)f> f>Rb bJ7 i(q!RVVn-P . )P n-1bff+.q"&&k*# + / .# n-3266"23tQ/0% 1 4 .%r   