U
    9%eX                     @   s  d dl mZ d dlmZmZmZ d dlmZ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 d d	lmZ d d
lmZmZ d dlmZ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&e#dd Z'dd Z(edd Z)dd Z*dd Z+dd Z,dd  Z-e#d!d" Z.d#d$ Z/d%d& Z0d'd( Z1d)d* Z2d+d, Z3d-d. Z4d/d0 Z5d1d2 Z6d3d4 Z7d5d6 Z8d7d8 Z9d9S ):    )N)FloatIRational)Symbolsymbols)Abs)exp)sqrt)cossin)eyeMatrix)S)raisesXFAIL)NonSquareMatrixErrorMatrixError)DFTsimplify)ImmutableMatrix)slow)allclosec                     s:  t } td}|jddtjdiks(t|jdddddgksBt| ddtdddgtdddgtdddggfgks~t| ddtdddggtdddggtdddgggfgksttdddgdddgdddgg}| dtj dtj dtj	diks
t| ddtdddggfddtdddggfddt| dd| dddggfgksdt| ddtd	ddgggfddtdddgggfddtdddgggfgkstt
d
}t|dgddgg}| |dtjdiksttddgddgg}| ddtddddggfgks,t| ddtddgggfgksRttdddgdddgdddgg}| dd}dd| dd  }| dd}| ddd| d  }| ddd| d  }dd  ||d  dtdd||d    ||d  |  d||d    dd||d    | dggfddtdd	dggf||d  dtdd||d    ||d  |  d||d    dd||d    | dggfg fddttD }|  fddttD }t|t|kstt
ddd}	tt|	t|	 gt |	 t|	gg}| ddtt |	 t|	 gdgggfdt|	 dtt|	 t|	 gdgggfgkst| ddtt|	 t|	 dgggfdt|	 dtt |	 t|	 dgggfgksttdddddddddddg	}|jdd|_tdd  |jd d d D dks>t|jdd|_td!d  |jd d d D dksvttt dddgddgg}| t ddtd"d  dttd" d t dd gdgggft ddtd"d  dtt d#dtd"d  gdgggfgksttg  i ks.ttg jddg ksHttg  g ks^tttd$d%  ttd&d%  ttd'd%  ttd(d%  ttd)d%  ttd*d%  tddgddgg}
t|
jddd+tstt|
jddd+tstt|
jd,d% dd+tstt|
jd-d% dd+ts6td S ).N   FmultipleT   r      a               	      !      c                 S   s   t t| |S N)strr   )en r/   ^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/matrices/tests/test_eigen.pyNSI   s    ztest_eigen.<locals>.NS      c                    sL   g | ]D} | d  d | d d fdd| d d  D fqS )r   r   r   c                    s   g | ]} |d qS r   r/   .0jr1   r/   r0   
<listcomp>S   s     )test_eigen.<locals>.<listcomp>.<listcomp>r/   r6   ir1   rr/   r0   r9   R   s    ztest_eigen.<locals>.<listcomp>c                    sL   g | ]D} | d  d | d d fdd| d d  D fqS )r   r   r   c                    s   g | ]} |d qS r4   r/   r5   r8   r/   r0   r9   V   s     r:   r/   r;   r=   r/   r0   r9   U   s    epsrealr   c                 s   s   | ]}|j V  qd S r+   qr;   r/   r/   r0   	<genexpr>l   s     ztest_eigen.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r+   rC   r;   r/   r/   r0   rE   n   s     I   c                   S   s   t ddgddgddgg S )Nr   r   r   r"   r   	eigenvalsr/   r/   r/   r0   <lambda>|       ztest_eigen.<locals>.<lambda>c                   S   s   t ddgddgddgg S )Nr   r   r   r"   r#   r$   rH   r/   r/   r/   r0   rJ   ~   rK   c                   S   s   t dddgdddgg S )Nr   r   r   r   r#   r$   rH   r/   r/   r/   r0   rJ      rK   c                   S   s   t dddgdddgg S )Nr   r   r"   r#   rH   r/   r/   r/   r0   rJ      rK   c                   S   s    t dddgdddggjddS )	Nr   r   r   r   r#   r$   FZerror_when_incompleterH   r/   r/   r/   r0   rJ      s   c                   S   s    t dddgdddggjddS )Nr   r   r"   r#   FrL   rH   r/   r/   r/   r0   rJ      s   )r   r   c                 S   s   | S r+   r/   xr/   r/   r0   rJ      rK   c                 S   s   | S r+   r/   rM   r/   r/   r0   rJ      rK   )r   r   r   rI   r   OneAssertionError
eigenvectsleft_eigenvectsZeror   rangelensortedabsr   r   Z_eigenvectsmaxr
   r   r   
