o
    PŀgU                  
   @   sp  d Z ddlmZ ddlmZ ddlZddlm  mZ	 ddl
m  mZ ddlZddlmZ ddlmZmZmZmZmZmZmZ dd Zd	gZdd	gZg d
Zg dZg dZg dZg dZg dZ g dZ!g dZ"eeeeeeee e!e"g
Z#G dd dZ$G dd dZ%G dd dZ&G dd dZ'G dd dZ(G dd dZ)G dd dZ*G d d! d!Z+G d"d# d#Z,dS )$zTests for polynomial module.

    )reduce)FractionN)deepcopy)assert_almost_equalassert_raisesassert_equalassert_assert_array_equalassert_raises_regexassert_warnsc                 C   s   t j| ddS )Ngư>)tol)polypolytrimx r   Z/var/www/html/myenv/lib/python3.10/site-packages/numpy/polynomial/tests/test_polynomial.pytrim   s   r      )r      )r   r      )r   r   ir      )r      r   ir      )r   r      r   ir       )r   ir   8   r   ir   @   )	r   r   ir      r   i r      )
r   	   r   ir   i  r   ir      c                   @   <   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestConstantsc                 C      t tjddg d S )Nr   r   )r   r   
polydomainselfr   r   r   test_polydomain#      zTestConstants.test_polydomainc                 C      t tjdg d S )Nr   )r   r   polyzeror(   r   r   r   test_polyzero&      zTestConstants.test_polyzeroc                 C   r,   Nr   )r   r   polyoner(   r   r   r   test_polyone)   r/   zTestConstants.test_polyonec                 C   r&   )Nr   r   )r   r   polyxr(   r   r   r   
test_polyx,   r+   zTestConstants.test_polyxc                 C   s$   t g d}t|}t|| d S Nr   r      )r   
Polynomialr   r   r)   r   yr   r   r   	test_copy/   s   zTestConstants.test_copyc                 C   s,   t g d}tt|}t|| d S r5   )r   r8   pickleloadsdumpsr   r9   r   r   r   test_pickle4   s   zTestConstants.test_pickleN)	__name__
__module____qualname__r*   r.   r2   r4   r;   r?   r   r   r   r   r%   !   s    r%   c                   @   r$   )TestArithmeticc                 C   s   t dD ]H}t dD ]A}d| d| }tt||d }||  d7  < ||  d7  < tdg| dg dg| dg }tt|t||d q
qd S Nr   At i=, j=r   r   err_msg)rangenpzerosmaxr   polyaddr   r   r)   ijmsgtgtresr   r   r   test_polyadd;      $zTestArithmetic.test_polyaddc                 C   s   t dD ]H}t dD ]A}d| d| }tt||d }||  d7  < ||  d8  < tdg| dg dg| dg }tt|t||d q
qd S rD   )rI   rJ   rK   rL   r   polysubr   r   rN   r   r   r   test_polysubE   rU   zTestArithmetic.test_polysubc                 C   sr   t tdgdg t tdgddg tddD ]}dg| dg }dg|d  dg }t t|| qd S )Nr   r   r   )r   r   polymulxrI   )r)   rO   serrR   r   r   r   test_polymulxO   s   zTestArithmetic.test_polymulxc                 C   s   t dD ]A}t dD ]:}d| d| }t|| d }|||   d7  < tdg| dg dg| dg }tt|t||d q
qd S rD   )rI   rJ   rK   r   polymulr   r   rN   r   r   r   test_polymulW   s   $zTestArithmetic.test_polymulc           
      C   s   t ttjdgdg tdgdg\}}t||fd tddgdg\}}t||fd tdD ]B}tdD ];}d| d| }dg| ddg }dg| ddg }t||}t||\}}tt|||}	t|	||d	 q7q1d S )
