
    Uic%                        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                            dg d          ej                            dd dej        g          d                         Zej                            dg d          ej                            ddej        g          ej                            ddej        g          d                                     Zej                            dg d          ej                            dddej        g          ej                            dddej        g          d                                     ZdS )    N)assert_assert_allclose)_ufuncs)FuncDatac                  f   t          j        dddt          j        d                    } dt           j                                        z  dz
  }t          j        | t          j        |          z            }t          j        | |          }t          t          j
        ||d	                     d S )
Nr   i'     long)dtype      gV瞯<rtol)nparanger
   randomrandcosarccosr   eval_chebytr   allclose)nxv1v2s       /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/special/tests/test_orthogonal_eval.pytest_eval_chebytr   
   s    
	!UARXf%5%5666A	")..

QA	")A,,		B		Q	"	"BBKBU+++,,,,,    c                  <    t          j        dd          dk    sJ d S )Nr   y       @        g     @)r   r    r   r   test_eval_chebyt_gh20129r       s&    q&))V333333r   c            	          t          t          j        t          j        ddd                               t          t          j        t          j        ddd                               d S )Nr   g?)r   r   isnanr   eval_genlaguerrer   r   r   !test_eval_genlaguerre_restrictionr%      sV    BHW-aQ7788999BHW-c2q99::;;;;;r   c                      t          j        d          5  t          j        dd           t          j        dd           t          j        ddd           d d d            d S # 1 swxY w Y   d S )Nraiseallr   r   )r   errstater   eval_legendreeval_laguerreeval_gegenbauerr   r   r   test_warningsr.      s    		!	!	! ) )a###a###1a(((	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   AA$$A(+A(c                   x    e Zd Z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S )	TestPolyszQ
    Check that the eval_* functions agree with the constructed polynomials

    r   
   :0yE>c	                    t           j                            d          g }	t          j        |          D ]}
fd|D             }t          j        |          j        }|sdg}|D ]}|r|
ft          |          z   }n|
f}|d         |d         |d         z
                      |          z  z   }|d         |d<   |d         |d<   t          j         || j	                  }t           j
        t          j        ||df          | ||          f         }|	                    |           ƌt          j        |	d          }	fd}t          j        d          5  t          ||	t!          t#          t%          |          d	z                       d
|          }|                                 d d d            d S # 1 swxY w Y   d S )N  c                 R    g | ]#\  }}|||z
                                 z  z   $S r   )r   ).0abnparamrngs      r   
<listcomp>z(TestPolys.check_poly.<locals>.<listcomp>2   s7    IIISQqa1Q3 0 000IIIr   r   r   axisc                      | d                              t          j        d                    f| dd          z   }  |  S )Nr   r	   r   )astyper   r
   )pfuncs    r   polyfuncz&TestPolys.check_poly.<locals>.polyfuncD   s=    1RXf--..01QRR58A48Or   r'   r(   r   r"   r   )r   r   RandomStater   asarrayTtupler   poly1dcoefc_tileappendconcatenater*   r   listrangelencheck)selfrA   clsparam_rangesx_rangennr9   nxr   datasetr   paramsr@   r   polyzrB   dsr:   s    `    `           @r   
