a
    kh                     @   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sVJ t| dd dkslJ t| dd dksJ d S )	N            r   r   r   r   r      )r
   r   X r#   Z/var/www/auris/lib/python3.9/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s8J ttdd td ksRJ tttdd | sjJ ttttd tsJ d S )Nr   Sumr   r   r   r   )Z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sDJ t| d |  d ksbJ t| t t| t d | t d g| t d | t d ggksJ 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s&J ||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svJ | | }| |  | ksJ 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mZdenomexpectedZdetr#   r#   r$   test_as_explicit_symbol&   s4    J4:4 ,r5   c                  C   s   t ddgddgg} t| d t tdks2J t| d | ksHJ t| d | d ksbJ t| d |  ks|J t| d |  d ksJ t dg} t| tj | tj ksJ d S )Nr   r   r   r   r   r.   )r
   r   r/   r   invr   r1   )r   r#   r#   r$   test_as_explicit_matrixI   s    
r8   c                  C   s~   t td ttksJ t td tks0J t td tjksHJ dtjtjtfD ] } t t|  t t| ksXJ qXd S )Nr   r   r.   r   )	r   r   doitr   r)   Ir   r1   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s2J t d  ksHJ t d  d ksbJ t d   ks|J t d   d ksJ tt dgtj t dgksJ 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.   r6   c                      s   t  d S Nr.   r   r9   r#   r!   r#   r$   <lambda>g       z"test_doit_matrix.<locals>.<lambda>c                      s   t  d S Nr6   r?   r#   r!   r#   r$   r@   h   rA   )	r
   r   r9   r   r7   r   r1   r   
ValueErrorr#   r#   r!   r$   test_doit_matrix]   s    $rD   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
 q6d S )Nr   r   r   )r   r   r   )r         r.   r   r   c                      s
   t  S Nr   r#   )r   r<   r#   r$   r@   o   rA   z test_nonsquare.<locals>.<lambda>c                      s
   t  S rG   rH   r#   )r   r<   r#   r$   r@   p   rA   )r	   r
   r   r1   r;   r)   r   r   r#   r#   )r   r   r<   r$   test_nonsquarek   s
    rI   c                  C   s@   t ddgddgg} t| t | t   kr6| ks<n J d S )Nr   r   )r
   r   r)   r9   r!   r#   r#   r$   test_doit_equals_pows   s    rJ   c                  C   st   t ddgddgg} t ddgddgg}tt| |d | | d ksLJ tt| |d | | d kspJ d S )Nr   r   r   r   rE   )r
   r   r   r9   r   )r"   Yr#   r#   r$   test_doit_nested_MatrixExprx   s    $rL   c                  C   s   t t} t| d | ksJ t| t | ks4J t| d | ksJJ t| d | ks`J t d}t|t |ks~J t|d |ksJ t|d |ksJ d S )Nr   r   r   r.   )r   r)   r   r9   )klr#   r#   r$   test_identity_power   s    rP   c                      s   t tt t d  ks J tt fdd t d ttksLJ t t  ksbJ tt fdd t ddtt ksJ ttfdd td ksJ td tdksJ ttfd	d d S )
Nr   c                      s   t  d S r>   r?   r#   z1r#   r$   r@      rA   z!test_zero_power.<locals>.<lambda>r   c                      s   t  d S rB   r?   r#   rQ   r#   r$   r@      rA   r   c                      s   t  d S )NrM   r?   r#   z2r#   r$   r@      rA   r   c                      s   t  d S r>   r?   r#   rS   r#   r$   r@      rA   )r   r)   r   r9   r   rC   r   r#   r#   )rR   rT   r$   test_zero_power   s    

rU   c                  C   s   t dd} | d tdksJ | d | ks.J | |  | d   krNd|  ksTn J | |  |  | d   krxd|  ks~n J t tt} | |  | d   krt|  ksn J t| td  |  | t   krttd  |  ksn J d S )Nr   r   r   r   	   )r   r   r)   r   )or#   r#   r$   test_OneMatrix_power   s    
&*
&rX   c                  C   st  ddl m}  tt jd tt d j  kr@tjtj d ksFn J tt jd jtt d ksfJ tjjjd td ksJ tjt jt ttt  ksJ tjt	j d jt	t d ksJ t	t jd jd t	t d ksJ | | td td  d 
 td td  d ks J tt d	 jd	 tt d
 jksFJ tt t jt jtt tt  kspJ d S )Nr   )	TransposerE   r    i#   r   r      )Z$sympy.matrices.expressions.transposerY   r   r   r0   r:   rO   rN   r   r   r9   )ZTPr#   r#   r$   test_transpose_power   s    :  "$:&r]   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svJ tt td ttksJ tt td t tksJ tt td ttdksJ tt td tksJ d S )Nr   r   r   r6   r.   )r   r   r   r9   r   r)   r#   r#   r#   r$   test_Inverse   s      r^   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sHJ 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sJ d S )Nr   r   r   rF   r6   rM   r.   r   rE   x   )r   r   r)   r#   r#   r#   r$   test_combine_powers   s    "r`   c                   C   sz   t ttdsJ t ttds J t tttds4J t tttddsJJ t tttdds`J t tttddsvJ d S )Nr   r   r.   )r   r   r   r   r#   r#   r#   r$   test_unchanged   s    ra   c                   C   s   t tdd  d S )Nc                   S   s   ddt   S )Nr   r6   )r   r#   r#   r#   r$   r@      rA   z(test_no_exponentiation.<locals>.<lambda>)r   NotImplementedErrorr#   r#   r#   r$   test_no_exponentiation   s    rc   N)6Z(sympy.functions.elementary.miscellaneousr   Zsympy.simplify.powsimpr   Zsympy.testing.pytestr   Zsympy.core.exprr   Z
sympy.corer   r   Zsympy.matricesr   r	   r
   r   r   r   Zsympy.matrices.exceptionsr   Zsympy.matrices.expressionsr   r   r   Z"sympy.matrices.expressions.inverser   Z"sympy.matrices.expressions.matexprr   r)   r3   rO   rN   r   r   r   r   r   r%   r*   r5   r8   r=   rD   rI   rJ   rL   rP   rU   rX   r]   r^   r`   ra   rc   r#   r#   r#   r$   <module>   s@    		#		