o
    g                     @   st  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	m
Z
 d dlmZmZmZmZmZmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ e	ddd\ZZZZedeeZ edeeZ!edeeZ"edeeZ#edee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/d0 Z3d1d2 Z4d3d4 Z5d5S )6    )sqrt)powsimp)raises)	unchanged)symbolsS)IdentityMatrixSymbolImmutableMatrix
ZeroMatrix	OneMatrixMatrix)NonSquareMatrixError)MatPowMatAddMatMul)Inverse)MatrixElementzn m l kT)integerABCDEc                  C   s   t ddgddgg} t| dd dksJ t| dd dks J t| dd dks+J t| dd dks6J t| dd dksAJ d S )	N            r   r   r   r   r      )r
   r   X r#   c/var/www/visachat/venv/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_matpow.pytest_entry_matrix   s   r%   c                  C   s   ddl m}  ttdd dksJ ttdd dksJ ttdd td ks)J tttdd | s5J ttttd tsAJ d S )Nr   Sumr   r   r   r   )sympy.concreter'   r   r   
isinstancenr   r&   r#   r#   r$   test_entry_symbol   s   r+   c            	      C   s  t ddd} t| d ttdksJ t| d |  ks"J t| d |  d ks1J t| t t| t d | t d g| t d | t d ggksTJ t d	d
d}t dd
d}t dd
d}|j| tj }| t	t
|d |d  |d |d   |d |d   ggksJ ||j| tj  }t
|d |d  |d |d   |d |d   }| t	|d | g|d | g|d | ggksJ ||j tj }t
|d |d  |d |d   |d |d   }||j  | }| |ksJ | d }| d | d  | d | d   }t	| d | d  g| d  | d gg| }| |ks9J | | }| |  | ksJJ d S )Nr"   r   r   r   r   r   )r   r   )r   r   ar   bc)r   r   )r	   r   as_explicitr
   r   r*   Tr   Halfr   r   )	r"   r,   r-   r.   exprmdenomexpecteddetr#   r#   r$   test_as_explicit_symbol&   s4   H484 ,r8   c                  C   s   t ddgddgg} t| d t tdksJ t| d | ks$J t| d | d ks1J t| d |  ks>J t| d |  d ksMJ t dg} t| tj | tj ksaJ d S )Nr   r   r   r   r   r/   )r
   r   r0   r   invr   r2   )r   r#   r#   r$   test_as_explicit_matrixI   s   
"r;   c                  C   s~   t td ttksJ t td tksJ t td tjks$J dtjtjtfD ]} t t|  t t| ks<J q,d S )Nr   r   r/   r   )	r   r   doitr   r*   Ir   r2   Pi)rr#   r#   r$   test_doit_symbolU   s   r@   c                      s   t ddgddgg t d t tdksJ t d  ks$J t d  d ks1J t d   ks>J t d   d ksMJ tt dgtj t dgks_J t ddgddgg tt fdd	 tt fd
d	 d S )Nr   r   r   r   r   r/   r9   c                         t  d S Nr/   r   r<   r#   r!   r#   r$   <lambda>g       z"test_doit_matrix.<locals>.<lambda>c                      rA   Nr9   rC   r#   r!   r#   r$   rD   h   rE   )	r
   r   r<   r   r:   r   r2   r   
ValueErrorr#   r#   r!   r$   test_doit_matrix]   s   $rH   c                      sh   t ddd tg dg dgddddtjtjtfD ]tt fd	d
 ttfdd
 qd S )Nr   r   r   )r   r   r   )r         r/   r   r   c                      
   t  S Nr   r#   )r   r?   r#   r$   rD   o      
 z test_nonsquare.<locals>.<lambda>c                      rK   rL   rM   r#   )r   r?   r#   r$   rD   p   rN   )r	   r
   r   r2   r>   r*   r   r   r#   r#   )r   r   r?   r$   test_nonsquarek   s   rO   c                  C   sB   t ddgddgg} t| t | t   kr| ksJ  J d S )Nr   r   )r
   r   r*   r<   r!   r#   r#   r$   test_doit_equals_pows   s   .rP   c                  C   st   t ddgddgg} t ddgddgg}tt| |d | | d ks&J tt| |d | | d ks8J d S )Nr   r   r   r   rI   )r
   r   r   r<   r   )r"   Yr#   r#   r$   test_doit_nested_MatrixExprx   s   $(rR   c                  C   s   t t} t| d | ksJ t| t | ksJ t| d | ks%J t| d | ks0J t d}t|t |ks?J t|d |ksJJ t|d |ksUJ d S )Nr   r   r   r/   )r   r*   r   r<   )klr#   r#   r$   test_identity_power   s   rV   c                      s   t tt t d  ksJ tt fdd t d ttks&J t t  ks1J tt fdd t ddtt ksJJ ttfdd td ks^J td tdkskJ ttfd	d d S )
