a
    {þd¢O  ã                   @   s8  d dl 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 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 d dlmZ d dlmZm 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$„ Z,d%d&„ Z-d'd(„ Z.d)d*„ Z/d+d,„ Z0d-S ).é    )Ú
expand_mul)ÚIÚRational)ÚS)ÚSymbolÚsymbols)Úsympify)Úsimplify)Ú
ShapeErrorÚNonSquareMatrixError)ÚImmutableMatrixÚMatrixÚeyeÚonesÚImmutableDenseMatrixÚdotprodsimp)Úraises)ÚNonInvertibleMatrixError)Úlinsolve)ÚxÚyc                  C   sd   t tdƒƒ} tdƒ< |  tddƒ¡t tdƒƒt ddg ƒfksBJ ‚W d   ƒ n1 sV0    Y  d S )Ná  [
        [             -3/4,       45/32 - 37*I/16,                   0,                     0],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,                   0, -2063/256 + 541*I/128],
        [                0,         9/4 + 55*I/16, 2473/256 + 137*I/64,                     0],
        [                0,                     0,                   0, -177/128 - 1369*I/128]]Té   é   á¡  [
            [                          -32549314808672/3306971225785 - 17397006745216*I/3306971225785],
            [                               67439348256/3306971225785 - 9167503335872*I/3306971225785],
            [-15091965363354518272/21217636514687010905 + 16890163109293858304*I/21217636514687010905],
            [                                                          -11328/952745 + 87616*I/952745]]r   )r   r   r   Úgauss_jordan_solver   ©ÚM© r   új/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/matrices/tests/test_solvers.pyÚ%test_issue_17247_expression_blowup_29   s
    

ür    c                  C   sX   t tdƒƒ} tdƒ0 |  tddƒ¡t tdƒƒks6J ‚W d   ƒ n1 sJ0    Y  d S )Nr   Tr   r   r   )r   r   r   Úcholesky_solver   r   r   r   r   Ú%test_issue_17247_expression_blowup_30   s    
r"   c               	   C   sÔ   t td dt ddgdt td dtd gddt td dgdddtd ggƒ} tdƒh |  tddƒ¡t td dt  gtd dt  gtd dt  gdtd  ggƒks²J ‚W d   ƒ n1 sÆ0    Y  d S )Nr   r   Tr   )r   r   r   ÚLUsolver   r   r   r   r   Ú%test_issue_17247_expression_blowup_327   s    ü
ür$   c                     s¸  t g d¢g d¢g d¢gƒ‰ t ddg d¢ƒ} ˆ |  ‰ˆ  ˆ¡}|| ksHJ ‚t g d¢g d¢g d	¢gƒ‰ t ddg d
¢ƒ} ˆ |  ‰ˆ  ˆ¡}|| ksJ ‚t ddgddgddggƒ‰ t g d¢ƒ‰ˆ  ˆ¡t ddgƒksÐJ ‚t g d¢ƒ‰tt‡ ‡fdd„ƒ t g d¢g d¢g d	¢g d¢g d¢g d¢gƒ‰ t g d¢ƒ} ˆ |  ‰ˆ  ˆ¡}|| ksHJ ‚t g d¢g d¢gƒ‰ t g d¢ƒ} ˆ |  ‰tt‡ ‡fdd„ƒ t dddd„ ƒ‰ t  dd¡‰tt‡ ‡fdd„ƒ d S )N©é   é   é   ©r'   é   r&   ©é   r'   r*   r'   r   ©r'   é   r(   ©r   éÿÿÿÿr&   ©r(   é
   r.   ©r,   r'   r   ©r0   r&   r(   r&   r   )r'   r   r   )r'   r   r&   c                      s
   ˆ   ˆ¡S ©N©r#   r   ©ÚAÚbr   r   Ú<lambda>W   ó    ztest_LUsolve.<locals>.<lambda>)r&   r   éüÿÿÿ)r0   r&   r   c                      s
   ˆ   ˆ¡S r5   r6   r   r7   r   r   r:   e   r;   r   c                 S   s   | dkrd| | d  S dS )Nr'   r   r   r   )ÚiÚjr   r   r   r:   g   r;   c                      s
   ˆ   ˆ¡S r5   r6   r   r7   r   r   r:   i   r;   )r   r#   r   Ú
