
    CwgfD                     r   d Z ddlmZ ddlZddlmc mZ ddl	m
Z
 ddlmZmZmZmZ  ej                   dg      dz  Z ej                   ddg      dz  Z ej                   g d      d	z  Z ej                   g d
      dz  Z ej                   g d      dz  Z ej                   g d      dz  Z ej                   g d      dz  ZeeeeeeegZ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! G d# d$      Z" G d% d&      Z#y)'zTests for laguerre module.

    )reduceN)polyval)assert_almost_equalassert_raisesassert_equalassert_   )   r	   r   )   i	   r
   r   )   iH   ir	   r   )x   iiX  i8   r
   r   )  i i  ii  ir	   r   c                 0    t        j                  | d      S )Ngư>)tol)laglagtrimxs    [/var/www/horilla/myenv/lib/python3.12/site-packages/numpy/polynomial/tests/test_laguerre.pytrimr      s    ;;qd##    c                   $    e Zd Zd Zd Zd Zd Zy)TestConstantsc                 <    t        t        j                  ddg       y )Nr   r	   )r   r   	lagdomainselfs    r   test_lagdomainzTestConstants.test_lagdomain   s    S]]QF+r   c                 :    t        t        j                  dg       y )Nr   )r   r   lagzeror!   s    r   test_lagzerozTestConstants.test_lagzero!   s    S[[1#&r   c                 :    t        t        j                  dg       y Nr	   )r   r   lagoner!   s    r   test_lagonezTestConstants.test_lagone$   s    SZZ!%r   c                 <    t        t        j                  ddg       y )Nr	   r
   )r   r   lagxr!   s    r   	test_lagxzTestConstants.test_lagx'   s    SXX2w'r   N)__name__
__module____qualname__r#   r&   r*   r-    r   r   r   r      s    ,'&(r   r   c                   X    e Zd Z ej                  ddd      Zd Zd Zd Zd Z	d Z
d	 Zy
)TestArithmetic   d   c                 X   t        d      D ]  }t        d      D ]  }d| d| }t        j                  t        ||      dz         }||xx   dz  cc<   ||xx   dz  cc<   t	        j
                  dg|z  dgz   dg|z  dgz         }t        t        |      t        |      |         y N   At i=, j=r	   r   err_msg)rangenpzerosmaxr   lagaddr   r   r"   ijmsgtgtress         r   test_lagaddzTestArithmetic.test_lagadd.       q 	@A1X @aSQC(hhs1ay1}-A!A!jj!Q!qc!eqck:T#YS	3?@	@r   c                 X   t        d      D ]  }t        d      D ]  }d| d| }t        j                  t        ||      dz         }||xx   dz  cc<   ||xx   dz  cc<   t	        j
                  dg|z  dgz   dg|z  dgz         }t        t        |      t        |      |         y r8   )r>   r?   r@   rA   r   lagsubr   r   rC   s         r   test_lagsubzTestArithmetic.test_lagsub8   rJ   r   c                 2   t        t        j                  dg      dg       t        t        j                  dg      ddg       t        dd      D ]E  }dg|z  dgz   }dg|dz
  z  | d|z  dz   |dz    gz   }t	        t        j                  |      |       G y )Nr   r	   r
   r9   r   )r   r   lagmulxr>   r   )r"   rD   serrG   s       r   test_lagmulxzTestArithmetic.test_lagmulxB   s    S[[!%s+S[[!%2w/q! 	7A#a%1#+C#q1u+!QqS1WAh 77CC 0#6	7r   c                    t        d      D ]  }dg|z  dgz   }t        j                  | j                  |      }t        d      D ]  }d| d| }dg|z  dgz   }t        j                  | j                  |      }t        j                  ||      }t        j                  | j                  |      }	t        t        |      ||z   dz   k(  |       t        |	||z  |         y )Nr9   r   r	   r:   r;   r<   )r>   r   lagvalr   lagmulr   lenr   )
