U
    9%eA                     @   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&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/Darija-Ai-API/env/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 }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 st
||k st
|dkst
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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 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 qd 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   
%
.
 