ValueErrorÚNotImplementedErrorÚzerosr   ©r   Úsolnr   r7   r   Útest_LUsolveD   sN    þ
þ
û
rD   c                  C   s  t g d¢g d¢g d¢gƒ} t ddg d¢ƒ}| | }|  |¡}||ksHJ ‚t ddgddgd	d
ggƒ}| | }|  |¡}||ks€J ‚t g d¢g d¢g d¢gƒ} t ddg d¢ƒ}| | }|  |¡}||ksÈJ ‚t ddgddgddggƒ}| | }|  |¡}||ksJ ‚d S )Nr%   r)   r+   r'   r   r-   r&   r   r(   r*   r/   r1   r3   r4   r.   r,   é	   r2   é   é   )r   ZQRsolve)r8   r   r9   rC   r   r   r   Útest_QRsolvel   s0    þ

þ

rH   c                   C   s   t tdd„ ƒ d S )Nc                   S   s    t dgƒ t ddgddggƒ¡S )Nr   r&   r'   r   )r   r#   r   r   r   r   r:   †   r;   ztest_errors.<locals>.<lambda>)r   r
   r   r   r   r   Útest_errors…   s    rI   c            	      C   s°  t g d¢g d¢g d¢gƒ} t ddg d¢ƒ}| | }|  |¡}||ksHJ ‚t g d¢g d¢g d	¢gƒ} t ddg d
¢ƒ}| | }|  |¡}||ksJ ‚t dƒ} t dƒ}| | }|  |¡}||ks¾J ‚t ddt fdt dffƒ} t dƒ}| | }|  |¡}t|ƒ|ksJ ‚t dt dfdt dffƒ} t ddt  dfƒ}| | }|  |¡}t|ƒ|ksZJ ‚tdƒ\}}}}}t ||f||ffƒ} t ||fƒ}|  |¡}t| | ƒ|ks¬J ‚d S )Nr%   r)   r+   r'   r   r-   r/   r1   r3   r4   ))r   r(   )r(   r   )r   éýÿÿÿrE   rJ   r(   ©éþÿÿÿr   r&   r0   za00, a01, a11, b0, b1)r   r!   r   r   r   r	   )	r8   r   r9   rC   Za00Za01Za11Zb0Úb1r   r   r   Útest_cholesky_solveˆ   sH    þ
þ




rN   c                     s¦  t g d¢g d¢g d¢gƒ‰ t ddg d¢ƒ} ˆ |  ‰ˆ  ˆ¡}|| ksHJ ‚t g d¢g d¢g d	¢gƒ‰ t ddg d
¢ƒ} ˆ |  ‰ˆ  ˆ¡}|| ksJ ‚t ddt fdt dffƒ‰ t dƒ} ˆ |  ‰ˆ  ˆ¡}t|ƒ| ksÖJ ‚t dt dfdt dffƒ‰ t ddt  dfƒ} ˆ |  ‰ˆ  ˆ¡}t|ƒ| ks*J ‚t dƒ‰ t dƒ} ˆ |  ‰ˆ  ˆ¡}t|ƒ| ks^J ‚t g d¢g d¢gƒ‰ t dgdgdggƒ} ˆ |  ‰tt‡ ‡fdd„ƒ d S )Nr%   r)   r+   r'   r   r-   r/   r1   r3   r4   rE   rJ   r(   rK   r&   r0   ))rE   r'   )r'   rE   )r   r   )éûÿÿÿrJ   r<   )rJ   iùÿÿÿr.   r,   r.   rL   c                      s
   ˆ   ˆ¡S r5   )ÚLDLsolver   r7   r   r   r:   Ó   r;   ztest_LDLsolve.<locals>.<lambda>)r   rP   r   r   r   r@   rB   r   r7   r   Útest_LDLsolve­   sF    þ
þ



rQ   c                  C   sŽ   t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ tddgddggƒ} tttgttggƒ}tddgd	d
ggƒ}|  |¡|ksxJ ‚|  |¡|ksŠJ ‚d S )Nc                   S   s   t ddgƒ t ddgƒ¡S ©Nr   r   ©r   Úlower_triangular_solver   r   r   r   r:   Ù   r;   z-test_lower_triangular_solve.<locals>.<lambda>c                   S   s    t ddgddggƒ t dgƒ¡S rR   rS   r   r   r   r   r:   Û   r;   c                   S   s*   t ddgddggƒ t ddgddggƒ¡S ©Nr&   r   r   rS   r   r   r   r   r:   Ý   s   ÿr   r   r   r,   r&   rE   )r   r   r
   r?   r   r   r   rT   ©r8   ÚBÚCr   r   r   Útest_lower_triangular_solveÖ   s    ÿÿÿrY   c                  C   sŽ   t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ tddgddggƒ} tttgttggƒ}tddgd	d
