U
    L?hX                     @   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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$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# Z-d$d% Z.d&d' Z/d(d) Z0d*d+ Z1d,d- Z2d.d/ Z3d0d1 Z4d2d3 Z5d4d5 Z6d6d7 Z7d8S )9    )N)FloatIRational)Symbolsymbols)Abs)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.   Q/var/www/html/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_eigen.pyNSH   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r0   r.   r/   
<listcomp>R   s     )test_eigen.<locals>.<listcomp>.<listcomp>r.   r5   ir0   rr.   r/   r8   Q   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 r3   r.   r4   r7   r.   r/   r8   U   s     r9   r.   r:   r<   r.   r/   r8   T   s    epsrealr   c                 s   s   | ]}|j V  qd S r*   qr:   r.   r.   r/   	<genexpr>k   s     ztest_eigen.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r*   rB   r:   r.   r.   r/   rD   m   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.   r/   <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#   rG   r.   r.   r.   r/   rI   }   rJ   c                   S   s   t dddgdddgg S )Nr   r   r   r   r"   r#   rG   r.   r.   r.   r/   rI      rJ   c                   S   s   t dddgdddgg S )Nr   r   r!   r"   rG   r.   r.   r.   r/   rI      rJ   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_incompleterG   r.   r.   r.   r/   rI      s   c                   S   s    t dddgdddggjddS )Nr   r   r!   r"   FrK   rG   r.   r.   r.   r/   rI      s   )r   r   c                 S   s   | S r*   r.   xr.   r.   r/   rI      rJ   c                 S   s   | S r*   r.   rL   r.   r.   r/   rI      rJ   )r   r   r   rH   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<   r/   
test_eigen   s    

* 

(& 

@ @ 

$*
 *
**<:rc   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r5   rM   r.   r.   r/   r8      s     z(test_float_eigenvals.<locals>.<listcomp>g&.>)
r   r   r	   r   rR   rH   rU   ziprV   rO   )rb   ZevalsZn_evalsZs_evalsrM   yr.   r.   r/   test_float_eigenvals   s     rh   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.   rb   r.   r/   rI      rJ   z"test_eigen_vects.<locals>.<lambda>Tc                      s
     dS ri   diagonalizer.   rk   r.   r/   rI      rJ   )r   r   r   NotImplementedErrorrj   rO   r   rm   )PDr.   rk   r/   test_eigen_vects   s
    rq   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.   r/   r8      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.   r/   r8      s     z.test_issue_8240.<locals>.<listcomp>.<listcomp>)rS   r4   r-   r.   r/   r8      s     r   Tr   r   r   r   )r   rS   r   rH   rT   rO   setcount)rM   rg   Zdiagonal_variablesr\   r;   rH   r.   rs   r/   test_issue_8240   s(     rv   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   rF   )r   rH   r   rN   rR   rO   )r\   rb   r.   r.   r/   test_eigenvals   s    
(	rw   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   rP   rT   rO   r\   ZvecsvalZmultZvec_listr.   r.   r/   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 rx   )r   rQ   rT   rO   ry   r.   r.   r/   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.   r/   rI   p  rJ   z$test_bidiagonalize.<locals>.<lambda>g-q=)r   ZbidiagonalizerO   Zbidiagonal_decompositionrandomrS   randintr   r   r   Z	applyfuncrV   rW   )%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sizer@   compr    r]   r^   diffr.   r.   r/   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_onlyrl   r.   rk   r.   r/   rI   z  rJ   z"test_diagonalize.<locals>.<lambda>g      ?c                 s   s   | ]}t |tV  qd S r*   rX   r   r5   r,   r.   r.   r/   rD     s     z#test_diagonalize.<locals>.<genexpr>c                 s   s   | ]}t |tV  qd S r*   r   r   r.   r.   r/   rD     s     Tr   gMb`?)
r   r   r   rm   Zis_diagonalrO   r   allvaluesr   )ro   rp   r   ZD2r.   rk   r/   test_diagonalizex  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_symmetricrO   rj   )r    r]   r^   rb   r.   r.   r/   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   rF   r   rd   
   c                      s      S r*   jordan_formr.   rk   r.   r/   rI     rJ   z"test_jordan_form.<locals>.<lambda>r!   r   rA   F)Zcalc_transformc                      s      S r*   r   r.   rk   r.   r/   rI     rJ   g      ?g      ?g      ?g      ?c                 s   s    | ]}t |tp|d kV  qdS r   Nr   re   r.   r.   r/   rD     s     z#test_jordan_form.<locals>.<genexpr>c                 s   s    | ]}t |tp|d kV  qdS r   r   re   r.   r.   r/   rD     s     )
r   r   r   r   rO   r   invr   r	   r   )ro   JAr.   rk   r/   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 )NrM   Tr?   r   r   r   r   )r   r   r"   )r   r   c                 S   s   g | ]}|  qS r.   )Ztrigsimp)r5   svr.   r.   r/   r8     s     z(test_singular_values.<locals>.<listcomp>r!      r'   )r   r   r   Zsingular_valuesrO   r   rt   r   r   r
   r   rN   r	   T)rM   r   valsr.   r.   r/   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   rO   r.   r.   r.   r/   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    )Zpositiver]   )negativega~2^?g=6 0z?u?g1ڿ"gş}gEߡ?g֯mA?g)Ewc?g?g}uq?g!pb?)	r   Zis_positive_definiterO   is_positive_semidefiniteZis_negative_definiteZis_negative_semidefiniteZis_indefiniter   r   )rb   r    r]   r.   r.   r/   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&      rF   r   r   r#   )Zsympy.matrices.eigenr   r   rO   r   )r   rb   r.   r.   r/   #test_positive_semidefinite_choleskyQ  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"   rF   r   ir   r   r   r   r$   r   r   r&   r!   r   irA   )r   rP   rO   )r   r.   r.   r/   test_issue_20582h  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!   rA   r      rF   )r   r   r   r   r	   rO   )r   Hr   r.   r.   r/   test_issue_19210t  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expandrP   r   r	   rO   r   r   )r   rP   r.   r.   r/   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   rO   )r]   rb   r.   r.   r/   test_issue_20752  s     r   c                  C   s   dgd dg  } }ddddddddddddg}|  }d|d< dd }g }tdD ]}|||||||  qTtdD ]}|||||| |  q|tt|  d	kstd S )
Nr      r   r   r%   c                 S   s   | |d  | d |  S r*   r.   )rM   r;   r.   r.   r/   rotate  s    z test_issue_25282.<locals>.rotater1   r2   )copyrS   appendsumr   rH   r   rO   )ddsdZdsssr   Zmatr;   r.   r.   r/   test_issue_25282  s    r   N)8Zsympy.core.evalfr   Zsympy.core.numbersr   r   r   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   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.exceptionsr   r   Z"sympy.matrices.expressions.fourierr   Zsympy.simplify.simplifyr   Zsympy.matrices.immutabler   r   Zsympy.testing.matricesr   rc   rh   rq   rv   rw   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r.   r.   r/   <module>   sJ   ~
	


 
0a0