r"   rD   pol1val1rE   rF   pol2val2pol3val3s
             r   test_lagmulzTestArithmetic.test_lagmulJ   s    q 
	BA3q5A3;D::dffd+D1X BaSQC(s1us{zz$&&$/zz$-zz$&&$/D	QUQY.4#D$t)SAB
	Br   c                 n   t        d      D ]  }t        d      D ]  }d| d| }dg|z  dgz   }dg|z  dgz   }t        j                  ||      }t        j                  ||      \  }}t        j                  t        j                  ||      |      }	t        t        |	      t        |      |         y )Nr9   r:   r;   r   r	   r<   )r>   r   rB   lagdivrT   r   r   )
r"   rD   rE   rF   cicjrG   quoremrH   s
             r   test_lagdivzTestArithmetic.test_lagdivX   s    q 	GA1X GaSQC(SUaS[SUaS[jjR(::c2.SjjC!4c:#DItCy#FG	Gr   c           	      V   t        d      D ]  }t        d      D ]  }d| d| }t        j                  |dz         }t        t        j
                  |g|z  t        j                  dg            }t	        j                  ||      }t        t        |      t        |      |         y )Nr9   r:   r;   r	   r<   )
r>   r?   aranger   r   rT   arraylagpowr   r   )r"   rD   rE   rF   crG   rH   s          r   test_lagpowzTestArithmetic.test_lagpowc   s    q 	@A1X @aSQC(IIa!e$SZZ!Q!>jjA&T#YS	3?@	@r   N)r.   r/   r0   r?   linspacer   rI   rM   rQ   r\   rc   ri   r1   r   r   r3   r3   +   s9    B3A@@7B	G@r   r3   c                       e Zd Z ej                  g d      Z ej                  dee      Z ej                  deee      Zej                  j                  d      dz  dz
  Z
 ee
g d      Zd Zd	 Zd
 Zd Zd Zy)TestEvaluation)g      "@g      ,g      @i,j->ij
i,j,k->ijkr5   r9   r   r	   )      ?g       @g      @c                    t        t        j                  g dg      j                  d       t	        j
                  dd      }t        D cg c]  }t        ||       }}t        d      D ]8  }d| }||   }t        j                  |dg|z  dgz         }t        |||       : t        d      D ]  }dg|z  }t	        j                  |      }t        t        j                  |dg      j                  |       t        t        j                  |ddg      j                  |       t        t        j                  |g d	      j                  |        y c c}w )
Nr	   r   r
      r:   r<   r5   r   )r	   r   r   )r   r   rS   sizer?   rj   Llistr   r>   r   r@   shape)	r"   r   rh   yrD   rF   rG   rH   dimss	            r   test_lagvalzTestEvaluation.test_lagvalw   s"   SZZQC(--q1 KKA$)*qWQ]**q 	7A!+CA$C**QA,CS#6		7 q 	?A3q5DAAs+1148A1v.44d;Ay177>	? +s   
Ec                    | j                   \  }}}| j                  \  }}}t        t        t        j
                  ||d d | j                         ||z  }t	        j
                  ||| j                        }t        ||       t        j                  d      }	t	        j
                  |	|	| j                        }t        |j                  dk(         y Nr   r   r5   )r   rv   r   
ValueErrorr   lagval2dc2dr   r?   onesr   ru   
r"   x1x2x3y1y2y3rG   rH   zs
             r   test_lagval2dzTestEvaluation.test_lagval2d   s    VV
BVV
B 	j#,,BrFDHHE ell2r488,C% GGFOll1a*		V#$r   c           	         | j                   \  }}}| j                  \  }}}t        t        t        j
                  |||d d | j                         ||z  |z  }t	        j
                  |||| j                        }t        ||       t        j                  d      }	t	        j
                  |	|	|	| j                        }t        |j                  dk(         y rz   )r   rv   r   r|   r   lagval3dc3dr   r?   r   r   ru   r   s
             r   test_lagval3dzTestEvaluation.test_lagval3d   s    VV
BVV
B 	j#,,B2AI eBhll2r2txx0C% GGFOll1aDHH-		V#$r   c                 h   | j                   \  }}}| j                  \  }}}t        j                  d||      }t	        j
                  ||| j                        }t        ||       t        j                  d      }	t	        j
                  |	|	| j                        }t        |j                  dk(         y )Nrm   r{   )r   r5   r   r5   )r   rv   r?   einsumr   	laggrid2dr~   r   r   r   ru   r   s
             r   test_laggrid2dzTestEvaluation.test_laggrid2d   s    VV
