U
    ZÊ¹jA  ã                   @   sR   d dl mZ d dl mZ ejjZddd„Zddd„Zddd„Zd	d
„ Zdd„ Z	dS )é    )Úmp)Úlibmpc                 C   s8  |dkrt d| ƒ | j}t | ¡\}}|dkrBt d|ƒ t d|ƒ || | ¡  }t dt tj¡ ¡}d}t|ƒD ]2}t|ƒD ]$}	|t	| |	|f ||	|f  ƒ7 }q€qt|||  }d}
t|ƒD ],}t|d |ƒD ]}	|
t	||	|f ƒ7 }
qÒqÀ|dk�rt d||
ƒ |dk�rt d	|ƒ ||k �s&t
‚|
dk�s4t
‚d S )
Né   zoriginal matrix (hessenberg):
úQ:
zH:
çš™™™™™é?r   é   zdifference (H):úB:
)ÚprintÚrowsr   Z
hessenbergÚtranspose_conjÚexpÚlogÚepsÚxrangeÚabsÚAssertionError)ÚAÚverboseÚnÚQÚHÚBr   Úerr0ÚxÚyÚerr1© r   úV/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mpmath/tests/test_eigen.pyÚrun_hessenberg	   s0    


$


r   c                 C   s´  |dkrt d| ƒ | j}t | ¡\}}|dkrBt d|ƒ t d|ƒ || | ¡  }|| ¡  }t dt tj¡ ¡}d}t|ƒD ]2}	t|ƒD ]$}
|t	| |
|	f ||
|	f  ƒ7 }qŒq€|||  }d}t|ƒD ]B}	t|ƒD ]4}
|	|
krø||
|	f  d8  < |t	||
|	f ƒ7 }qØqÌ|||  }d}t|ƒD ]0}	t|	d |ƒD ]}
|t	||
|	f ƒ7 }�q:�q(|dk�rrt d|||ƒ |dk�r†t d|ƒ ||k �s”t
‚||k �s¢t
‚|dk�s°t
‚d S )	Nr   zoriginal matrix (schur):
r   zR:
r   r   zdifference (S):r   )r	   r
   r   Zschurr   r   r   r   r   r   r   )r   r   r   r   ÚRr   ÚCr   r   r   r   r   Zerr2r   r   r   Ú	run_schur.   sB    


$


r!   c           
      C   s&  |dkrt d| ƒ | j}tj| ddd�\}}}|dkrTt d|ƒ t d|ƒ t d|ƒ t dt tj¡ ¡}d	}t|ƒD ]|}| |d d …|f  || |d d …|f   }	t|t 	|	¡ƒ}||d d …f |  ||d d …f ||   }	t|t 	|	¡ƒ}qv|||  }|d	k�rt d
|ƒ ||k �s"t
‚d S )Nr   zoriginal matrix (eig):
T)ÚleftÚrightzE:
zEL:
zER:
r   r   zdifference (E):)r	   r
   r   Zeigr   r   r   r   ÚmaxZmnormr   )
r   r   r   ÚEZELZERr   r   Úir   r   r   r   Úrun_eig\   s&    



,,

r'   c                  C   sP  d} t dƒD �]<}dtt ¡ d ƒ }t ¡ dkr�dt ||¡ d }t ¡ dkrŽ|d9 }t |ƒD ]*}t |ƒD ]}t|||f ƒ|||f< qnqbn–dt ||¡ d ddt ||¡ d   }t ¡ dk�r&|d9 }t |ƒD ]J}t |ƒD ]<}tt |||f ¡ƒdtt |||f ¡ƒ  |||f< qæqÚt|| d� t|| d� t	|| d� qd S )	Nr   é   r   g      à?r   é
   y              ð?©r   )
r   Úintr   ZrandZ
randmatrixÚreZimr   r!   r'   )Úvr&   r   r   r   r   r   r   r   Útest_eig_dyn|   s&    ,<r.   c                  C   s"  d} g }t  dddgdddgdddgg¡}| |¡ | | ¡ ¡ t  dddgdddgdddgg¡}| |¡ | | ¡ ¡ t  dddgdddgdddgg¡}| |¡ | | ¡ ¡ t  dddgdddgdddgg¡}| |¡ | | ¡ ¡ |D ](}t|| d� t|| d� t|| d� qôd S )Nr   r   r   r*   )r   ÚmatrixÚappendZ	transposer   r!   r'   )r-   ZASr   r   r   r   Útest_eig”   s<    þ
þ
þ
þ
r1   N)r   )r   )r   )
Zmpmathr   r   Úbackendr   r   r!   r'   r.   r1   r   r   r   r   Ú<module>   s   
%
.
 