U
    9%e'                     @   s  d dl mZ d dlmZ edZer<ejejej  ZZZndZd dl	m
Z
mZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lZd d
lZd dlmZmZmZ d dlm Z  d dl!m"Z" d dl#m$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& Z0d'd( Z1d)d* Z2d+d, Z3d-d. Z4e d/d0 Z5d1d2 Z6d3d4 Z7d5d6 Z8d7d8 Z9d9d: Z:d;d< Z;d
S )=    )version_tuple)import_modulenumpyT)FloatIntegerRational)Symbolsymbols)sin)Matrix
list2numpymatrix2numpysymarray)lambdifyN)xyz)conserve_mpmath_dps)ignore_warnings)raisesc                  C   s   dd } t d}t d}tddtd||t||| tdtd	g}td
gtdddgt||d tdgt|| t| dtdgg}|D ]}|D ]}| || qqd S )Nc                 S   sD   | | ||  | | ||  | | ||  | | ||  | | ||  g
}d S )N )Zsympy_objectZnumpy_array_r   r   ^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/external/tests/test_numpy.pys%   s    z test_systematic_basic.<locals>.sr   r         z1.3   g      @      )r   r   r   powr   arrayr
   )r   r   r   Z
sympy_objsZ
numpy_objsr   r   r   test_systematic_basic$   s&    
r"   c                  C   s   t d} t d}tdt| ks$tt| gt| gks<tttgttgksTtttttdksltt| t tdt kstt| ||g}|t| ||gk st|t| ddgk std S )Nr   r   r   )r   r!   AssertionErrorr   r   all)onezeroXr   r   r   test_basicsI   s    r(   c                  C   s   t d} t d}t| ||g}| | }ttdt dd g}|| }|tddtd  gksdt|d }|tddtd  gkst|| }|tdgkstd S )Nr   r   ar   )r   r!   r   r#   )r%   r&   r'   Yr   r   r   test_arraysW   s    r+   c                  C   sV   t td tg} t| tst| d td ks2t| d tksBtt| dksRtd S )Nr   r   r   )r   r   
isinstancendarrayr#   lenr)   r   r   r   test_conversion1e   s
    r0   c                  C   s   dt td tg } t dtd  dt g}| |k s<ttd}td}t |||g}|| }t tdtdd g}|| }|tddtd  gkst|d }|tddtd  gkst|| }|tdgkstd S )Nr   r   r   r)   )r   r   r$   r#   r   r   r!   )r)   br%   r&   r'   r*   r   r   r   test_conversion2o   s    r2   c                   C   s,   t td tgttd tgk s(td S )Nr   )r!   r   r   r$   r#   r   r   r   r   test_list2numpy   s    r3   c                  C   s   t ttd gddt gg} t| tdtddgddggk sHtt tttd gddt gg} t| tdttddgddggk std S Nr   r      r   )r   r   r!   subsr$   r#   r
   mr   r   r   test_Matrix1   s    , r9   c               	   C   s   t ttd gddt gg} tt2 t| tdtddgddggk sRtW 5 Q R X t tttd gddt gg} tt6 t| tdttddgddggk stW 5 Q R X d S r4   )	r   r   r   PendingDeprecationWarningmatrixr6   r$   r#   r
   r7   r   r   r   test_Matrix2   s    
6 
r<   c                  C   s   t ddgddgg} t| tddgddggks4tt| tddgddggksTtt tddgddgg} t| ttddgddggkstt| ttddgddggkstd S Nr   r5   r   r   r   )r!   r   r#   r
   r/   r   r   r   test_Matrix3   s      $r>   c               	   C   s   t t tddgddgg} W 5 Q R X t| tddgddggksHtt| tddgddggkshtt t ttddgddgg} W 5 Q R X t| ttddgddggkstt| ttddgddggkstd S r=   )r   r:   r;   r   r#   r
   r/   r   r   r   test_Matrix4   s    
  
"$r?   c               	   C   s  t dddgtttgdt dtt gg} tt* tdddgtddgtttd gg}W 5 Q R X | | t dddgdt td td gdt t td	 tt td  ggkst||  t dddgdt td td gdt t td	 tt td  ggkst| | | |kstd S )
Nr   r   r   ir5   r         2   )	r   r   r   r   r   r:   r;   r#   add)Mr8   r   r   r   test_Matrix_sum   s    (
.PRrE   c               
   C   sr  t dddgtttgg} tt$ tddgtdgttd gg}W 5 Q R X | | t ddt  ddtd   gdt tt  td  dt dt  ttd   ggkst||  t ddt  ddt  ddt  gdt dt dt  d	t gtttd   dt ttd   dt ttd   ggks0ttdg}|d
 |  d|  ksTt| |d
  d|  ksntd S )Nr   r   r   r5   r@   r      rA   	   r   )	r   r   r   r   r:   r;   r   r#   r!   )rD   r8   r)   r   r   r   test_Matrix_mul   s    
