o
    ʩZh*P                  
   @   sh  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 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$G d#d$ d$Z%G d%d& d&Z&G d'd( d(Z'dS ))zTests for chebyshev module.

    )reduceNpolyval)assert_almost_equalassert_raisesassert_equalassert_c                 C   s   t j| ddS )Ngư>)Ztol)chebchebtrimx r   \/var/www/html/lang_env/lib/python3.10/site-packages/numpy/polynomial/tests/test_chebyshev.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S )TestPrivatec                 C   sd   t dD ]+}tdgdg|  tj}tdg| dg dg|  tj}t|}t|| qd S )Nr   r   r         ?)rangenparraydoubler	   Z_cseries_to_zseriesr   selfiinptgtresr   r   r   test__cseries_to_zseries!   s   $
z$TestPrivate.test__cseries_to_zseriesc                 C   sd   t dD ]+}tdg| dg dg|  tj}tdgdg|  tj}t|}t|| qd S )Nr   r"   r   r   )r#   r$   r%   r&   r	   Z_zseries_to_cseriesr   r'   r   r   r   test__zseries_to_cseries(   s   $
z$TestPrivate.test__zseries_to_cseriesN)__name__
__module____qualname__r-   r.   r   r   r   r   r!      s    r!   c                   @   ,   e Z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	   Z
chebdomainr(   r   r   r   test_chebdomain2      zTestConstants.test_chebdomainc                 C      t tjdg d S )Nr   )r   r	   Zchebzeror5   r   r   r   test_chebzero5      zTestConstants.test_chebzeroc                 C   r8   Nr   )r   r	   Zcheboner5   r   r   r   test_chebone8   r:   zTestConstants.test_chebonec                 C   r4   )Nr   r   )r   r	   Zchebxr5   r   r   r   
test_chebx;   r7   zTestConstants.test_chebxN)r/   r0   r1   r6   r9   r<   r=   r   r   r   r   r3   0   s
    r3   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 ]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)r#   r$   zerosmaxr	   chebaddr   r   r(   r)   jmsgr+   r,   r   r   r   test_chebaddA      $zTestArithmetic.test_chebaddc                 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 r?   )r#   r$   rD   rE   r	   Zchebsubr   r   rG   r   r   r   test_chebsubK   rK   zTestArithmetic.test_chebsubc                 C   st   t tdgdg t tdgddg tddD ]}dg| dg }dg|d  g d }t t|| qd S )Nr   r   r   )r"   r   r"   )r   r	   Zchebmulxr#   )r(   r)   Zserr+   r   r   r   test_chebmulxU   s   zTestArithmetic.test_chebmulxc                 C   s   t dD ]M}t dD ]F}d| d| }t|| d }|||   d7  < |t||   d7  < tdg| dg dg| dg }tt|t||d q
qd S )Nr   r@   rA   r   r"   r   rB   )r#   r$   rD   absr	   chebmulr   r   rG   r   r   r   test_chebmul]   s   $zTestArithmetic.test_chebmulc           
      C   s   t dD ]D}t dD ]=}d| d| }dg| dg }dg| dg }t||}t||\}}tt|||}	tt|	t||d q
qd S )Nr   r@   rA   r   r   rB   )r#   r	   rF   ZchebdivrO   r   r   )
r(   r)   rH   rI   cicjr+   Zquoremr,   r   r   r   test_chebdivg   s   zTestArithmetic.test_chebdivc                 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   r@   rA   r   rB   )
r#   r$   aranger   r	   rO   r%   Zchebpowr   r   )r(   r)   rH   rI   cr+   r,   r   r   r   test_chebpowr   s   zTestArithmetic.test_chebpowN)	r/   r0   r1   rJ   rL   rM   rP   rT   rW   r   r   r   r   r>   ?   s    


r>   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S )TestEvaluation)g      @       @      ?i,j->ij
i,j,k->ijk   r   r   r   )      ?rY   g      @c                    s   t tg dgjd tdd  fddtD }tdD ]}d| }|| }t dg| dg }t|||d qtd	D ]/}d
g| }t	| t t dgj
| t t ddgj
| t t g dj
| qAd S )Nr   r   r   c                    s   g | ]}t  |qS r   r   .0rV   r   r   r   
<listcomp>       z/TestEvaluation.test_chebval.<locals>.<listcomp>
   r@   rB   r^   r   )r   r   r   )r   r	   chebvalsizer$   linspaceTlistr#   r   rD   shape)r(   yr)   rI   r+   r,   dimsr   r   r   test_chebval   s   


zTestEvaluation.test_chebvalc           
      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   rj   r   
ValueErrorr	   	chebval2dc2dr   r$   onesr   ri   
r(   x1x2x3y1y2Zy3r+   r,   zr   r   r   test_chebval2d   s   

zTestEvaluation.test_chebval2dc           
      C   s   | j \}}}| j\}}}tttj|||d d | j || | }t|||| j}t|| t	d}	t|	|	|	| j}t
