B
    F0dgD              	   @   s  d Z ddlmZ ddlZddlm  mZ ddl	m
Z
 ddlmZmZmZmZ edgd Zeddgd Zedd	dgd Zed
dddgd
 Zedddddgd Zeddddddgd Zedddddddgd ZeeeeeeegZ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!G d.d/ d/Z"G d0d1 d1Z#dS )2zTests for laguerre module.

    )reduceN)polyval)assert_almost_equalassert_raisesassert_equalassert_         i	      iH   ix   iiX  i8   i  i i  ii  ic             C   s   t j| ddS )Ngư>)Ztol)laglagtrim)x r   V/var/www/html/venv/lib/python3.7/site-packages/numpy/polynomial/tests/test_laguerre.pytrim   s    r   c               @   s,   e Z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	lagdomain)selfr   r   r   test_lagdomain   s    zTestConstants.test_lagdomainc             C   s   t tjdg d S )Nr   )r   r   Zlagzero)r   r   r   r   test_lagzero!   s    zTestConstants.test_lagzeroc             C   s   t tjdg d S )Nr   )r   r   Zlagone)r   r   r   r   test_lagone$   s    zTestConstants.test_lagonec             C   s   t tjddg d S )Nr   r	   )r   r   Zlagx)r   r   r   r   	test_lagx'   s    zTestConstants.test_lagxN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r      s   r   c               @   sJ   e Zd ZedddZdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )TestArithmetic   d   c             C   s   xt dD ]}xt 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W q
W d S )N   zAt i=z, j=r   r   )err_msg)rangenpzerosmaxr   lagaddr   r   )r   ijmsgtgtresr   r   r   test_lagadd.   s    $zTestArithmetic.test_lagaddc             C   s   xt dD ]}xt 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W q
W d S )Nr%   zAt i=z, j=r   r   )r&   )r'   r(   r)   r*   r   Zlagsubr   r   )r   r,   r-   r.   r/   r0   r   r   r   test_lagsub8   s    $zTestArithmetic.test_lagsubc             C   s   t tdgdg t tdgddg xZtddD ]L}dg| dg }dg|d  | d| d |d  g }tt|| q6W d S )Nr   r   r	   r%   r
   )r   r   Zlagmulxr'   r   )r   r,   Zserr/   r   r   r   test_lagmulxB   s    (zTestArithmetic.test_lagmulxc       
      C   s   xt dD ]}dg| dg }t| j|}xt dD ]x}d| d| }dg| dg }t| j|}t||}t| j|}	tt||| d k| t|	|| |d q6W q
W d S )Nr%   r   r   zAt i=z, j=)r&   )r'   r   lagvalr   lagmulr   lenr   )
r   r,   Zpol1Zval1r-   r.   Zpol2Zval2Zpol3Zval3r   r   r   test_lagmulJ   s    zTestArithmetic.test_lagmulc       
      C   s   xt dD ]}xt dD ]z}d| d| }dg| dg }dg| dg }t||}t||\}}tt|||}	tt|	t||d qW q
W d S )Nr%   zAt i=z, j=r   r   )r&   )r'   r   r+   Zlagdivr5   r   r   )
r   r,   r-   r.   cicjr/   Zquoremr0   r   r   r   test_lagdivX   s    zTestArithmetic.test_lagdivc             C   s   x~t dD ]r}xlt dD ]`}d| d| }t|d }ttj|g| tdg}t||}tt	|t	||d qW q
W d S )Nr%   zAt i=z, j=r   )r&   )
r'   r(   aranger   r   r5   arrayZlagpowr   r   )r   r,   r-   r.   cr/   r0   r   r   r   test_lagpowc   s    zTestArithmetic.test_lagpowN)r   r   r    r(   linspacer   r1   r2   r3   r7   r;   r?   r   r   r   r   r!   +   s   

r!   c               @   s   e Zd ZedddgZedeeZedeeeZej		dd d Z
ee
d	d
dgZdd Zdd Zdd Zdd Zdd ZdS )TestEvaluationg      "@g      ,g      @zi,j->ijz
i,j,k->ijk)r#   r%   r
   r   g      ?g       @g      @c                s   t tg dgjd tdd  fddtD }xHtdD ]<}d| }|| }t dg| dg }t|||d q>W xltd	D ]`}d