BVV
B ii	2r*mmBDHH-C% GGFOmmAq$((+		X%&r   c                 n   | j                   \  }}}| j                  \  }}}t        j                  d|||      }t	        j
                  |||| j                        }t        ||       t        j                  d      }	t	        j
                  |	|	|	| j                        }t        |j                  dk(         y )Nrn   r{   )r   r5   r   r5   r   r5   )r   rv   r?   r   r   	laggrid3dr   r   r   r   ru   r   s
             r   test_laggrid3dzTestEvaluation.test_laggrid3d   s    VV
BVV
B iib"b1mmBB1C% GGFOmmAq!TXX.		X%&r   N)r.   r/   r0   r?   rf   c1dr   r~   r   randomr   r   rv   rx   r   r   r   r   r1   r   r   rl   rl   m   s    
"((>
"C
"))IsC
(C
"))L#sC
0C 			 "Q&A< A?*%"%"''r   rl   c                       e Zd Zd Zd Zy)TestIntegralc                 2
   t        t        t        j                  dgd       t        t        t        j                  dgd       t        t        t        j                  dgdddg       t        t        t        j                  dgdg       t        t        t        j                  dgdg       t        t        t        j                  dgd       t        dd	      D ]6  }dg|dz
  z  dgz   }t        j                  dg||
      }t        |ddg       8 t        d	      D ]  }|dz   }dg|z  dgz   }|gdg|z  z   d|z  gz   }t        j                  |      }t        j                  |d|g
      }t        j                  |      }t        t        |      t        |              t        d	      D ]`  }|dz   }dg|z  dgz   }t        j                  |      }t        j                  |d|gd      }t        t        j                  d|      |       b t        d	      D ]  }|dz   }dg|z  dgz   }|gdg|z  z   d|z  gz   }t        j                  |      }t        j                  |d|gd      }t        j                  |      }t        t        |      t        |              t        d	      D ]~  }t        dd	      D ]m  }	dg|z  dgz   }|d d  }t        |	      D ]  }t        j                  |d      } t        j                  ||	      }t        t        |      t        |             o  t        d	      D ]  }t        dd	      D ]  }	dg|z  dgz   }|d d  }t        |	      D ]  }t        j                  |d|g
      } t        j                  ||	t        t        |	            
      }t        t        |      t        |               t        d	      D ]  }t        dd	      D ]  }	dg|z  dgz   }|d d  }t        |	      D ]  }t        j                  |d|gd      } t        j                  ||	t        t        |	            d      }t        t        |      t        |               t        d	      D ]  }t        dd	      D ]  }	dg|z  dgz   }|d d  }t        |	      D ]  }t        j                  |d|gd      } t        j                  ||	t        t        |	            d      }t        t        |      t        |               y )Nr         ?r
   r	   )lbnd)sclaxisr   r9   )mk)r   r   r   )r   r   r   r   )r   	TypeErrorr   lagintr|   r>   r   poly2laglag2polyr   rS   list)
r"   rD   r   rH   r   polrG   lagpolr   rE   s
             r   test_lagintzTestIntegral.test_lagint   s   iaS"5j#**qc26j#**qc1q!f=j#**qc<j#**qcs;iaSr: q! 	.AQUqc!A**aSA+CaW-	. q 	6Aa%C#a%1#+C#A+3'C\\#&FZZ!s3F,,v&CS	495	6 q 	;Aa%C#a%1#+C\\#&FZZ!s<F

2v 6:	; q 	6Aa%C#a%1#+C#A+3'C\\#&FZZ!s:F,,v&CS	495	6 q 	:A1a[ :c!eqck!fq /A**SA.C/jj*#DItCy9:	: q 	:A1a[ :c!eqck!fq 6A**SA!5C6jjT%(^<#DItCy9:	: q 	:A1a[ :c!eqck!fq ?A**SA!2>C?jjT%(^"E#DItCy9:	: q 	:A1a[ :c!eqck!fq =A**SA!!<C=jjT%(^C#DItCy9:	:r   c           	         t         j                  j                  d      }t        j                  |j                  D cg c]  }t	        j
                  |       c}      j                  }t	        j
                  |d      }t        ||       t        j                  |D cg c]  }t	        j
                  |       c}      }t	        j
                  |d      }t        ||       t        j                  |D cg c]  }t	        j
                  |d       c}      }t	        j
                  |dd      }t        ||       y c c}w c c}w c c}w )Nr5      r   r   r	   r5   )r   )r   r   )r?   r   vstackTr   r   r   r"   r~   rh   rG   rH   s        r   test_lagint_axiszTestIntegral.test_lagint_axis   s    iiv&ii61A6799jj1%C%ii41A45jj1%C%iiS9A+9:jj*C% 7 5 :s   E E9EN)r.   r/   r0   r   r   r1   r   r   r   r      s    Q:f&r   r   c                       e Zd Zd Zd Zy)TestDerivativec           	         t        t        t        j                  dgd       t        t        t        j                  dgd       t        d      D ]A  }dg|z  dgz   }t        j                  |d      }t        t        |      t        |             C t        d      D ]g  }t        dd      D ]V  }dg|z  dgz   }t        j                  t        j                  ||      |      }t        t        |      t        |             X i t        d      D ]i  }t        dd      D ]X  }dg|z  dgz   }t        j                  t        j                  ||d      |d      }t        t        |      t        |             Z k y )	Nr   r   r
   r9   r	   r   r   )r   r   )
r   r   r   lagderr|   r>   r   r   r   r   )r"   rD   rG   rH   rE   s        r   test_lagderzTestDerivative.test_lagder3  sF   iaS"5j#**qc26 q 	/A#a%1#+C**SA&CcDI.	/ q 	:A1a[ :c!eqckjjC1!5;#DItCy9:	: q 	:A1a[ :c!eqckjjC1!!<rJ#DItCy9:	:r   c                    t         j                  j                  d      }t        j                  |j                  D cg c]  }t	        j
                  |       c}      j                  }t	        j
                  |d      }t        ||       t        j                  |D cg c]  }t	        j
                  |       c}      }t	        j
                  |d      }t        ||       y c c}w c c}w )Nr   r   r   r	   )r?   r   r   r   r   r   r   r   s        r   test_lagder_axiszTestDerivative.test_lagder_axisL  s    iiv&ii61A6799jj1%C%ii41A45jj1%C% 7 5s   C' C,N)r.   r/   r0   r   r   r1   r   r   r   r   1  s    :2
&r   r   c                   `    e Zd Zej                  j	                  d      dz  dz
  Zd Zd Zd Zy)
