U
    9%e                     @   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*tt| dd dks@tt| dd dksVtt| dd dksltt| dd dkstd S )	N            r   r   r   r   r      )r
   r   AssertionErrorX r$   k/var/www/html/Darija-Ai-API/env/lib/python3.8/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"tttdd dks8tttdd td ksRttttdd | sjtttttd tstd S )Nr   Sumr   r   r   r   )Zsympy.concreter(   r   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*tt| d |  ksDtt| d |  d ksbtt| t t| t d | t d g| t d | t d ggkst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&t||j| tj	  }t|d |d  |d |d   |d |d   }| t
|d | g|d | g|d | ggkst||j tj	 }t|d |d  |d |d   |d |d   }||j  | }| |kst| d }| d | d  | d | d   }t
| d | d  g| d  | d gg| }| |ksvt| | }| |  | kstd S )Nr#   r   r   r   r   r   )r   r   )r   r   ar   bc)r   r   )r	   r   as_explicitr
   r   r!   r*   Tr   Halfr   r   )	r#   r,   r-   r.   exprmdenomexpectedZdetr$   r$   r%   test_as_explicit_symbol&   s4    J4:4 ,r7   c                  C   s   t ddgddgg} t| d t tdks2tt| d | ksHtt| d | d ksbtt| d |  ks|tt| d |  d kstt dg} t| tj | tj kstd S )Nr   r   r   r   r   r/   )r
   r   r0   r   r!   invr   r2   )r   r$   r$   r%   test_as_explicit_matrixI   s    
r:   c                  C   s~   t td ttkstt td tks0tt td tjksHtdtjtj	tfD ] } t t|  t t| ksXtqXd S )Nr   r   r/   r   )
r   r   doitr   r*   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s2tt d  ksHtt d  d ksbtt d   ks|tt d   d ksttt dgtj t dgkst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/   r8   c                      s   t  d S Nr/   r   r;   r$   r"   r$   r%   <lambda>g       z"test_doit_matrix.<locals>.<lambda>c                      s   t  d S Nr8   rA   r$   r"   r$   r%   rB   h   rC   )
r
   r   r;   r   r!   r9   r   r2   r   
ValueErrorr$   r$   r"   r%   test_doit_matrix]   s    $rF   c                      sl   t ddd tdddgdddg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   c                      s
   t  S Nr   r$   )r   r>   r$   r%   rB   o   rC   z test_nonsquare.<locals>.<lambda>c                      s
   t  S rI   rJ   r$   )r   r>   r$   r%   rB   p   rC   )r	   r
   r   r2   r=   r*   r   r   r$   r$   )r   r   r>   r%   test_nonsquarek   s
    rK   c                  C   s@   t ddgddgg} t| t | t   kr6| ks<n td S )Nr   r   )r
   r   r*   r;   r!   r"   r$   r$   r%   test_doit_equals_pows   s    rL   c                  C   st   t ddgddgg} t ddgddgg}tt| |d | | d ksLttt| |d | | d ksptd S )Nr   r   r   r   rG   )r
   r   r   r;   r!   r   )r#   Yr$   r$   r%   test_doit_nested_MatrixExprx   s    $rN   c                  C   s   t t} t| d | kstt| t | ks4tt| d | ksJtt| d | ks`tt d}t|t |ks~tt|d |kstt|d |kstd S )Nr   r   r   r/   )r   r*   r   r;   r!   )klr$   r$   r%   test_identity_power   s    rR   c                      s   t tt t d  ks ttt fdd t d ttksLtt t  ksbttt fdd t ddtt kstttfdd td ksttd tdkstttfd	d d S )
Nr   c                      s   t  d S r@   rA   r$   z1r$   r%   rB      rC   z!test_zero_power.<locals>.<lambda>r   c                      s   t  d S rD   rA   r$   rS   r$   r%   rB      rC   r   c                      s   t  d S )NrO   rA   r$   z2r$   r%   rB      rC   r   c                      s   t  d S r@   rA   r$   rU   r$   r%   rB      rC   )r   r*   r   r;   r!   r   rE   r   r$   r$   )rT   rV   r%   test_zero_power   s    

rW   c                  C   s   t dd} | d tdkst| d | ks.t| |  | d   krNd|  ksTn t| |  |  | d   krxd|  ks~n tt tt} | |  | d   krt|  ksn tt| td  |  | t   krttd  |  ksn td S )Nr   r   r   r   	   )r   r   r!   r*   r   )or$   r$   r%   test_OneMatrix_power   s    
&*
&rZ   c                  C   st  ddl m}  tt jd tt d j  kr@tjtj d ksFn ttt jd jtt d ksfttjjjd td ksttjt jt ttt  kstt	jt
j d jt
t	 d kstt
t	 jd jd t
t	 d kst| | td td  d  td td  d ks ttt d	 jd	 tt d
 jksFttt t jt jtt tt  ksptd S )Nr   )	TransposerG   r    i#   r   r      )Z$sympy.matrices.expressions.transposer[   r   r   r1   r!   r<   rQ   rP   r   r   r;   )ZTPr$   r$   r%   test_transpose_power   s    :  "$:&r_   c                   C   s   t ttd ttkstt ttd t tks<tt ttd ttdks\tt ttd tksvttt td ttksttt td t tksttt td ttdksttt td tkstd S )Nr   r   r   r8   r/   )r   r   r   r;   r   r*   r!   r$   r$   r$   r%   test_Inverse   s      r`   c                   C   s   t d d t kstt d d tt dks.tt d d tt dksHtt d d t ks\tt d d d d	 tt d
ks~tt t t t td  kstd S )Nr   r   r   rH   r8   rO   r/   r   rG   x   )r   r!   r   r*   r$   r$   r$   r%   test_combine_powers   s    "rb   c                   C   sz   t ttdstt ttds tt tttds4tt tttddsJtt tttdds`tt tttddsvtd S )Nr   r   r/   )r   r   r   r!   r   r$   r$   r$   r%   test_unchanged   s    rc   c                   C   s   t tdd  d S )Nc                   S   s   ddt   S )Nr   r8   )r   r$   r$   r$   r%   rB      rC   z(test_no_exponentiation.<locals>.<lambda>)r   NotImplementedErrorr$   r$   r$   r%   test_no_exponentiation   s    re   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.commonr   Zsympy.matrices.expressionsr   r   r   Z"sympy.matrices.expressions.inverser   Z"sympy.matrices.expressions.matexprr   r*   r4   rQ   rP   r   r   r   r   r   r&   r+   r7   r:   r?   rF   rK   rL   rN   rR   rW   rZ   r_   r`   rb   rc   re   r$   r$   r$   r%   <module>   s@    		#		