g| }t	| t t dgj
| t t ddgj
| t t dddgj
| qW d S )Nr   r   r	   c                s   g | ]}t  |qS r   )r   ).0r>   )r   r   r   
<listcomp>}   s    z.TestEvaluation.test_lagval.<locals>.<listcomp>   zAt i=)r&   r#   r
   )r   r   r4   sizer(   r@   Llistr'   r   r)   shape)r   yr,   r.   r/   r0   Zdimsr   )r   r   test_lagvalw   s    


zTestEvaluation.test_lagvalc       
      C   s   | j \}}}| j\}}}tttj||d d | j || }t||| j}t|| t	d}	t|	|	| j}t
|jdk d S )Nr
   )r
   r#   )r   rH   r   
ValueErrorr   lagval2dc2dr   r(   onesr   rG   )
r   x1x2x3y1y2y3r/   r0   zr   r   r   test_lagval2d   s    

zTestEvaluation.test_lagval2dc       
      C   s   | j \}}}| j\}}}tttj|||d d | j || | }t|||| j}t|| t	d}	t|	|	|	| j}t
|jdk d S )Nr
   )r
   r#   )r   rH   r   rJ   r   lagval3dc3dr   r(   rM   r   rG   )
r   rN   rO   rP   rQ   rR   rS   r/   r0   rT   r   r   r   test_lagval3d   s    

zTestEvaluation.test_lagval3dc       
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )Nzi,j->ij)r
   r#   )r
   r#   r
   r#   )r   rH   r(   einsumr   Z	laggrid2drL   r   rM   r   rG   )
r   rN   rO   rP   rQ   rR   rS   r/   r0   rT   r   r   r   test_laggrid2d   s    

zTestEvaluation.test_laggrid2dc       
      C   sr   | j \}}}| j\}}}td|||}t|||| j}t|| td}	t|	|	|	| j}t	|j
dk d S )Nz
i,j,k->ijk)r
   r#   )r
   r#   r
   r#   r
   r#   )r   rH   r(   rY   r   Z	laggrid3drW   r   rM   r   rG   )
r   rN   rO   rP   rQ   rR   rS   r/   r0   rT   r   r   r   test_laggrid3d   s    

zTestEvaluation.test_laggrid3dN)r   r   r    r(   r=   Zc1drY   rL   rW   randomr   r   rH   rI   rU   rX   rZ   r[   r   r   r   r   rA   m   s   rA   c               @   s   e Zd Zdd Zdd ZdS )TestIntegralc       
   	   C   sr  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 xFtdd	D ]8}dg|d  dg }tjdg||d
}t|ddg qW xztd	D ]n}|d }dg| dg }|gdg|  d| g }t|}tj|d|gd
}t|}tt	|t	| qW xZtd	D ]N}|d }dg| dg }t|}tj|d|gdd}tt
d|| qJW x~td	D ]r}|d }dg| dg }|gdg|  d| g }t|}tj|d|gdd}t|}tt	|t	| qW xtd	D ]z}xrtdd	D ]d}	dg| dg }|d d  }x t|	D ]}tj|dd}q`W tj||	d}tt	|t	| q6W q&W xtd	D ]}xtdd	D ]r}	dg| dg }|d d  }x$t|	D ]}tj|d|gd
}qW tj||	tt|	d
}tt	|t	| qW qW xtd	D ]}xtdd	D ]v}	dg| dg }|d d  }x&t|	D ]}tj|d|gdd}q~W tj||	tt|	dd}tt	|t	| qTW qDW xtd	D ]}xtdd	D ]v}	dg| dg }|d d  }x&t|	D ]}tj|d|gdd}qW tj||	tt|	dd}tt	|t	| qW qW d S )Nr   g      ?r	   r   )lbnd)scl)axisr
   r%   )mk)ra   rb   r^   )ra   rb   r_   )ra   )r   	TypeErrorr   lagintrJ   r'   r   poly2laglag2polyr   r4   list)
r   r,   rb   r0   r_   polr/   Zlagpolrd   r-   r   r   r   test_lagint   s    




zTestIntegral.test_lagintc             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#      c             S   s   g | ]}t |qS r   )r   rd   )rB   r>   r   r   r   rC   $  s    z1TestIntegral.test_lagint_axis.<locals>.<listcomp>r   )r`   c             S   s   g | ]}t |qS r   )r   rd   )rB   r>   r   r   r   rC   (  s    r   c             S   s   g | ]}t j|d dqS )r#   )rb   )r   rd   )rB   r>   r   r   r   rC   ,  s    r#   )rb   r`   )r(   r\   vstackTr   rd   r   )r   rL   r/   r0   r   r   r   test_lagint_axis   s    