|jdk d S rm   )r   rj   r   ro   r	   	chebval3dc3dr   r$   rr   r   ri   rs   r   r   r   test_chebval3d   s   

zTestEvaluation.test_chebval3dc           
      C   sl   | j \}}}| j\}}}td||}t||| j}t|| td}	t|	|	| j}t	|j
dk d S )Nr[   rn   )r   r^   r   r^   )r   rj   r$   einsumr	   Z
chebgrid2drq   r   rr   r   ri   rs   r   r   r   test_chebgrid2d   s   

zTestEvaluation.test_chebgrid2dc           
      C   sr   | j \}}}| j\}}}td|||}t|||| j}t|| td}	t|	|	|	| j}t	|j
dk d S )Nr\   rn   )r   r^   r   r^   r   r^   )r   rj   r$   r~   r	   Z
chebgrid3dr|   r   rr   r   ri   rs   r   r   r   test_chebgrid3d   s   

zTestEvaluation.test_chebgrid3dN)r/   r0   r1   r$   r%   Zc1dr~   rq   r|   randomr   r   rj   rl   rz   r}   r   r   r   r   r   r   rX   |   s    rX   c                   @   r    )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dd	D ]}dg|d  dg }tjdg||d
}t|ddg qCtd	D ]7}|d }dg| dg }|gdg|  d| g }t|}tj|d|gd
}t|}tt	|t	| qdtd	D ]&}|d }dg| dg }t|}tj|d|gdd}tt
d|| qtd	D ]8}|d }dg| dg }|gdg|  d| g }t|}tj|d|gdd}t|}tt	|t	| qtd	D ]9}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qtd	D ]@}tdd	D ]7}	dg| dg }|d d  }t|	D ]}tj|d|gd
}qatj||	tt|	d
}tt	|t	| qMqFt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qt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   r   )lbnd)sclaxisr   r   )mk)r   r   r   )r   r   r   r   )r   	TypeErrorr	   chebintro   r#   r   	poly2cheb	cheb2polyr   re   list)
r(   r)   r   r,   r   Zpolr+   Zchebpolr   rH   r   r   r   test_chebint   s   




			zTestIntegral.test_chebintc                 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      g | ]}t |qS r   r	   r   r`   r   r   r   rb   3  rc   z2TestIntegral.test_chebint_axis.<locals>.<listcomp>r   r   c                 S   r   r   r   r`   r   r   r   rb   7  rc   r   c                 S   s   g | ]	}t j|d dqS )r^   )r   r   r`   r   r   r   rb   ;  s    r^   )r   r   )r$   r   vstackTr	   r   r   r(   rq   r+   r,   r   r   r   test_chebint_axis/  s   

zTestIntegral.test_chebint_axisN)r/   r0   r1   r   r   r   r   r   r   r      s    Sr   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	   chebderro   r#   r   r   r   r   )r(   r)   r+   r,   rH   r   r   r   test_chebderB  s&   zTestDerivative.test_chebderc                 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   rb   _  rc   z4TestDerivative.test_chebder_axis.<locals>.<listcomp>r   r   c                 S   r   r   r   r`   r   r   r   rb   c  rc   r   )r$   r   r   r   r	   r   r   r   r   r   r   test_chebder_axis[  s   
z TestDerivative.test_chebder_axisN)r/   r0   r1   r   r   r   r   r   r   r   @  s    r   c                   @   s8   e Zd Zejd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 )Nr^   r   r   r   r   .r   r      )r^   r   r   )
r$   rU   r	   
chebvanderr   ri   r#   r   re   r%   )r(   r   vr)   coefr   r   r   test_chebvanderl  s   
zTestVander.test_chebvanderc                 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 )Nrn   r   r   )r   r   r   )r   r$   r   r	   Zchebvander2drp   dotflatr   r   ri   r(   rt   ru   rv   rV   Zvanr+   r,   r   r   r   test_chebvander2d}  s   
zTestVander.test_chebvander2dc                 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 )N)r   r^   r   )r   r   r^   )r   r      )r   r$   r   r	   Zchebvander3dr{   r   r   r   r   ri   r   r   r   r   test_chebvander3d  s   
zTestVander.test_chebvander3dN)	r/   r0   r1   r$   r   r   r   r   r   r   r   r   r   r   h  s
    r   c                   @      e Zd Zdd ZdS )TestFittingc                 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||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   f  r7   z#TestFitting.test_chebfit.<locals>.fc                 S   s   | d | d  d S )Nr   r   r   r   r   r   r   r   f2  r7   z$TestFitting.test_chebfit.<locals>.f2r   r   r   r   )w)r   r   r   r^   r   )r   r   r   r^   r   )r   r   r   r^   r   )r   r^   r   r   r   )r   y              ?r   y             )r   r   r   )r   ro   r	   Zchebfitr   r$   rg   r   lenr   re   r%   r   Z
