a
    kh3(                     @   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g d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   M/var/www/auris/lib/python3.9/site-packages/sympy/external/tests/test_numpy.pys%   s    z test_systematic_basic.<locals>.sr   r         z1.3   g      @   )r      )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$J t| gt| gks<J ttgttgksTJ ttttdkslJ t| t tdt ksJ t| ||g}|t| ||gk sJ |t| ddgk sJ d S )Nr   r   r   )r   r!   r   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sdJ |d }|tddtd  gksJ || }|tdgksJ d S )Nr   r   ar   )r   r!   r   )r$   r%   r&   Yr   r   r   test_arraysW   s    r*   c                  C   sV   t td tg} t| tsJ | d td ks2J | d tksBJ t| dksRJ d S )Nr   r   r   )r   r   
isinstancendarraylenr(   r   r   r   test_conversion1e   s
    r/   c                  C   s   dt td tg } t dtd  dt g}| |k s<J td}td}t |||g}|| }t tdtdd g}|| }|tddtd  gksJ |d }|tddtd  gksJ || }|tdgksJ d S )Nr   r   r   r(   )r   r   r#   r   r   r!   )r(   br$   r%   r&   r)   r   r   r   test_conversion2o   s    r1   c                   C   s,   t td tgttd tgk s(J d S )Nr   )r!   r   r   r#   r   r   r   r   test_list2numpy   s    r2   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 sHJ t tttd gddt gg} t| tdttddgddggk sJ d S Nr   r      r   )r   r   r!   subsr#   r
   mr   r   r   test_Matrix1   s    , r8   c                  C   s   t ttd gddt gg} tt< t| tdtddgddggk sRJ W d    n1 sf0    Y  t tttd gddt gg} tt@ t| tdttddgddggk sJ W d    n1 s0    Y  d S r3   )r   r   r   PendingDeprecationWarningmatrixr5   r#   r
   r6   r   r   r   test_Matrix2   s    
J 
r;   c                  C   s   t ddgddgg} t| tddgddggks4J t| tddgddggksTJ t tddgddgg} t| ttddgddggksJ t| ttddgddggksJ d S Nr   r4   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 d    n1 s20    Y  t| tddgddggks\J t| tddgddggks|J t t( ttddgddgg} W d    n1 s0    Y  t| ttddgddggksJ t| ttddgddggksJ d S r<   )r   r9   r:   r   r
   r.   r   r   r   test_Matrix4   s    
2  
6$r>   c               	   C   s*  t g dtttgdt dtt gg} tt2 tg dtddgtttd gg}W d    n1 sf0    Y  | | t g ddt td td gdt t td tt td  ggksJ ||  t g ddt td td gdt t td tt td  ggksJ | | | |ks&J d S )	Nr   r   r   r   i)r   r   r4   r      )r   r      2   )r   r   r   r   r   r9   r:   add)Mr7   r   r   r   test_Matrix_sum   s    &
@NPrE   c               
   C   s  t g dtttgg} tt. tddgtdgttd gg}W d    n1 sR0    Y  | | 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sJ ||  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sBJ tdg}|d
 |  d|  ksfJ | |d
  d|  ksJ d S )Nr?   r   r4   r@   r      r   rA   	   r   )r   r   r   r   r9   r:   r   r!   )rD   r7   r(   r   r   r   test_Matrix_mul   s    
<2 4
rH   c                  C   s>   G dd d} |  }t |t g dg dg dgks:J d S )Nc                   @   s   e Zd ZedfddZdS )z#test_Matrix_array.<locals>.matarrayNc                 S   s:   |d ur|st dddlm} |g dg dg dgS )Nz=Cannot implement copy=False when converting Matrix to ndarrayr   )r!   r?   r4   r   r@   rA   r   rG   )	TypeErrorr   r!   )selfdtypecopyr!   r   r   r   	__array__   s    z-test_Matrix_array.<locals>.matarray.__array__)__name__
__module____qualname__objectrO   r   r   r   r   matarray   s   rT   r?   rI   rJ   )r   )rT   Zmatarrr   r   r   test_Matrix_array   s    rU   c                  C   s   t tdtd gdtt dgg} t| ts2J | jdks@J | d dksPJ | d td ksdJ | d dtt ks|J | d	 dksJ d S )
Nr   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    $rX   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`J t| jtdksxJ 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sJ |jtdksJ d S )	Nr   r   rS   
      Zint8rM   float64)	r   r
   r   r   r!   r   r#   rM   r   )r(   r0   cdr   r   r   test_matrix2numpy_conversion   s    &&r_   c                   C   s   t ddtdt dg ttdgk s.J t ddtdt dg tdt t dd t ddgk spJ tdtdt dg ttdt dgk sJ tdtdt dg tdt td tdgk sJ d S )Nr   r   r   z0.5z1.0)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 J ttj	tdkrt
t |t W d    q1 s0    Y  n0t
t |t W d    n1 s0    Y  d S )NrF   z0.198669330795061215459412627r   gV瞯<g?z1.17)mpmathmpZdpsZmpfr   r   r
   r   r   __version__r   rK   AttributeError)Zsin02fprecr   r   r   test_lambdify   s    
$
(
rg   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 sNJ d S )Nr   r   ImmutableMatrixr   )r   r   r   r   r!   r#   )re   r   r   r   test_lambdify_matrix  s    *ri   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||sJ d S )Nr   rh   r   g      ?g       @g      @)	sympyr   r   r   r   r   r   r!   allclose)rD   re   xhZyhzhexpectedactualr   r   r    test_lambdify_matrix_multi_input  s    
rq   c                  C   sJ  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g 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||sFJ d S )Nr&   r   r   r   rh   r   rj   )rk   ZDeferredVectorr   r   r   r!   rl   )r&   rD   re   ZXhro   rp   r   r   r   test_lambdify_matrix_vec_input  s    
(((*((rr   c                  C   s>   ddl m}  |  D ]$\}}|tjv s*J |tjv sJ qd S )Nr   )NUMPY_TRANSLATIONS)sympy.utilities.lambdifyrs   itemsrk   __dict__r   )rs   symmatr   r   r   test_lambdify_transl$  s    ry   c                  C   sD  ddl } ddlm} td}tdd}tdd}||| j|td |d |d ksZJ tdd}tdd}|d |d krJ td	}||| j|td tdd
}|jd
ksJ td\}	}
|d |	ksJ |d |
ksJ tdd}|jdksJ td\}}}|d |ksJ |d |ks.J |d |ks@J dS )z/Test creation of numpy arrays of SymPy symbols.r   Nz_0,_1,_2 r   r[   r(   r0   za_0,a_1,a_2)r   r   za_0_0,a_1_2rV   )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.testingZtestingr	   r   Zassert_array_equalr!   rS   rW   )npZnptZsymss1s2r(   r0   ZasymsZa2dZa00Za12Za3dZa000Za120Za121r   r   r   test_symarray+  s.    





r~   c                   C   s:   t tg dt tdtdtdgk s6J d S )Nr?   r   r   r   )r   Z	vectorizer
   r!   r#   r   r   r   r   test_vectorizeM  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   rt   r   rk   ra   Z	sympy.abcr   r   r   Zsympy.utilities.decoratorr   Zsympy.utilities.exceptionsr   Zsympy.testing.pytestr   r"   r'   r*   r/   r1   r2   r8   r;   r=   r>   rE   rH   rU   rX   r_   r`   rg   ri   rq   rr   ry   r~   r   r   r   r   r   <module>   sP   %
			
	
"