TestVanderro   r   r	   c                    t        j                  d      }t        j                  |d      }t	        |j
                  dk(         t        d      D ]1  }dg|z  dgz   }t        |d|f   t        j                  ||             3 t        j                  ddgddgdd	gg      }t        j                  |d      }t	        |j
                  d
k(         t        d      D ]1  }dg|z  dgz   }t        |d|f   t        j                  ||             3 y )Nr5   r   r   r   r	   .r   r9   r   )r5   r   r   )
r?   re   r   	lagvanderr   ru   r>   r   rS   rf   )r"   r   vrD   coefs        r   test_lagvanderzTestVander.test_lagvander]  s    IIaLMM!Q6!"q 	@A3q5A3;D#q&	3::a+>?	@
 HHq!fq!fq!f-.MM!Q9$%q 	@A3q5A3;D#q&	3::a+>?	@r   c                    | j                   \  }}}t        j                  j                  d      }t        j                  ||ddg      }t        j
                  |||      }t        j                  ||j                        }t        ||       t        j                  |g|gddg      }t        |j                  dk(         y )Nr{   r	   r   )r	   r9   r   )r   r?   r   r   lagvander2dr}   dotflatr   r   ru   r"   r   r   r   rh   vanrG   rH   s           r   test_lagvander2dzTestVander.test_lagvander2dn  s    VV
