a
    khX                     @   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(J |jddg dks@J | ddtg dtg dtg d	gfgksvJ | ddtg dgtg dgtg d	ggfgksJ tg d
g dg dg}| dtj dtj dtjdiksJ | ddtg dgfddtg dgfddt| dd| dddggfgksJJ | ddtg dggfddtg dggfddtg dggfgksJ t	d}t|dgddgg}| |dtjdiksJ tddgddgg}| ddtddddggfgksJ | ddtddgggfgks2J tg dg dg d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g d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sJ 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sdJ | ddtt|	 t|	 dgggfdt|	 dtt |	 t|	 dgggfgksJ tddg d%}|jdd&|_td'd( |jd d d D dksJ |jdd&|_td)d( |jd d d D dks@J 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sJ tg  i ksJ tg jddg ksJ tg  g ks(J ttd.d/  ttd0d/  ttd1d/  ttd2d/  ttd3d/  ttd4d/  tddgdd*gg}
t|
jddd5tsJ t|
jddd5tsJ t|
jd6d/ dd5tsJ t|
jd7d/ dd5ts J d S )8N   FmultipleT   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      )r#   r   r   r   )r   r#   r   )r   r   )r#   r#   r   ar   r"   r   )         )      	      !      r+   c                 S   s   t t| |S N)strr   )en r4   M/var/www/auris/lib/python3.9/site-packages/sympy/matrices/tests/test_eigen.pyNSH   s    ztest_eigen.<locals>.NS      r)   )r   r$   r   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"   r4   .0jr6   r4   r5   
<listcomp>R       )test_eigen.<locals>.<listcomp>.<listcomp>r4   r;   ir6   rr4   r5   r>   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 r9   r4   r:   r=   r4   r5   r>   U   r?   r@   r4   rA   rC   r4   r5   r>   T   s    epsreal)	r   r"   r   r   r   r   r"   r"   r   c                 s   s   | ]}|j V  qd S r0   qrA   r4   r4   r5   	<genexpr>k   r?   ztest_eigen.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r0   rI   rA   r4   r4   r5   rK   m   r?   r'   r(   I   c                   S   s   t ddgddgddgg S )Nr   r"   r   r'   r   	eigenvalsr4   r4   r4   r5   <lambda>{   r?   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)   rN   r4   r4   r4   r5   rP   }   r?   c                   S   s   t g dg dg S )Nr&   r   r(   r)   rN   r4   r4   r4   r5   rP      r?   c                   S   s   t g dg dg S )Nr   r'   r(   r   rN   r4   r4   r4   r5   rP      r?   c                   S   s   t g dg dgjddS )Nr&   rQ   FZerror_when_incompleterN   r4   r4   r4   r5   rP      s   c                   S   s   t g dg dgjddS )Nr   rR   FrS   rN   r4   r4   r4   r5   rP      s   )r   r   c                 S   s   | S r0   r4   xr4   r4   r5   rP      r?   c                 S   s   | S r0   r4   rT   r4   r4   r5   rP      r?   )r   r   r   rO   r   One
eigenvectsleft_eigenvectsZeror   rangelensortedabsr   r   Z_eigenvectsmaxr	   r   r   
isinstancedictlist)RMr%   bcdr2   Zr1Zr2rE   mr4   rC   r5   
test_eigen   s    


( 

(&

@@

$*
 *
**<:rh   c                  C   s   t g dg dg d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 sJ qd S )N)r   333333?ri   )ri   ?rj   )rj   ri   ri   r(   r'   i     T)Zrationalr   c                 S   s   g | ]}|  qS r4   )Zevalfr;   rU   r4   r4   r5   r>      r?   z(test_float_eigenvals.<locals>.<listcomp>g&.>)	r   r   r	   r   rY   rO   r\   zipr]   )rg   ZevalsZn_evalsZs_evalsrU   yr4   r4   r5   test_float_eigenvals   s    ro   c                     sX   t dddddtg tt fdd  dr4J tt fdd  d\} }d S )Nr"   r   r   c                      s
     dS NT)is_diagonalizabler4   rg   r4   r5   rP      r?   z"test_eigen_vects.<locals>.<lambda>Tc                      s
     dS rp   diagonalizer4   rr   r4   r5   rP      r?   )r   r   r   NotImplementedErrorrq   r   rt   )PDr4   rr   r5   test_eigen_vects   s
    rx   c                     s>  t d\} }d dd t D } fddt D }t D ]}|| || |< q@t|}| }t| ksvJ t D ]}|||  dks~J q~|jdd}t|t|ksJ t| d	d	gd|d	gd
