o
    GZh3(                     @   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 ]}| || qLqHd S )Nc                 S   sD   | | ||  | | ||  | | ||  | | ||  | | ||  g
}d S )N )Zsympy_objectZnumpy_array_r   r   N/var/www/auris/lib/python3.10/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s*J ttttdks6J t| t tdt ksDJ t| ||g}|t| ||gk sXJ |t| ddgk seJ 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s2J |d }|tddtd  gksEJ || }|tdgksRJ 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sJ | d tks!J t| dks)J 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sPJ |d }|tddtd  gkscJ || }|tdgkspJ 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 s$J t tttd gddt gg} t| tdttddgddggk sLJ d S Nr   r      r   )r   r   r!   subsr#   r
   mr   r   r   test_Matrix1   s   , 4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 s)J W d    n1 s3w   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 seJ W d    d S 1 spw   Y  d S r3   )r   r   r   PendingDeprecationWarningmatrixr5   r#   r
   r6   r   r   r   test_Matrix2   s   
. 
2"r;   c                  C   s   t ddgddgg} 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ddgddgg} t| ttddgddggksHJ t| ttddgddggksZJ 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 sw   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 sYw   Y  t| ttddgddggkspJ t| ttddgddggksJ d S r<   )r   r9   r:   r   r
   r.   r   r   r   test_Matrix4   s   
  
$(r>   c               	   C   s&  t g dtttgdt dtt gg} tt tg dtddgtttd gg}W d    n1 s3w   Y  | | t g ddt td td gdt t td tt td  ggks_J ||  t g ddt td td gdt t td tt td  ggksJ | | | |ksJ 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N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 s)w   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s^J ||  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sJ tdg}|d
 |  d|  ksJ | |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sJ | jdks J | d dks(J | d td ks2J | d dtt ks>J | d	 dksFJ 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 s0J t| jtdks<J 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sbJ |jtdkslJ d S )	Nr   r   rS   
      Zint8rM   Z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 s8J tdtdt dg ttdt dgk sRJ tdtdt dg tdt td tdgk spJ 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 r#|k s&J  J ttj	tdkrJt
t |t W d    d S 1 sCw   Y  d S t
t |t W d    d S 1 s^w   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   
&

"

"rf   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 s'J d S )Nr   r   ImmutableMatrixr   )r   r   r   r   r!   r#   )rd   r   r   r   test_lambdify_matrix  s   *(rh   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||sfJ d S )Nr   rg   r   g      ?g       @g      @)	sympyr   r   r   r   r   r   r!   allclose)rD   rd   xhZyhzhexpectedactualr   r   r    test_lambdify_matrix_multi_input  s   
rp   c                  C   sH  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||sJ d S )Nr&   r   r   r   rg   r   ri   )rj   ZDeferredVectorr   r   r   r!   rk   )r&   rD   rd   ZXhrn   ro   r   r   r   test_lambdify_matrix_vec_input  s   
(((*((rq   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.lambdifyrr   itemsrj   __dict__r   )rr   symmatr   r   r   test_lambdify_transl$  s
   rx   c                  C   s>  ddl } ddlm} td}tdd}tdd}||| j|td |d |d ks-J tdd}tdd}|d |d krAJ td	}||| j|td tdd
}|jd
ks\J td\}	}
|d |	ksjJ |d |
ksrJ tdd}|jdks~J td\}}}|d |ksJ |d |ksJ |d |ksJ 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.testing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 sJ 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   rs   r   rj   r`   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_   rf   rh   rp   rq   rx   r~   r   r   r   r   r   <module>   sR   %
			
	
"