
+[c        
   @   s  d  d l  m Z d  d l Z d  d l Te j j Z e j Z e j	 Z	 e j
 Z
 e j Z e j Z e d d d g d d d g d d d g g  Z d d d	 g Z e d d  d  d g d d
 d d  g d d d d
 g d d d	 d g g  Z d d d
 d  g Z e 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  Z d d d d d g Z e 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  Z d- d. d/ d0 d1 g Z e d d d g d
 d d g d d d2 g g  Z e d3 d4 d5 g d6 d7 d8 g d^ d; d_ g g  Z d= d> d? g Z e d d@ g d d g d
 d g g  Z d d d g Z e d d d g d  d d g d  d
 d  g d d d  g g  Z d d d d	 g Z e d	 d d
 g d d d g d
 d dA g g  Z dB dC dD g Z e d` dG dG g dH dI dJ g dK dL dM g g  Z dE da dE g Z  dN   Z! dO   Z" dP   Z# dQ   Z$ dR   Z% dS   Z& dT   Z' dU   Z( dV   Z) dW   Z* e+ d  dX    Z, dY   Z- dZ   Z. d[   Z/ d\   Z0 d]   Z1 d S(b   i(   t   divisionN(   t   *i   i   i   i   i   i   iii    iii	   ii   i   i2   gQx$@g=
ףp=g        gQ롿gGz@gNbX9gRQ?g(\@g(\B!gHzG?gRQgQ?g rпgp=
ף"@gEg)\#@g(\@g     @1g;On?g\(8@gQ"g33333sA@gp=
ףS@gQ?g33333sP@gfffff!@g
ףp=4@gGz@gffffff@gףp=
7M@ig	?gZB>@gr3܀o@gsFZ*o@g#GGge,i9@g	3g    .AgR#@g	cAg     7@gQ/gQ@g      g      @i
   i   g      /g      ?y              ?g       @g      @g      @g      @g      @g       @g      "@c          C   s~  t  j   }  t } t |   \ }  } t |  | |  } t |  |  } | d d d d g k sc t  g  | D] } t | d  ^ qj d d d d d	 g k s t  t j   }  t	 } t |   \ }  } t |  | |  } t |  |  } | d
 d d d g k st  g  | D] } t | d  ^ q
d d d d d g k s@t  t
 d  }  |  j   } t |  d d |  | k szt  d  S(   Ni   i   i   i   g-P@grhA@g(mUg^ \^v@g+6CV@i    i   gw]@g_DP@gIϘ}X?gRxgE9t	   overwrite(   t   A3t   copyt   b3t	   LU_decompt   L_solvet   U_solvet   AssertionErrort   roundt   A4t   b4t
   randmatrix(   t   At   bt   pt   yt   xt   it   bak(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_LU_decompH   s(    %%c          C   sV   xO t  t t g D]> }  t |   } t |  | t |  j  d  d k  s t  q Wd  S(   Ni   g+=(   t   A1t   A2t   A5t   inverset   mnormt   eyet   rowsR	   (   R   t   inv(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_inverse^   s    c          C   sD  d t  _ t t }  } t t |  |   \ } } } } | t t d  t d  t d  d g d t d  t d  t d	  g d t d
  t d  t d  g d t d  t d  t d  g g  k s t  | d d t d  g k s t  t	 t
 | d  d  d k st  d d d d d d d d d d d  d! g } d"   } g  } g  }	 x t d d#  D] }
 | |
  }  t t |  |   \ } } } } t |  } t |  } | j t
 | d   |	 j t
 t |  | |  d   qgWg  | D] } t	 | d  ^ qd$ d% d& d' d( g k s+t  t
 t |  t |	  t  d) k  sVt  d*   } g  } g  } x t d d  D] }
 | |
  }  t |  j    \ } } } } | j t
 | d   | j t
 t |  d  d   d  |
 d+  f | |  d  d   |
 d+ f  d   q{Wt
 t |  t |  t  d) k  s@t  d  S(,   Ni   s   3.0s   -2.0s   -1.0i    g      s   3.333333333333333s   -2.9999999999999991s   2.0s   -0.66666666666666674s   2.8142135623730948s   -2.8284271247461898g      ?s   -1.3333333333333333s   -0.20000000000000018s   4.2426406871192857is   -1.4142135623730949i   i
   gv@gJ+Y@gy&1,M@g%C;B@g(\O8@g1Z1@gn(@gMb"@g(\@gq=
ףp@gʡE@gy&1,@g/$@c         S   sc   g  } xP t  d d  D]? } | j g  t  d |  d  D] } d | | d ^ q6  q Wt |  S(   Ni   i   g      ?(   t   ranget   appendt   matrix(   t   nR   R   t   j(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   coefft   s    =i   gRmX.@g8hi\?g5Żڌ^?g?g A8C?gvIh%<=c         S   s   t  d |  |   } t d |  d d d d d } | j d    } t | d  d   d f  | t | d  |   d f  } | S(   Ni   t   minit   maxi   c         S   s   t  d t   |   S(   Ny              ?(   t   expt   pi(   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   <lambda>   s    i    (   t   hilbertR   t   applyt   diag(   R"   R   t   v(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   hilbert_cmplx   s
    :i   (   t   mpt   dpst   A8t   b8t   householdert   extendR!   t   mpfR	   R
   t   normR   R    t   residualt   infR   (   R   R   t   HR   R   t   rR   R$   t	   residualst   refresR"   t   resR.   t   residuals_cmplxt   refres_cmplx(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_householderc   sJ    	!!!!$	!&"	+	Tc          C   sL   t  d  }  t |   \ } } } t | |  | | d  d k  sH t  d  S(   Ni   i   gV瞯<(   R   t   luR   R	   (   R   t   Pt   Lt   U(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_factorization   s    c           C   s  t  t t t t t  t  t  d k  s0 t  t  t t t t t  t  t  d k  s` t  t  t t	 t t	 t
  t
  t  d k s t  t  t t t t t  d t  t  d k  s t  t  t t t t t  d t  t  d k  s t  t  t t	 t t	 t
  d t
  d  d k s,t  t  t t t t t  t  d  d k  s\t  t  t t t t t  d t  d  d k  st  d  S(   Ng|=g      ?i   i    i   g333333@go   @(   R6   R7   t   A6t   lu_solvet   b6R8   R	   t   A7t   b7R1   R2   t   qr_solvet   A10t   b10(    (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt
   test_solve   s    0004440c          C   sr   t  d d g d d g d d g g  }  t  d t d t g  } t t |  t |  |  |   d k  sn t  d  S(	   Ni   y               @i   y              @i   i   i   g|a2U?(   R!   R#   R6   R7   RG   R	   (   R   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_solve_overdet_complex   s    'c             s   d t  _ d d g d d g g }  t t d   } d d g } xa d |  | f d | | f d	 |  | f d	 | | f g D]%   t j t t f   f d
    qz Wd  S(   Ni   gffffff@g333333?g      @g?i   i   s   lu_solve(%s, %s)s   qr_solve(%s, %s)c              s
   t     S(   N(   t   eval(    (   R   (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyR)      s    g?(   R/   R0   t   reprt   zerost   pytestt   raisest   ZeroDivisionErrort
   ValueError(   R   t   BR   (    (   R   s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_singular   s    	$c          C   s   t  j t  j t   t  j d d d g d d d g d d d g g  k sQ t  t  j t t  }  t  j t  j t |  t  t  j	  d k s t  d  S(	   Ni   i    i   iii   g      g      ?(
   t   fpt   choleskyR!   t   A9R	   t   cholesky_solvet   b9R6   R7   R8   (   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_cholesky   s    Qc           C   s   t  t  d k s t  t t  t  d  d k s9 t  t t  t   d k sW t  t t  t   d k su t  t  t  d k s t  t t  t   d k s t  t  t	 d   d k s t  d  S(	   Ni   i   i   i*  iC ii   i    (
   t   detR   R	   R
   R   R   R   R   RF   RR   (    (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_det   s    !c          C   s   d t  _ t d d g d d g g  }  t |  d    t d  k sK t  t |  d    t d  k so t  t |  d	    t d
  k s t  d  S(   Ni   g6?gꕲq?ga2U0*?gBiq?c         S   s   t  |  d  S(   Ni   (   R   (   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyR)      s    s   327065209.73817754c         S   s   t  |  t  S(   N(   R   R8   (   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyR)      s    c         S   s   t  |  d  S(   Nt   F(   R   (   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyR)      s    s   249729266.80008656(   R/   R0   R!   t   condR5   R	   (   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt	   test_cond   s
    	$$c          C   s>   t  d d  }  t t t |    |  d  d k  s: t  d  S(   Ni
   i   gj7֖6(   R   R   R   R	   (   R   (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_precision   s    c          C   s   d t  _ d t _ t j d d d g d d d g d d	 d
 g g  }  t j d d d g  } t j |  |  } | d j d k  s t  | d j d k  s t  | d j d k  s t  d | d k s t  d | d k s t  d | d k s t  d  S(   Ni   s   0.1s   0.3s   1.0s   7.1s   5.5s   4.8s   3.2s   4.4s   5.6t   4s   0.6s   0.5i    gvIh%<=i   i   giE'n@gFxlbO*g'ɮ@(   R/   R0   t   ivR!   RG   t   deltaR	   (   t   aR   t   c(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_interval_matrix   s    		3c          C   sV   t  d  }  t |   } |  j t |   k s3 t  d |  d <|  j d  k sR t  d  S(   Ni   ii    (   i    i    (   R   R   t   _LUR	   t   None(   R   t   LU(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_LU_cache   s
    
c          C   s   t  d d d d d }  t  d d d d d d } t |  |  t  d d d d	 d d
 } t |  | |  } t t |  | |  d  t t |  | |  d  k  s t  d  S(   Ni   R%   g#B;R&   g@xDi   ii  gh㈵gh㈵>i   (   R   RG   t   improve_solutionR6   R7   R	   (   R   R   t   x1t   x2(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_improve_solution   s
    (c          C   sE  x5t  d  D]'}  d } d } | | t _ d } d } t  d | d  } t |  } t g  | D] } t |  ^ qa  } x. t |  d k  r t |  }	 t |	  } q W|	 | }	 |	 d | |	 }
 |	 d | |	 } | t _ t |
 d d } | | t _ | | } | t _ t	 | t
  j d  s t  q Wd t _ d  S(	   Ni   i   i    i   g{Gz?it   methodt   pade(   R   R/   R0   R,   R'   t   absR   R_   t   expmR6   R8   t   aeR	   (   R   R0   t   extrat   dmt   Nt   dgRh   R   t   expat   mt   a1t   e2t   e1t   d(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_exp_pade   s,    %
	
	"c          C   s  d t  _ d }  d } d } t } t d  } xt d d  D]} d } d } t | d	  } t d	 | d	 t    } t d	 | d	 t    }	 t t	 | |	   }
 t t
 | |	   } t  j |
 |  } | rit } d
 } x t d |  D]o } xf t d |
  D]U } t |  | |  t    } t |  | |  t    } t | |  | | | f <q	Wq Wnq t } d } xb t d |  D]Q } xH t d |
  D]7 } t |  | |  t    } t |  | | | f <qWqWt | | d | \ } } t d  } t | | |  } | | k s't  | d k rt t |
  | j |  } | | k sbt  t t |
  | | j  } | | k st  n  | d
 k r= t t |
  | j | j    } | | k st  t t |
  | j   | j  } | | k st  q= q= Wd  S(   Ni   ii	   i   s   0.0i    i
   t   fulli   t   complext   realt   edpss   1.0E-11(   R/   R0   t   FalseR5   t   xranget   boolt   nintt   randt   intR&   R%   R!   t   mpct   Truet   qrR6   R	   R   t   Tt	   conjugate(   t   lowlimitt   uplimitt   maxmt   flgt   zerot   kt   exdpst   modet   num1t   num2R}   R"   R   t   dtypeR#   R   t   valt   val2t   Qt   Rt   maxnormt   n1(    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   test_qr  sV    	$##g}.Ag(~Ƅ.y      ?      ?y      ?      ?(2   t
   __future__R    RS   t   mpmatht   libmpt   backendR   R/   R   R   R   R3   Ro   R!   R   t   b1R   t   b2R   R   R   R   R   RF   RH   RI   RJ   R1   R2   R[   R]   RL   RM   R   R   R@   RE   RN   RO   RX   R^   R`   Rc   t   extradpsRd   Rj   Rn   Rr   R   R   (    (    (    s7   lib/python2.7/site-packages/mpmath/tests/test_linalg.pyt   <module>   s   
									7		
											