o
    *ήc3                     @   s   d dl m Z  d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dl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# Zd$d% Z d&d' Z!d(d) Z"d*S )+    )copyMutableDenseNDimArray)diff)Rational)S)Symbol)sympify)SparseMatrix)Matrix)MutableSparseNDimArray)raisesc                     s  t dg t dksJ  d dksJ   dksJ tt fdd t tdg} t| dks5J | d tdks?J |  dksGJ d}t |}t||ksVJ |j|fks^J | dksfJ tt fdd t|}t||ks|J |j|fksJ |j	i ksJ | dksJ t t
d	d
td	ksJ jd
ksJ  dksJ ttfdd ttfdd ttfdd d
}tj| }t|j	dksJ t|d	ksJ j|ksJ  dksJ t g d}t|dksJ |jdks
J | dksJ | g dksJ d}tj| }t|dks.J |j|ks6J |d dks?J | dksHJ tdtdf}tj| }t|dks^J |j|ksfJ |tdtdf dksuJ | dks~J t t
dtdtdksJ jtdfksJ  dksJ ttfdd ddlm}	 t tfD ]3}
|
|	tdksJ jdksJ  dksJ d |	ksJ ttfdd qd S )N      r   c                          d S )Nr    r   arr_with_one_elementr   W/tmp/pip-target-vg8gfxp4/lib/python/sympy/tensor/array/tests/test_mutable_ndim_array.py<lambda>       z,test_ndim_array_initiation.<locals>.<lambda>x   c                      r   Nr   r   r   r   r   r   r       r   Q   )   r   r   r      c                      r   )N)r   r   r   r   r   r   n_dim_arrayr   r   r   ,   r   c                      r   )N)r   r   r   r   r   r   r   r   r   r   -   r   c                      r   )Nr   r   r   r   r   r   r   .   r   )   r   r   r   r   r   r   	   r   r   r   c                      s    t d S r   )intr   )vector_with_long_shaper   r   r   O   s    )r   r   c                      r   )Nr   r   r   )rank_zero_arrayr   r   r   X   r   )r   lenrankr   
ValueErrorr   zerosshaper   _sparse_arrayrangetolistr$   	sympy.abcr   )arr_with_symbol_elementnumber5vectorarray_shapesparse_arrayone_dim_arrayr+   array_with_many_argsarray_with_long_shaper   	ArrayTyper   )r   r   r&   r%   r   test_ndim_array_initiation   s   





r9   c                  C   sV   ddl m} m}m}m} t| |gd|| gg}t|}|jdks#J ||ks)J d S )Nr   )r   yztr   r   r   )r/   r   r:   r;   r<   r   r	   r+   )r   r:   r;   r<   arr	arr_otherr   r   r   test_sympifyZ   s
   r@   c                  C   sl   t tdd} | jdksJ |  dksJ | ddd} | jdks$J |  dks,J t| dks4J d S )N2   )rA   r   r   r   )r   r   r   r   )r   r-   r+   r(   reshaper'   arrayr   r   r   test_reshapeb   s   rE   c                  C   sn   t tdd} | d t ddgksJ | d t ddgksJ | d} d}| D ]}||ks0J |d7 }q(d S )Nr   r=   r   r   r   r   )r   r-   rB   )rD   jir   r   r   test_iteratorm   s   

rH   c                     s   t tfD ]n} | tdddd   g dg dg dgg dg d	g d
ggks-J  d | g dg dg dgks@J  d | g dksLJ d}tdD ]}tdD ]}tdD ]} |||f |kskJ |d7 }q^qXqRqtt fdd tt fdd tt fdd d S )N   r   r   r   )r   r   r   r   )r   r         )   r"   
      )            )            )         r   r   r#   r   c                      r   )Nr   r   r   r   r   rC   r   r   r      r   ztest_getitem.<locals>.<lambda>c                      r   )N)r   r   r   rJ   r   r   rC   r   r   r      r   c                      s    dddddf S )Nr   r   r   r   r   rC   r   r   r      s    )r   r   r-   rB   r.   r   r)   )r8   valuerG   rF   kr   rC   r   test_getitemy   s"   8&
r]   c                  C   s  t g dd} t| dksJ t| jdksJ |  ddgddggks&J t| ddgddggD ]\}}|t |ks=J q1d| d< t| jdksKJ | d dksSJ | d t tjtjgtjtjggdkshJ d| d< t| jdksuJ d| d	< t| jdksJ | d dksJ t d
d}t d
d}||ksJ d|d	< d|d	< ||ksJ |d t ddidksJ d| t ddidksJ |d t i dksJ d| t i dksJ |d t dt	ddidksJ | t ddidksJ d S )N)r   r   r   r   r=   r   r   r   {   r#   r   r   r   順 @ r   iA )r`   ra   )
r   r'   r,   r.   zipr   ComplexInfinityNaNr*   r   )r4   rG   rF   abr   r   r   test_sparse   s6   * rh   c                  C   s   t dgd d} t dgd d}| | }|D ]}|t g dks"J q|t dgd dks/J |tdgd dks;J ||  }|D ]}|tg dksMJ qA|t dgd dksZJ |tdgd dksfJ d S )Nr   r"   r!   )rM   rM   rM   rM   )rL   rL   rL   rL   )r   r   )rf   rg   crG   r   r   r   test_calculation   s   rj   c                  C   st  t g dd} |  }|ddgddggksJ |  }t|ts"J tt| D ]}| | | || ks7J q(|j| jks@J t || ksHJ t |	 | ksRJ t |
 | ks\J tg dd}| }|ddgddggkssJ | }t|ts~J tt|D ]}||| || ksJ q|j|jksJ t||ksJ t|	 |ksJ t|
 |ksJ d S )Nr   r   r   r   r=   r   r   r   r   )r   r.   tomatrix
