a
    LfaS                  
   @   sZ  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
Z
ddlmZ ddl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_regexc                 C   s   t j| ddS )Ngư>)Ztol)polypolytrimx r   _/var/www/ai-form-bot/venv/lib/python3.9/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                   @   s<   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   s   t tjddg d S )Nr   r   )r   r   Z
polydomainselfr   r   r   test_polydomain"   s    zTestConstants.test_polydomainc                 C   s   t tjdg d S )Nr   )r   r   Zpolyzeror#   r   r   r   test_polyzero%   s    zTestConstants.test_polyzeroc                 C   s   t tjdg d S Nr   )r   r   Zpolyoner#   r   r   r   test_polyone(   s    zTestConstants.test_polyonec                 C   s   t tjddg d S )Nr   r   )r   r   Zpolyxr#   r   r   r   
test_polyx+   s    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 r*   )r   r-   pickleloadsdumpsr   r.   r   r   r   test_pickle3   s    zTestConstants.test_pickleN)	__name__
__module____qualname__r%   r&   r(   r)   r0   r4   r   r   r   r   r"       s   r"   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestArithmeticc                 C   s   t dD ]}t dD ]}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:   s    $zTestArithmetic.test_polyaddc                 C   s   t dD ]}t dD ]}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 r9   )r>   r?   r@   rA   r   Zpolysubr   r   rC   r   r   r   test_polysubD   s    $zTestArithmetic.test_polysubc                 C   sr   t tdgdg t tdgddg tddD ]8}dg| dg }dg|d  dg }t t|| q4d S )Nr   r   r   )r   r   Zpolymulxr>   )r$   rD   ZserrG   r   r   r   test_polymulxN   s    zTestArithmetic.test_polymulxc                 C   s   t dD ]}t dD ]t}d| d| }t|| d }|||   d7  < tdg| dg dg| dg }tt|t||d qqd S r9   )r>   r?   r@   r   polymulr   r   rC   r   r   r   test_polymulV   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 ]}tdD ]v}d| d| }dg| ddg }dg| ddg }t||}t||\}}tt|||}	t|	||d	 qnqbd S )
Nr   r   r   )r   r   ))r   r   r   r   r:   r;   r<   )r   ZeroDivisionErrorr   Zpolydivr   r>   rB   rL   )
r$   ZquoremrD   rE   rF   cicjrG   rH   r   r   r   test_polydiv_   s    zTestArithmetic.test_polydivc                 C   s|   t dD ]n}t dD ]`}d| d| }t|d }ttj|g| tdg}t||}tt	|t	||d qqd S )Nr   r:   r;   r   r<   )
r>   r?   aranger   r   rL   arrayZpolypowr   r   )r$   rD   rE   rF   crG   rH   r   r   r   test_polypowt   s    zTestArithmetic.test_polypowN)	r5   r6   r7   rI   rJ   rK   rM   rR   rV   r   r   r   r   r8   8   s   

	r8   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   r,   r   r   )domainZwindowr   r       r   )dtype
   )r   r   r-   r   coefr?   rT   objectrX   rZ   ZdtypesZObjectDTyper   
isinstanceZderiv)r$   fonezeropr   Zp_derivr   r   r   test_Fraction   s$    


zTestFraction.test_FractionN)r5   r6   r7   rc   r   r   r   r   rW   }   s   rW   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       @g      @i,j->ij
i,j,k->ijkr,   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	| qg 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                    s   g | ]} | qS r   r   .0rD   r   r   r   
<listcomp>       z/TestEvaluation.test_polyval.<locals>.<listcomp>r   r   )r   r   r   r   r,   r   r   r   )FTFr+   )mask)   r   r,   c                   @   s   e Zd ZdS )z&TestEvaluation.test_polyval.<locals>.CN)r5   r6   r7   r   r   r   r   C   s   rp   r   r,   r   )r   r   polyvalsizer?   linspacer>   r   r@   shapemarT   r	   rn   Zndarrayviewtype)
r$   r/   rD   rG   rH   dimsrn   Zmxrp   Z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|| 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| q:g 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 ]F}	t jd D ]0}
t |
 |d d |	f ||	|
d d f< qqt|| d S )Nr   F)Ztensorr   )r   r   )r   r   )r,   r,   )r,   r   c                    s   g | ]} | qS r   r   ri   r   r   r   rk      rl   z8TestEvaluation.test_polyvalfromroots.<locals>.<listcomp>)r   r   r   r,   r   rm   )   r   ir   rh   r   )rs   T)r   
ValueErrorr   Zpolyvalfromrootsr   rs   r   ru   r?   onesrt   r>   r   r@   	polyrootsrr   rS   randomrandintemptyvstack)r$   r/   rD   rG   rH   ry   ZptestrZrshapeiiZjjr   r   r   test_polyvalfromroots   sZ    





$
2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 NZincompatibler   r   r,   )r   r/   r
   r~   r   	polyval2dc2dr   r?   r   r   ru   
r$   x1x2x3y1y2Zy3rG   rH   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   r?   r   r   ru   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 )Nrf   r   )r   r,   r   r,   )r   r/   r?   einsumr   Z
polygrid2dr   r   r   r   ru   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 )Nrg   r   )r   r,   r   r,   r   r,   )r   r/   r?   r   r   Z
polygrid3dr   r   r   r   ru   r   r   r   r   test_polygrid3d1  s    

zTestEvaluation.test_polygrid3dN)r5   r6   r7   r?   rT   Zc1dr   r   r   r   r   r   rr   r/   rz   r   r   r   r   r   r   r   r   r   rd      s   $@rd   c                   @   s   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 ]8}dg|d	  dg }tjdg||d}t|ddg qtd
D ]Z}|d }dg| dg }|gdg|  d| g }tj|d|gd}tt|t| qtd
D ]D}|d }dg| dg }tj|d|gdd}ttd|| q@td
D ]^}|d }dg| dg }|gdg|  d	| g }tj|d|gd	d}tt|t| qtd
D ]r}td	d
D ]`}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 ]n}dg| dg }|d d  }t|D ]}tj|d|gd}qtj||t	t|d}tt|t| qqrtd
D ]}td	d
D ]r}dg| dg }|d d  }t|D ]}tj|d|gdd}q2tj||t	t|dd}tt|t| q
qtd
D ]}td	d
D ]r}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axisre   r   r   )mk)r   r   r   )r   r   r   r   )
r   	TypeErrorr   polyintr~   r>   r   r   rr   list)r$   rD   r   rH   r   ZpolrG   rE   r   r   r   test_polyintB  sx    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r,   r   c                 S   s   g | ]}t |qS r   r   r   rj   rU   r   r   r   rk     rl   z2TestIntegral.test_polyint_axis.<locals>.<listcomp>r   r   c                 S   s   g | ]}t |qS r   r   r   r   r   r   rk     rl   r   c                 S   s   g | ]}t j|d dqS )r,   )r   r   r   r   r   r   rk     rl   r,   )r   r   )r?   r   r   Tr   r   r   r$   r   rG   rH   r   r   r   test_polyint_axis  s    

