U
    9%eG                     @   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 )LzTest 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   b/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numpy/polynomial/tests/test_classes.py	<genexpr>   s     r   )paramsZidsc                 C   s   | j S r   )param)requestr   r   r   Poly   s    r    c                 C   sp   z>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      
               ?r   r   )kindr   r   )r   linspacerandomr   r   convertr	   
Poly1Poly2xr   Zd1Zw1r    Zd2Zw2r!   r   r   r   test_conversion8   s    r4   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(   r*   r+   )r   r-   r.   r   r   castr	   r0   r   r   r   	test_castI   s    r6   c                 C   sr   | j tdd  }| jtdd  }t|d |d d}| j||d}t|j | t|j| t||| d S )Nr(   r*   r   r$      r+   )r   r.   r   r   r-   identityr   r	   )r   dwr3   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 )Nr(   r*      r+   r   r$   )r   r.   r   basisr   r   r   r9   r:   r;   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 )Nr(   r*   )r=   r+   r   r$   )r   r.   r   	fromrootsr   degreelenr	   r   r5   r   )r   r9   r:   rr    ZpdomZpwinr!   r   r   r   test_fromrootsr   s    rF   c              	   C   sT   dddg}dddg}t t}| ||d W 5 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   r3   yrecordr   r   r   test_bad_conditioned_fit   s
    

rM   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   )r3   r   r   r   f   s    ztest_fit.<locals>.fr   r'   r(   r*   r+   r$   r)   )r:   )r   r-   rH   r	   r   r   rC   r.   r   Z
zeros_likeshape)r   rO   r3   rK   r;   r9   r:   zr    r!   p3r   r   r   test_fit   s>    
"rS   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!   rR   p4r   r   r   
test_equal   s    rX   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 rT   rU   rV   r   r   r   test_not_equal   s    rY   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         ?r&   r   r$   r   r   )listr.   r#   tupler   arrayr
   	TypeErroropaddr   r   r   r   r   c1c2r    r!   rR   r   r   r   test_add   s"      
ri   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 rZ   )r`   r.   r#   ra   r   rb   r
   rc   rd   subr   r   r   r   rf   r   r   r   test_sub   s"      
rk   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 )	Nr[   r]   r&   r)   r   r$   r^   r_   )r`   r.   r#   ra   r   rb   r
   rc   rd   mulr   r   r   r   rf   r   r   r   test_mul   s&      
rm   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 
Nr[   r]   r&   r(   r)   r   r$   r^   r_   )r`   r.   r   r#   ra   r   rb   r
   rc   rd   floordivr   r   r   r   	r   rg   rh   c3r    r!   rR   rW   c4r   r   r   test_floordiv  s@    
      
rs   c                 C   s:  | dddg}|d }t jD ]D}t|trt|tr6q|d}tt||| tt	tj|| qt
tfD ].}|d}tt||| tt	tj|| qjtfD ]0}|dd}tt||| tt	tj|| qt t t t t dgfD ]$}tt	tj|| tt	tj|| qtD ]}tt	tj||d qd S )Nr$   r)   r'   r=   r   )r   Z
ScalarType
issubclassr   boolr#   rd   truedivr
   rc   intfloatcomplexra   r`   dictrb   classes)r   r    r!   stypesptyper   r   r   test_truediv1  s*    


"r   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 rn   )r`   r.   r   r#   ra   r   rb   r
   rc   rd   modr   r   r   r   rp   r   r   r   test_modL  s,    
  
r   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 rn   )r`   r.   r   divmodr#   ra   r   rb   r
   rc   r   r   r   r   )r   rg   rh   rq   r    r!   rR   rW   rr   Zquoremr   r   r   test_divmodg  sP    















r   c                 C   sp   | j d d }| j}t|d |d d}t| j|||d }t|| t| | }t|| d S )Ng      ?r*   r   r$   r=   r+   )r   r   r   r-   sortrB   rootsr	   )r   r9   r:   tgtresr   r   r   
test_roots  s    
r   c                 C   s   |  d}t| d d S Nr=   )r>   r   rC   r   r;   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 r   )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'   r\   r$   k)Zlbndir^   )r   r5   integr#   r   )r   Pp0r    r!   r9   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 )Nr(   r*   r$   r)   r'   r+   r   )r   r.   r   r   r	   Zderivr   )r   r9   r:   r    r!   rR   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 )
Nr(   r*   r$   r)   r'   r+   r      r^   )r   r.   r   r   r-   r	   )r   r9   r:   r;   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}tdD ]}t|| | || }qP| dg}| dddg}tdD ]}t|| | || }qtttj|d tttj|d	 d S )
Nr(   r*   r$   r+   r)   r'   r=   g      ?rA   )	r   r.   r   ranger#   r
   
ValueErrorrd   pow)r   r9   r:   r   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$   r7   r)   r'   )r   r   r   r-   r5   r	   )r   r   r9   r3   r;   r   r   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'   r]   rA   r   )r
   r   Zcutdegr   rD   r   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'   r]   r   r\   )r
   r   truncater   rD   r   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)   gh㈵>)r   Ztrimr   )r   cr;   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	   Zmapparmsr?   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
   rc   re   )r   r;   r3   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 rN   r   )selfr3   r   r   r   rO   D  s    zTestInterpolate.fc                 C   s(   t ttj| jd t ttj| jd d S )NrA   g      $@)r
   r   r   interpolaterO   rc   )r   r   r   r   test_raisesG  s    zTestInterpolate.test_raisesc                 C   s.   t ddD ]}tt| j| |k q
d S )Nr$   r=   )r   r   r   r   rO   rC   )r   degr   r   r   test_dimensionsK  s    zTestInterpolate.test_dimensionsc                 C   sn   dd }t ddd}tddD ]H}td|d D ]4}tj||ddg|fd}t|||||dd	 q2q d S )
Nc                 S   s   | | S r   r   )r3   r;   r   r   r   powxQ  s    z0TestInterpolate.test_approximation.<locals>.powxr   r)   r%   r$   )r   rJ   r7   )decimal)r   r-   r   r   r   r	   )r   r   r3   r   tr;   r   r   r   test_approximationO  s    z"TestInterpolate.test_approximationN)r   
__module____qualname__rO   r   r   r   r   r   r   r   r   B  s   r   )r   )=__doc__operatorrd   numbersr   rG   numpyr   Znumpy.polynomialr   r   r   r   r   r   Znumpy.testingr	   r
   r   r   Znumpy.polynomial.polyutilsr   r{   ra   ZclassidsZfixturer   r.   r#   r1   r2   r4   r6   r<   r@   rF   rM   rS   rX   rY   ri   rk   rm   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sf        


	,-