d| gg}| }|| d
|diksJ |jdd}t|dksJ || d
ks&J ||dks:J d S )Nzx y   c                 S   s   g | ]}t d | qS )zx%s)r   rA   r4   r4   r5   r>      r?   z#test_issue_8240.<locals>.<listcomp>c                    s   g | ]}d d t  D qS )c                 S   s   g | ]}d qS )r   r4   rA   r4   r4   r5   r>      r?   z.test_issue_8240.<locals>.<listcomp>.<listcomp>)rZ   r:   r3   r4   r5   r>      r?   r   Tr   r   r"   r   )r   rZ   r   rO   r[   setcount)rU   rn   Zdiagonal_variablesrc   rB   rO   r4   rz   r5   test_issue_8240   s(     r}   c                  C   sx   t g dg dg dg} |  dtj dtj dtjdiksBJ t g dg dg dg d	g d
g}| stJ d S )Nr!   r   r   r"   r   r   r   r   r   rM   r   rM   rM   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rO   r   rV   rY   )rc   rg   r4   r4   r5   test_eigenvals   s    (	r   c                  C   sb   t g dg dg dg} |  }|D ]6\}}}t|dks@J | |d  ||d  ks&J q&d S Nr!   r   r   r   r   )r   rW   r[   rc   ZvecsvalZmultZvec_listr4   r4   r5   test_eigenvects   s    r   c                  C   sb   t g dg dg dg} |  }|D ]6\}}}t|dks@J |d |  ||d  ks&J q&d S r   )r   rX   r[   r   r4   r4   r5   test_left_eigenvects   s    r   c            %      C   s  t g dg dg dg} |  | ks*J | jdd| ks>J |  | ksNJ |  | | | fksdJ | jdd| | | fks~J |  | ksJ 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sJ ||ks J ||ksJ |
|ksJ | |ks*J ||ks8J ||ksFJ ||ksJ qtdD ]}g }d}t|| D ]4}|dd	}|dd	} || t  }||g }qvt |||} t| }| \}	}
}|  \}}}|  }| }|	|
 | }|| | }|
  |  |  |  |  |  | jdd}| jdd\}}}|jdd}|jdd\}}}|| | }|| | }|  |  |  |  |  |  | |ksJ ||ksJ ||ksJ |