ggƒ}|  |¡|ksxJ ‚|  |¡|ksŠJ ‚d S )Nc                   S   s   t ddgƒ t ddgƒ¡S rR   ©r   Úupper_triangular_solver   r   r   r   r:   ë   r;   z-test_upper_triangular_solve.<locals>.<lambda>c                   S   s    t ddgddggƒ t dgƒ¡S rR   rZ   r   r   r   r   r:   í   r;   c                   S   s*   t ddgddggƒ t ddgddggƒ¡S rU   rZ   r   r   r   r   r:   ï   s   ÿr   r   r&   r   r'   r,   )r   r   r
   Ú	TypeErrorr   r   r   r[   rV   r   r   r   Útest_upper_triangular_solveè   s    ÿÿÿr]   c                      s|   t tdd„ ƒ tddgddggƒd ‰ tttgttggƒ‰ˆ  ˆ¡ˆd ksPJ ‚tddgddggƒ‰ t t‡ ‡fdd„ƒ d S )Nc                   S   s   t ddgƒ t dgƒ¡S )Nr   )r   Údiagonal_solver   r   r   r   r:   û   r;   z%test_diagonal_solve.<locals>.<lambda>r   r   r&   c                      s
   ˆ   ˆ¡S r5   )r^   r   ©r8   rW   r   r   r:     r;   )r   r\   r   r   r   r^   r   r   r_   r   Útest_diagonal_solveú   s    r`   c                  C   s^  t ddgddggƒ} t ddgƒ}|  |¡|  |¡ks8J ‚|  |¡|  |¡ksPJ ‚|  |¡t tdƒtdƒgƒksrJ ‚| |  ¡  | |ksŠJ ‚t g d	¢g d
¢gƒ}|  |¡|  |¡ks¶J ‚|  |¡|  |¡ksÎJ ‚|  |¡t g d¢g d¢gƒd ksôJ ‚| |  ¡  | |ksJ ‚t g d¢g d¢gƒ} t ddgƒ}|  |¡}i }| t¡D ]}|||j< qF|t |d d |d d  |d d  d g|d d |d d  |d d  d g|d  d |d d  |d d  d ggƒksäJ ‚| |  ¡  | |ksþJ ‚t ddgddgddggƒ} t g d¢ƒ}|  |¡t ddgƒks@J ‚| |  ¡  | |ksZJ ‚d S )Nr   r(   r.   rE   rG   é   z-43/26z71/26)rG   ra   é   )é   é   é   )ißÿÿÿiÛÿÿÿi×ÿÿÿ)éE   éK   éQ   é   )r   r   r   )r   r   r   Zw0_0r'   Úw1_0Zw2_0r   r   )r'   r&   r   )	r   Ú
pinv_solver!   rP   r   ÚpinvÚatomsr   Úname)r8   rW   ÚsolutionÚwÚsr   r   r   Útest_pinv_solve  s4    "&
,(*þrr   c                  C   sö  t g d¢g d¢gƒt ddgddggƒt ddgddgddggƒg} | D ]d}|jd	d
}|| }|| }t|| ƒ|ksxJ ‚t|| ƒ|ksŒJ ‚|j|ksšJ ‚|j|ksDJ ‚qD| D ]f}|jdd
}|| }|| }t|| ƒ|ksâJ ‚t|| ƒ|ksöJ ‚|j|ksJ ‚|j|ks®J ‚q®t ddgddggƒ}t ddgƒ}| |¡}| t¡ ¡ }|jdks^J ‚|t d|gƒkstJ ‚|| ¡  | |ksŽJ ‚t ddgƒ}| |¡}| t¡ ¡ }|jdksÂJ ‚|t d|gƒksØJ ‚|| ¡  | |ksòJ ‚d S )N©r   r   r   )r&   r&   r&   r   r   r&   r   r'   r*   ZRD)ÚmethodZEDrj   )	r   rl   r	   ÚHrk   rm   r   Úpoprn   )ZAsr8   ZA_pinvZAApZApArW   ro   Zw1r   r   r   Útest_pinv_rank_deficient$  sB    þ

rw   c            
   	      sJ
  t g d¢g d¢g d¢gƒ‰ t g d¢ƒ‰ˆ  ˆ¡\} }| t dgdgdggƒksPJ ‚|t ddg ƒksdJ ‚td	ƒ‰ t g d
¢g d¢g d¢gƒ‰ˆ  ˆ¡\} }| ˆks J ‚|t ddg ƒks´J ‚t g d¢g d¢g d¢gƒ‰ t g d¢ƒ‰ˆ jˆdd\} }}i }|  t¡D ]}|||j< qü| t |d d gd|d  d g|d ggƒksBJ ‚|t |d ggƒks\J ‚|dgkslJ ‚t g d¢g d¢g d¢gƒ‰ t d	dgddgddggƒ‰ˆ jˆdd\} }}i }|  t¡D ]}|||j< qÂ| t |d d |d tdd	ƒ gd|d  d d|d  tdd	ƒ g|d |d ggƒks4J ‚|t |d |d ggƒksTJ ‚|dgksdJ ‚t g d¢g d¢g d¢gƒ‰ t g d¢ƒ‰ˆ  ˆ¡\} }i }|  t¡D ]}|||j< q¦| t d|d  d	|d   g|d g|d ggƒksòJ ‚|t |d g|d ggƒksJ ‚t g d¢g d¢g d¢gƒ‰ t g d¢ƒ‰ˆ  ˆ¡\} }i }|  t¡D ]}|||j< qV| t |d g|d g|d ggƒks’J ‚|t |d g|d g|d ggƒks¼J ‚t g d¢g d¢g d¢gƒ‰ t g d¢ƒ‰tt‡ ‡fdd„ƒ t g d¢g d¢g d ¢g d!¢gƒ‰ t g d"¢ƒ‰ˆ  ˆ¡\} }| t tddƒgdgtddƒggƒksZJ ‚|t ddg ƒkspJ ‚t g d¢g d¢g d ¢g d!¢gƒ‰ t ddgddgddgddggƒ‰ˆ  ˆ¡\} }| t tddƒtddƒgddgtddƒtddƒggƒksúJ ‚|t ddg ƒksJ ‚t g d¢g d¢g d ¢g d!¢gƒ‰ t g d#¢ƒ‰tt‡ ‡fd$d„ƒ t g d¢g d¢g d ¢g d!¢gƒ‰ t ddgddgddgddggƒ‰tt‡ ‡fd%d„ƒ t g d¢g d¢g d ¢g d!¢gƒ‰ t ddgddgddgddggƒ‰tt‡ ‡fd&d„ƒ t g d¢g d'¢g d(¢g d!¢gƒ‰ t g d#¢ƒ‰ˆ  ˆ¡\} }i }|  t¡D ]}|||j< q@| t d)|d  d* gdg|d ggƒks€J ‚|t |d ggƒksšJ ‚t g d¢g d'¢g d(¢g d!¢gƒ‰ t g d+¢ƒ‰tt‡ ‡fd,d„ƒ t g d
¢g d¢g d-¢gƒ‰ t g d.¢ƒ‰ˆ  ˆ¡\} }i }|  t¡D ]}|||j< q| t d|d  d gd)|d  d gdg|d ggƒkslJ ‚|t |d ggƒks†J ‚t g d
¢g d¢g d/¢gƒ‰ t g d0¢ƒ‰ˆ  ˆ¡\} }i }|  t¡D ]}|||j< qÈ| t |d d|d   t	j
 gd|d  d	|d   tddƒ g|d g|d ggƒks8J ‚|t |d g|d ggƒksZJ ‚td1ƒ\}}}}t g d2¢ddddd|ggƒ}	|	d d …d d…f ‰ |	d d …dd …f ‰ˆ  ˆ¡\} }|t d	d|||gƒksØJ ‚| t d*d|d|||gƒksøJ ‚t g d
¢g d¢g d/¢gƒ‰ t g d.¢ƒ‰tt‡ ‡fd3d„ƒ tddgddggƒ‰ tddgƒ‰ˆ  ˆ¡\} }| tddgƒk	svJ ‚|tddg ƒk	sŒJ ‚| jtk	sœJ ‚|jtk	s¬J ‚t g d4¢g d#¢gƒ‰ t ddgƒ‰ˆ  ˆ¡\} }i }|  t¡D ]}|||j< 	qè| t dg|d g|d gdggƒk
s$J ‚|t |d g|d ggƒk
sFJ ‚d S )5N)r   r&   r'   )r   r(   r*   )r.   r,   r2   )r'   r*   rE   r0   r&   r   r   r'   )r   r&   r'   r   )r(   r*   r.   r,   )rE   r2   rF   rG   r   )r.   r,   rE   T)ÚfreevarÚtau0rL   r*   r,   rE   rG   Útau1)r&   r   r*   )r   r   r   Útau2)r   r   r   c                      s
   ˆ   ˆ¡S r5   ©r   r   r7   r   r   r:     r;   z)test_gauss_jordan_solve.<locals>.<lambda>)r   r(   r'   )r&   r   r*   )r   r.   rE   )r   r   r'   )r   r   r   r   )r   r   r   r   c                      s
   ˆ   ˆ¡S r5   r|   r   r7   r   r   r:   ¢  r;   c                      s
   ˆ   ˆ¡S r5   r|   r   r_   r   r   r:   §  r;   c                      s
   ˆ   ˆ¡S r5   r|   r   r_   r   r   r:   ¬  r;   )r&   r2   r*   )r'   rc   rE   rJ   r(   )r   r   r   r   c                      s
   ˆ   ˆ¡S r5   r|   r   r7   r   r   r:   »  r;   )rE   r2   r   rG   rs   )r&   r   r*   r,   )r   r   r   z_tau0 _tau1 _tau2 tau1)r   r   r   r   r   r   c                      s
   ˆ   ˆ¡S r5   r|   r   r7   r   r   r:   ß  r;   )r   r   r   r   )r   r   r   rm   r   rn   r   r   r?   r   ZHalfr   r   Ú	__class__r   )
ÚsolÚparamsrx   rp   rq   Zx0Úx1Zx2Z_x0r   r   )r8   rW   r9   r   Útest_gauss_jordan_solveM  s    6 $þ ÿ"** *  <      . (ÿ"þ" *r   c                  C   s’  t g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gƒ} t g d	¢ƒ}|  |¡\}}i }| t¡D ]}|||j< q`|t |d
 g|d g|d g|d g|d g|d ggƒks°J ‚|t dd|d   g|d gdd|d
   |d  g|d
 g|d |d  gd|d  d|d   d|d   gdd|d   g|d g|d g|d g|d gdd|d   g|d gdggƒkszJ ‚ddlm}m} t g d¢dddddddd| g	dddddddd|g	gƒ} t tt	| ƒƒd ƒ}t