zTestIntegral.test_lagint_axisN)r   r   r    ri   rm   r   r   r   r   r]      s   Sr]   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 x@tdD ]4}dg| dg }tj|dd}tt|t| q.W x^tdD ]R}xLtddD ]>}dg| dg }tjtj||d|d}t	t|t| qW qpW xbtdD ]V}xPtddD ]B}dg| dg }tjtj||dd|dd}t	t|t| qW qW d S )	Nr   g      ?r	   r%   r   )ra   r
   )ra   r_   )
r   rc   r   lagderrJ   r'   r   r   rd   r   )r   r,   r/   r0   r-   r   r   r   test_lagder3  s     zTestDerivative.test_lagderc             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 )N)r#   rj   c             S   s   g | ]}t |qS r   )r   ro   )rB   r>   r   r   r   rC   P  s    z3TestDerivative.test_lagder_axis.<locals>.<listcomp>r   )r`   c             S   s   g | ]}t |qS r   )r   ro   )rB   r>   r   r   r   rC   T  s    r   )r(   r\   rk   rl   r   ro   r   )r   rL   r/   r0   r   r   r   test_lagder_axisL  s    
zTestDerivative.test_lagder_axisN)r   r   r    rp   rq   r   r   r   r   rn   1  s   rn   c               @   s8   e Zd Zejdd d Zdd Zdd Zdd	 Zd
S )
TestVander)r#   r%   r
   r   c             C   s   t d}t|d}t|jdk x:tdD ].}dg| dg }t|d|f t|| q.W t 	ddgddgdd	gg}t|d}t|jd
k x:tdD ].}dg| dg }t|d|f t|| qW d S )Nr#   )r#   rj   rj   r   r   .r
   r%   r   )r#   r
   rj   )
r(   r<   r   	lagvanderr   rG   r'   r   r4   r=   )r   r   vr,   coefr   r   r   test_lagvander]  s    
zTestVander.test_lagvanderc             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 )N)r
   r#   r   r
   )r   r%   r   )r   r(   r\   r   Zlagvander2drK   dotflatr   r   rG   )r   rN   rO   rP   r>   vanr/   r0   r   r   r   test_lagvander2dn  s    
zTestVander.test_lagvander2dc             C   s   | j \}}}tjd}t|||dddg}t||||}t||j}t|| t|g|g|gdddg}t	|j
dk d S )N)r
   r#   rj   r   r
   r#   )r   r%   r   )r   r(   r\   r   Zlagvander3drV   rw   rx   r   r   rG   )r   rN   rO   rP   r>   ry   r/   r0   r   r   r   test_lagvander3d{  s    
zTestVander.test_lagvander3dN)	r   r   r    r(   r\   r   rv   rz   r{   r   r   r   r   rr   Y  s   rr   c               @   s   e Zd Zdd ZdS )TestFittingc          	   C   s  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dddg t ttjdgdgg  tdd}||}t||d	}tt|d
 t	t
||| t||dddd	g}tt|d
 t	t