|ksJ | |ksJ ||ksJ ||ksJ ||ks\J q\t d
dtdd} | 	dd } |  d |  ksfJ | jddd | jddksJ |  \}!}"}#|!|" |# |  }$t
t|$dk sJ d S )Nr   r   r    F)upperr   r"   i 6ei ʚ;   r+   r      c                 S   s   t | S r0   )r   )rB   r4   r4   r5   rP   p  r?   z$test_bidiagonalize.<locals>.<lambda>g-q=)r   ZbidiagonalizeZbidiagonal_decompositionrandomrZ   randintr   r   r   Z	applyfuncr]   r^   )%rc   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sizerG   compr%   rd   re   diffr4   r4   r5   test_bidiagonalize   s    "r   c                     s  t ddg d tt fdd   \} }| s:J |t t dgdtggksXJ t ddg d   \} }tdd | D sJ td	d |  D sJ  jd
d\}}||ksJ t g dg dg dg dg   \} }t| |  |  sJ d S )Nr"   r   r#   r   r   c                      s    j ddS )NTZ
reals_onlyrs   r4   rr   r4   r5   rP   z  r?   z"test_diagonalize.<locals>.<lambda>r   )r         ?r   r   c                 s   s   | ]}t |tV  qd S r0   r_   r   r;   r2   r4   r4   r5   rK     r?   z#test_diagonalize.<locals>.<genexpr>c                 s   s   | ]}t |tV  qd S r0   r   r   r4   r4   r5   rK     r?   Tr   r   r   r   r   )r   r   r   Mb`?)r   r   r   r   )r   r   r   r   )	r   r   r   rt   Zis_diagonalr   allvaluesr   )rv   rw   r   ZD2r4   rr   r5   test_diagonalizex  s&    r   c                  C   s   t d\} }}tdd| |||g}| s.J | s:J tddg d rRJ tddg d}| snJ |jddr~J d S )Nza b cr"   )r   r   r   r   r   Tr   )r   r   Zis_symmetricrq   )r%   rd   re   rg   r4   r4   r5   test_is_diagonalizable  s    r   c                     s  t ddg d tt fdd t ddg d   \} } |ksJJ t ddg d   \} } |ksrJ t g d	g d
g dg dg}| \} }t| | |   |ksJ t dddg t dgt dgfksJ t dddgjddt dgks
J t g dg dg dg dg dg tt fdd t dddtd  gddtd  dgg   \} }tdd | D sJ tdd |D sJ d S )Nr   r"   )rM   r   rM   rk   r   
   c                      s      S r0   jordan_formr4   rr   r4   r5   rP     r?   z"test_jordan_form.<locals>.<lambda>r'   )r"   r   r   r   r   r"   r   r   r   r   r"   r   r   r   r   r"   )r"   r   r   r   r   r"   r   r   r   r   r"   r   r   r   r   r"   )r"   r'   r   r   )rH   r"   r   r   )r   r   r"   r'   )r   r   rH   r"   r   F)Zcalc_transformr~   r   r   r   r   c                      s      S r0   r   r4   rr   r4   r5   rP     r?   g      ?g      ?g      ?g      ?c                 s   s    | ]}t |tp|d kV  qdS r   Nr   rl   r4   r4   r5   rK     r?   z#test_jordan_form.<locals>.<genexpr>c                 s   s    | ]}t |tp|d kV  qdS r   r   rl   r4   r4   r5   rK     r?   )	r   r   r   r   r   invr   r	   r   )rv   JAr4   rr   r5   test_jordan_form  s4    *&&r   c                  C   sD  t ddd} tddt gddgg}| ddgks8J td}| |d< d	|d
< | }t|d	dt| hksrJ tt| t| gt|  t| gg}dd | D }|t	j
t	j
gksJ 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J |j ttdd tdtd ddgks@J d S )NrU   TrF   r   r   r"   r   )r   r   r(   )r"   r"   c                 S   s   g | ]}|  qS r4   )Ztrigsimp)r;   svr4   r4   r5   r>     r?   z(test_singular_values.<locals>.<listcomp>r'      r-   )r   r   r   Zsingular_valuesr   r{   r   r   r
   r   rV   r	   T)rU   r   valsr4   r4   r5   test_singular_values  s.    &
