B
    FŽ0d›G  ã               @   s¸  d Z ddlZddlmZ ddlZddlZddlm	Z	m
Z
mZmZmZmZ ddlmZmZmZmZ ddlmZ e	e
eeeefZedd„ eD ƒƒZejeed	d
d„ ƒZejjZdKdd„ZeZe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d „ Z'd!d"„ Z(d#d$„ Z)d%d&„ Z*d'd(„ Z+d)d*„ Z,d+d,„ Z-d-d.„ Z.d/d0„ Z/d1d2„ Z0d3d4„ Z1d5d6„ Z2d7d8„ Z3d9d:„ Z4d;d<„ Z5d=d>„ Z6d?d@„ Z7dAdB„ Z8dCdD„ Z9dEdF„ Z:dGdH„ Z;G dIdJ„ dJƒZ<dS )Lz€Test inter-conversion of different polynomial classes.

This tests the convert and cast methods of all the polynomial classes.

é    N)ÚNumber)Ú
PolynomialÚLegendreÚ	ChebyshevÚLaguerreÚHermiteÚHermiteE)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_)ÚRankWarningc             c   s   | ]}|j V  qd S )N)Ú__name__)Ú.0Úcls© r   úU/var/www/html/venv/lib/python3.7/site-packages/numpy/polynomial/tests/test_classes.pyú	<genexpr>   s    r   )ÚparamsZidsc             C   s   | j S )N)Úparam)Úrequestr   r   r   ÚPoly   s    r   Ú c             C   sp   y>t t | j|jk¡ƒ t t | j|jk¡ƒ t| j|jƒ W n, tk
rj   d| › d|› }t|ƒ‚Y nX d S )NzResult: z	
Target: )r   ÚnpÚallÚdomainÚwindowr	   ÚcoefÚAssertionError)Úp1Úp2Úmsgr   r   r   Úassert_poly_almost_equal&   s    r"   c       
      C   sª   t  ddd¡}tdƒ}| jtdƒd  }| jtdƒd  }| |||d}|jtdƒd  }|jtdƒd  }|j|||d}	t|	j|ƒ t|	j|ƒ t|	|ƒ||ƒƒ d S )	Nr   é   é
   )é   )é   g      Ð?)r   r   )Úkindr   r   )r   ÚlinspaceÚrandomr   r   Úconvertr	   )
ÚPoly1ÚPoly2Úxr   Úd1Úw1r   Úd2Úw2r    r   r   r   Útest_conversion8   s    r2   c       
      C   sª   t  ddd¡}tdƒ}| jtdƒd  }| jtdƒd  }| |||d}|jtdƒd  }|jtdƒd  }|j|||d}	t|	j|ƒ t|	j|ƒ t|	|ƒ||ƒƒ d S )Nr   r#   r$   )r%   )r&   g      Ð?)r   r   )r   r(   r)   r   r   Úcastr	   )
r+   r,   r-   r   r.   r/   r   r0   r1   r    r   r   r   Ú	test_castI   s    r4   c             C   sr   | j tdƒd  }| jtdƒd  }t |d |d d¡}| j||d}t|j |ƒ t|j|ƒ t||ƒ|ƒ d S )N)r&   g      Ð?r   r#   é   )r   r   )r   r)   r   r   r(   Úidentityr   r	   )r   ÚdÚwr-   Úpr   r   r   Útest_identity_   s    r:   c             C   sh   | j tdƒd  }| jtdƒd  }| jd||d}t|j |ƒ t|j|ƒ t|jdgd dg ƒ d S )N)r&   g      Ð?é   )r   r   r   r#   )r   r)   r   Úbasisr   r   )r   r7   r8   r9   r   r   r   Ú
test_basisi   s    r=   c             C   s¤   | j tdƒd  }| jtdƒd  }tdƒ}| j|||d}t| ¡ t|ƒƒ t|j |ƒ t|j|ƒ t||ƒdƒ tj }tj}tj	|||d}t|j
d dƒ d S )N)r&   g      Ð?)r;   )r   r   r   éÿÿÿÿr#   )r   r)   r   Ú	fromrootsr   ÚdegreeÚlenr	   r   r3   r   )r   r7   r8   Úrr   ZpdomZpwinr    r   r   r   Útest_fromrootsr   s    rC   c          	   C   sT   dddg}dddg}t  t¡}|  ||d¡ W d Q R X |d jjd dksPt‚d S )Ng        g      ð?g       @g      @r&   r   z!The fit may be poorly conditioned)ÚpytestZwarnsr   ÚfitÚmessageÚargsr   )r   r-   ÚyÚrecordr   r   r   Útest_bad_conditioned_fit…   s
    