BIIV$oob"q!f-ll2r1%ffS!&&!C% oordRD1a&1		Y&'r   c                    | j                   \  }}}t        j                  j                  d      }t        j                  |||g d      }t        j
                  ||||      }t        j                  ||j                        }t        ||       t        j                  |g|g|gg d      }t        |j                  dk(         y )N)r   r5   r   )r	   r   r5   )r	   r9   r   )r   r?   r   r   lagvander3dr   r   r   r   r   ru   r   s           r   test_lagvander3dzTestVander.test_lagvander3d{  s    VV
BIIY'oob"b)4ll2r2q)ffS!&&!C% oordRD2$	:		Z'(r   N)	r.   r/   r0   r?   r   r   r   r   r   r1   r   r   r   r   Y  s0    
		 "Q&A@"()r   r   c                       e Zd Zd Zy)TestFittingc           	      
   d }t        t        t        j                  dgdgd       t        t        t        j                  dggdgd       t        t        t        j                  g dgd       t        t        t        j                  dgdgggd       t        t        t        j                  ddgdgd       t        t        t        j                  dgddgd       t        t        t        j                  dgdgddgg       t        t        t        j                  dgdgdddg       t        t        t        j                  dgdgdg       t        t        t        j                  dgdgg d       t        t        t        j                  dgdgg        t        j                  dd      } ||      }t        j                  ||d      }t        t        |      d	       t        t        j                  ||      |       t        j                  ||g d
      }t        t        |      d	       t        t        j                  ||      |       t        j                  ||d	      }t        t        |      d       t        t        j                  ||      |       t        j                  ||g d      }t        t        |      d       t        t        j                  ||      |       t        j                  |t        j                  ||g      j                  d      }t        |t        j                  ||g      j                         t        j                  |t        j                  ||g      j                  g d
      }t        |t        j                  ||g      j                         t        j                  |      }|j                         }d|dd d<   d|dd d<   t        j                  ||d|      }	t        |	|       t        j                  ||g d
|      }	t        |	|       t        j                  |t        j                  ||g      j                  d|      }
t        |
t        j                  ||g      j                         t        j                  |t        j                  ||g      j                  g d
|      }
t        |
t        j                  ||g      j                         g d}t        t        j                  ||d      ddg       t        t        j                  ||ddg      ddg       y )Nc                     | | dz
  z  | dz
  z  S )Nr	   r   r1   r   s    r   fz"TestFitting.test_lagfit.<locals>.f  s    a!e9a!e$$r   r	   r
   r   r   )w)r   r
   r   r5   r   )r   r	   r   r5   r9   )r   r	   r   r5   r   )r	   y              ?r
   y             )r   r|   r   lagfitr   r?   rj   r   rU   r   rS   rf   r   
zeros_likecopy)r"   r   r   rv   coef3coef4coef2dr   ywwcoef3wcoef2ds              r   test_lagfitzTestFitting.test_lagfit  s   	% 	j#**qcA3;iqcUQC;iR!a8iaSQC5'1=iaVaS!<iaS1a&!<iaS1#qaSEBiaS1#qQFCj#**qcA3>j#**qcA3
CiaS1#r: KK1aD

1a#SZ#CJJq%0!4

1a.SZ#CJJq%0!4

1a#SZ#CJJq%0!4