"r   c                   C   s*   t g dg dg dgi kdu s&J d S )Nr!   r   r   F)r   r4   r4   r4   r5   test___eq__  s    r   c                  C   s2  t g dg dg dg} | jdks(J | jdks6J | jdksDJ | jdksRJ | jdks`J t ddgddgg} | jdksJ | jdksJ | jdksJ | jdksJ | jdksJ t g dg dg d	g} | jdksJ | jdksJ | jdksJ | jdksJ | jdksJ t d
dgddgg} | jdksBJ | jdksRJ | jdksbJ | jdksrJ | jdksJ t ddgddgg} | jdksJ | jdksJ | jdksJ | jdksJ | jdksJ t d
dt gt dgg} | jdksJ | jdks J | jdks0J | jdks@J | jdksPJ tddd}tddd}t |ddgd|dgdd|gg} | jdksJ | jdksJ | jdksJ | jdksJ | jdksJ t |ddgd|dgdd|gg} | jdksJ | jdksJ | jdks(J | jdks8J | jdksHJ t |dgd|gg} | jdkslJ | jdks|J | jdksJ | jdksJ | jdksJ t g dg dg dg dg} | jdksJ | jdksJ | jdksJ t g dg dg dg} | jr"J | jr.J d S )N)r"   r#   r   )r#   r"   r#   )r   r#   r"   TFr(   r'   )r"   r#   r#   )r#   r#   r"   r   r"   r   r+   r%   )Zpositiverd   )negativer   )ga~2^?=6 0z?u?1ڿ"ş})r   gEߡ?֯mA?)Ewc?)r   r   g?}uq?)r   r   r   g!pb?r   r   r   )r   r   r"   )r   r"   r   )r   Zis_positive_definiteis_positive_semidefiniteZis_negative_definiteZis_negative_semidefiniteZis_indefiniter   r   )rg   r%   rd   r4   r4   r5   test_definite  s      
r   c                  C   sl  ddl m}  tg dg dg dg}| |dks6J tg ddddt gddt dgg}| |dkslJ tg d	g dg d
g}| |dksJ tddgddgg}| |dksJ tg dg dg dg}| |dksJ tg dg dg dg}| |dksJ tg dg dg dg}| |dks<J tg dg dg dg}| |dkshJ d S )Nr   )"_is_positive_semidefinite_choleskyr   Tr(   r   Fr   )r   r   r#   r   )r'   r$   )r$   r   r,   )r   r,      )r,   rM   r   )rM   r"   r   )r   r   r)   )r'   r$   r"   )r$   r   r#   )r"   r#   r(   )r   r"   r#   )r"   r(   r   )r#   r   r,   )Zsympy.matrices.eigenr   r   r   )r   rg   r4   r4   r5   #test_positive_semidefinite_choleskyQ  s"    &r   c                  C   s6   t g dg dg dg dg dg} |  s2J d S )N)r(   rM   r"   )r$   r   r   r"   r   )r$   r   r   r$   r   )r*   r   r   r,   r$   )r'   r   r   irH   )r   rW   )r   r4   r4   r5   test_issue_20582h  s    	r   c                  C   s   t d} tg dg dg dg dg}t | |   }|tg ddddd	td
  ddtd
  gg dg d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sJ d S )Nt)r   r   r   r   )r   r   r"   r   )r   r"   r"   r   )r   r   r   r'   r   r   rH   r#      r'   r   )r   r   r   r   )r   r   r   r   rM   r"   r   )r   r   r   r   r	   )r   Hr   r4   r4   r5   test_issue_19210t  s      "&(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sLJ |d ddtdtd gdgdgggfks|J |d t dtdgdgdgggfksJ t d jdd} |  }|d ddtdgdgdgdgggfksJ |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s2J |d t dtdgdgdgdgggfksbJ 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sJ |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,J d S )
Nr   T)complexr   r#   r   r"   r'   r(   )r   Zas_explicitexpandrW   r   r	   r   r   )r   rW   r4   r4   r5   test_issue_20275  sP    



.$..r   c                  C   s<   t ddd} tg dd| dgdd| gg}|jd u s8J d S )Nrd   T)Znonzeror   r   )r   r   r   )rd   rg   r4   r4   r5   test_issue_20752  s    r   c                  C   s   dgd dg  } }g d}|  }d|d< dd }g }td	D ]}|||||||  q@td	D ]}|||||| |  qhtt|  d
ksJ d S )Nr      r   )r"   r   r   r   r   r   r   r   r   r   r   r   r"   r+   c                 S   s   | |d  | d |  S r0   r4   )rU   rB   r4   r4   r5   rotate  s    z test_issue_25282.<locals>.rotater7   r8   )copyrZ   appendsumr   rO   r   )ddsdZdsssr   matrB   r4   r4   r5   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   rh   ro   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r4   r4   r5   <module>   sJ   ~
	


 
0a0