Nr   r   r   )r   r   ))r   r   r   r   rE   rF   rG   )r   ZeroDivisionErrorr   polydivr   rI   rM   r[   )
r)   quoremrO   rP   rQ   cicjrR   rS   r   r   r   test_polydiv`   s    zTestArithmetic.test_polydivc                 C   s|   t dD ]7}t dD ]0}d| d| }t|d }ttj|g| tdg}t||}tt	|t	||d q
qd S )Nr   rE   rF   r   rG   )
rI   rJ   aranger   r   r[   arraypolypowr   r   )r)   rO   rP   rQ   crR   rS   r   r   r   test_polypowu   s   zTestArithmetic.test_polypowN)	r@   rA   rB   rT   rW   rZ   r\   rc   rh   r   r   r   r   rC   9   s    

	rC   c                   @   s   e Zd Zdd ZdS )TestFractionc                 C   s   t dd}t dd}t dd}tj||g||g||gd}d| |d  }t|jtjt ddt ddt d	dgtd
 t|j||g t|jj	tj
  tt||t  t||t dd tjt ddg||g||gd}t| | d S )Nr   r7   r   r   domainwindowr   r"      r   dtype
   )r   r   r8   r   coefrJ   re   objectrk   ro   dtypesObjectDTyper   
isinstancederiv)r)   fonezeropr   p_derivr   r   r   test_Fraction   s$   


zTestFraction.test_FractionN)r@   rA   rB   r|   r   r   r   r   ri   ~   s    ri   c                   @   s   e Zd Zeg dZedeeZedeeeZej		dd d Z
ee
g dZdd Zd	d
 Zdd Zdd Zdd Zdd ZdS )TestEvaluation)      ?       @g      @i,j->ij
i,j,k->ijkr7   r   r   r   c           
         s~  t tg dgjd tdd  fddtdD }tdD ]}|| }t dg| dg }t|| q   d d  }t g d}t|| td	D ]/}dg| }t| t t dgj	| t t ddgj	| t t g d
j	| qQg d}tj
jg d|d}tg d|}t|j| G dd dtj}tg d|}	t ttg d|	| d S )Nr   r   r   c                       g | ]} | qS r   r   .0rO   r   r   r   
<listcomp>       z/TestEvaluation.test_polyval.<locals>.<listcomp>r   r   )r   r   r   r   r7   r   r   r   )FTFr6   )mask)   r   r7   c                   @   s   e Zd ZdS )z&TestEvaluation.test_polyval.<locals>.CN)r@   rA   rB   r   r   r   r   C   s    r   r   r7   r   )r   r   polyvalsizerJ   linspacerI   r   rK   shapemare   r	   r   ndarrayviewtype)
r)   r:   rO   rR   rS   dimsr   mxr   cxr   r   r   test_polyval   s.   


zTestEvaluation.test_polyvalc                    s  t ttjdgdgdd ttg dgjd ttg dgjdk ttg dgd gjd ttg dgd gjdk ttddd ttdt	djd	k t
d
d  fddtdD }tddD ]}|| }t dg| }t|| qm  d   d  }t g d}t|| tdD ]/}dg| }t| tt dgj| tt ddgj| tt g dj| qg d}t|}t
d
d tt |t | d}tdd tjjdd|d}tj |dd}t|jdd  }t|jD ]}	t |	 |d d |	f ||	< qt|| t d  g tj |dd}t|jdd   j }t|jd D ]#}	t jd D ]}
t |
 |d d |	f ||	|
d d f< qXqOt|| d S )Nr   F)tensorr   )r   r   )r   r   )r7   r7   )r7   r   c                    r   r   r   r   r   r   r   r      r   z8TestEvaluation.test_polyvalfromroots.<locals>.<listcomp>)r   r   r   r7   r   r   )   r   ir   r   r   )r   T)r   
ValueErrorr   polyvalfromrootsr   r   r   r   rJ   onesr   rI   r   rK   	polyrootsr   rd   randomrandintemptyvstack)r)   r:   rO   rR   rS   r   ptestrrshapeiijjr   r   r   test_polyvalfromroots   s\   





$
.z$TestEvaluation.test_polyvalfromrootsc           
      C   s   | j \}}}| j\}}}ttdtj||d d | j || }t||| j}t|| t	d}	t|	|	| j}t
|jdk d S Nincompatibler   r   r7   )r   r:   r
   r   r   	polyval2dc2dr   rJ   r   r   r   
r)   x1x2x3y1y2y3rR   rS   zr   r   r   test_polyval2d   s   

zTestEvaluation.test_polyval2dc           
   	   C   s   | j \}}}| j\}}}ttdtj|||d d | j || | }t|||| j}t|| t	d}	t|	|	|	| j}t
|jdk d S r   )r   r:   r
   r   r   	polyval3dc3dr   rJ   r   r   r   r   r   r   r   test_polyval3d  s   

zTestEvaluation.test_polyval3dc           
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )Nr   r   )r   r7   r   r7   )r   r:   rJ   einsumr   
polygrid2dr   r   r   r   r   r   r   r   r   test_polygrid2d$  s   

zTestEvaluation.test_polygrid2dc           
      C   sr   | j \}}}| j\}}}td|||}t|||| j}t|| td}	t|	|	|	| j}t	|j
dk d S )Nr   r   )r   r7   r   r7   r   r7   )r   r:   rJ   r   r   
polygrid3dr   r   r   r   r   r   r   r   r   test_polygrid3d2  s   

zTestEvaluation.test_polygrid3dN)r@   rA   rB   rJ   re   c1dr   r   r   r   r   r   r   r:   r   r   r   r   r   r   r   r   r   r   r}      s    $@r}   c                   @      e Zd Zdd Zdd ZdS )TestIntegralc              	   C   s  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d t ttjdgdgd t ttjdgdd t ttjddgd td	d
D ]}dg|d	  dg }tjdg||d}t|ddg qMtd
D ]-}|d }dg| dg }|gdg|  d| g }tj|d|gd}tt|t| qntd
D ]!}|d }dg| dg }tj|d|gdd}ttd|| qtd
D ].}|d }dg| dg }|gdg|  d	| g }tj|d|gd	d}tt|t| qtd
D ]8}td	d
D ]0}dg| dg }|d d  }t|D ]
}tj|dd}qtj||d}tt|t| q qtd
D ]@}td	d
D ]7}dg| dg }|d d  }t|D ]}tj|d|gd}qQtj||t	t|d}tt|t| q=q6td
D ]B}td	d
D ]9}dg| dg }|d d  }t|D ]}tj|d|gdd}qtj||t	t|dd}tt|t| qq{td
D ]B}td	d
D ]9}dg| dg }|d d  }t|D ]}tj|d|gd	d}qtj||t	t|d	d}tt|t| qɐqd S )Nr         ?r   r   )lbnd)sclaxisr~   r   r   )mk)r   r   r   )r   r   r   r   )
r   	TypeErrorr   polyintr   rI   r   r   r   list)r)   rO   r   rS   r   polrR   rP   r   r   r   test_polyintC  s   			zTestIntegral.test_polyintc                 C   s   t jd}t dd |jD j}tj|dd}t|| t dd |D }tj|dd}t|| t dd |D }tj|d	dd
}t|| d S )Nr7   r   c                 S      g | ]}t |qS r   r   r   r   rg   r   r   r   r         z2TestIntegral.test_polyint_axis.<locals>.<listcomp>r   r   c                 S   r   r   r   r   r   r   r   r     r   r   c                 S   s   g | ]	}t j|d dqS )r7   )r   r   r   r   r   r   r     s    r7   )r   r   )rJ   r   r   Tr   r   r   r)   r   rR   rS   r   r   r   test_polyint_axis  s   

zTestIntegral.test_polyint_axisN)r@   rA   rB   r   r   r   r   r   r   r   A  s    Or   c                   @   r   )TestDerivativec                 C   s  t ttjdgd t ttjdgd tdD ]}dg| dg }tj|dd}tt|t| qtdD ]'}tddD ]}dg| dg }tjtj||d|d}t	t|t| q<q5tdD ])}tddD ]!}dg| dg }tjtj||dd|dd}t	t|t| qhqad S )	Nr   r   r   r   r   r   r   )r   r   )
r   r   r   polyderr   rI   r   r   r   r   )r)   rO   rR   rS   rP   r   r   r   test_polyder  s&   zTestDerivative.test_polyderc                 C   sl   t jd}t dd |jD j}tj|dd}t|| t dd |D }tj|dd}t|| d S )Nr   c                 S   r   r   r   r   r   r   r   r   r     r   z4TestDerivative.test_polyder_axis.<locals>.<listcomp>r   r   c                 S   r   r   r   r   r   r   r   r     r   r   )rJ   r   r   r   r   r   r   r   r   r   r   test_polyder_axis  s   
z TestDerivative.test_polyder_axisN)r@   rA   rB   r   r   r   r   r   r   r     s    r   c                   @   s@   e Zd Zejdd d Zdd Zdd Zdd	 Zd
d Z	dS )
TestVanderr   r   r   c                 C   s   t d}t|d}t|jdk tdD ]}dg| dg }t|d|f t|| qt 	ddgddgdd	gg}t|d}t|jd
k tdD ]}dg| dg }t|d|f t|| qMd S )Nr7   r   r   r   r   .r   r      )r7   r   r   )
rJ   rd   r   
polyvanderr   r   rI   r   r   re   )r)   r   vrO   rq   r   r   r   test_polyvander  s   
zTestVander.test_polyvanderc                 C   sx   | j \}}}tjd}t||ddg}t|||}t||j}t|| t|g|gddg}t	|j
dk d S )Nr   r   r   )r   r   r   )r   rJ   r   r   polyvander2dr   dotflatr   r   r   r)   r   r   r   rg   vanrR   rS   r   r   r   test_polyvander2d  s   
zTestVander.test_polyvander2dc                 C   s   | j \}}}tjd}t|||g d}t||||}t||j}t|| t|g|g|gg d}t	|j
dk d S )Nr   r6   )r   r      )r   rJ   r   r   polyvander3dr   r   r   r   r   r   r   r   r   r   test_polyvander3d  s   
zTestVander.test_polyvander3dc                 C   s   t d}tttj|d d S )Nr7   r   )rJ   rd   r   r   r   r   )r)   r   r   r   r   test_polyvandernegdeg  s   
z TestVander.test_polyvandernegdegN)
r@   rA   rB   rJ   r   r   r   r   r   r   r   r   r   r   r     s    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestCompanionc                 C   s"   t ttjg  t ttjdg d S r0   )r   r   r   polycompanionr(   r   r   r   test_raises  s   zTestCompanion.test_raisesc                 C   s<   t ddD ]}dg| dg }tt|j||fk qd S )Nr   r   r   )rI   r   r   r   r   )r)   rO   rq   r   r   r   test_dimensions  s   zTestCompanion.test_dimensionsc                 C   s   t tddgd dk d S )Nr   r   )r   r         )r   r   r   r(   r   r   r   test_linear_root
  s   zTestCompanion.test_linear_rootN)r@   rA   rB   r   r   r   r   r   r   r   r     s    r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestMiscc              	   C   s   t g }tt|dg tddD ]/}tttj dd| d dd d }t	| }t |d|d   }tt|t| qd S )Nr   r   r   r   )
r   polyfromrootsr   r   rI   rJ   cosr   piTlist)r)   rS   rO   rootsrR   r   r   r   test_polyfromroots  s   
*zTestMisc.test_polyfromrootsc                 C   sl   t tdgg  t tddgdg tddD ]}tdd|}tt|}t t|t| qd S )Nr   r   r   r   r   )r   r   r   rI   rJ   r   r   r   )r)   rO   rR   rS   r   r   r   test_polyroots  s   zTestMisc.test_polyrootsc                 C   s  dd }d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d	 t ttjdgdgdddgd	 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dd}||}t||d}tt|d t	t
||| t||g d}tt|d t	t
||| t||d}tt|d t	t
||| t||g d}tt|d t	t
||| t|t||gjd}t	|t||gj t|t||gjg d}t	|t||gj t|}| }	d|dd d< d|	dd d< tj||	d|d	}
t	|
| tj||	g d|d	}
t	|
| tj|t|	|	gjd|d	}t	|t||gj tj|t|	|	gjg d|d	}t	|t||gj g d}t	t||dddg t	t||ddgddg tdd}||}t||d}t	t
||| t||g d}t	t
||| t	|| d S )Nc                 S   s   | | d  | d  S )Nr   r   r   r   r   r   r   rw   "  r+   z TestMisc.test_polyfit.<locals>.fc                 S   s   | d | d  d S )Nr   r   r   r   r   r   r   r   f2%  r+   z!TestMisc.test_polyfit.<locals>.f2r   r   r   r   )w)r   r   r   r7   r   )r   r   r   r7   r   )r   r   r   r7   r   )r   y              ?r   y             )r   r   r   )r   r   r   polyfitr   rJ   r   r   lenr   r   re   r   
zeros_likecopy)r)   rw   r   r   r:   coef3coef4coef2dr   ywwcoef3wcoef2dcoef1coef2r   r   r   test_polyfit!  sj   


"zTestMisc.test_polyfitc                 C   sb   g d}t ttj|d tt||d d  tt|d|d d  tt|ddg d S )N)r   r   r   r   r   r   r   r   r   )r   r   r   r   r   )r)   rq   r   r   r   test_polytrimg  s
   zTestMisc.test_polytrimc                 C   s   t tddddg d S )Nr7   r   r   r   polyliner(   r   r   r   test_polyliner  s   zTestMisc.test_polylinec                 C   s   t tdddg d S )Nr7   r   r  r(   r   r   r   test_polyline_zerou  s   zTestMisc.test_polyline_zeroc                 C   s   t jjdgdgdd}t|jdg t jjddgddgdd}t|jdg ttj t jjddgddgdd}W d    d S 1 sDw   Y  d S )Nr   r   r   )degr   g @gffffff @)	r   r8   fitr   rq   r   r   puRankWarning)r)   rz   r   r   r   test_fit_degenerate_domainx  s   "z#TestMisc.test_fit_degenerate_domainc                 C   sd   t jddgt jd}t jj|||d}|d}t|jt j t dt d}t|d jt j d S )Nr   r   rn   rj   r   r   )	rJ   re   float32
polynomialr8   r   ro   r^   float64)r)   r   rz   r   arrr   r   r   test_result_type  s   zTestMisc.test_result_typeN)r@   rA   rB   r   r   r	  r
  r  r  r  r  r   r   r   r   r     s    	Fr   )-__doc__	functoolsr   	fractionsr   numpyrJ   numpy.polynomial.polynomialr  r   numpy.polynomial.polyutils	polyutilsr  r<   r   r   numpy.testingr   r   r   r   r	   r
   r   r   T0T1T2T3T4T5T6T7T8T9r   r%   rC   ri   r}   r   r   r   r   r   r   r   r   r   <module>   s>    $E 0b(4