isinstancedictlist)RMr!   bcdr-   r1r2r?   mr/   r=   r0   
test_eigen   s    

* 

(& 

@ @ 

$*
 *
**<:rd   c                  C   s   ddl m}  tddd}tdt| dgt|ddgdddgg}| |jdd	| |jdd	ksft| |jd
d d	| |jdd	kstd S )Nr   )	count_opsrD   TZpositiver    r   Fr   c                 S   s   | S r+   r/   rM   r/   r/   r0   rJ      rK   z!test_eigen_slow.<locals>.<lambda>)Zsympy.core.functionre   r   r   r	   rI   rP   )re   rD   rc   r/   r/   r0   test_eigen_slow   s    *rg   c                  C   s   t dddgdddgdddgg} tddtdd  tdd tdd tjg}| jddd	}t|}d
d |D }t|}t||D ]\}}t|| dk st	qd S )Nr   g333333?g?r#   r"   i     T)Zrationalr   c                 S   s   g | ]}|  qS r/   )Zevalfr6   rN   r/   r/   r0   r9      s     z(test_float_eigenvals.<locals>.<listcomp>g&.>)
r   r   r
   r   rS   rI   rV   ziprW   rP   )rc   ZevalsZn_evalsZs_evalsrN   yr/   r/   r0   test_float_eigenvals   s     rl   c                     sX   t dddddtg tt fdd  dr4ttt fdd  d\} }d S )Nr   r   r   c                      s
     dS NT)is_diagonalizabler/   rc   r/   r0   rJ      rK   z"test_eigen_vects.<locals>.<lambda>Tc                      s
     dS rm   diagonalizer/   ro   r/   r0   rJ      rK   )r   r   r   NotImplementedErrorrn   rP   r   rq   )PDr/   ro   r0   test_eigen_vects   s
    ru   c                     s>  t d\} }d dd t D } fddt D }t D ]}|| || |< q@t|}| }t| ksvtt D ]}|||  dks~tq~|jdd}t|t|kstt| d	d	gd|d	gd
d| gg}| }|| d
|dikst|jdd}t|dkst|| d
ks&t||dks:td S )Nzx y   c                 S   s   g | ]}t d | qS )zx%s)r   r;   r/   r/   r0   r9      s     z#test_issue_8240.<locals>.<listcomp>c                    s   g | ]}d d t  D qS )c                 S   s   g | ]}d qS )r   r/   r;   r/   r/   r0   r9      s     z.test_issue_8240.<locals>.<listcomp>.<listcomp>)rT   r5   r.   r/   r0   r9      s     r   Tr   r   r   r   )r   rT   r   rI   rU   rP   setcount)rN   rk   Zdiagonal_variablesr]   r<   rI   r/   rw   r0   test_issue_8240   s(     rz   c               
   C   s   t dddgdddgdddgg} |  dtj dtj dtjdiksHtt dddddgdddddgdddddgdddddgdddddgg}| std S )Nr   r   r   r   rG   )r   rI   r   rO   rS   rP   )r]   rc   r/   r/   r0   test_eigenvals   s    
(	r{   c                  C   sh   t dddgdddgdddgg} |  }|D ]6\}}}t|dksFt| |d  ||d  ks,tq,d S Nr   r   )r   rQ   rU   rP   r]   ZvecsvalZmultZvec_listr/   r/   r0   test_eigenvects   s    
r   c                  C   sh   t dddgdddgdddgg} |  }|D ]6\}}}t|dksFt|d |  ||d  ks,tq,d S r|   )r   rR   rU   rP   r}   r/   r/   r0   test_left_eigenvects   s    
r   c            %      C   s  t dddgdddgdddgg} |  | ks0t| jdd| ksDt|  | ksTt|  | | | fksjt| jdd| | | fkst|  | kstdd l}tdD ]}g }d}d}t|| D ]}|dd}||g }qt |||} t| }| \}	}
}|  \}}}|  }| }|	|
 | }|| | }|
  |  |  |  |  |  | jdd}| jdd\}}}|jdd}|jdd\}}}|| | }|| | }|  |  |  |  |  |  | |kst||kst||kst|
|ks"t| |ks0t||ks>t||ksLt||kstqtdD ]}g }d}t|| D ]4}|dd}|dd} || t	  }||g }q|t |||} t| }| \}	}
}|  \}}}|  }| }|	|
 | }|| | }|
  |  |  |  |  |  | jdd}| jdd\}}}|jdd}|jdd\}}}|| | }|| | }|  |  |  |  |  |  | |kst||kst||kst|