rJ   c             C   sö  dd„ }t  dd¡}||ƒ}|  ||d¡}t|jddgƒ t||ƒ|ƒ t| ¡ dƒ | jtdƒd  }| jtdƒd  }| j||d||d}t||ƒ|ƒ t|j|ƒ t|j|ƒ | j||ddd	dg||d}t||ƒ|ƒ t|j|ƒ t|j|ƒ |  ||dg ¡}t|j| jƒ t|j| jƒ |  ||ddd	dgg ¡}t|j| jƒ t|j| jƒ t  	|¡}|t|j
ƒd  }d|d d d	…< |  |d d d	… |d d d	… d¡}| j||d|d
}	| j||ddd	dg|d
}
t||ƒ|	|ƒƒ t|	|ƒ|
|ƒƒ d S )Nc             S   s   | | d  | d  S )Nr#   r&   r   )r-   r   r   r   Úf’   s    ztest_fit.<locals>.fr   r%   )r&   g      Ð?)r   r   r#   r&   )r8   )r   r(   rE   r	   r   r   r@   r)   r   Z
zeros_likeÚshape)r   rK   r-   rH   r9   r7   r8   Úzr   r    Úp3r   r   r   Útest_fit   s>    
"rO   c             C   sª   | dddgddgddgd}| dddgddgddgd}| dddgddgddgd}| dddgddgddgd}t ||kƒ t ||k ƒ t ||k ƒ t ||k ƒ d S )Nr#   r&   r%   r   )r   r   )r   )r   r   r    rN   Úp4r   r   r   Ú
test_equal¼   s    rQ   c             C   s¦   | dddgddgddgd}| dddgddgddgd}| dddgddgddgd}| dddgddgddgd}t ||k ƒ t ||kƒ t ||kƒ t ||kƒ d S )Nr#   r&   r%   r   )r   r   )r   )r   r   r    rN   rP   r   r   r   Útest_not_equalÇ   s    rR   c             C   s*  t tdƒd ƒ}t tdƒd ƒ}| |ƒ}| |ƒ}|| }t|| |ƒ t|| |ƒ t|| |ƒ t|t|ƒ |ƒ tt|ƒ| |ƒ t|t |¡ |ƒ tt |¡| |ƒ tttj	|| dg| j
d dƒ tttj	|| dg| jd dƒ | tkrtttj	|tdgƒƒ ntttj	|tdgƒƒ d S )N)é   g      à?)r%   r   r#   )r   )r   )Úlistr)   r"   Útupler   Úarrayr
   Ú	TypeErrorÚopÚaddr   r   r   r   )r   Úc1Úc2r   r    rN   r   r   r   Útest_addÒ   s"      