Nr   c                      rA   rB   rC   r#   z1r#   r$   rD      rE   z!test_zero_power.<locals>.<lambda>r   c                      rA   rF   rC   r#   rW   r#   r$   rD      rE   r   c                      rA   )NrS   rC   r#   z2r#   r$   rD      rE   r   c                      rA   rB   rC   r#   rY   r#   r$   rD      rE   )r   r*   r   r<   r   rG   r   r#   r#   )rX   rZ   r$   test_zero_power   s   

r[   c                  C   s   t dd} | d tdksJ | d | ksJ | |  | d   kr(d|  ks+J  J | |  |  | d   kr>d|  ksAJ  J t tt} | |  | d   krWt|  ksZJ  J t| td  |  | t   kruttd  |  ksxJ  J d S )Nr   r   r   r   	   )r   r   r*   r   )or#   r#   r$   test_OneMatrix_power   s   
(,
(@r^   c                  C   sp  ddl m}  tt jd tt d j  kr!tjtj d ks$J  J tt jd jtt d ks4J tjjjd td ksAJ tjt jt ttt  ksQJ tjt	j d jt	t d ksbJ t	t jd jd t	t d kstJ | | td td  d 
 td td  d ksJ tt d	 jd	 tt d
 jksJ tt t jt jtt tt  ksJ d S )Nr   )	TransposerI   r    i#   r   r      )$sympy.matrices.expressions.transposer_   r   r   r1   r=   rU   rT   r   r   r<   )TPr#   r#   r$   test_transpose_power   s   <  "$8$,re   c                   C   s   t ttd ttksJ t ttd t tksJ t ttd ttdks.J t ttd tks;J tt td ttksJJ tt td t tksYJ tt td ttdksiJ tt td tksvJ d S )Nr   r   r   r9   r/   )r   r   r   r<   r   r*   r#   r#   r#   r$   test_Inverse   s     rf   c                   C   s   t d d t ks
J t d d tt dksJ t d d tt dks$J t d d t ks.J t d d d d	 tt d
ks?J t t t t td  ksMJ d S )Nr   r   r   rJ   r9   rS   r/   r   rI   x   )r   r   r*   r#   r#   r#   r$   test_combine_powers   s   " rh   c                   C   sz   t ttdsJ t ttdsJ t tttdsJ t tttdds%J t tttdds0J t tttdds;J d S )Nr   r   r/   )r   r   r   r   r#   r#   r#   r$   test_unchanged   s   ri   c                   C   s   t tdd  d S )Nc                   S   s   ddt   S )Nr   r9   )r   r#   r#   r#   r$   rD      s    z(test_no_exponentiation.<locals>.<lambda>)r   NotImplementedErrorr#   r#   r#   r$   test_no_exponentiation   s   rk   N)6(sympy.functions.elementary.miscellaneousr   sympy.simplify.powsimpr   sympy.testing.pytestr   sympy.core.exprr   
sympy.corer   r   sympy.matricesr   r	   r
   r   r   r   sympy.matrices.exceptionsr   sympy.matrices.expressionsr   r   r   "sympy.matrices.expressions.inverser   "sympy.matrices.expressions.matexprr   r*   r4   rU   rT   r   r   r   r   r   r%   r+   r8   r;   r@   rH   rO   rP   rR   rV   r[   r^   re   rf   rh   ri   rk   r#   r#   r#   r$   <module>   sB     		#		