
<Zc           @   s   d  d l  m Z d  d l  m Z e j j Z e d  Z e d  Z e e d  Z	 e e d  Z
 d   Z d d	  Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e d  Z d S(   i(   t   mp(   t   libmpc   
      C   s+  | r d t  |   f GHn  t j |   \ } } | t j |  | j   } |  | } | | j   t j |  j  } | r d | f GHd | f GHn  t j |  } t j |  } | r d | d | d f GHd | d | d f GHn  t j d t j	 t j
   }	 | |	 k  st  | |	 k  s't  | S(   Ns   original matrix:
s   eigenvalues:
s   eigenvectors:
s   difference:s   
g?(   t   strR    t   eigsyt   diagt	   transposet   eyet   rowst   mnormt   expt   logt   epst   AssertionError(
   t   At   verboset   Dt   Qt   Bt   Ct   Et   NCt   NER   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt	   run_eigsy	   s$    
 c   
      C   s+  | r d t  |   f GHn  t j |   \ } } | t j |  | j   } |  | } | | j   t j |  j  } | r d | f GHd | f GHn  t j |  } t j |  } | r d | d | d f GHd | d | d f GHn  t j d t j	 t j
   }	 | |	 k  st  | |	 k  s't  | S(   Ns   original matrix:
s   eigenvalues:
s   eigenvectors:
s   difference:s   
g?(   R   R    t   eigheR   t   transpose_conjR   R   R   R	   R
   R   R   (
   R   R   R   R   R   R   R   R   R   R   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt	   run_eighe$   s$    
 c         C   s  |  j  |  j } } t j d t j t j   } | rW d t |   f GHd | f GHn  t j |  d | \ } } } t j | j | j   }	 x1 t	 t
 | |   D] }
 | |
 |	 |
 |
 f <q W| r d t |  f GHd t |  f GHd t |  f GHn  | |	 | |  } t j |  } | r>d t |  d	 | f GHn  | | k  sPt  | | j   t j | j   } t j |  } | rd
 t |  d	 | f GHn  | | k  st  | j   | t j | j  } t j |  } | r d t |  d	 | f GHn  | | k  st  d  S(   Ng?s   original matrix:
t   fullt   full_matricess   U:
s   S:
s   V:
s   C
s   
s   D:
s   E:
(   R   t   colsR    R	   R
   R   R   t   svd_rt   zerost   xranget   minR   R   R   R   (   R   R   R   t   mt   nR   t   Ut   S0t   Vt   St   jR   t   errR   R   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt	   run_svd_r?   s8      c         C   s  |  j  |  j } } t j d t j t j   } | rW d t |   f GHd | f GHn  t j |  d | \ } } } t j | j | j   }	 x1 t	 t
 | |   D] }
 | |
 |	 |
 |
 f <q W| r d t |  f GHd t |  f GHd t |  f GHn  | |	 | |  } t j |  } | r>d t |  d	 | f GHn  | | k  sPt  | | j   t j | j   } t j |  } | rd
 t |  d	 | f GHn  | | k  st  | j   | t j | j  } t j |  } | r d t |  d	 | f GHn  | | k  st  d  S(   Ng?s   original matrix:
R   R   s   U:
s   S:
s   V:
s   C
s   
s   D:
s   E:
(   R   R   R    R	   R
   R   R   t   svd_cR   R   R    R   R   R   R   (   R   R   R   R!   R"   R   R#   R$   R%   R&   R'   R   R(   R   R   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt	   run_svd_cf   s8      c         C   s   d } t  j t |  |   \ } } | t  j |  8} | t  j |  8} t  j |  | k  se t  t  j |  | k  s t  d  S(   Ngh㈵>(   R    t   gauss_quadraturet   lent   matrixR   R   (   t   qtypet   at   bR   t   dt   e(    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt	   run_gauss   s    i
   c         C   sl   t  j |  |   } xS t |   D]E } x< t |   D]. } t d t  j   d |  | | | f <q2 Wq W| S(   s,   
    random matrix with integer entries
    i   i   (   R    R.   R   t   intt   rand(   R"   t   rangeR   t   iR'   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   irandmatrix   s
    0c          C   s  t  j d d g d d g g  }  t |   t |   t  j d d g d d g g  }  t |   t |   t  j d d d g d d d g d d d g g  }  t |   t |   t  j d d d g d d d	 g d d	 d g g  }  t |   t |   t  j d d g d d g g  }  t |   t  j d d d g d 