||| t||d
}tt|d t	t
||| t||dddd	d
g}tt|d t	t
||| t|t||gjd	}t	|t||gj t|t||gjdddd	g}t	|t||gj t|}| }d|dd d< d|dd d< tj||d	|d}	t	|	| tj||dddd	g|d}	t	|	| tj|t||gjd	|d}
t	|
t||gj tj|t||gjdddd	g|d}
t	|
t||gj ddddg}t	t||dddg t	t||ddgddg d S )Nc             S   s   | | d  | d  S )Nr   r
   r   )r   r   r   r   f  s    z"TestFitting.test_lagfit.<locals>.fr   r	   r   r
   )wr   r#   rj   r%   y              ?y             )r   rJ   r   Zlagfitrc   r(   r@   r   r6   r   r4   r=   rl   Z
zeros_likecopy)r   r}   r   rH   Zcoef3Zcoef4Zcoef2dr~   ZywZwcoef3Zwcoef2dr   r   r   test_lagfit  sZ    "


&zTestFitting.test_lagfitN)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 )Nr   )r   rJ   r   lagcompanion)r   r   r   r   test_raises  s    zTestCompanion.test_raisesc             C   s@   x:t ddD ],}dg| dg }tt|j||fk qW d S )Nr   r%   r   )r'   r   r   r   rG   )r   r,   ru   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   g      ?)r   r   r   )r   r   r   r   test_linear_root  s    zTestCompanion.test_linear_rootN)r   r   r    r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd Zdd ZdS )	TestGaussc             C   s|   t d\}}t |d}t|j| |}dt|  }|d d d f | | }t|t	d d}t|
 | d S )Nr$   c   r   g      ?)r   Zlaggaussrs   r(   rw   rl   sqrtZdiagonalr   eyesum)r   r   r~   rt   vvZvdr/   r   r   r   test_100  s    zTestGauss.test_100N)r   r   r    r   r   r   r   r   r     s   r   c               @   sD   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S )TestMiscc          	   C   s   t g }tt|dg xtddD ]z}tttj dd| d dd d }t |}t 	||}d}t
t||d k tt |d d t|| q&W d S )Nr   r%   r   r
   r	   )r   lagfromrootsr   r   r'   r(   cosr@   pir4   r   r6   rf   )r   r0   r,   rootsrh   r/   r   r   r   test_lagfromroots  s    
*
zTestMisc.test_lagfromrootsc             C   sp   t tdgg  t tddgdg xBtddD ]4}tdd|}tt|}t t|t| q4W d S )Nr   r   r
   r%   r#   )r   r   Zlagrootsr'   r(   r@   r   r   )r   r,   r/   r0   r   r   r   test_lagroots  s    zTestMisc.test_lagrootsc             C   sf   ddddg}t ttj|d tt||d d  tt|d|d d  tt|ddg d S )Nr
   r	   r   r   r"   )r   rJ   r   r   r   )r   ru   r   r   r   test_lagtrim  s
    zTestMisc.test_lagtrimc             C   s   t tddddg d S )Nr#   rj   rD   r   )r   r   Zlagline)r   r   r   r   test_lagline
  s    zTestMisc.test_laglinec             C   s6   x0t dD ]$}ttdg| dg t|  q
W d S )NrD   r   r   )r'   r   r   rf   rF   )r   r,   r   r   r   test_lag2poly  s    zTestMisc.test_lag2polyc             C   s6   x0t dD ]$}ttt| dg| dg  q
W d S )NrD   r   r   )r'   r   r   re   rF   )r   r,   r   r   r   test_poly2lag  s    zTestMisc.test_poly2lagc             C   s2   t ddd}t | }t|}t|| d S )Nr   
      )r(   r@   expr   Z	lagweightr   )r   r   r/   r0   r   r   r   test_weight  s    
zTestMisc.test_weightN)
r   r   r    r   r   r   r   r   r   r   r   r   r   r   r     s   r   )$__doc__	functoolsr   numpyr(   Znumpy.polynomial.laguerreZ
polynomialZlaguerrer   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   r=   ZL0ZL1ZL2ZL3ZL4ZL5ZL6rF   r   r   r!   rA   r]   rn   rr   r|   r   r   r   r   r   r   r   <module>   s0   B^f(0>