r\   c             C   s2  t tdƒd ƒ}t tdƒd ƒ}| |ƒ}| |ƒ}|| }t|| | ƒ t|| |ƒ t|| | ƒ t|t|ƒ |ƒ tt|ƒ| | ƒ t|t |¡ |ƒ tt |¡| | ƒ tttj	|| dg| j
d dƒ tttj	|| dg| jd dƒ | tkrtttj	|tdgƒƒ ntttj	|tdgƒƒ d S )N)rS   g      à?)r%   r   r#   )r   )r   )rT   r)   r"   rU   r   rV   r
   rW   rX   Úsubr   r   r   r   )r   rZ   r[   r   r    rN   r   r   r   Útest_subè   s"      
r^   c             C   sZ  t tdƒd ƒ}t tdƒd ƒ}| |ƒ}| |ƒ}|| }t|| |ƒ t|| |ƒ t|| |ƒ t|t|ƒ |ƒ tt|ƒ| |ƒ t|t |¡ |ƒ tt |¡| |ƒ t|d || dgƒ ƒ td| || dgƒ ƒ tttj	|| dg| j
d dƒ tttj	|| dg| jd dƒ | tkr@tttj	|tdgƒƒ ntttj	|tdgƒƒ d S )	N)rS   g      à?)r%   r&   r   r#   )r   )r   )rT   r)   r"   rU   r   rV   r
   rW   rX   Úmulr   r   r   r   )r   rZ   r[   r   r    rN   r   r   r   Útest_mulþ   s&      
r`   c       	      C   sv  t tdƒd ƒ}t tdƒd ƒ}t tdƒd ƒ}| |ƒ}| |ƒ}| |ƒ}|| | }t |jƒ}t|| |ƒ t|| |ƒ t|| |ƒ t|t|ƒ |ƒ tt|ƒ| |ƒ t|t |¡ |ƒ tt |¡| |ƒ td| | dgƒƒ t|d d| ƒ ttt	j
|| dg| jd dƒ ttt	j
|| dg| jd d	ƒ | tkr\ttt	j
|tdgƒƒ nttt	j
|tdgƒƒ d S )
N)rS   g      à?)r%   )r&   r&   r   r#   )r   )r   )rT   r)   r   r"   rU   r   rV   r
   rW   rX   Úfloordivr   r   r   r   )	r   rZ   r[   Úc3r   r    rN   rP   Úc4r   r   r   Útest_floordiv  s0    

rd   c             C   sN  | dddgƒ}|d }xNt jD ]D}t|tƒrt|tƒr8q|dƒ}tt ||¡|ƒ tt	tj||ƒ qW x:t
tfD ].}|dƒ}tt ||¡|ƒ tt	tj||ƒ qpW x:tgD ]0}|ddƒ}tt ||¡|ƒ tt	tj||ƒ qªW xFtƒ tƒ tƒ tƒ t  dg¡gD ]$}tt	tj||ƒ tt	tj||ƒ qþW x"tD ]}tt	tj||dƒƒ q,W d S )Nr#   r&   r%   r;   r   )r   Z
ScalarTypeÚ
issubclassr   Úboolr"   rX   Útruedivr
   rW   ÚintÚfloatÚcomplexrU   rT   ÚdictrV   Úclasses)r   r   r    ÚstypeÚsÚptyper   r   r   Útest_truediv1  s*    
$
rp   c       	      C   sx  t tdƒd ƒ}t tdƒd ƒ}t tdƒd ƒ}| |ƒ}| |ƒ}| |ƒ}|| | }t |jƒ}t|| |ƒ t|| |ƒ t|| |ƒ t|t|ƒ |ƒ tt|ƒ| |ƒ t|t |¡ |ƒ tt |¡| |ƒ td| | dgƒƒ t|d | dgƒƒ ttt	j
|| dg| jd dƒ ttt	j
|| dg| jd d	ƒ | tkr^ttt	j
|tdgƒƒ nttt	j
|tdgƒƒ d S )
N)rS   g      à?)r%   )r&   r&   r   r#   )r   )r   )rT   r)   r   r"   rU   r   rV   r
   rW   rX   Úmodr   r   r   r   )	r   rZ   r[   rb   r   r    rN   rP   rc   r   r   r   Útest_modL  s,    
  
rr   c             C   s.  t tdƒd ƒ}t tdƒd ƒ}t tdƒd ƒ}| |ƒ}| |ƒ}| |ƒ}|| | }t |jƒ}t||ƒ\}	}
t|	|ƒ t|
|ƒ t||ƒ\}	}
t|	|ƒ t|
|ƒ t||ƒ\}	}
t|	|ƒ t|
|ƒ t|t|ƒƒ\}	}
t|	|ƒ t|
|ƒ tt|ƒ|ƒ\}	}
t|	|ƒ t|
|ƒ t|t |¡ƒ\}	}
t|	|ƒ t|
|ƒ tt |¡|ƒ\}	}
t|	|ƒ t|
|ƒ t|dƒ\}	}
t|	d| ƒ t|
| dgƒƒ td|ƒ\}	}
t|	| dgƒƒ t|
| dgƒƒ tt	t|| dg| j
d dƒ tt	t|| dg| jd d	ƒ | tkrtt	t|tdgƒƒ ntt	t|tdgƒƒ d S )
N)rS   g      à?)r%   )r&   r&   r   r#   )r   )r   )rT   r)   r   Údivmodr"   rU   r   rV   r
   rW   r   r   r   r   )r   rZ   r[   rb   r   r    rN   rP   rc   ZquoÚremr   r   r   Útest_divmodg  sP    















ru   c             C   sp   | j d d }| j}t |d |d d¡}t | j|||d ¡ ¡}t||ƒ t |  |¡ ¡ ¡}t||ƒ d S )Ng      ô?g      Ð?r   r#   r;   )r   r   )r   r   r   r(   Úsortr?   Úrootsr	   )r   r7   r8   ÚtgtÚresr   r   r   Ú
test_roots”  s    
rz   c             C   s   |   d¡}t| ¡ dƒ d S )Nr;   )r<   r   r@   )r   r9   r   r   r   Útest_degreeŸ  s    
r{   c             C   s^   |   d¡}| ¡ }t||kƒ t||k	ƒ t|j|jk	ƒ t|j|jk	ƒ t|j|jk	ƒ d S )Nr;   )r<   Úcopyr   r   r   r   )r   r   r    r   r   r   Ú	test_copy¤  s    
r}   c             C   sª  t }|  |dddgƒ¡}| | ¡ ¡}| | d¡¡}t||ddddgƒƒ t||dddddgƒƒ |  |dddgƒ¡}| |jdd¡}| |jdddgd¡}t||ddddgƒƒ t||dddddgƒƒ |  |dddgƒ¡}| |jdd	¡}| |jddd	¡}t||d
dddgƒƒ t||dd
dddgƒƒ d| j }| j|dddgƒ|d}| | ¡ ¡}| | d¡¡}t||ddddgƒƒ t||dddddgƒƒ d S )Nr&   é   é   r   r%   rS   r#   )Úk)Zlbndi÷ÿÿÿ)r   )r   r3   Úintegr"   r   )r   ÚPÚp0r   r    r7   r   r   r   Ú
test_integ®  s,    
r„   c             C   sÞ   | j tdƒd  }| jtdƒd  }| dddg||d}|jdddgd}|jddgd}t| d¡j|jƒ t| d¡j|jƒ | dddgƒ}|jdddgd}|jddgd}t| d¡j|jƒ t| d¡j|jƒ d S )N)r&   g      Ð?r#   r&   r%   )r   r   )r€   )r   r)   r   r   r	   Zderivr   )r   r7   r8   r   r    rN   r   r   r   Ú
test_derivË  s    r…   c             C   s¼   | j tdƒd  }| jtdƒd  }| dddg||d}t |d |d d¡}||ƒ}| d¡\}}t||ƒ t||ƒ t ddd¡}||ƒ}|jdddgd	\}}t||ƒ t||ƒ d S )
N)r&   g      Ð?r#   r&   r%   )r   r   r   é   )r   )r   r)   r   r   r(   r	   )r   r7   r8   r9   ZxtgtZytgtZxresZyresr   r   r   Útest_linspaceÝ  s    


r‡   c             C   sÔ   | j tdƒd  }| jtdƒd  }| dg||d}| dddg||d}x&tdƒD ]}t|| |ƒ || }qRW | dgƒ}| dddgƒ}x&tdƒD ]}t|| |ƒ || }q’W tttj|dƒ tttj|d	ƒ d S )
N)r&   g      Ð?r#   )r   r   r&   r%   r;   g      ø?r>   )	r   r)   r   Úranger"   r
   Ú
ValueErrorrX   Úpow)r   r7   r8   rx   ZtstÚir   r   r   Útest_powï  s    
rŒ   c             C   s^   t }| j}t |d |d d¡}|  |dddgƒ¡}d|dd|    }||ƒ}t||ƒ d S )Nr   r#   r5   r&   r%   )r   r   r   r(   r3   r	   )r   r‚   r7   r-   r9   rx   ry   r   r   r   Ú	test_call  s    r   c             C   s~   | dddgƒ}t t|jdƒ t t|jdƒ tt| d¡ƒdƒ tt| d¡ƒdƒ tt| d¡ƒdƒ tt| d¡ƒdƒ d S )Nr#   r&   r%   g      à?r>   r   )r
   r‰   Zcutdegr   rA   )r   r9   r   r   r   Útest_cutdeg  s    rŽ   c             C   s~   | dddgƒ}t t|jdƒ t t|jdƒ tt| d¡ƒdƒ tt| d¡ƒdƒ tt| d¡ƒdƒ tt| d¡ƒdƒ d S )Nr#   r&   r%   g      à?r   rS   )r
   r‰   Útruncater   rA   )r   r9   r   r   r   Útest_truncate  s    r   c             C   sd   ddddg}| |ƒ}t | ¡ j|d d… ƒ t | d¡j|d d… ƒ t | d¡j|d d… ƒ d S )	Nr#   gíµ ÷Æ°>gê-™—q=r   r%   g»½×Ùß|Û=r&   gñhãˆµøä>)r   Ztrimr   )r   Úcr9   r   r   r   Ú	test_trim"  s
    r’   c             C   s`   | j }| j}| dg||d}tddg| ¡ ƒ d| d }| dg||d}tddg| ¡ ƒ d S )Nr#   )r   r   r   r&   )r   r   r	   Zmapparms)r   r7   r8   r9   r   r   r   Útest_mapparms*  s    r“   c             C   s<   | dddgƒ}t  d¡}ttt j||ƒ ttt j||ƒ d S )Nr#   r&   r%   )r   Zonesr
   rW   rY   )r   r9   r-   r   r   r   Útest_ufunc_override6  s    