isinstancer   r-   r'   _get_tuple_indexr+   as_immutable
as_mutabler   r
   )dense_arrayalistmatrixrG   r4   r   r   r   test_ndim_array_converting   s,   rt   c                  C   sz   g d} t d}t| d}t|tsJ | | ksJ t|}t|ts)J | | ks3J |j|jks;J d S )Nrk   )r   r   )r   r   r=   )r   r   rm   r.   r+   )arr_list
arr_matrixarr_ndim_arrayr   r   r   test_converting_functions   s   
ry   c                  C   s   g d} g d}g d}| |ksJ | |ksJ t | d}t |d}t |d}t | d}||ks2J d|d< ||ks<J ||ksBJ ||ksHJ d S )Nrk   )r   r   r   r   r=   r   r#   r   )
first_listsecond_list
third_listfirst_ndim_arraysecond_ndim_arraythird_ndim_arrayfourth_ndim_arrayr   r   r   test_equality   s   



r   c                  C   s  t dd tdD d} t dd tdD d}| | }||  }||ks&J | | }||  }||d ks6J | d }d|  }t| }|d9 }||  krQ|ksTJ  J | d }	t| }
|
d }
|	|
ksfJ |	d |	d	   kr|	d
   kr|	d   kr|	d   kr|	d   kr|	d   kr|	d   kr|	d   krtddksJ  J t| t|  krt|  krt|  krt|  krt|  krt|  krt|  krt|  krt|	ksJ  J |  }|t dd tdD dksJ d S )Nc                 S      g | ]}d qS r    r   .0rG   r   r   r   
<listcomp>      z#test_arithmetic.<locals>.<listcomp>r"   r!   c                 S   r   )rK   r   r   r   r   r   r     r   rb   r   r#   )r   r   )r   r   )r   r   r_   ru   )r   r   )r   r   r=   r   c                 S   r   )r   r   r   r   r   r   /  r   )r   r-   r   r   type)rf   rg   c1c2d1d2e1e2e3f1f2z0r   r   r   test_arithmetic  sN   >L&r   c                  C   s  t tddd} |  g dg dg dgg dg dg d	ggks$J | d
dks-J | ddks6J | ddks?J | ddksHJ t| dksPJ t g dg dg dgg dg dg d	gg}| |ksnJ t g dg dg dgg dg dg d	ggd}| |ksJ d S )NrM   "   r   r   r   )rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   )rY   r   rI      )            )          !   r   )r   r   r   r   )r   r   r   r   )r   r   r   rO   )r   r   r   zp[[[10, 11, 12, 13], [14, 15, 16, 17], [18, 19, 20, 21]], [[22, 23, 24, 25], [26, 27, 28, 29], [30, 31, 32, 33]]])r   r-   r.   rn   str)m3
m3_rebuiltm3_otherr   r   r   test_higher_dimenions2  s&   
02r   c                  C   s  t tddd} | d d  t tdddksJ | d d d d df  tg dg dgks1J | dddd d f  tg d	gksGJ | ddd
d d f  tg d	g dgks`J | d d d d d d f | ksqJ ttddd}|t| ksJ |d d  ttdddksJ |d d d d df  tg dg dgksJ |dddd d f  tg d	gksJ |ddd
d d f  tg d	g dgksJ |d d d d d d f |ksJ d S )NrM   r   r   r   )rM   rQ   rU   )rY   r   r   r   r   r   r   r   )r   r-   rl   r   r   )mdsdr   r   r   test_slicesL  s    2,2" 2,2&r   c                  C   s  t tddd} ttddd}| |fD ]p}| g dg dg dg dgks*J g d|d	d d f< | g dg dg dg dgksHJ d
d
g|d	dd f< | g dg dg dg dgksfJ ddg|dddf< | g dg dg dg dgksJ qd S )NrO   )r   r   )r+   )r   r   r   rZ   )rJ   rK   rL   )r"   rM   rN   )r   r   r   r   rL   r   )r   rL   rL   rW   ,   r   )r   rW   r   )rJ   r   rL   )r   r-   r   r.   )rf   rg   rG   r   r   r   test_slices_assign_  s   (((*r   c                  C   s   ddl m} m}m} t| |g| | | | | gg}|| tddg||| ggks-J t|| tddg||| ggks@J t|}|t| || | | | | gdksWJ || tddg||| ggksjJ t|| tddg||| ggks}J d S )Nr   )r   r:   r;   r   r=   )r/   r   r:   r;   r   r   r   )r   r:   r;   r   r   r   r   r   	test_diffm  s    &&&&*r   N)#r   #sympy.tensor.array.dense_ndim_arrayr   sympy.core.functionr   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   sympy.core.sympifyr	   sympy.matricesr
   r   $sympy.tensor.array.sparse_ndim_arrayr   sympy.testing.pytestr   r9   r@   rE   rH   r]   rh   rj   rt   ry   r   r   r   r   r   r   r   r   r   r   <module>   s4    K." 