o
    8VaQ%                     @   sp  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mZmZmZmZmZmZmZ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 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-ed*d+ Z.d,d- Z/d.d/ Z0d0d1 Z1d2d3 Z2d4d5 Z3d6d7 Z4dS )8    )version_tuple)import_modulenumpyT)RationalSymbol
list2numpymatrix2numpysinFloatMatrixlambdifysymarraysymbolsIntegerN)xyz)conserve_mpmath_dps)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   sT   | |  ||   | |  ||   | |  ||   | |  ||   | |  ||   d S )N )Zsympy_objectZnumpy_arrayr   r   A/usr/lib/python3/dist-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_basicsE   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_arraysS   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_conversion1a   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_conversion2k   s   r/   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   ,r0   c                  C      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      , 4r7   c                  C   r1   r2   )r   r   matrixr4   r!   r	   r5   r   r   r   test_Matrix2   r8   r:   c                  C      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   r3   r   r   r   )r   r   r	   r,   r   r   r   test_Matrix3        $(r=   c                  C   r;   r<   )r9   r   r	   r,   r   r   r   test_Matrix4   r>   r?   c               	   C   s   t g dtttgdt dtt gg} tg dtddgtttd gg}| | t g ddt td td gdt t td tt td  ggksKJ ||  t g ddt td td gdt t td tt td  ggksrJ | | | |ks}J d S )	Nr   r   r   r   i)r   r   r3   r      )r   r      2   )r   r   r   r   r9   add)Mr6   r   r   r   test_Matrix_sum   s
   &"NNrF   c               
   C   sV  t g dtttgg} tddgtdgttd gg}| | 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sJJ ||  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   r3   rA   r      r   rB   	   r   )r   r   r   r9   r   r   )rE   r6   r&   r   r   r   test_Matrix_mul   s   2 4
rI   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dd ZdS )z#test_Matrix_array.<locals>.matarrayc                 S   s&   ddl m} |g dg dg dgS )Nr   )r   r@   r3   r   rA   rB   r   rH   )r   r   )selfr   r   r   r   	__array__   s   z-test_Matrix_array.<locals>.matarray.__array__N)__name__
__module____qualname__rM   r   r   r   r   matarray   s    rQ   r@   rJ   rK   )r   )rQ   Zmatarrr   r   r   test_Matrix_array   s   *rR   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   $rU   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   object
      Zint8dtypeZfloat64)	r   r	   r   r   r   r   r!   rZ   r   )r&   r.   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 )NrG   z0.198669330795061215459412627r   gV瞯<g?z1.17)mpmathZmpZdpsZmpfr   r   r	   r   r   __version__r   	TypeErrorAttributeError)Zsin02fZprecr   r   r   test_lambdify   s   
&

"

"rd   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!   )rc   r   r   r   test_lambdify_matrix   s   *(rf   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   re   r   g      ?g       @g      @)	sympyr   r   r   r   r   r   r   allclose)rE   rc   xhZyhzhexpectedactualr   r   r    test_lambdify_matrix_multi_input   s   
rn   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   re   r   rg   )rh   ZDeferredVectorr   r   r   r   ri   )r$   rE   rc   ZXhrl   rm   r   r   r   test_lambdify_matrix_vec_input  s   
(((*((ro   c                  C   s>   ddl m}  |  D ]\}}|tjv sJ |tjv sJ q
d S )Nr   )NUMPY_TRANSLATIONS)Zsympy.utilities.lambdifyrp   itemsrh   __dict__r   )rp   ZsymZmatr   r   r   test_lambdify_transl  s
   rs   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   rY   r&   r.   za_0,a_1,a_2)r   r   za_0_0,a_1_2rS   )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   rV   rT   )ZnpZnptZsymss1s2r&   r.   ZasymsZa2dZa00Za12Za3dZa000Za120Za121r   r   r   test_symarray  s.   





rw   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_vectorizeA  s   
rx   )5Zsympy.external.importtoolsr   Zsympy.externalr   r   r   r9   r*   Zdisabledrh   r   r   r   r   r	   r
   r   r   r   r   r   r_   Z	sympy.abcr   r   r   Zsympy.utilities.decoratorr   Zsympy.testing.pytestr   r    r%   r(   r-   r/   r0   r7   r:   r=   r?   rF   rI   rR   rU   r]   r^   rd   rf   rn   ro   rs   rw   rx   r   r   r   r   <module>   sH   4%
			
	
"