
&]\c           @` s  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l	 m
 Z
 m Z m Z m Z m Z m Z d  d l Z d  d l m Z d  d l Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z d  d l  m! Z" d  d	 l  m# Z# m$ Z$ m% Z% m& Z& d  d
 l' m( Z( y d  d l  m) Z* Wn e+ k
 red Z* n Xd  d l' m- Z- d  d l. m/ Z/ e j0 e j1 g Z2 e j3 e j4 g Z5 e2 e5 Z6 d e7 f d     YZ8 d e7 f d     YZ9 d e7 f d     YZ: d e7 f d     YZ; d e7 f d     YZ< d e7 f d     YZ= d   Z> d   Z? d   Z@ e jA jB d    ZC d e7 f d     YZD d  e7 f d!     YZE d"   ZF d#   ZG d$   ZH d%   ZI d&   ZJ d'   ZK d(   ZL d)   ZM d*   ZN d+   ZO d,   ZP d-   ZQ d.   ZR d S(/   i    (   t   divisiont   print_functiont   absolute_importN(   t   reduce(   t   assert_equalt   assert_array_almost_equalt   assert_t   assert_allcloset   assert_almost_equalt   assert_array_equal(   t   raises(   t   eyet   onest   zerost
   zeros_liket   triut   trilt   tril_indicest   triu_indices(   t   randt   seed(   t   _flapack(   t   invt   svdt   choleskyt   solve(   t   _compute_lwork(   t   _clapack(   t   get_lapack_funcs(   t   get_blas_funcst   TestFlapackSimplec           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c   
      C` sc  d d d g d d d g d d d	 g g } d d
 d
 d g d d
 d
 d g d d d
 d
 g d
 d d
 d
 g g } x d D] } t  t | d d   } | d  k r qs n  | |  \ } } } } }	 t |	 t |	   t | |  t | | f d
 t | d
  d f  t | t j	 t |    | | d d d d \ } } } } }	 t |	 t |	   qs Wd  S(   Ni   i   i   i   i   i   i   i   i	   i    ga2U0*3?gMb`?t   sdzct   gebalt   permutet   scale(
   t   getattrt   flapackt   NoneR   t   reprR   R   t   lent   npR   (
   t   selft   at   a1t   pt   ft   bat   lot   hit   pivscalet   info(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_gebal*   s     *''c         C` s   d d d g d d d g d d d	 g g } x_ d
 D]W } t  t | d d   } | d  k r_ q1 n  | |  \ } } } t | t |   q1 Wd  S(   Nikiifi  i   i"  iiit   dt   gehrd(   R#   R$   R%   R   R&   (   R)   R*   R,   R-   t   htt   tauR2   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_gehrd?   s    c      	   C` s  t  j d d g d d g g  } t  j d d g d d g g  } t  j d d	 g d
 d g g  } d } xd D]w} | j |  | j |  | j |  } } } t d | f  \ }	 | j   r | d c d 7<d } n  |	 | | |  \ }
 } } t t  j | |
  t  j |
 |  | |  |	 | | | d | d | \ }
 } } t t  j | j   j |
  t  j |
 | j   j  | | d d |	 | | | d d \ }
 } } t t  j | |
  t  j |
 |  | | d d qp Wd  S(   Ni   i   i    i   i   i   i   i	   i
   i   i   t   Tt   fdFDt   trsyly              ?t   Ct   tranat   tranbt   decimalt   isgni(   R;   (	   R(   t   arrayt   astypeR   t   isupperR   t   dott	   conjugateR9   (   R)   R*   t   bt   ct   transt   dtypeR+   t   b1t   c1R;   t   xR"   R2   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_trsylJ   s(    !!!/	"'1!"c   	      C` s  t  j d d d g d d d g d d d	 g g  } xud
 D]m} xdd D]\} | j |  } | j   r{ | d c d 7<n  t d | f  \ } | | |  } | d k r| d k r d } n d } t  j t  j t  j t  j |     } t	 | | |  qG | d k r*t  j
 t  j |   } nl | d k r`t  j
 t  j t  j |  d d  } n6 | d k rt  j
 t  j t  j |  d d  } n  t | |  qG Wq: Wd  S(   Nikiifi  i   i"  iiiR:   t   Mm1OoIiFfEei    y              ?t   langet   FfEet   Ffi   i   t   Mmt   1Oot   axist   Iii   (   i    i    (   RO   (   R(   RA   RB   RC   R   t   sqrtt   sumt   squaret   absR   t   maxR   (	   R)   R*   RI   t   normR+   RO   t   valueR?   t   ref(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_langef   s0    	***(   t   __name__t
   __module__R3   R8   RM   R^   (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyR   (   s   			t
   TestLapackc           B` s   e  Z d    Z d   Z RS(   c         C` s   t  t d  r n  d  S(   Nt   empty_module(   t   hasattrR$   (   R)   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_flapack   s    c         C` s   t  t d  r n  d  S(   NRb   (   Rc   t   clapack(   R)   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_clapack   s    (   R_   R`   Rd   Rf   (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyRa      s   	t   TestLeastSquaresSolversc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` s  t  d  x t t  D] \ } } d } d } d } t | |  j |  } t |  j |  } t d% d | \ } }	 t |	 | | |  }
 | | | d |
 \ } } } t | d	 k  | | | d
 d | d |
 \ } } } t | d	 k  q WxHt D]@} t	 j
 d d g d d g d d g g d | } t	 j
 d d d g d | } t d& | | f  \ } } } | j \ } } t | j  d k r| j d } n d } t | | | |  }
 | | | d |
 \ } } } t | d  t	 j
 d d g d | d d t	 j |  j | |  \ } } } } t | |  q WxHt D]@} t	 j
 d' d g d( d) g d* d+ g g d | } t	 j
 d d, d- g d | } t d. | | f  \ } } } | j \ } } t | j  d k r| j d } n d } t | | | |  }
 | | | d |
 \ } } } t | d  t	 j
 d/ d0 g d | d d t	 j |  j | |  \ } } } } t | |  qKWd  S(1   Ni  i
   i   i   t   gelst
   gels_lworkRI   t   lworki    RH   t   TTCCg      ?g       @g      @g      @g      @g       @g      0@g      1@g      4@t   geqrfi   ig,g-@t   rtoli   y              @y              ?y              @y               @y        ffffff?gR ?y        \j?g,?y         W?(   Rh   Ri   (   Rh   Ri   Rl   y      ?      @y      @      ?y      @      y      @       y       @ffffff?y      1@       @y      4@      (   Rh   Ri   Rl   yR ?\jy,? W?(   R   t	   enumeratet   DTYPESR   RB   R   R   R   t   REAL_DTYPESR(   RA   t   shapeR'   R   t   finfot   epsR	   t   COMPLEX_DTYPES(   R)   t   indRI   t   mt   nt   nrhsR+   RJ   t   glst   glslwRj   t   _R2   Rh   Ri   Rl   t   lqrRL   t	   lqr_truth(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt	   test_gels   sf    
(				
		 c      
   C` s,  xt  D]} t j d d g d d g d d g g d | } t j d d	 d
 g d | } t d! | | f  \ } } | j \ } } t | j  d k r | j d } n d } | | | | d  \ }	 }
 } t t j |	   } |
 } | | | | | d t t  \ } } } } t	 | d  t j d d g d | d d t j
 |  j t	 | t j d d g d | d d t j
 |  j q Wxt D]} t j d" d g d# d$ g d% d& g g d | } t j d d' d( g d | } t d) | | f  \ } } | j \ } } t | j  d k r5| j d } n d } | | | | d  \ }	 } }
 } t t j |	   } t |  } |
 } | | | | | | d t t  \ } } } } t	 | d  t j d* d+ g d | d d t j
 |  j t	 | t j d d  g d | d d t j
 |  j qWd  S(,   Ng      ?g       @g      @g      @g      @g       @RI   g      0@g      1@g      4@t   gelsdt   gelsd_lworki   i   ig,g-@Rm   i   gYN))1)@g*@.?y              @y              ?y              @y               @y        ffffff?gR ?y        \j?g,?y         W?gU.*@g_Y@(   R   R   y      ?      @y      @      ?y      @      y      @       y       @ffffff?y      1@       @y      4@      (   R   R   yR ?\jy,? W?(   Rp   R(   RA   R   Rq   R'   t   intt   realt   FalseR   Rr   Rs   Rt   (   R)   RI   R+   RJ   R   R   Rv   Rw   Rx   t   workt   iworkR2   Rj   t
   iwork_sizeRL   t   st   rankt   rworkt
   rwork_size(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_gelsd   s\    		!
		 c         C` s  xt  D]z} t j d d g d d g d d g g d | } t j d d	 d
 g d | } t d! | | f  \ } } | j \ } } t | j  d k r | j d } n d } | | | | d  \ }	 }
 t t j |	   } | | | d | t t  \ } } } } }	 }
 t	 | d  t j d d g d | d d t j
 |  j t	 | t j d d g d | d d t j
 |  j q Wxt D]z} t j d" d g d# d$ g d% d& g g d | } t j d d' d( g d | } t d) | | f  \ } } | j \ } } t | j  d k r/| j d } n d } | | | | d  \ }	 }
 t t j |	   } | | | d | t t  \ } } } } }	 }
 t	 | d  t j d* d+ g d | d d t j
 |  j t	 | t j d d  g d | d d t j
 |  j qWd  S(,   Ng      ?g       @g      @g      @g      @g       @RI   g      0@g      1@g      4@t   gelsst   gelss_lworki   i   ig,g-@Rm   i   gYN))1)@g*@.?y              @y              ?y              @y               @y        ffffff?gR ?y        \j?g,?y         W?gU.*@g_Y@(   R   R   y      ?      @y      @      ?y      @      y      @       y       @ffffff?y      1@       @y      4@      (   R   R   yR ?\jy,? W?(   Rp   R(   RA   R   Rq   R'   R   R   R   R   Rr   Rs   Rt   (   R)   RI   R+   RJ   R   R   Rv   Rw   Rx   R   R2   Rj   t   vRL   R   R   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_gelss  sT    	-	-
			c      	   C` s   xt  D]} t j d d g d d g d d g g d | } t j d d	 d
 g d | } t d | | f  \ } } | j \ } } t | j  d k r | j d } n d } | | | | d t j |  j  \ }	 }
 t t j	 |	   } t j
 | j d d f d t j } | | | | t j |  j | t t  \ } } } } }
 t | d  t j d d g d | d d t j |  j q Wxt D]} t j d d g d  d! g d" d# g g d | } t j d d$ d% g d | } t d& | | f  \ } } | j \ } } t | j  d k r8| j d } n d } | | | | d t j |  j  \ }	 }
 t t j	 |	   } t j
 | j d d f d t j } | | | | t j |  j | t t  \ } } } } }
 t | d  t j d' d( g d | d d t j |  j qWd  S()   Ng      ?g       @g      @g      @g      @g       @RI   g      0@g      1@g      4@t   gelsyR   i   i   i
   ig,g-@Rm   i   y              @y              ?y              @y               @y        ffffff?gR ?y        \j?g,?y         W?(   R   R   y      ?      @y      @      ?y      @      y      @       y       @ffffff?y      1@       @y      4@      (   R   R   yR ?\jy,? W?(   Rp   R(   RA   R   Rq   R'   Rr   Rs   R   R   R   t   int32R   R   Rt   (   R)   RI   R+   RJ   R   t   gelsy_lworkRv   Rw   Rx   R   R2   Rj   t   jptvR   RL   t   jR   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_gelsyN  sP    	+%	+%
			(   R_   R`   R~   R   R   R   (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyRg      s   	D	;	8t   TestRegressionc           B` s   e  Z d    Z RS(   c   
      C` s&  xt  D]} t j d
 d | } t d g | g  \ } t t | | d d | |  \ } } } } | t k r t d g | g  \ } t t | | d | d d | | d | d d q | t k r t d	 g | g  \ }	 t t |	 | d | d d |	 | d | d d q q Wd  S(   Ni,  i   RI   t   gerqfRj   t   orgrqii   t   ungrq(   i,  i   (   Ro   R(   R   R   t   assert_raisest	   ExceptionRp   Rt   (
   R)   RI   R*   R   t   rqR7   R   R2   R   R   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_ticket_1645  s    (   R_   R`   R   (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyR     s   t	   TestDpotrc           B` s   e  Z d    Z RS(   c   
      C` s  x t  t g D] } x t  t g D] } t j j d  t j j d d  } | j | j  } t d	 | f  \ } } | | | d | \ } } | | |  d }	 | r t	 t j
 |	  t j
 t |    q  t	 t j |	  t j t |    q  Wq Wd  S(
   Ni*   t   sizei   t   potrft   potrit   cleani    (   i   i   (   R   R   (   t   TrueR   R(   t   randomR   t   normalRD   R9   R   R   R   R   R   (
   R)   t   lowerR   RL   R*   t   dpotrft   dpotriRG   R2   t   dpt(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_gh_2691  s    ((   R_   R`   R   (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyR     s   t
   TestDlasd4c           B` s   e  Z d    Z RS(   c      
   C` s)  t  j d d d d g  } t  j d d d d g  } t  j t  j t  j | d d	 ! t  j d
 t |  d
 f  f  | d  d   t  j f f  } t | d t	 d t	 d t	 d t	 } t |  } t  j
 | d  d  d	  | d | t  j t  j t  j | d    f f  } t  j
 | d  d  d	  d f  } t d | f  } g  }	 xU t d |  D]D }
 | |
 | |  } |	 j | d
  t | d d k d |
  q_Wt  j |	  d  d  d	  }	 t t  j t  j |	   d f  t | |	 d d t  j t  j  j d d t  j t  j  j d  S(   Ng      @g      @g       @i    g(\@g@g333333gii   t   full_matricest
   compute_uvt   overwrite_at   check_finitei   t   lasd4i   sc   LAPACK root finding dlasd4 failed to find                                     the singular value %is   There are NaN rootst   atolid   Rm   (   i    (   R(   RA   t   hstackt   vstackt   diagR   R'   t   newaxisR   R   t   concatenateRV   RW   t   powerR   t   ranget   appendR   t   anyt   isnanR   Rr   t   float64Rs   (   R)   t   sigmast   m_vect   Mt   SMt   it_lent   sgmt   mvcR   t   rootst   it   res(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_sing_val_update  s*    A	2"#%(   R_   R`   R   (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyR     s   c          C` s   x d D] }  t  d d |  } t j d |   } t j d |   } t j |  r_ | d 9} n  | | |  \ } } } t | d  t | d  t j |  r t | d  t t |  t k  t t |  t k  q t | d  q Wd  S(   NR:   t   lartgRI   i   i   y              ?g      @g      @y              g      @g333333?y        g?(	   R   R(   RA   t   iscomplexobjR   R   t   typet   complext   float(   RI   R   R-   t   gt   cst   snt   r(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_lartg  s    c    
      C` sf  x_d D]W}  d } d } t  j d |   d } t  j d |   d } d t  j |   j d } |  d k r t d	 d
 |  } d } n, t d	 d
 |  } | d 9} | d 9} d } t | | | | |  d d d d g d d d d g g d | t | | | | | d d d d d d g d d | | g g d | t | | | | | d d d d d d d d g | | d d g g d | t | | | | | d d d d d d d d d d g | | d d g g d | t | | | | | d d d d d d d d d d g d | d | g g d | t | | | | | d d d d d d d d d d d d d d g | | d | g g d | t | | | | | d d d d d d d d d d g d | d | g g d | | | | | | d d d d \ } }	 t | | k  t |	 | k  t | d d d d g d | t |	 d d d d g d | q Wd  S(   NR:   g333333?g?i   i   i
   i   t   fdt   rotRI   y              y              ?y              @i   i    R   Rw   i   t   offxt   offyt   incxt   incyit   overwrite_xt   overwrite_y(   R(   R   Rr   t	   precisionR   R   R   R   (
   RI   RG   R   t   uR   R   R   R-   R*   RF   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_rot  s@    	

$*!+'+'+3+'+'c          C` sd  t  j j d  t  j j d  }  |  j j |   }  t  j j d  d t  j j d  } | j j   j |  } xd D]} t d d g d | \ } } | d k r | j   } n |  j   } | | j d	 d
 | d | d d   d	 f  \ } } } t  j	 | d  d   d	 f  }	 | d |	 d	 <| |	 d
 <t  j	 | d
 d   d	 f  }
 d |
 d	 <| |
 d
 )| |
 | j
   | d
 d   d  d   f t  j | j d
   | d
 d   d  d   f <| |
 | | d  d   d
 d   f t  j | j d	  d d | d  d   d
 d   f <t | d  d   d	 f |	 d d t | d	 d  d   f |	 d d qy Wd  S(   Ni  i   y              ?R:   t   larfgt   larfRI   t   FDi    i   i   g      ?t   sidet   RR   gh㈵>(   i   i   (   i   i   (   i   i   (   i   i    (   i    i    (   R(   R   R   R9   RD   t   conjR   t   copyRq   R   RE   R   R   (   t   a0t   a0jRI   R   R   R*   t   alphaRL   R7   t   expectedR   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_larfg_larf  s*    &:


WW#c          C` s   t  j t j d d g d t  j d t  j }  xP t d  D]2 } t j d  |  j	   d  k	 r: |  j } Pq: q: Wd } |  j   t | d d |  j j    d  S(	   Ns   -csf   import numpy as np; from scipy.linalg import svd; a = np.zeros([9537, 9537], dtype=np.float32); svd(a)t   stdoutt   stderri2   g?i    s   Code apparently failed: (   t
   subprocesst   Popent   syst
   executablet   PIPEt   STDOUTR   t   timet   sleept   pollR%   t
   returncodet	   terminateR   R   t   read(   R,   R   R   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt    test_sgesdd_lwork_bug_workaround9  s    				
	t	   TestSytrdc           B` s   e  Z d    Z RS(   c         C` s  xt  D]} t j d d | } t d | f  \ } } t t | |  d } t j | | f d | } t j d | | d d d d | | t j |  <| |  \ } } t | d  | | d d d	 | \ } }	 }
 } } t | d  t	 | | d
 d t j
 |  j d d t	 |	 t j |   t	 |
 d  t	 | d  | | d	 | \ } }	 }
 } } t | d  t j | d | } t j | j d  } |	 | | | f <t j | j d d  } |
 | | d | f <|
 | | | d f <t j | | d | } x t | d  D] } t j | d | } | d  |  | d f | | *d | | <t j | | d | | | t j | |  } t j | |  } q Wt j | d  } | j | | | <t j | j t j | |   } t	 | | d
 d t j
 |  j d d q Wd  S(   Ni    RI   t   sytrdt   sytrd_lworki   i   i   R   Rj   R   i   Rm   g      ?g        i(   i    i    (   R   R   (   Rp   R(   R   R   R   t
   ValueErrort   aranget   triu_indices_fromR   R   Rr   Rs   R   R   Rq   R   R   t   outerRD   R   R9   (   R)   RI   t   AR   R   Rw   Rj   R2   t   dataR4   t   eR7   R9   t   kt   k2t   QR   R   t   Ht   i_lowert   QTAQ(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_sytrd]  sD    5')!
0!(   R_   R`   R  (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyR   \  s   t	   TestHetrdc           B` s   e  Z d    Z RS(   c         C` s  xt  t t  D]\ } } t j d d | } t d | f  \ } } t t | |  d } t j | | f d | } t j d | | d d d d | d t j d | | d d d d | | t j	 |  <t j
 | t j t j |    | |  \ } } t | d  | | d	 d d
 | \ }	 }
 } } } t | d  t |	 | d d t j |  j d d t |
 t j t j |    t | d  t | d  | | d
 | \ }	 }
 } } } t | d  t j | d | } t j | j d d t } |
 | | | f <t j | j d d d t } | | | d | f <| | | | d f <t j | | d | } x t | d  D] } t j | d | } |	 d  |  | d f | | *d | | <t j | | d | | | t j | t j |   } t j | |  } qWt j | d  } t j | j |  | | <t j t j | j  t j | |   } t | | d d t j |  j d d q Wd  S(   Ni    RI   t   hetrdt   hetrd_lworki   i   i   y              ?R   Rj   R   i   Rm   g      ?g        ii
   (   i    i    (   R
  R  (   t   zipRp   Rt   R(   R   R   R   R   R   R   t   fill_diagonalR   R   R   R   Rr   Rs   R   Rq   R   R   R   R   R   RD   R   R9   (   R)   t
   real_dtypet   complex_dtypeR   R
  R  Rw   Rj   R2   R   R4   R  R7   R9   R  R  R  R   R   R  R  t   QHAQ(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_hetrd  sL    %:"')! 
$*(   R_   R`   R  (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyR	    s   c          C` s}  xvt  t  D]h\ }  } t dj d | \ } } t | d d d d d d	 } |  d	 k  rt j d
 d d d g d d d d g d d d d g d d d d g d d d d g d d d d g g d | } t j d  d d! d" d# d$ g d | } t j d% d% g d | } n t j dk dl dm dn g do dp dq dr g ds dt du dv g dw dx dy dz g d{ d| d} d~ g d d d d g g  } t j d g d g d g d g d g d g g  } t j d	 d | } t j d] d% d^ d% g d% d] d% d^ g g d | } | | | | | d_ | \ }	 }	 }	 }
 }	 |  d	 k  rGt j d` da d` da g  } n t j d d d d g  } t |
 | di d q Wd  S(   Nt   gglset   gglse_lworkRI   Rv   i   Rw   i   R,   i   g=
ףp=g{Gzg(\ؿg      ?gzGgHzG?gףp=
ӿgQgffffff@gQ?g?gffffffֿg{Gz?gQg{Gz?g333333?g333333?g
ףp=
g{Gzg{Gz?gzGg      ?g      gGz?gHzGgzGg=
ףp=?g        gQ?y        Q?gQy        Q?gQy        {Gz @gy        =
ףp=?g\(\y        Gz?g333333y        RQ?y        zG?gQy        Q?gףp=
?y        q=
ףp?g)\(?y        {Gz?g)\(?y        (\?g(\y        333333?gGz?y        RQ?gRQ?y        HzG?y        
ףp=
?g)\(?y        ?g(\?y        RQ?g?y        {Gz?g(\ſgQ?y        q=
ףp?y        Q?y        Q?gQ뱿y        Gz?gp=
ף?y        p=
ף?gRQy        
ףp=
?gffffff?y        Gz@gzG y        Gz@gQ?y        ffffff
@gp=
ףy        )\(@g(\ @y        Q?g      ?g      Rj   g^"L?g\}?g!f?y        $_Kd?g^gŵy        F@y        }d?g61ŵy        e_@R?   (   R  R  yQ?QyQQ?yQ{Gz @y=
ףp=?y\(\￮Gz?y333333RQ?yQzG?yQQ?yףp=
?q=
ףpݿy)\(?{Gz?y)\(?(\ſy(\333333?yGz?RQ?yRQ?HzGy\(\
ףp=
׿y)\(?ɿy(\?RQ?y?{Gz?y(\ſq=
ףpݿyQ?q=
ףp?yHzG?Qѿy?QyQ뱿Gz?yp=
ף?p=
ף?yRQ
ףp=
?yffffff?GzyzG GzyQ?ffffff
@yp=
ף)\(@y(\ @Q?y!f?$_Kdy^gŵ翸F@y!f?}dy61ŵe_@(   Rn   Ro   R   R   R(   RA   R   R   (   Ru   RI   t   funct
   func_lworkRj   R*   RG   R4   RF   R{   t   resultR   (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_gglse  sL    	'3*		c       
   C` s  t  d  xt t t  D]\ }  } d } |  d k  r~ t d d | } t d d | \ } } t | |  j |  } nS t d d | } t d d | \ } } t | |  t | |  d j |  } | | j   j d d t	 j
 | d | } t	 j j | d  } t | |  } | | d | d d \ }	 }
 } | d |	 d |
 d | d d  \ } } t t d | t	 j j | d d  | d k   q Wd  S(   Ni  i
   i   t   sytrf_lworkRI   t   sycont   sytrft   hetrf_lworkt   hecont   hetrfy              ?i   i   Rj   R   R*   t   ipivt   anormR,   (   R  R  (   R  R  (   R   Rn   Ro   Rt   R   R   RB   R   R9   R(   R   t   linalgR[   R   R   RY   t   cond(   Ru   RI   Rw   R  t   funcont   functrfR   R  Rj   t   lduR  R{   t   rcond(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_sycon_hecon$  s     
).!'c          C` s_  t  d  xNt t  D]@\ }  } d } t d d | \ } } } } t | |  j |  } | | j d } t | |  j |  } | | j d d t j | d | } | | |  \ }	 }
 } t	 | d	 k  | |  \ } } t	 | d	 k  | | |  \ } } t	 | d	 k  | |  \ } }	 } t	 | d	 k  t
 | |
 d
 d q Wd  S(   Ni  i
   R   t   sygstt   syevdt   sygvdRI   i   i    Rm   g-C6?(   R   R'  R(  R)  (   R   Rn   Rp   R   R   RB   R9   R(   R   R   R   (   Ru   RI   Rw   R   R'  R(  R)  R   t   BR{   t   eig_gvdR2   RF   R*   t   eig(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_sygst?  s&    
(c          C` s  t  d  xt t  D]\ }  } d } t d d | \ } } } } t | |  j |  d t | |  j |  } | | j   j d	 } t | |  j |  d t | |  j |  } | | j   j d	 d	 t j	 | d | } | | |  \ }	 }
 } t
 | d
 k  | |  \ } } t
 | d
 k  | | |  \ } } t
 | d
 k  | |  \ } }	 } t
 | d
 k  t | |
 d d q Wd  S(   Ni  i
   R   t   hegstt   heevdt   hegvdRI   y              ?i   i    Rm   g-C6?(   R   R.  R/  R0  (   R   Rn   Rt   R   R   RB   R   R9   R(   R   R   R   (   Ru   RI   Rw   R   R.  R/  R0  R   R*  R{   R+  R2   RF   R*   R,  (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_hegst^  s&    
22.c       
   C` sK  t  d  d \ }  } x.t t  D] \ } } t d d | \ } } t | |  |  } | d k  r t t |  |  j |   } n/ t t |  |  t |  |  d j |   } t t	 | | j
  | | d	 | \ } }	 }
 t |
 d
 k  t j | d d  d |   f t j |  | |  f d | f  } t j t j |  d | | d d  |  d  f f  } t j | d | } g  t |   D]P } | |	 | | | g d d  f j
 j | | g d d  f j    ^ q} t t j |  } t | j |  | t | d | d d t j | d  j  d d q# Wd S(   s   
    This test performs an RZ decomposition in which an m x n upper trapezoidal
    array M (m <= n) is factorized as M = [R 0] * Z where R is upper triangular
    and Z is unitary.
    i  i
   i   t   tzrzft   tzrzf_lworkRI   i   y              ?Rj   i    NR   g      ?Rm   g        (   i
   i   (   R2  R3  (   R   Rn   Ro   R   R   R   R   RB   R   R   R9   R   R(   R   R   R   R   RD   R   R   R   R   t   spacingR   (   Rv   Rw   Ru   RI   R2  t   tzrzf_lwRj   R   t   rzR7   R2   R   t   Vt   IdRL   R]   t   Z(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_tzrzf}  s&    
	!/D:c%c          C` s  t  d  xwt t  D]i\ }  } d } |  d k rw t t | |  t | |  d t |   j |  } d } n. t t | |  t |   j |  } d } t d d
 | \ } } } | |  \ } }	 t | d  j |  }
 | d | |
  } t | t	 | |
  d |  d d k r(d n d | d | |
 d | } t | t	 | j
   j |
  d |  d d k r|d n d | d  | t j |  t j |  f <| d | |
 d | d d } t | t	 | j
   j |
  d |  d d k rd n d t d |  j |  } | d | | d | d d d d } t | t	 | | j  j
   j d |  d d k ryd n d q Wd S(   s   
    Test for solving a linear system with the coefficient matrix is a
    triangular array stored in Full Packed (RFP) format.
    i  i   i   y              ?R<   R9   t   trttft   tfttrt   tfsmRI   i   iR?   i    i   i   RH   g      ?R   t   Ui   R   R   N(   R;  R<  R=  (   R   Rn   Ro   R   R   R   RB   R   R   R   R   R9   R(   R   (   Ru   RI   Rw   R   RH   R;  R<  R=  t   AfpR{   R*  t   solnt   B2(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt	   test_tfsm  s4    
9	(	($"c          C` s  t  d  d \ }  } } xt t  D]\ } } t d d | \ } } t | |  |  } | d k  r t t |  |  j |   } t | |  j |  }	 t d d | \ }
 } np t t |  |  t |  |  d
 j |   } t | |  t | |  d
 j |  }	 t d d | \ }
 } t | | |  } | | d | \ } } } t j	 t j
 |  d | | d d  |  d  f f  } t j
 | d | } g  t |   D]P } | | | | | g d d  f j j | | g d d  f j    ^ q} t t j |  } | d k  r,d n d } d t j | d  j  } |
 | | |	 d | \ } } t | d k  t | | j |	  t |	  d | d d |
 | | |	 d | d | \ } } t | d k  t | | j   j j |	  t |	  d | d d |
 | | |	 d d d | \ } } t | d k  t | |	 j |  t |	  d | d d |
 | | |	 d d d | d | \ } } t | d k  t | |	 j | j   j  t |	  d | d d q& Wd S(   s  
    This test performs a matrix multiplication with an arbitrary m x n matric C
    and a unitary matrix Q without explicitly forming the array. The array data
    is encoded in the rectangular part of A which is obtained from ?TZRZF. Q
    size is inferred by m, n, side keywords.
    i  i
   i   R2  R3  RI   i   t   ormrzt   ormrz_lworky              ?t   unmrzt   unmrz_lworkRj   NR9   R<   g      ?i    R   Rm   g        RH   R   R   (   i
   i   i   (   R2  R3  (   RC  RD  (   RE  RF  (   R   Rn   Ro   R   R   R   R   RB   R(   R   R   R   R9   RD   R   R   R4  R   R   R   R   (   t   qmt   qnt   cnRu   RI   R2  R5  t   lwork_rzR   R<   t   orun_mrzt   orun_mrz_lwt	   lwork_mrzR6  R7   R2   R7  R8  RL   R]   R  RH   t   tolt   cq(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_ormrz_unmrz  sJ    
		/)	:c,$.$,*.c       	   C` s-  t  d  xt t  D]\ }  } d } |  d k rg t | |  t | |  d j |  } d } n t | |  j |  } d } t d d	 | \ } } | |  \ } } t | d
 k  | | d d \ }	 } t | d
 k  | | d | d d \ }
 } t | d
 k  | | d | d d \ } } t | d
 k  t | d | d f d	 | } t |  d d  | d d  f | d d  d d  f <| | d d d  d d  f c t |  d | d  d | d  f j	   j
 7<t | d | d f d	 | } t |  d d  d | d  f | d d  d d  f <| d | d  d d  f c t |  | d d  | d d  f j	   j
 7<t | | j d d d  t |
 | j	   j
 j d d d  t |	 | j d d d  t | | j	   j
 j d d d  | | |  \ } } t | d
 k  | | |	 d d \ } } t | d
 k  | | |
 d | d d \ } } t | d
 k  | | | d | d d \ } } t | d
 k  t | t |   t | t |   t | t |   t | t |   q Wd S(   sz   
    Test conversion routines between the Rectengular Full Packed (RFP) format
    and Standard Triangular Array (TR)
    i  i   i   y              ?R<   R9   R;  R<  RI   i    t   uplot   Lt   transrR>  i   Nit   ordert   F(   R;  R<  (   R   Rn   Ro   R   RB   R   R   R   R   R   R9   R   R   t   reshape(   Ru   RI   Rw   t   A_fullRS  R;  R<  t   A_tf_UR2   t   A_tf_Lt   A_tf_U_Tt   A_tf_L_Tt   A_tf_U_mt   A_tf_L_mt   A_tr_Ut   A_tr_Lt   A_tr_U_Tt   A_tr_L_T(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_tfttr_trttf  sR    
)	 <W <S!!c          C` s  t  d  xt t  D]\ }  } d } |  d k ra t | |  t | |  d j |  } n t | |  j |  } t d d | \ } } | |  \ } } t | d k  | | d	 d
 \ } } t | d k  t |  }	 t | | d d d | }
 t	 |  j
 |	 |
 (t |  }	 t | | d d d | } t |  j
 |	 | (t | |
  t | |  | | |  \ } } t | d k  | | | d	 d
 \ } } t | d k  t | t	 |   t | t |   q Wd S(   sz   
    Test conversion routines between the Rectengular Full Packed (RFP) format
    and Standard Triangular Array (TR)
    i  i   i   y              ?t   trttpt   tpttrRI   i    RQ  RR  i   N(   Rc  Rd  (   R   Rn   Ro   R   RB   R   R   R   R   R   R9   R   R   R   (   Ru   RI   Rw   RW  Rc  Rd  t   A_tp_UR2   t   A_tp_Lt   indst   A_tp_U_mt   A_tp_L_mR^  R_  (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_tpttr_trttp<  s2    
,c          C` s=  t  d  x,t t  D]\ }  } d } |  d k r t | |  t | |  d j |  } | | j   j | t |  } n3 t | |  j |  } | | j | t |  } t d d | \ } } } | |  \ } } | | |  \ }	 } t	 | d	 k  | | |	  \ }
 } t
 |  } t |
 |  q Wd
 S(   sk   
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array
    i  i   i   y              ?t   pftrfR;  R<  RI   i    N(   Rk  R;  R<  (   R   Rn   Ro   R   RB   R   R9   R   R   R   R   R   (   Ru   RI   Rw   R   Rk  R;  R<  R?  R2   t	   Achol_rfpt   A_chol_rR{   t   Achol(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_pftrfe  s     
)$	c          C` sw  t  d  xft t  D]X\ }  } d } |  d k r t | |  t | |  d j |  } | | j   j | t |  } n3 t | |  j |  } | | j | t |  } t d d	 | \ } } } } | |  \ } }	 | | |  \ }
 }	 | | |
  \ } }	 t	 |	 d
 k  | | |  \ } } t
 |  } t | t |  d |  d d
 k rhd n d q Wd S(   s   
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array to find its inverse
    i  i   i   y              ?t   pftriRk  R;  R<  RI   i    R?   i   i   i   N(   Rp  Rk  R;  R<  (   R   Rn   Ro   R   RB   R   R9   R   R   R   R   R   R   (   Ru   RI   Rw   R   Rp  Rk  R;  R<  R?  R2   t
   A_chol_rfpt	   A_inv_rfpt   A_inv_rR{   t   Ainv(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_pftri  s*    
)$  c          C` s  t  d  xt t  D]\ }  } d } |  d k r t | |  t | |  d j |  } | | j   j | t |  } n3 t | |  j |  } | | j | t |  } t | d f d | } t | d d f d | } t | d d f d | } t	 d d | \ } } }	 }
 |	 |  \ } } | | |  \ } } | | | |  \ } } t
 | d k  t t | | | |  | | | |  \ } } t
 | d k  t t | |  | d |  d d k rd n d q Wd S(   s   
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array and solve a linear system
    i  i   i   y              ?i   RI   i   t   pftrsRk  R;  R<  i    R?   i   i   N(   Rv  Rk  R;  R<  (   R   Rn   Ro   R   RB   R   R9   R   R   R   R   R   R   R   R   (   Ru   RI   Rw   R   R*  t   Bf1t   Bf2Rv  Rk  R;  R<  R?  R2   Rq  R@  (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt
   test_pftrs  s2    
)$  c          C` s  t  d  xt t  D]\ }  } d } |  d k r t | |  t | |  d j |  } | | j   j | t |  } n3 t | |  j |  } | | j | t |  } |  d k  r d n d } t d d	 d
 j	 |  f d | \ } } } | |  \ } }	 t
 j j | d  j |  }
 | | d d |
 d |  } | | |  \ } }	 t | t |
 j |
 j   j  d |  d |  d d k rd n d q Wd S(   sT   
    Test for performing a symmetric rank-k operation for matrix in RFP format.
    i  i   i   y              ?i   R   t   hR;  R<  s   {}frkRI   iR?   i    i   i   N(   R   Rn   Ro   R   RB   R   R9   R   R   t   formatR(   R   R   R   RD   (   Ru   RI   Rw   R   t   prefixR;  R<  t   shfrkR?  R{   R<   t   Afp_outt   A_out(    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   test_sfrk_hfrk  s$    
)$-(S   t
   __future__R    R   R   R   R   R   t	   functoolsR   t   numpy.testingR   R   R   R   R   R	   t   pytestR
   R   t   numpyR(   R   R   R   R   R   R   R   R   t   numpy.randomR   R   t   scipy.linalgR   R$   R   R   R   R   t   scipy.linalg.lapackR   R   Re   t   ImportErrorR%   R   t   scipy.linalg.blasR   t   float32R   Rp   t	   complex64t
   complex128Rt   Ro   t   objectR   Ra   Rg   R   R   R   R   R   R   t   markt   xslowR   R   R	  R  R&  R-  R1  R:  RB  RP  Rb  Rj  Ro  Ru  Ry  R  (    (    (    s=   lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyt   <module>   s^   .:"

` 		*	*#HO	1				"	)	:	:	)		 	%