zeros_likecopy)r(   r   r   r   rj   Zcoef3Zcoef4Zcoef2dr   ZywZwcoef3Zwcoef2dZcoef1Zcoef2r   r   r   test_chebfit  sp   


"zTestFitting.test_chebfitN)r/   r0   r1   r   r   r   r   r   r         r   c                   @   r2   )
TestInterpolatec                 C   s   ||d  |d  S r   r   )r(   r   r   r   r   r     r7   zTestInterpolate.fc                 C   s(   t ttj| jd t ttj| jd d S )Nr   g      $@)r   ro   r	   chebinterpolater   r   r5   r   r   r   test_raises  s   zTestInterpolate.test_raisesc                 C   s2   t ddD ]}tt| j|j|d fk qd S )Nr   r   )r#   r   r	   r   r   ri   )r(   degr   r   r   test_dimensions  s    zTestInterpolate.test_dimensionsc                 C   sj   dd }t ddd}tddD ]"}td|d D ]}t|||f}tt|||||dd qqd S )	Nc                 S   s   | | S )Nr   )r   pr   r   r   powx  s   z0TestInterpolate.test_approximation.<locals>.powxr   r   rd   r      )decimal)r$   rg   r#   r	   r   r   re   )r(   r   r   r   r   rV   r   r   r   test_approximation  s   z"TestInterpolate.test_approximationN)r/   r0   r1   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   ro   r	   chebcompanionr5   r   r   r   r      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   ri   )r(   r)   r   r   r   r   r     s   zTestCompanion.test_dimensionsc                 C   s   t tddgd dk d S )Nr   r   )r   r         )r   r	   r   r5   r   r   r   test_linear_root	  s   zTestCompanion.test_linear_rootN)r/   r0   r1   r   r   r   r   r   r   r   r     s    r   c                   @   r   )	TestGaussc                 C   s~   t d\}}t |d}t|j| |}dt|  }|d d d f | | }t|t	d tj
}t| | d S )Nd   c   r   )r	   Z	chebgaussr   r$   r   r   sqrtZdiagonalr   eyepisum)r(   r   r   r   vvZvdr+   r   r   r   test_100  s   zTestGauss.test_100N)r/   r0   r1   r   r   r   r   r   r     r   r   c                   @   sT   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d ZdS )TestMiscc              	   C   s   t g }tt|dg tddD ]3}tttj dd| d dd d }dg| dg }t |d|d   }tt|t| qd S )Nr   r   r   r   )	r	   chebfromrootsr   r   r#   r$   cosrg   r   )r(   r,   r)   rootsr+   r   r   r   test_chebfromroots"  s   
*zTestMisc.test_chebfromrootsc                 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	   Z	chebrootsr#   r$   rg   r   r   )r(   r)   r+   r,   r   r   r   test_chebroots+  s   zTestMisc.test_chebrootsc                 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   ro   r	   r
   r   )r(   r   r   r   r   test_chebtrim3  s
   zTestMisc.test_chebtrimc                 C   s   t tddddg d S )Nr^   r   )r   r	   Zchebliner5   r   r   r   test_chebline>  s   zTestMisc.test_cheblinec                 C   s2   t dD ]}ttdg| dg t|  qd S Nrd   r   r   )r#   r   r	   r   rh   r(   r)   r   r   r   test_cheb2polyA     "zTestMisc.test_cheb2polyc                 C   s2   t dD ]}ttt| dg| dg  qd S r   )r#   r   r	   r   rh   r   r   r   r   test_poly2chebE  r   zTestMisc.test_poly2chebc                 C   sN   t ddddd }dt d| t d|   }t|}t|| d S )Nr   r      r_   )r$   rg   r   r	   Z
chebweightr   )r(   r   r+   r,   r   r   r   test_weightI  s    
zTestMisc.test_weightc                 C   s~   t ttjd t ttjd dg}ttd| ddg}ttd| g d}ttd| g d	}ttd
| d S )NrZ   r   r   g;fg;f?r   )gLXzr   gLXz?r^   )g( 1kgŜ}ؿgŜ}?g( 1k?r   )r   ro   r	   Zchebpts1r   r(   r+   r   r   r   test_chebpts1O  s   zTestMisc.test_chebpts1c                 C   s   t ttjd t ttjd ddg}ttd| g d}ttd| g d}ttd| g d	}ttd
| d S )NrZ   r   r   r   )r   r   r   r^   )r   r   r"   r   r   )g      gKfr   gKf?r_   r   )r   ro   r	   Zchebpts2r   r   r   r   r   test_chebpts2^  s   zTestMisc.test_chebpts2N)r/   r0   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    	r   )(__doc__	functoolsr   numpyr$   Znumpy.polynomial.chebyshevZ
polynomialZ	chebyshevr	   Znumpy.polynomial.polynomialr   Znumpy.testingr   r   r   r   r   ZT0ZT1ZT2ZT3ZT4ZT5ZT6ZT7ZT8ZT9rh   r!   r3   r>   rX   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s<    =^f(0M