zTestIntegral.test_polyint_axisN)r5   r6   r7   r   r   r   r   r   r   r   @  s   Or   c                   @   s   e Zd Zdd Zdd ZdS )TestDerivativec                 C   s  t ttjdgd t ttjdgd tdD ]4}dg| dg }tj|dd}tt|t| q,tdD ]N}tddD ]>}dg| dg }tjtj||d|d}t	t|t| qxqjtdD ]R}tddD ]B}dg| dg }tjtj||dd|dd}t	t|t| qqd S )	Nr   r   r   r   r   r   r   )r   r   )
r   r   r   polyderr~   r>   r   r   r   r   )r$   rD   rG   rH   rE   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   s   g | ]}t |qS r   r   r   r   r   r   r   rk     rl   z4TestDerivative.test_polyder_axis.<locals>.<listcomp>r   r   c                 S   s   g | ]}t |qS r   r   r   r   r   r   rk     rl   r   )r?   r   r   r   r   r   r   r   r   r   r   test_polyder_axis  s    
z TestDerivative.test_polyder_axisN)r5   r6   r7   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 )
TestVanderrh   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|| qd S )Nr,   r   r   r   r   .r   r      )r,   r   r   )
r?   rS   r   
polyvanderr   ru   r>   r   rr   rT   )r$   r   vrD   r\   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   r?   r   r   Zpolyvander2dr   dotflatr   r   ru   r$   r   r   r   rU   ZvanrG   rH   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 )Nrq   r+   )r   r      )r   r?   r   r   Zpolyvander3dr   r   r   r   r   ru   r   r   r   r   test_polyvander3d  s    
zTestVander.test_polyvander3dc                 C   s   t d}tttj|d d S )Nr,   r   )r?   rS   r   r~   r   r   )r$   r   r   r   r   test_polyvandernegdeg  s    
z TestVander.test_polyvandernegdegN)
r5   r6   r7   r?   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 r'   )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   )r>   r   r   r   ru   )r$   rD   r\   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)r5   r6   r7   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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   r>   r?   cosrt   piTlist)r$   rH   rD   rootsrG   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 ]4}tdd|}tt|}t t|t| q2d S )Nr   r   r   r   r   )r   r   r   r>   r?   rt   r   r   )r$   rD   rG   rH   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   r_   !  s    z TestMisc.test_polyfit.<locals>.fc                 S   s   | d | d  d S )Nr   r   r   r   r   r   r   r   f2$  s    z!TestMisc.test_polyfit.<locals>.f2r   r   r   r   )w)r   r   r   r,   r   )r   r   r   r,   r   )r   r   r   r,   r   )r   y              ?r   y             )r   r   r   )r   r~   r   Zpolyfitr   r?   rt   r   lenr   rr   rT   r   Z
zeros_likecopy)r$   r_   r   r   r/   Zcoef3Zcoef4Zcoef2dr   ZywZwcoef3Zwcoef2dZcoef1Z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$   r\   r   r   r   test_polytrimf  s
    zTestMisc.test_polytrimc                 C   s   t tddddg d S )Nr,   r   r   r   Zpolyliner#   r   r   r   test_polylineq  s    zTestMisc.test_polylinec                 C   s   t tdddg d S )Nr,   r   r   r#   r   r   r   test_polyline_zerot  s    zTestMisc.test_polyline_zeroN)	r5   r6   r7   r   r   r   r   r   r   r   r   r   r   r     s   	Fr   ))__doc__	functoolsr   	fractionsr   numpyr?   Znumpy.polynomial.polynomialZ
polynomialr   r1   r   r   Znumpy.testingr   r   r   r   r	   r
   r   ZT0ZT1ZT2ZT3ZT4ZT5ZT6ZT7ZT8ZT9r   r"   r8   rW   rd   r   r   r   r   r   r   r   r   r   <module>   s:    E 0b(4