dƒ\}	}
}}}|t | | |	 | | d g||
 | | g|	g|
g|| | | g|g|g|ggƒksHJ ‚| d d …d d…f | | d d …df  }|t dgdgdggƒksŽJ ‚d S )N)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   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   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   r   )r   r&   r   r   r   r   r   r&   ry   rz   r{   Útau3Útau4Ztau5r   r0   r   )r>   Úf)	r   r   r   r   r   r   r   r   r   ztau:5)r   r   rm   r   rn   Ú	sympy.abcr>   r„   Úlistr   r   )r8   rW   r~   r   rp   rq   r>   r„   Zsol_1ry   rz   r{   r‚   rƒ   Zsol_2r   r   r   Ú4test_linsolve_underdetermined_AND_gauss_jordan_solveõ  sf    ùÿ$óýù
(r‡   c                      s`   t ddgddggƒ‰ t dgdggƒ‰tt‡ ‡fdd„ƒ t dgdggƒ‰tt‡ ‡fdd„ƒ d S )	Nr   r&   r   r'   c                      s
   ˆ   ˆ¡S r5   ©Zsolver   r7   r   r   r:   2  r;   ztest_solve.<locals>.<lambda>r,   c                      s
   ˆ   ˆ¡S r5   rˆ   r   r7   r   r   r:   4  r;   )r   r   r?   r   r   r7   r   Ú
test_solve/  s
    r‰   N)1Zsympy.core.functionr   Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Zsympy.simplify.simplifyr	   Zsympy.matrices.matricesr
   r   Zsympy.matricesr   r   r   r   r   r   Zsympy.testing.pytestr   Zsympy.matrices.commonr   Zsympy.solvers.solvesetr   r…   r   r   r    r"   r$   rD   rH   rI   rN   rQ   rY   r]   r`   rr   rw   r   r‡   r‰   r   r   r   r   Ú<module>   s8    (%)	!) ):