check_polyzTestPolys.check_poly,   s5   i##D))2 	" 	"AIIIIILIIIFZ'')F  
" 
" uQxxAAAAJ'!*wqz"9388B<<!GGqz!qz!ya..E"'!bV,,aa89q!!!!
" .q111	 	 	 	 	 [W%%% 	 	(GT%L8I8I!8K2L2L-M-Mr#% % %BHHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !AGGGc                 j    |                      t          j        t          j        ddgddgd           d S )NgGzr1   r"   r   h㈵>rS   rT   r   )r\   r   eval_jacobiorthjacobirQ   s    r   test_jacobizTestPolys.test_jacobiM   sA    +T[&1;%?!#Qd 	 	4 	4 	4 	4 	4r   c                 j    |                      t          j        t          j        ddgddgd           d S )Nr   r1   r   r   r   r   r_   r`   )r\   r   eval_sh_jacobirb   	sh_jacobird   s    r   test_sh_jacobizTestPolys.test_sh_jacobiR   sA    .&-v%6A! 	 	# 	# 	# 	# 	#r   c                 h    |                      t          j        t          j        dgddgd           d S )NgV-߿r1   r"   r   gHz>r`   )r\   r   r-   rb   
gegenbauerrd   s    r   test_gegenbauerzTestPolys.test_gegenbauerW   s>    /&2^b!W! 	 	# 	# 	# 	# 	#r   c                 d    |                      t          j        t          j        g ddg           d S Nr"   r   rS   rT   )r\   r   r   rb   chebytrd   s    r   test_chebytzTestPolys.test_chebyt\   9    +T[%'"a 	 	: 	: 	: 	: 	:r   c                 d    |                      t          j        t          j        g ddg           d S rq   )r\   r   eval_chebyurb   chebyurd   s    r   test_chebyuzTestPolys.test_chebyu`   ru   r   c                 d    |                      t          j        t          j        g ddg           d S Nr   rr   )r\   r   eval_chebysrb   chebysrd   s    r   test_chebyszTestPolys.test_chebysd   ru   r   c                 d    |                      t          j        t          j        g ddg           d S r{   )r\   r   eval_chebycrb   chebycrd   s    r   test_chebyczTestPolys.test_chebych   ru   r   c                     t          j        d          5  |                     t          j        t
          j        g ddg           d d d            d S # 1 swxY w Y   d S Nignorer(   r   r   rr   )r   r*   r\   r   eval_sh_chebytrb   	sh_chebytrd   s    r   test_sh_chebytzTestPolys.test_sh_chebytl   s    [X&&& 	= 	=OOG2DN)+aV  = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=   0AAAc                 d    |                      t          j        t          j        g ddg           d S Nr   r   rr   )r\   r   eval_sh_chebyurb   	sh_chebyurd   s    r   test_sh_chebyuzTestPolys.test_sh_chebyuq   s9    .%'!Q 	 	9 	9 	9 	9 	9r   c                 d    |                      t          j        t          j        g ddg           d S rq   )r\   r   r+   rb   legendrerd   s    r   test_legendrezTestPolys.test_legendreu   s9    -t}%'"a 	 	: 	: 	: 	: 	:r   c                     t          j        d          5  |                     t          j        t
          j        g ddg           d d d            d S # 1 swxY w Y   d S r   )r   r*   r\   r   eval_sh_legendrerb   sh_legendrerd   s    r   test_sh_legendrezTestPolys.test_sh_legendrey   s    [X&&& 	= 	=OOG4d6F)+aV  = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=r   c                 f    |                      t          j        t          j        dgddg           d S Nr^   r   d   rr   )r\   r   r$   rb   genlaguerrerd   s    r   test_genlaguerrezTestPolys.test_genlaguerre~   sA    0$2B&1]QH 	 	F 	F 	F 	F 	Fr   c                 d    |                      t          j        t          j        g ddg           d S Nr   r   rr   )r\   r   r,   rb   laguerrerd   s    r   test_laguerrezTestPolys.test_laguerre   s9    -t}%'!S 	 	; 	; 	; 	; 	;r   c                 d    |                      t          j        t          j        g ddg           d S Nir   rr   )r\   r   eval_hermiterb   hermiterd   s    r   test_hermitezTestPolys.test_hermite   s9    ,dl%'$ 	 	> 	> 	> 	> 	>r   c                 d    |                      t          j        t          j        g ddg           d S r   )r\   r   eval_hermitenormrb   hermitenormrd   s    r   test_hermitenormzTestPolys.test_hermitenorm   s:    0$2B%'$ 	 	> 	> 	> 	> 	>r   Nr   r   r1   r1   r1   r2   )__name__
__module____qualname____doc__r\   re   rk   ro   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r0   &   s!        
 EG*.   B4 4 4
# # #
# # #
: : :: : :: : :: : := = =
9 9 9: : := = =
F F F; ; ;> > >> > > > >r   r0   c                   r    e Zd Z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S )TestRecurrencezI
    Check that the eval_* functions sig='ld->d' and 'dd->d' agree.

    r   r1   r2   c                    t           j                            d           g }t          j        |          D ]}	fd|D             }
t          j        |
          j        }
|sdg}
|
D ]}|r|	ft          |          z   }n|	f}|d         |d         |d         z
  t           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         }|                    |           ېt          j        |d          }fd	}t          j        d
          5  t          ||t!          t#          t          |          dz                       d|          }|                                 d d d            d S # 1 swxY w Y   d S )Nr4   c                 f    g | ]-\  }}|||z
  t           j                                      z  z   .S r   )r   r   r   )r6   r7   r8   r9   s      r   r;   z-TestRecurrence.check_poly.<locals>.<listcomp>   s9    OOO31Qa1Q3	v 6 666OOOr   r   r   d->dsigr<   c                      | d                              t          j                  }|f| dd          z   } |j        j        }t          |t          |           dz
  dz  z   dz             } | i |S )Nr   r   r   r   r   )r?   r   intpr
   chardictrO   )r@   p0p0_type_charkwrA   s       r   rB   z+TestRecurrence.check_poly.<locals>.polyfunc   sp    1RW%%B!""A8=L,#a&&(C7%?@@@B4>b>>!r   r'   r(   r   r"   r   )r   r   seedr   rD   rE   rF   r   r   rO   rI   rJ   rK   rL   r*   r   rM   rN   rP   )rQ   rA   rS   rT   rU   r9   rV   r   rW   r   rX   r@   r   r   rZ   rB   r[   s    `   `           r   r\   zTestRecurrence.check_poly   sM   
	t2 	" 	"AOOOO,OOOFZ'')F  