|kst| |kst||kst||ks t||ksbtqbt dd	tdd
} | 
dd } |  d |  kslt| jddd | jddkst|  \}!}"}#|!|" |# |  }$tt|$dk std S )Nr   r   F)upperr   i 6ei ʚ;   r&      c                 S   s   t | S r+   )r   )r<   r/   r/   r0   rJ   }  rK   z$test_bidiagonalize.<locals>.<lambda>g-q=)r   ZbidiagonalizerP   Zbidiagonal_decompositionrandomrT   randintr   r   r   Z	applyfuncrW   rX   )%r]   r   Z	real_testZtest_valuesrowcol_valuer   ZN1ZN2ZN3ZM1ZM2ZM3ZM0ZN0ZN4ZM4ZLM0ZLM1ZLM2ZLM3ZLN0ZLN1ZLN2ZLN3ZLN4ZLM4Zcomplex_testsizerA   compr!   r^   r_   diffr/   r/   r0   test_bidiagonalize   s    
"r   c                     s$  t ddddddg tt fdd   \} }| s>t|t t dgdtggks\tt ddddddg   \} }tdd	 | D sttd
d	 |  D st jdd\}}||kstt ddddgddddgddddgddddgg   \} }t	| |  |  s td S )Nr   r   r   r   c                      s    j ddS )NTZ
reals_onlyrp   r/   ro   r/   r0   rJ     rK   z"test_diagonalize.<locals>.<lambda>g      ?c                 s   s   | ]}t |tV  qd S r+   rY   r   r6   r-   r/   r/   r0   rE     s     z#test_diagonalize.<locals>.<genexpr>c                 s   s   | ]}t |tV  qd S r+   r   r   r/   r/   r0   rE     s     Tr   gMb`?)
r   r   r   rq   Zis_diagonalrP   r   allvaluesr   )rs   rt   r   ZD2r/   ro   r0   test_diagonalize  s&    *r   c                  C   s   t d\} }}tdd| |||g}| s.t| s:ttddddddg rVttddddddg}| svt|jddrtd S )Nza b cr   r   r   r   Tr   )r   r   Zis_symmetricrP   rn   )r!   r^   r_   rc   r/   r/   r0   test_is_diagonalizable  s    r   c                     s   t ddddddddg tt fdd t d	d	ddd
d
d
ddd
d
d
dd
d
d
d
dg   \} } |ksntt d	d	ddd
d
d
dd
d
d
d
ddd
d
d
dg   \} } |kstt dd	dd
gddd
dgd
d
dd	gd
d
ddgg}| \} }t| | |   |kstt dddg t dgt dgfks8tt dddgjddt dgks^tt dd
d
d
dgd
ddd
dgd
dd
dd
gd
d
dd
dgdd
d
dd
gg tt fdd t dddtd  gddtd  dgg   \} }t	dd | D stt	dd |D std S )Nr   r   rG   r   rh   
   c                      s      S r+   jordan_formr/   ro   r/   r0   rJ     rK   z"test_jordan_form.<locals>.<lambda>r"   r   rB   F)Zcalc_transformc                      s      S r+   r   r/   ro   r/   r0   rJ     rK   g      ?g      ?g      ?g      ?c                 s   s    | ]}t |tp|d kV  qdS r   Nr   ri   r/   r/   r0   rE     s     z#test_jordan_form.<locals>.<genexpr>c                 s   s    | ]}t |tp|d kV  qdS r   r   ri   r/   r/   r0   rE     s     )
r   r   r   r   rP   r   invr   r
   r   )rs   JAr/   ro   r0   test_jordan_form  sh                      


,&Dr   c                  C   sD  t ddd} tddt gddgg}| ddgks8ttd}| |d< d	|d
< | }t|d	dt| hksrttt| t	| gt	|  t| gg}dd | D }|t
jt
jgksttddgddgddgddgg}| ttdd tdtd gkst|j ttdd tdtd ddgks@td S )NrN   Tr@   r   r   r   r   )r   r   r#   )r   r   c                 S   s   g | ]}|  qS r/   )Ztrigsimp)r6   svr/   r/   r0   r9     s     z(test_singular_values.<locals>.<listcomp>r"      r(   )r   r   r   Zsingular_valuesrP   r   rx   r   r   r   r   rO   r
   T)rN   r   valsr/   r/   r0   test_singular_values  s.    &