(2 4
rH   c                  C   sD   G dd d} |  }t |t dddgdddgd	d
dggks@td S )Nc                   @   s   e Zd Zdd ZdS )z#test_Matrix_array.<locals>.matarrayc                 S   s,   ddl m} |dddgdddgd	d
dggS )Nr   )r!   r   r   r   r5   r   r@   rA   r   rG   )r   r!   )selfr!   r   r   r   	__array__   s    z-test_Matrix_array.<locals>.matarray.__array__N)__name__
__module____qualname__rJ   r   r   r   r   matarray   s   rN   r   r   r   r5   r   r@   rA   r   rG   )r   r#   )rN   Zmatarrr   r   r   test_Matrix_array   s    rO   c                  C   s   t tdtd gdtt dgg} t| ts2t| jdks@t| d dksPt| d td ksdt| d dtt ks|t| d	 dkstd S )
Nr   r   r   r   )r   r   r   r   )r   r   )r   r   )r   r   )r   r   r   r
   r,   r-   r#   shaper/   r   r   r   test_matrix2numpy   s    $rR   c                  C   s   t ddttgtd ttddgg} tddttgtd ttddgg}t| |k s`tt| jt	dksxttt ddgddggdd}tt ddgddggdd}|jt	dkst|jt	dkstd S )	Nr   r   object
      Zint8dtypeZfloat64)
r   r
   r   r   r!   r   r$   r#   rW   r   )r)   r1   cdr   r   r   test_matrix2numpy_conversion   s    &&rZ   c                   C   s   t ddtdt dg ttdgk s.tt ddtdt dg tdt t dd t ddgk spttdtdt dg ttdt dgk sttdtdt dg tdt td tdgk std S )Nr   r   r   z0.5z1.0)r   r!   r   r$   r#   r   r   r   r   r   test_issue_3728   s    .

4
r[   c               	   C   s   dt j_t d} ttttd}d}| |d|    k rD|k sJn ttt	j
tdkrztt |t W 5 Q R X ntt |t W 5 Q R X d S )NrF   z0.198669330795061215459412627r   gV瞯<g?z1.17)mpmathmpZdpsZmpfr   r   r
   r#   r   r   __version__r   	TypeErrorAttributeError)Zsin02fprecr   r   r   test_lambdify   s    
$

rc   c                  C   sR   t tttdt gddggdtjidg} | dtddgddggk sNtd S )Nr   r   ImmutableMatrixr   )r   r   r   r   r!   r$   r#   )ra   r   r   r   test_lambdify_matrix   s    *re   c                  C   s   t td tt tt gtt td tt gtt tt td gg} ttttf| dtjidg}d\}}}t|d || || g|| |d || g|| || |d gg}||||}t||st	d S )Nr   rd   r   )      ?       @      @)
sympyr   r   r   r   r   r   r!   allcloser#   )rD   ra   xhZyhzhexpectedactualr   r   r    test_lambdify_matrix_multi_input  s    
ro   c                  C   sL  t d} t| d d | d | d  | d | d  g| d | d  | d d | d | d  g| d | d  | d | d  | d d gg}t| |dtjidg}tddd	g}t|d d |d |d  |d |d  g|d |d  |d d |d |d  g|d |d  |d |d  |d d gg}||}t||sHtd S )
Nr'   r   r   r   rd   r   rf   rg   rh   )ri   ZDeferredVectorr   r   r   r!   rj   r#   )r'   rD   ra   ZXhrm   rn   r   r   r   test_lambdify_matrix_vec_input  s    
(((*((rp   c                  C   s>   ddl m}  |  D ]$\}}|tjks*t|tjkstqd S )Nr   )NUMPY_TRANSLATIONS)sympy.utilities.lambdifyrq   itemsri   __dict__r#   r   )rq   symmatr   r   r   test_lambdify_transl"  s    rw   c                  C   sD  ddl } ddlm} td}tdd}tdd}||| j|td |d |d ksZttdd}tdd}|d |d krttd	}||| j|td tdd
}|j	d
ksttd\}	}
|d |	kst|d |
ksttdd}|j	dksttd\}}}|d |kst|d |ks.t|d |ks@tdS )z/Test creation of numpy arrays of SymPy symbols.r   Nz_0,_1,_2 r   rV   r)   r1   za_0,a_1,a_2)r   r   za_0_0,a_1_2rP   )r   r   )r   r   r   za_0_0_0,a_1_2_0,a_1_2_1)r   r   r   )r   r   r   )r   r   r   )
r   Znumpy.testingtestingr	   r   Zassert_array_equalr!   rS   r#   rQ   )npZnptZsymss1s2r)   r1   ZasymsZa2dZa00Za12Za3dZa000Za120Za121r   r   r   test_symarray)  s.    





r}   c                   C   s<   t tdddgt tdtdtdgk s8td S )Nr   r   r   )r   Z	vectorizer
   r!   r$   r#   r   r   r   r   test_vectorizeK  s    r~   )<Zsympy.external.importtoolsr   Zsympy.externalr   r   r!   r;   r-   disabledZsympy.core.numbersr   r   r   Zsympy.core.symbolr   r	   Z(sympy.functions.elementary.trigonometricr
   Zsympy.matrices.denser   r   r   r   rr   r   ri   r\   Z	sympy.abcr   r   r   Zsympy.utilities.decoratorr   Zsympy.utilities.exceptionsr   Zsympy.testing.pytestr   r"   r(   r+   r0   r2   r3   r9   r<   r>   r?   rE   rH   rO   rR   rZ   r[   rc   re   ro   rp   rw   r}   r~   r   r   r   r   <module>   sP   %
				
	
"