ó
<Zc           @   sf   d  d l  m Z d  d l  m Z e j j Z d d „ Z d d „ Z d d „ Z d „  Z d „  Z	 d	 S(
   iÿÿÿÿ(   t   mp(   t   libmpi    c         C   s®  | d k r d |  f GHn  |  j  } t j |  ƒ \ } } | d k r] d | f GHd | f GHn  | | | j ƒ  } t j d t j t j ƒ ƒ } d } xS t | ƒ D]E } x< t | ƒ D]. }	 | t |  |	 | f | |	 | f ƒ 7} q¶ Wq£ W| | | :} d }
 xL t | ƒ D]> } x5 t | d | ƒ D]  }	 |
 t | |	 | f ƒ 7}
 q'WqW| d k rld | |
 f GHn  | d k r†d	 | f GHn  | | k  s˜t	 ‚ |
 d k sªt	 ‚ d  S(
   Ni   s   original matrix (hessenberg):
s   Q:
s   H:
gš™™™™™é?i    i   s   difference (H):s   B:
(
   t   rowsR    t
   hessenbergt   transpose_conjt   expt   logt   epst   xranget   abst   AssertionError(   t   At   verboset   nt   Qt   Ht   BR   t   err0t   xt   yt   err1(    (    s6   lib/python2.7/site-packages/mpmath/tests/test_eigen.pyt   run_hessenberg	   s0    	0"c         C   sT  | d k r d |  f GHn  |  j  } t j |  ƒ \ } } | d k r] d | f GHd | f GHn  | | | j ƒ  } | | j ƒ  } t j d t j t j ƒ ƒ } d } xS t | ƒ D]E }	 x< t | ƒ D]. }
 | t |  |
 |	 f | |
 |	 f ƒ 7} qÆ Wq³ W| | | :} d } xj t | ƒ D]\ }	 xS t | ƒ D]E }
 |	 |
 k r[| |
 |	 f c d 8<n  | t | |
 |	 f ƒ 7} q0WqW| | | :} d } xL t | ƒ D]> }	 x5 t |	 d | ƒ D]  }
 | t | |
 |	 f ƒ 7} q¸WqžW| d k r d | | | f GHn  | d k rd | f GHn  | | k  s,t	 ‚ | | k  s>t	 ‚ | d k sPt	 ‚ d  S(	   Ni   s   original matrix (schur):
s   Q:
s   R:
gš™™™™™é?i    s   difference (S):s   B:
(
   R   R    t   schurR   R   R   R   R   R	   R
   (   R   R   R   R   t   RR   t   CR   R   R   R   R   t   err2(    (    s6   lib/python2.7/site-packages/mpmath/tests/test_eigen.pyt	   run_schur.   sB    	0""c   
      C   s  | d k r d |  f GHn  |  j  } t j |  d t d t ƒ\ } } } | d k rw d | f GHd | f GHd | f GHn  t j d t j t j ƒ ƒ } d	 } x° t | ƒ D]¢ } |  | d  d  … | f | | | d  d  … | f }	 t | t j	 |	 ƒ ƒ } | | d  d  … f |  | | d  d  … f | | }	 t | t j	 |	 ƒ ƒ } q© W| | | :} | d	 k rwd
 | f GHn  | | k  s‰t
 ‚ d  S(   Ni   s   original matrix (eig):
t   leftt   rights   E:
s   EL:
s   ER:
gš™™™™™é?i    s   difference (E):(   R   R    t   eigt   TrueR   R   R   R   t   maxt   mnormR
   (
   R   R   R   t   Et   ELt   ERR   R   t   iR   (    (    s6   lib/python2.7/site-packages/mpmath/tests/test_eigen.pyt   run_eig\   s&    	$66c       
   C   sÔ  d }  xÇt  d ƒ D]¹} d t t j ƒ  d ƒ } t j ƒ  d k rÏ d t j | | ƒ d } t j ƒ  d k rœ| d 9} xN t  | ƒ D]= } x4 t  | ƒ D]& } t | | | f ƒ | | | f <q› Wqˆ WqœnÍ d t j | | ƒ d d d t j | | ƒ d } t j ƒ  d k rœ| d 9} xx t  | ƒ D]g } x^ t  | ƒ D]P } t t j | | | f ƒ ƒ d t t j | | | f ƒ ƒ | | | f <qAWq.Wn  t | d |  ƒt | d |  ƒt	 | d |  ƒq Wd  S(	   Ni    i   i   g      à?i   i
   y              ð?R   (
   R   t   intR    t   randt
   randmatrixt   ret   imR   R   R%   (   t   vR$   R   R   R   R   (    (    s6   lib/python2.7/site-packages/mpmath/tests/test_eigen.pyt   test_eig_dyn|   s&    
.6
Uc          C   s  d }  g  } t  j d d d g d d d g d d d g g ƒ } | j | ƒ | j | j ƒ  ƒ t  j d d d g d d d g d d d g g ƒ } | j | ƒ | j | j ƒ  ƒ t  j d d d g d d d g d d d g g ƒ } | j | ƒ | j | j ƒ  ƒ t  j d d d g d d d g d d d g g ƒ } | j | ƒ | j | j ƒ  ƒ x> | D]6 } t | d |  ƒt | d |  ƒt | d |  ƒq_Wd  S(   Ni    i   i   R   (   R    t   matrixt   appendt	   transposeR   R   R%   (   R+   t   ASR   (    (    s6   lib/python2.7/site-packages/mpmath/tests/test_eigen.pyt   test_eig”   s4    N(
   t   mpmathR    R   t   backendR   R   R   R%   R,   R1   (    (    (    s6   lib/python2.7/site-packages/mpmath/tests/test_eigen.pyt   <module>   s   %. 	