"r   c                   C   s0   t dddgdddgdddggi kdks,td S )Nr   r   F)r   rP   r/   r/   r/   r0   test___eq__  s    r   c                  C   sV  t dddgdddgdddgg} | jdks.t| jdks<t| jdksJt| jdksXt| jdksftt ddgddgg} | jdkst| jdkst| jdkst| jdkst| jdkstt dddgdddgdddgg} | jdkst| jdkst| jdkst| jdkst| jdks,tt ddgddgg} | jdksPt| jdks`t| jdkspt| jdkst| jdkstt dd	gdd
gg} | jdkst| jdkst| jdkst| jdkst| jdkstt ddt gt dgg} | jdkst| jdks.t| jdks>t| jdksNt| jdks^ttddd}tddd}t |ddgd|dgdd|gg} | jdkst| jdkst| jdkst| jdkst| jdkstt |ddgd|dgdd|gg} | jdkst| jdks&t| jdks6t| jdksFt| jdksVtt |dgd|gg} | jdkszt| jdkst| jdkst| jdkst| jdkstt ddddgddddgddddgddddgg} | jdkst| jdks
t| jdkstt dddgdddgdddgg} | jrFt| jrRtd S )Nr   r   r   TFr#   r"   r   r   r&   r!   rf   r^   )negativega~2^?g=6 0z?u?g1ڿ"gş}gEߡ?g֯mA?g)Ewc?g?g}uq?g!pb?)	r   Zis_positive_definiterP   is_positive_semidefiniteZis_negative_definiteZis_negative_semidefiniteZis_indefiniter   r   )rc   r!   r^   r/   r/   r0   test_definite  s            
r   c                  C   s  ddl m}  tdddgdddgdddgg}| |dks<ttdddgdddt gddt dgg}| |dkstttdddgdddgddd	gg}| |dksttddgddgg}| |dksttd
ddgdddgdddgg}| |dksttdddgdddgdddgg}| |dks*ttd
ddgddd	gdd	dgg}| |dks\ttddd	gdddgd	ddgg}| |dkstd S )Nr   )"_is_positive_semidefinite_choleskyTr#   r   Fr   r   r"   r    r'      rG   r   r   r$   )Zsympy.matrices.eigenr   r   rP   r   )r   rc   r/   r/   r0   #test_positive_semidefinite_cholesky^  s"     (     r   c               
   C   sT   t dddddgdddddgddddd	gd
ddddgdddddgg} |  sPtd S )Nr#   rG   r   ir    r   r   r   r%   r   r   r'   r"   r   irB   )r   rQ   rP   )r   r/   r/   r0   test_issue_20582u  s    	r   c                  C   s  t d} tddddgddddgddddgddddgg}t | |   }|tddddgddddtd	  ddtd	  gddddgddddggtdt |  dddgdd
t |  ddgdd| d
t d td	t d   dgddd| td	 t d dt d   ggfkstd S )Ntr   r   r   r   r"   rB   r      rG   )r   r   r   r   r
   rP   )r   Hr   r/   r/   r0   test_issue_19210  s     0
"

&(r   c               
   C   s0  t d jdd} |  }|d ddtdtd gdgdgggfksLt|d ddtdtd gdgdgggfks|t|d t dtdgdgdgggfkstt d jdd} |  }|d ddtdgdgdgdgggfkst|d ddtdgdgdgdggtdgdgdgdgggfks2t|d t dtdgdgdgdgggfksbtt d	 jdd} |  }|d ddtdtd	 gdgdgdgdgggfkst|d ddttdd td	d  gdgdgdgdggttdd td	d  gdgdgdgdgggfks,td S )
Nr   T)complexr   r   r   r   r"   r#   )	r   Zas_explicitexpandrQ   r   r
   rP   r   r   )r   rQ   r/   r/   r0   test_issue_20275  s`     
 
 
 
 .  $ ..r   c                  C   s>   t ddd} tdddgd| dgdd| gg}|jd ks:td S )Nr^   T)Znonzeror   )r   r   r   rP   )r^   rc   r/   r/   r0   test_issue_20752  s     r   N):Zsympy.core.evalfr   Zsympy.core.numbersr   r   r   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr	   Z(sympy.functions.elementary.miscellaneousr
   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.matricesr   r   Zsympy.core.singletonr   Zsympy.testing.pytestr   r   Zsympy.matrices.matricesr   r   Z"sympy.matrices.expressions.fourierr   Zsympy.simplify.simplifyr   Zsympy.matrices.immutabler   r   Zsympy.testing.matricesr   rd   rg   rl   ru   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r/   r/   r0   <module>   sN   ~

	


 
0a0