1a1SZ#CJJq%0!4ArxxA/1115FBHHeU^$<$>$>?ArxxA/11<@FBHHeU^$<$>$>?MM!VVX!$Q$!$Q$Ar1*FE*Ar<15FE***Q"b 2 4 4a1=GRXXuen%=%?%?@**Q"b 2 4 4laHGRXXuen%=%?%?@ CJJq!Q/!R9CJJq!aV4q"g>r   N)r.   r/   r0   r   r1   r   r   r   r     s    9?r   r   c                       e Zd Zd Zd Zd Zy)TestCompanionc                     t        t        t        j                  g        t        t        t        j                  dg       y r(   )r   r|   r   lagcompanionr!   s    r   test_raiseszTestCompanion.test_raises  s(    j#"2"2B7j#"2"2QC8r   c                     t        dd      D ]9  }dg|z  dgz   }t        t        j                  |      j                  ||fk(         ; y )Nr	   r9   r   )r>   r   r   r   ru   )r"   rD   r   s      r   test_dimensionszTestCompanion.test_dimensions  sJ    q! 	<A3q5A3;DC$$T*00QF:;	<r   c                 P    t        t        j                  ddg      d   dk(         y )Nr	   r   )r   r   g      ?)r   r   r   r!   s    r   test_linear_rootzTestCompanion.test_linear_root  s#      !Q(.#56r   N)r.   r/   r0   r   r   r   r1   r   r   r   r     s    9<
7r   r   c                       e Zd Zd Zy)	TestGaussc                    t        j                  d      \  }}t        j                  |d      }t        j                  |j
                  |z  |      }dt        j                  |j                               z  }|d d d f   |z  |z  }t        |t        j                  d             d}t        |j                         |       y )Nr6   c   r	   rp   )r   laggaussr   r?   r   r   sqrtdiagonalr   eyesum)r"   r   r   r   vvvdrG   s          r   test_100zTestGauss.test_100  s    ||C 1
 MM!R VVACC!GQrwwr{{}%%4[2"Bs, AEEGS)r   N)r.   r/   r0   r   r1   r   r   r   r     s    *r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestMiscc           	         t        j                  g       }t        t        |      dg       t	        dd      D ]  }t        j                  t        j                  t
        j                   dd|z  dz         dd d         }t        j                  |      }t        j                  ||      }d}t        t        |      |dz   k(         t        t        j                  |      d   d       t        ||        y )Nr	   r9   r   r   r
   )r   lagfromrootsr   r   r>   r?   cosrj   pirS   r   rU   r   )r"   rH   rD   rootsr   rG   s         r   test_lagfromrootszTestMisc.test_lagfromroots  s    r"DIs+q! 	*AFF2;;vq!A#':14a4@AE""5)C**UC(CCCHA%&S 1" 5q9S)	*r   c                 d   t        t        j                  dg      g        t        t        j                  ddg      dg       t        dd      D ]_  }t	        j
                  dd|      }t        j                  t        j                  |            }t        t        |      t        |             a y )Nr	   r   r   r9   r5   )r   r   lagrootsr>   r?   rj   r   r   )r"   rD   rG   rH   s       r   test_lagrootszTestMisc.test_lagroots  s    CLL!-r2CLL!Q01#6q! 	6A++aA&C,,s//45CS	495	6r   c                    g d}t        t        t        j                  |d       t	        t        j                  |      |d d        t	        t        j                  |d      |d d        t	        t        j                  |d      dg       y )N)r   r
   r	   r   r
   r	   r4   r   r   )r   r|   r   r   r   )r"   r   s     r   test_lagtrimzTestMisc.test_lagtrim  sh     	j#++tR8 	S[[&Sb	2S[[q)495S[[q)A3/r   c                 H    t        t        j                  dd      ddg       y )Nr5   r   rr   r   )r   r   lagliner!   s    r   test_laglinezTestMisc.test_lagline
  s    S[[A&B0r   c                     t        d      D ]0  }t        t        j                  dg|z  dgz         t        |          2 y Nrr   r   r	   )r>   r   r   r   rt   r"   rD   s     r   test_lag2polyzTestMisc.test_lag2poly  s:    q 	EAaSUaS[ 958D	Er   c                     t        d      D ]0  }t        t        j                  t        |         dg|z  dgz          2 y r   )r>   r   r   r   rt   r   s     r   test_poly2lagzTestMisc.test_poly2lag  s:    q 	EAU1X 6AD	Er   c                     t        j                  ddd      }t        j                  |       }t        j                  |      }t        ||       y )Nr   
      )r?   rj   expr   	lagweightr   )r"   r   rG   rH   s       r   test_weightzTestMisc.test_weight  s;    KK2r"ffaRjmmAC%r   N)
r.   r/   r0   r   r   r   r   r   r  r  r1   r   r   r   r     s'    
*6	01EE&r   r   )$__doc__	functoolsr   numpyr?   numpy.polynomial.laguerre
polynomiallaguerrer   numpy.polynomial.polynomialr   numpy.testingr   r   r   r   rf   L0L1L2L3L4L5L6rt   r   r   r3   rl   r   r   r   r   r   r   r   r1   r   r   <module>r     sJ     ' ' /  RXXqc]1_RXXq"gqRXXj!RXXoq RXX#$R'RXX,-c1RXX45c9	RRR$$( (?@ ?@D[' ['|c& c&L%& %&P-) -)`;? ;?|7 7* *&0& 0&r   