d d g d d d g g  }  t |   t  j d d d g d d d g d d d g g  }  t |   d  S(   Ni   i   i   i   ii   i   i    i   y              @y              &y              &@y              =@y              =y              1@y              3@iy              7@y      @      @y      @      y      &@      1@y      @      3@y      &@      1y      *      7@y      @      3y      *      7(   R    R.   R   R   (   R   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_eighe_fixed_matrix   s$    !

!

3

3

!
4
3c          C   s   d }  x t  d  D]| } d t j |  |   d } xO t  d |   D]> } x5 t  | d |   D]  } | | | f | | | f <q] WqC Wt |  q Wd  S(   Ni   i
   i   i   i    (   R   R    t
   randmatrixR   (   t   NR0   R   R8   R'   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_eigsy_randmatrix   s    "c          C   s   d }  x t  d  D] } d t j |  |   d d d t j |  |   d } x{ t  d |   D]j } t j | | | f  | | | f <x> t  | d |   D]) } t j | | | f  | | | f <q Wq_ Wt |  q Wd  S(   Ni   i
   i   i   y              ?i    (   R   R    R;   t   ret   conjR   (   R<   R0   R   R8   R'   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_eighe_randmatrix   s    6#+c          C   s   d }  d } x t  d  D]q } t |  |  } xO t  d |   D]> } x5 t  | d |   D]  } | | | f | | | f <qX Wq> Wt |  q Wd  S(   Ni   i
   i    i   (   R   R9   R   (   R<   t   RR0   R   R8   R'   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_eigsy_irandmatrix   s    "c          C   s   d }  d } x t  d  D] } t |  |  d t |  |  } x{ t  d |   D]j } t j | | | f  | | | f <x> t  | d |   D]) } t j | | | f  | | | f <q WqO Wt |  q Wd  S(   Ni   i
   y              ?i    i   (   R   R9   R    R>   R?   R   (   R<   RA   R0   R   R8   R'   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_eighe_irandmatrix   s     #+c          C   s   x t  d  D] }  t j   d k } d t t j   d  } d t t j   d  } d t j | |  d } t j   d k r | d 9} xN t  |  D]= } x4 t  |  D]& } t | | | f  | | | f <q Wq Wn  t | d | d t q Wd  S(   Ni   g      ?i   i
   i   R   R   (   R   R    R6   R5   R;   R)   t   False(   R8   R   R!   R"   R   t   xt   y(    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_svd_r_rand   s    
+c       
   C   sD  x=t  d  D]/}  t j   d k } d t t j   d  } d t t j   d  } 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 <q Wq Wn  t | d | d t q Wd  S(	   Ni   g      ?i   i
   i   y              ?R   R   (	   R   R    R6   R5   R;   R>   t   imR+   RD   (   R8   R   R!   R"   R   RE   RF   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_svd_c_rand  s    6
Uc          C   sl  t  j d t  j t  j   }  d d d d d g d d d d d	 g d
 d d
 d d g d d d d d g d d	 d d d g d d d d d
 g d d d d d g d d d d d g g } t  j |  } t  j t  j d  d t  j d  d d g  } t  j | d t } | | 8} t  j |  |  k  s.t	  t  j
 | d t } | | 8} t  j |  |  k  sht	  d  S(   Ng?i   i
   i   i   i   i   i    i   ii   iiii   i	   i   ii   ii   i  i   i  t
   compute_uv(   R    R	   R
   R   R.   t   sqrtR   RD   R   R   R*   (   R   R0   R1   R&   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_svd_test_case  s"    0

c          C   s*  d d g }  d d g } t  d |  |  d d d d d	 g }  d
 d d d d
 g } t  d |  |  d d d d g }  d d d d g } t  d |  |  d d g }  d d g } t  d |  |  d d d d d g }  d d d d d g } t  d |  |  d d  d! g }  d" d# d$ g } t  d% |  |  d  S(&   NgEygEy?i   t   legendreg{[lg0#;i    g0#;?g{[l?gΞS?g$%ڡ?gr3yV4?gHƱ?g?g
p?gü6?g>c@C?g:Ά_?t
   legendre01g'eg'e?gE%[?t   hermiteg"U) g䬀)g䬀)?g"U) @g8Dn?gR1?g??g\m?gpPZ@g\(@g F?g1m<?goF?t   laguerre(   R4   (   R0   R1   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_gauss_quadrature_static*  s$    c      
      sX  d  t  j d  d      f d    d d    f d  } | d d   d	 d g  | d
 d   d d g  | d d   t  j t  j g  | d d   d t  j g  | d d   d t  j g d d t  j d  | d d   d	 d g  | d d   d	 d g  | d d   d	 d g d d t  j d  d d t  j d  d  S(   Ni   i   i   c            sC   d } x6 t  t    d d d  D] } | |    | } q# W| S(   Ni    i   i(   R   R-   (   RE   t   rR8   (   R   (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   FH  s    #i    c            s   t  j  |  d | d | \ } } d } x6 t t |   D]" } | | |  | |  7} q= Wt  j    f d   |  }	 t  j | |	  }
  r |  |
 | |	 f GHn  |
 d k  s t  d  S(   Nt   alphat   betai    c            s    |     |   S(   N(    (   RE   (   RS   t   FW(    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   <lambda>U  s    gh㈵>(   R    R,   R   R-   t   quadt   fabsR   (   R/   RV   RA   RT   RU   t   Xt   WR0   R8   R1   t   c(   RS   R"   R   (   RV   s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   runN  s    $ RM   c         S   s   d S(   Ni   (    (   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   ^  s    iRN   c         S   s   d S(   Ni   (    (   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   _  s    RO   c         S   s   t  j |  |   S(   N(   R    R	   (   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   `  s    RP   c         S   s   t  j |   S(   N(   R    R	   (   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   a  s    t	   glaguerrec         S   s   t  j |   t  j |   S(   N(   R    RK   R	   (   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   b  s    RT   t
   chebyshev1c         S   s   d t  j d |  |   S(   Ni   (   R    RK   (   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   c  s    t
   chebyshev2c         S   s   t  j d |  |   S(   Ni   (   R    RK   (   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   d  s    t   jacobic         S   s2   d |  d t  j d  d |  d t  j d  S(   Ni   i   i   (   R    t   mpf(   RE   (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyRW   e  s    i   RU   (   R    R;   t   infRb   (   R   R]   (    (   R   RS   R"   R   s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   test_gauss_quadrature_dynamicC  s     /N(   t   mpmathR    R   t   backendR   RD   R   R   t   TrueR)   R+   R4   R9   R:   R=   R@   RB   RC   RG   RI   RL   RQ   Rd   (    (    (    s@   lib/python2.7/site-packages/mpmath/tests/test_eigen_symmetric.pyt   <module>   s$   ''	
									