a
    ghA                     @   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 }qqt|||  }d}
t|D ],}t|d |D ]}	|
t	||	|f 7 }
qq|dkrt d||
 |dkrt d	| ||k s&J |
dks4J 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)AverbosenQHBr   err0xyerr1 r   E/var/www/auris/lib/python3.9/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 }qq|||  }d}t|D ]B}	t|D ]4}
|	|
kr||
|	f  d8  < |t	||
|	f 7 }qq|||  }d}t|D ]0}	t|	d |D ]}
|t	||
|	f 7 }q:q(|dkrrt d||| |dkrt d| ||k sJ ||k sJ |dksJ 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   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"J 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mnorm)
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rdt|| d }t dkr|d9 }t |D ]*}t |D ]}t|||f |||f< qnqbnd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< qqt|| 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 g dg dg dg}|| ||  t g dg dg dg}|| ||  t g dg dg dg}|| ||  t g dg d	g d
g}|| ||  |D ](}t|| d t|| d t|| d qd S )Nr   )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   ZmatrixappendZ	transposer   r    r&   )r,   ZASr   r   r   r   test_eig   s<    







r/   N)r   )r   )r   )
Zmpmathr   r   backendr   r   r    r&   r-   r/   r   r   r   r   <module>   s   
%
.
 