r”   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestInterpolatec             C   s   ||d  |d  S )Nr#   r&   r   )Úselfr-   r   r   r   rK   D  s    zTestInterpolate.fc             C   s(   t ttj| jdƒ t ttj| jdƒ d S )Nr>   g      $@)r
   r‰   r   ÚinterpolaterK   rW   )r–   r   r   r   Útest_raisesG  s    zTestInterpolate.test_raisesc             C   s2   x,t ddƒD ]}tt | j|¡ ¡ |kƒ qW d S )Nr#   r;   )rˆ   r   r   r—   rK   r@   )r–   Údegr   r   r   Útest_dimensionsK  s    zTestInterpolate.test_dimensionsc             C   sv   dd„ }t  ddd¡}xZtddƒD ]L}xFtd|d ƒD ]4}tj||ddg|fd}t||ƒ|||ƒdd	 q6W q"W d S )
Nc             S   s   | | S )Nr   )r-   r9   r   r   r   ÚpowxQ  s    z0TestInterpolate.test_approximation.<locals>.powxr   r&   r$   r#   )r   rG   r   )Údecimal)r   r(   rˆ   r   r—   r	   )r–   r›   r-   r™   Útr9   r   r   r   Útest_approximationO  s    z"TestInterpolate.test_approximationN)r   Ú
__module__Ú__qualname__rK   r˜   rš   rž   r   r   r   r   r•   B  s   r•   )r   )=Ú__doc__ÚoperatorrX   Únumbersr   rD   Únumpyr   Znumpy.polynomialr   r   r   r   r   r   Znumpy.testingr	   r
   r   r   Znumpy.polynomial.polyutilsr   rl   rU   ZclassidsZfixturer   r)   r"   r+   r,   r2   r4   r:   r=   rC   rJ   rO   rQ   rR   r\   r^   r`   rd   rp   rr   ru   rz   r{   r}   r„   r…   r‡   rŒ   r   rŽ   r   r’   r“   r”   r•   r   r   r   r   Ú<module>   sZ    

	,-