" 
" uQxxAAAAJ'!*wqz"929>>";M;M!MMqz!qz!s1vvaxnU2333E"'!bV,,aQD1HR1H1HHIq!!!!
" .q111	" 	" 	" 	" 	" [W%%% 	 	(GT%L8I8I!8K2L2L-M-Mr#% % %BHHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6AGGGc                 R    |                      t          j        ddgddg           d S )Nr^   r"   r   rr   )r\   r   ra   rd   s    r   re   zTestRecurrence.test_jacobi   s;    +&1;%?!#Q 	 	) 	) 	) 	) 	)r   c                 R    |                      t          j        ddgddg           d S )Nrg   rh   r   r   rr   )r\   r   ri   rd   s    r   rk   zTestRecurrence.test_sh_jacobi   s?    .&-v%6A 	 	H 	H 	H 	H 	Hr   c                 P    |                      t          j        dgddg           d S )Nrm   r"   r   rr   )r\   r   r-   rd   s    r   ro   zTestRecurrence.test_gegenbauer   s<    /&2^b!W 	 	F 	F 	F 	F 	Fr   c                 N    |                      t          j        g ddg           d S rq   )r\   r   r   rd   s    r   rt   zTestRecurrence.test_chebyt   5    +%'"a 	 	: 	: 	: 	: 	:r   c                 N    |                      t          j        g ddg           d S rq   )r\   r   rw   rd   s    r   ry   zTestRecurrence.test_chebyu   r   r   c                 N    |                      t          j        g ddg           d S r{   )r\   r   r}   rd   s    r   r   zTestRecurrence.test_chebys   r   r   c                 N    |                      t          j        g ddg           d S r{   )r\   r   r   rd   s    r   r   zTestRecurrence.test_chebyc   r   r   c                 N    |                      t          j        g ddg           d S r   )r\   r   r   rd   s    r   r   zTestRecurrence.test_sh_chebyt   5    .%'!Q 	 	9 	9 	9 	9 	9r   c                 N    |                      t          j        g ddg           d S r   )r\   r   r   rd   s    r   r   zTestRecurrence.test_sh_chebyu   r   r   c                 N    |                      t          j        g ddg           d S rq   )r\   r   r+   rd   s    r   r   zTestRecurrence.test_legendre   s5    -%'"a 	 	: 	: 	: 	: 	:r   c                 N    |                      t          j        g ddg           d S r   )r\   r   r   rd   s    r   r   zTestRecurrence.test_sh_legendre   s5    0%'!Q 	 	9 	9 	9 	9 	9r   c                 P    |                      t          j        dgddg           d S r   )r\   r   r$   rd   s    r   r   zTestRecurrence.test_genlaguerre   s<    0&1]QH 	 	F 	F 	F 	F 	Fr   c                 N    |                      t          j        g ddg           d S r   )r\   r   r,   rd   s    r   r   zTestRecurrence.test_laguerre   s5    -%'!S 	 	; 	; 	; 	; 	;r   c                 T    t          j        dd          }d}t          ||           d S )NF         ?gi\m)r   r   r   )rQ   vr7   s      r   r   zTestRecurrence.test_hermite   s/     S))!1r   Nr   )r   r   r   r   r\   re   rk   ro   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s        
 @B*." " " "H) ) )
H H HF F F: : :: : :: : :: : :9 9 99 9 9: : :9 9 9F F F; ; ;    r   r   c                      t          j        t          j        dd                    sJ t          j        t          j        dd                    sJ d S )Nr"   r   )r   r#   r   r   r   r   r   r   test_hermite_domainr      sN    8G(S11222228G,R556666666r   r   )r   r   r   r   r   c                 R   t          j        t          j        | |                    t          j        t          j        | |g                    k    sJ t          j        t          j        | |                    t          j        t          j        | |g                    k    sJ d S N)r   r#   r   r   anyr   )r   r   s     r   test_hermite_nanr      s     8G(A..//26"(Aq6:J:J3K3KKKKK8G,Q2233rvbh1v>N>N7O7OOOOOOOr   )r   r   r   g	@alphar   c                     t          j        t          j        | ||                    }t          j        t          j        | ||g                    }||k    sJ d S r   )r   r#   r   r$   r   )r   r   r   nan_laguerrenan_args        r   test_genlaguerre_nanr     sX    
 8G4QqAABBLfRXq%m,,--G7""""""r   g        gư>c                     t          j        t          j        | ||                    }t          j        t          j        | ||g                    }||k    sJ d S r   )r   r#   r   r-   r   )r   r   r   nan_gegenbauerr   s        r   test_gegenbauer_nanr     sX    
 Xg5aBBCCNfRXq%m,,--GW$$$$$$r   )numpyr   numpy.testingr   r   pytestscipy.specialr   scipy.special._orthogonalspecial_orthogonalrb   scipy.special._testutilsr   r   r    r%   r.   r0   r   r   markparametrizenanr   r   r   r   r   r   <module>r      sx       2 2 2 2 2 2 2 2  ! ! ! ! ! ! ( ( ( ( ( ( ( ( ( - - - - - -- - -4 4 4
< < <) ) )f> f> f> f> f> f> f> f>Rb b b b b b b bJ7 7 7 iii((q!RVn--P P .- )(P nnn--1bf+..q"&k**# # +* /. .-# nnn--326"233tQ/00% % 10 43 .-% % %r   