ó
î&]\c           @` sU  d  d l  m Z m Z m Z d Z d  d l Z d  d l Z d  d l m	 Z	 m
 Z
 m Z m Z m Z d  d l m Z d  d l m Z m Z m Z m Z m Z m Z m Z 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% m& Z& m' Z' m( Z( m) Z) y d  d	 l# m* Z+ Wn e, k
 rAe- Z+ n Xe e g Z. e e g Z/ e. e/ Z0 d
   Z1 d   Z2 d e3 f d     YZ4 d e3 f d     YZ5 d e3 f d     YZ6 d e3 f d     YZ7 d d  Z8 d e3 f d     YZ9 d e3 f d     YZ: d e3 f d     YZ; d e3 f d     YZ< d e3 f d     YZ= d    Z> d S(!   i    (   t   divisiont   print_functiont   absolute_importsw   
Build linalg:
  python setup.py build
Run tests if scipy is installed:
  python -c 'import scipy;scipy.linalg.test()'
N(   t   assert_equalt   assert_almost_equalt   assert_t   assert_array_almost_equalt   assert_allclose(   t   raises(   t   float32t   float64t	   complex64t
   complex128t   aranget   triut   trilt   zerost   tril_indicest   onest   modt   diagt   appendt   eyet   nonzero(   t   randt   seed(   t   _fblast   get_blas_funcst   toeplitzt   solvet   solve_triangular(   t   _cblasc       	   C` sr  t  d t j d d t j d d t j d d t j d d f  \ }  } } t |  j d  t | j d  t d  k	 r t |  j	 d  t | j	 d  n  t  d	  }  t |  j d
  t  d d t j }  t |  j d  t  d d d }  t |  j d  t  d d t j
 }  t |  j d  t  d t j d d t j t j d d t j f  }  t |  j d  d  S(   Nt   axpyi   t   dtypet   ordert   Ft   Ct   zt   cblast   rotgt   dt   gemmt   c(   R    R    R    (   i   i   (   i   i   (   i   i   (   i   i   (   R   t   npt   emptyR   R   R   t   typecodeR&   t   Nonet   module_namet   longcomplexR
   (   t   f1t   f2t   f3(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_get_blas_funcs'   s*    -c          C` s   t  d d t j \ }  } |  j d k s0 t  | j d k sE t  t  d d t j \ }  } } |  | k su t  |  | k s t  d  S(	   Nt   nrm2t   dotR!   R*   t   dotct   dotu(   R5   R6   (   R6   R7   R8   (   R   R+   R   R-   t   AssertionErrorR
   (   t   ft   gt   h(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_get_blas_funcs_aliasN   s    t   TestCBLAS1Simplec           B` s   e  Z d    Z RS(   c         C` sä   xm d D]e } t  t | d d   } | d  k r5 q n  t | d d d g d d d g d d d	 d
 d g  q Wxm d D]e } t  t | d d   } | d  k rĽ qw n  t | d d d g d d d g d d d	 d d g  qw Wd  S(   Nt   sdR    i   i   i   i˙˙˙˙t   ai   i   i	   i   t   czy               @y              $@y      đż      $@(   t   getattrR&   R.   R   (   t   selft   pR:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_axpy[   s    ''(   t   __name__t
   __module__RE   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyR>   Y   s   t   TestFBLAS1Simplec           B` sb   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z RS(
   c         C` sä   xm d D]e } t  t | d d   } | d  k r5 q n  t | d d d g d d d g d d d	 d
 d g  q Wxm d D]e } t  t | d d   } | d  k rĽ qw n  t | d d d g d d d g d d d	 d d g  qw Wd  S(   NR?   R    i   i   i   i˙˙˙˙R@   i   i   i	   i   RA   y               @y              $@y      đż      $@(   RB   t   fblasR.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRE   l   s    ''c         C` sÔ   xe d D]] } t  t | d d   } | d  k r5 q n  t | d d d g d g d  d d d g  q Wxe d D]] } t  t | d d   } | d  k r qo n  t | d d d
 g d g d  d d d g  qo Wd  S(   NR?   t   copyi   i   i   i   RA   y              @y              @y      @      @y      @      @(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_copyz   s    3c         C` s´   xR d D]J } t  t | d d   } | d  k r5 q n  t | d d d g  d  q WxX d d g D]J } t  t | d d   } | d  k r qb n  t | d	 d d g  d  qb Wd  S(   NR?   t   asumi   iü˙˙˙i   i   t   sct   dzy              @y              @i   y      @      Ŕ(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_asum   s     c         C` se   x^ d D]V } t  t | d d   } | d  k r5 q n  t | d d d g d d d g  d  q Wd  S(	   NR?   R6   i   iü˙˙˙i   i   i   i÷˙˙˙(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_dot   s
    c         C` se   x^ d D]V } t  t | d d   } | d  k r5 q n  t | d d d g d d d g  d  q Wd  S(   NRA   R8   y              @iü˙˙˙i   y              @i   i   i÷˙˙˙y               @y      @      Ŕy      "Ŕ       @(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_complex_dotu   s
    c         C` se   x^ d D]V } t  t | d d   } | d  k r5 q n  t | d d d
 g d d d g  d  q Wd  S(   NRA   R7   y              @iü˙˙˙i   y              @i   i   y              ,@y      @      Ŕy      @      ,Ŕ(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_complex_dotc    s
    c         C` sĚ   x[ d D]S } t  t | d d   } | d  k r5 q n  t | d d d g  t j d   q Wxg d d d	 d
 g D]S } t  t | d d   } | d  k r qq n  t | d d d g  t j d   qq Wd  S(   NR?   R5   i   iü˙˙˙i   i2   R*   R%   RM   RN   y              @y              @y      @      Ŕ(   RB   RI   R.   R   t   matht   sqrt(   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_nrm2§   s    )c         C` s-  x^ d D]V } t  t | d d   } | d  k r5 q n  t | d d d d g  d d d	 g  q Wx^ d
 D]V } t  t | d d   } | d  k r qh n  t | d d d d g  d d d g  qh Wxd d d g D]V } t  t | d d   } | d  k rý qĎ n  t | d d d d g  d d d g  qĎ Wd  S(   NR?   t   scali   i   iü˙˙˙i   i   iř˙˙˙i
   RA   y              @y              @i÷˙˙˙y              (Ŕi   y              "@t   cst   zdiô˙˙˙i	   y              (@y      @      Ŕy      (@      "@y      @      Ŕy      "@      (Ŕ(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_scalł   s    ,,c         C` s  x d D]| } t  t | d d   } | d  k r5 q n  d d d g d d d g } } | | |  \ } } t | |  t | |  q Wx d D]| } t  t | d d   } | d  k rź q n  d d	 d g d d d
 g } } | | |  \ } } t | |  t | |  q Wd  S(   NR?   t   swapi   i   i   iţ˙˙˙i   RA   y              @y      @      Ŕ(   RB   RI   R.   R   (   RC   RD   R:   t   xt   yt   x1t   y1(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_swapÄ   s     c         C` s   xA d D]9 } t  t d | d  } t | d d d g  d  q WxA d D]9 } t  t d | d  } t | d	 d d g  d  qK Wd  S(   NR?   t   it   amaxiţ˙˙˙i   i   i   RA   iű˙˙˙y              @i   y      @      @(   RB   RI   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_amaxÖ   s     (   RF   RG   RE   RK   RO   RP   RQ   RR   RU   RY   R_   Rb   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRH   j   s   									t   TestFBLAS2Simplec           B` s   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C` s  x d D] } t  t | d d   } | d  k r5 q n  t | d d g g d g  d g  t | d d g g d g d d g  d g  q Wx d D] } t  t | d d   } | d  k rÁ q n  t | d	 d g g d g  d g  t | d	 d g g d g d d g  d g  q Wd  S(   NR?   t   gemvi   iü˙˙˙iÜ˙˙˙i   ië˙˙˙RA   y              @y              @iĐ˙˙˙y              B@y              @y              5@y      @      Ŕy      HŔ      BŔy      @      Ŕy      HŔ      5Ŕ(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_gemvâ   s    %2%$c      
   C` s}  x˙ d D]÷ } t  t | d d   } | d  k r5 q n  t | d d d g d d g  d d g d d g g  t | d d d d g d d g  d d g d	 d
 g d d g g  t | d d d g d d g d d d g d d g g d d g d d	 g g  q Wx° d D]¨ } t  t | d d   } | d  k r7q	n  t | d d d g d d g  d d g d d g g  t | d d d d g d d g  d d g d	 d
 g d d g g  q	WxÁ d D]š } x° d D]¨ } t  t | | d   } | d  k r÷qÉn  t | d d d g d d g  d d g d d g g  t | d d d d g d d g  d d g d	 d
 g d d g g  qÉWqźWd  S(   NR?   t   geri   i   i   i   i   i   i   i   i   i   R@   i	   RA   t   geruy              đ?y              @y              @iţ˙˙˙y               @t   gerc(   Rf   Rh   (   RB   RI   R.   R   (   RC   RD   R:   t   name(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_gerń   s4    7!"5!&!c         C` sZ  t  j d d d d } t  j | d  d   t  j f |  } t  j | d  d  d  t  j f | d  d  d   } t  j d d d d	 t } t  j d d
 d d j d  } t  j | d  d   t  j f |  } t  j | d  d  d  t  j f | d  d  d   } t  j | d  d   t  j f | j    } t  j | d  d  d  t  j f | d  d  d  j    }	 t  j t  j	 d  | t  j	 d  f j
   }
 x7t d d d g  D] \ } } t t | d d   } | d  k rěq¸n  t | d |  | d | t | d | d t | j d | t | d | d d d d d d | d | t | d | d d d d d d | d | t  j	 d$ | d k r¤d n d d  } | d | d | d t } t | | d | | d | d | } t | | k	  t | d | d | t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d t  j	 d% d d  q¸Wx7t d  d d g  D] \ } } t t | d d   } | d  k r&qňn  t | d |  | d | t | d | d t | j d | t | d |
 d d d d d d | d | t | d |
 d d! d d d d | d | t  j	 d& | d" k rŢd n d d  } | d | d | d t } t | | d | | d | d | } t | | k	  t | d | d | t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d t  j	 d' d d  qňWx=t d  d d g  D]&\ } } t t | d# d   } | d  k r`q,n  t | d |  | d | t | d | d t | j j   d | t | d |
 d d d d d d | d | t | d |
 d d! d d d d |	 d | t  j	 d( | d" k rd n d d  } | d | d | d t } t | | d | | d | d | } t | | k	  t | d | d | t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d d t t | d | d t  j	 d) d d  q,Wd  S(*   Ni   i   R!   R(   i˙˙˙˙i    g      !@i   t   endpointi	   t   Di   R?   gHŻźň×z>g+Ą=t   syrg      đ?t   rtolt   lowert   incxi   t   offxt   niţ˙˙˙t   sR:   R#   R@   t   overwrite_ag       @i   RA   iý˙˙˙R*   t   her(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R+   R   R   t   newaxist   linspacet   Falset   viewt   conjt   c_R   t   ravelt   zipRB   RI   R.   R   t   Truet   TR   t   assert_raisest	   Exception(   RC   R[   t   resxt   resx_reverseR\   R%   t   reszt   resz_reverset   rehzt   rehz_reverset   wRD   Rn   R:   R@   t   b(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_syr_her  s    &6!&6,<."%.!',"%.!',"+.!'c         C` s@  t  j d d d d } t  j d d d d } t  j | d  d   t  j f | | d  d   t  j f |  } t  j | d  d  d  t  j f | d  d  d  | d  d  d  t  j f | d  d  d   } t  j d d d	 d
 t } xLt d d d g  D]5\ } } t t | d d   } | d  k r7qn  t
 | d | |  | d | t
 | d | | d d | d  d  d  d  f d | t
 | d | | d t | j d | t
 | d | | d d d d d d d d | d | t
 | d | | d d d d d d d d d d | d  d  d  d  f d | t
 | d | | d d d d d d d d | d | t  j d" | d k rd n d d  }	 | d | | d |	 d  t }
 t
 |	 | d | | d! | | d |	 }
 t |	 |
 k	  t
 |
 d | d | t t | d | | d d t t | d | | d d t t | d | | d d t t | d | | d d t t | d | | d d t t | d | | d d t t | d | | d d t t | d | | d d t t | d | | d d t t | d | | d t  j d# d d  qWd  S($   Ni   i   R!   R(   i	   i˙˙˙˙i    g      !@i   Rk   R?   gHŻźň×z>g+Ą=t   syr2g      đ?Rn   Rr   i   Ro   Rp   i   Rq   t   incyt   offyi
   iţ˙˙˙i   Rs   R:   R#   R@   Rt   g       @(   i   i   (   i   i   (   R+   R   R   Rv   Rw   Rx   R}   RB   RI   R.   R   R~   R   R   R   R   R   (   RC   R[   R\   t   resxyt   resxy_reverset   qRD   Rn   R:   R@   R   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_syr2q  sH    A01";(*0#*'c         C` sĂ  t  j d d d d j d  } t  j d d d d j d  } | d  d   t  j f | j   | d  d   t  j f | j   } t  j |  } | d  d  d  t  j f | d  d  d  j   } | | d  d  d  t  j f | d  d  d  j   7} t  j |  } t  j t  j d  | t  j d  f j   } t  j t  j d  | t  j d  f j   } xRt	 d	 d
 d g  D];\ } } t
 t | d d   }	 |	 d  k r´qn  t |	 d | |  | d | t |	 d | | d d | d  d  d  d  f d | t |	 d | | d t | j j   d | t |	 d | | d d d d d d d d | d | t |	 d | | d d d d d d d d d d | d  d  d  d  f d | t |	 d | | d d d d d d d d | d | t  j d  | d k rd n d d  }
 |	 d | | d |
 d t } t |
 | d | |	 d | | d |
 } t |
 | k	  t | d | d | t t |	 d | | d d t t |	 d | | d d t t |	 d | | d d t t |	 d | | d d t t |	 d | | d d t t |	 d | | d d t t |	 d | | d d t t |	 d | | d d t t |	 d | | d d t t |	 d | | d t  j d! d d  qWd  S("   Ni   i	   R!   R(   Rl   i   i˙˙˙˙i   RA   gHŻźň×z>g+Ą=t   her2g      đ?Rn   Rr   i   Ro   Rp   Rq   R   R   iý˙˙˙R*   R#   R@   Rt   g       @i    i   iţ˙˙˙i   (   i   i   (   i   i   (   R+   R   Ry   Rv   Rz   R   R{   R   R|   R}   RB   RI   R.   R   R~   R   R   R   R   (   RC   R[   R\   R   R   t   ut   vRD   Rn   R:   R@   R   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_her2  sP    !!D37..";'*0#*'c         C` sę  t  d  xŮt t  D]Ë\ } } d } d } d } d } t t t | d  t | | d   t t | d  t | | d    } | j |  } t | | d | f d | } | d | d d  d  f <| d | d d d  f <| d | d d d  f <| d | d	 d  d
  f <t |  j |  }	 t |  j |  }
 | d	  | d  } } t d d | \ } | d | d | d | d | d | d | d |	 d |
 d |  	} | | j	 |	  | |
 } t
 | |  q Wd  S(   NiŇ  i   i   i   i   R!   i    i   i   i   iű˙˙˙t   gbmvt   mRr   t   kut   klt   alphaR@   R[   R\   t   beta(   i    i    (   i    i   (   i    i   (   i   i    (   R   (   R   t	   enumeratet   DTYPESR   R   R   R   t   astypeR   R6   R   (   RC   t   indR!   Rr   R   R   R   t   At   AbR[   R\   R   R   t   funcR^   t   y2(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_gbmvĐ  s,    
'* *c         C` s   t  d  xt t  D]\ } } d } d } t | | f d | } t | d | f d | } t |  | t |  t |  f <xh t d | d  D]S } t | |  } | | t | |  t | |  f <| | d | | d   f <q W| j |  } | d k  r| | j n | | j	   j } t
 |  | d d  d   f <t |  j |  }	 t |  j |  }
 | d  | d  } } | d k rŽt d d | \ } n t d d | \ } | d | d | d | d |	 d |
 d |  } | | j |	  | |
 } t | |  q Wd  S(   NiŇ  i   i   R!   i   i˙˙˙˙g      ô?i   t   hbmvt   sbmvt   kR   R@   R[   R\   R   (   RĽ   (   RŚ   (   R   R   R   R   R   R   t   rangeR   R   Rz   R   R   R6   R   (   RC   R   R!   Rr   R§   R    RĄ   t   ind2t   tempR[   R\   R   R   R˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_sbmv_hbmví  s.    
"#,-c         C` s  t  d  xt t t  D]s\ } } d } t | |  j |  } | d k rk | t | |  d 7} n  | j |  } | d k  r | | j n | | j   j } t |  \ } } | | | f } t |  j |  } t |  j |  }	 t	 d |  j |  }
 t
 d |  j |  } | d  | d  } } | d k rat d d	 | \ } n t d d	 | \ } | d | d | d | d | d |	 d |  } | | j |  | |	 } t | |  | d | d d | d | d |
 d | d | d d d d d | d |  
} | | d  d  d  d  f j |
 d d  d   | | d d  d  } t | d d  d  |  t | d | d  q Wd  S(   NiŇ  i   i   y              đ?i   i   g      ô?t   hpmvR!   t   spmvRr   R   t   apR[   R\   R   Rp   R   Rq   R   i˙˙˙˙(   RŹ   (   R­   (   R   R   R   t   COMPLEX_DTYPESR   R   R   Rz   R   R   R   R   R6   R   R   (   RC   R   R!   Rr   R    R*   t   rt   ApR[   R\   t   xlongt   ylongR   R   R˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_spmv_hpmv
  s4    
,-.Kc      
   C` s'  t  d  xt t t  D]\ } } d } t | |  j |  } | d k rk | t | |  d 7} n  | j |  } | d k  r | | j n | | j   j } t |  \ } } | | | f } t |  j |  } t t t	 | d  d  }	 | d k r[t
 d d | \ }
 |	 | d  d   d  f j | d  d  d   f j    | } nL t
 d d | \ }
 |	 | d  d   d  f j | d  d  d   f  | } |
 d
 | d |	 d | d |  } t d d | } | | | | f <| d k r| j   n | | | | f <t | |  q Wd  S(   NiŇ  i   i   y              đ?i   g      @t   hprR!   t   sprRr   R   RŽ   R[   (   Rľ   (   Rś   (   i   i   (   R   R   R   RŻ   R   R   R   Rz   R   R   R   R.   R6   R   R   (   RC   R   R!   Rr   R    R*   R°   Rą   R[   R   R˘   RŁ   R^   t   y1f(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_spr_hpr*  s,    
,@7!(c         C` s  t  d  xt t  D]ý\ } } d } t | |  j |  } | d k rg | t | |  d 7} n  | j |  } | d k  r | | j n | | j   j } t |  \ } } | | | f } t |  j |  } t |  j |  }	 | d  }
 | d k rt d d | \ } n t d d | \ } |
 j   | d  d   d  f j
 |	 d  d  d   f j    } | | | j   j } | d	 | d
 |
 d | d |	 d |  } t d d | } | | | | f <| d d d g j   | d d d g d d d g f <t | |  q Wd  S(   NiŇ  i   i   y              đ?i   t   hpr2R!   t   spr2Rr   R   R[   R\   RŽ   i   i    (   Rš   (   Rş   (   i   i   (   R   R   R   R   R   R   Rz   R   R   R.   R6   R   R   (   RC   R   R!   Rr   R    R*   R°   Rą   R[   R\   R   R˘   R   RŁ   R^   Rˇ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_spr2_hpr2E  s.    
,?'5c         C` s  t  d  xt t  D]x\ } } d } d } t |  j |  } t | | f d | } xE t | d  D]3 } t | |  | t | |  t | |  f <qm W| d k rô | t |  c d t | d | | | d d  j |  7<n  t | d | f d | } x? t | d  D]- }	 t	 | d |	 | |	 d |	 d   f <q!Wt
 d d | \ }
 |
 d | d
 | d |  } | j |  } t | |  |
 d | d
 | d | d d  } | d  | t |  t |  f <| j |  } t | |  |
 d | d
 | d | d d d d  } | j j |  } t | |  |
 d | d
 | d | d d d d  } | j   j j |  } t | |  q Wd  S(   NiŇ  i
   i   R!   i   y              đ?i   R§   t   tbmvR@   R[   R   t   trans(   Rź   (   R   R   R   R   R   R   R¨   R   R   R   R   R6   R   R   Rz   (   RC   R   R!   Rr   R§   R[   R    t   supRĄ   t   rowR˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_tbmva  s6    
1D+!"''c         C` s  t  d  xt t  D]x\ } } d } d } t |  j |  } t | | f d | } xE t | d  D]3 } t | |  | t | |  t | |  f <qm W| d k rô | t |  c d t | d | | | d d  j |  7<n  t | d | f d | } x? t | d  D]- }	 t	 | d |	 | |	 d |	 d   f <q!Wt
 d d | \ }
 |
 d | d
 | d |  } t | |  } t | |  |
 d | d
 | d | d d  } | d  | t |  t |  f <t | |  } t | |  |
 d | d
 | d | d d d d  } t | j |  } t | |  |
 d | d
 | d | d d d d  } t | j   j |  } t | |  q Wd  S(   NiŇ  i   i   R!   i   y              đ?i   R§   t   tbsvR@   R[   R   R˝   (   RÁ   (   R   R   R   R   R   R   R¨   R   R   R   R   R   R   R   Rz   (   RC   R   R!   Rr   R§   R[   R    Rž   RĄ   Rż   R˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_tbsv  s6    
1D+!"''c         C` sě  t  d  xŰt t  D]Í\ } } d } t |  j |  } | d k  r_ t t | |   n# t t | |  t | |  d  } t |  \ } } | | | f } t d d | \ }	 |	 d | d | d	 |  }
 | j |  } t	 |
 |  |	 d | d | d	 | d
 d  }
 | d  | t
 |  t
 |  f <| j |  } t	 |
 |  |	 d | d | d	 | d
 d d d  }
 | j j |  } t	 |
 |  |	 d | d | d	 | d
 d d d  }
 | j   j j |  } t	 |
 |  q Wd  S(   NiŇ  i
   i   y              đ?t   tpmvR!   Rr   RŽ   R[   R   i   R˝   (   RĂ   (   R   R   R   R   R   R   R   R   R6   R   R   R   Rz   (   RC   R   R!   Rr   R[   R    R*   R°   Rą   R˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_tpmv­  s*    
G!"''c         C` sü  t  d  xët t  D]Ý\ } } d } t |  j |  } | d k  r_ t t | |   n# t t | |  t | |  d  } | t |  7} t |  \ } } | | | f } t d d | \ }	 |	 d | d | d	 |  }
 t	 | |  } t
 |
 |  |	 d | d | d	 | d
 d  }
 | d  | t |  t |  f <t	 | |  } t
 |
 |  |	 d | d | d	 | d
 d d d  }
 t	 | j |  } t
 |
 |  |	 d | d | d	 | d
 d d d  }
 t	 | j   j |  } t
 |
 |  q Wd  S(   NiŇ  i
   i   y              đ?t   tpsvR!   Rr   RŽ   R[   R   i   R˝   (   RĹ   (   R   R   R   R   R   R   R   R   R   R   R   R   R   Rz   (   RC   R   R!   Rr   R[   R    R*   R°   Rą   R˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_tpsvĘ  s,    
G!"''c   	   
   C` sĽ  t  d  xt t  D]\ } } d } t | |  t |  j |  } t d  j |  } t d d | \ } | d | d |  } t |  j |  } t	 | |  | d | d | d d  } | d  | t
 |  t
 |  f <t |  j |  } t	 | |  | d | d | d d d	 d  } t |  j j |  } t	 | |  | d | d | d d d	 d
  } t |  j   j j |  } t	 | |  q Wd  S(   NiŇ  i   t   trmvR!   R@   R[   R   i   R˝   i   (   RÇ   (   R   R   R   R   R   R   R   R   R6   R   R   R   Rz   (	   RC   R   R!   Rr   R    R[   R˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_trmvč  s&    
""!!c   	   
   C` sâ  t  d  xŃt t  D]Ă\ } } d } t | |  t |  j |  } t |  j |  } t d d | \ } | d | d |  } t t |  |  } t	 | |  | d | d | d d  } t t
 |  |  } t	 | |  | d | d | d	 d  } | d  | t |  t |  f <t t |  |  } t	 | |  | d | d | d	 d d
 d  } t t |  j |  } t	 | |  | d | d | d	 d d
 d  } t t |  j   j |  } t	 | |  q Wd  S(   NiŇ  i   t   trsvR!   R@   R[   Ro   i   R   R˝   i   (   RÉ   (   R   R   R   R   R   R   R   R   R   R   R   R   R   Rz   (	   RC   R   R!   Rr   R    R[   R˘   R^   RŁ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_trsv  s,    
""!!(   RF   RG   Re   Rj   R   R   R   R¤   RŤ   R´   R¸   Rť   RŔ   RÂ   RÄ   RĆ   RČ   RĘ   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRc   ŕ   s    		 	`	-	2			 			&	&			t   TestFBLAS3Simplec           B` s   e  Z d    Z RS(   c         C` s  x d D]~ } t  t | d d   } | d  k r5 q n  t | d d g d g  d g g  t | d d g d g d d g  d g  q Wx d D]~ } t  t | d d   } | d  k rž q n  t | d	 d g d g  d g g  t | d	 d g d g d d g  d g  q Wd  S(   NR?   R)   i   iü˙˙˙iÜ˙˙˙i   ië˙˙˙RA   y              @y              @iĐ˙˙˙y              B@y              @y              5@y      @      Ŕy      HŔ      BŔy      @      Ŕy      HŔ      5Ŕ(   RB   RI   R.   R   (   RC   RD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_gemm!  s    %/%(   RF   RG   RĚ   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRË     s   t   sdzcc         c` sB   x; | D]3 } t  t | |  d  } | d k r5 q n  | Vq Wd S(   s;   Just a helper: return a specified BLAS function w/typecode.N(   RB   RI   R.   (   R˘   t   psRD   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   _get_func0  s
    t   TestBLAS3Symmc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` s   t  j d d g d d g g  |  _ t  j d d d g d d d g g  |  _ t  j d
  |  _ t  j d d d g d d d	 g g  |  _ d  S(   Ng      đ?g       @g        g      @g      đżi   i   g       @g      "@(   i   i   (   R+   t   arrayR@   R   R   R*   t   t(   RC   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   setup_method;  s    c         C` só   xě t  d  D]Ţ } | d |  j d |  j d |  j d d d d  } t | |  j  | d |  j j d |  j d d	 d |  j d d d d  } t | |  j  | d |  j d |  j j d
 d	 d |  j j d d d d  } t | |  j j  q Wd  S(   Nt   symmR@   R   R*   R   g      đ?R   Ro   i   t   side(   RĎ   R@   R   R*   R   RŇ   R   (   RC   R:   t   res(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_symmD  s    09-c         C` sW   t  t d d   } | d  k	 rS t t | i |  j d 6|  j d 6d d 6d d 6 n  d  S(   Nt   dsymmR@   R   i   R   RŐ   (   RB   RI   R.   R   R   R@   R   (   RC   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_summ_wrong_sideP  s     c         C` sÂ   t  t d d
  } | d
 k	 rž | d |  j d |  j d |  j d d d d  } t j | |  j  si t	  | d |  j d |  j d d	 d |  j d d d d  } t j | |  j  sž t	  n  d
 S(   s°   SYMM only considers the upper/lower part of A. Hence setting
        wrong value for `lower` (default is lower=0, meaning upper triangle)
        gives a wrong result.
        RŘ   R@   R   R*   R   g      đ?R   Ro   i   N(
   RB   RI   R.   R@   R   R*   R+   t   allcloseRŇ   R9   (   RC   R:   RÖ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_symm_wrong_uploX  s    06(   RF   RG   RÓ   R×   RŮ   RŰ   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRĐ   9  s   				t   TestBLAS3Syrkc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s   t  j d d g d d g d d g g  |  _ t  j d d d g d d d g d d d g g  |  _ t  j d	 d
 g d
 d g g  |  _ d  S(   Ng      đ?g        g       Ŕg       @g      @g      @g      Ŕg      *@g      @g      @(   R+   RŃ   R@   RŇ   t   tt(   RC   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRÓ   g  s    	c      
   C` s4  x-t  d  D]} | d |  j d d  } t t j |  t j |  j   | d |  j d d d d  } t t j |  t j |  j   t j |  j j  } | d |  j d d d d d |  } t t j |  t j |  j |   | d |  j d d d	 d  } t t j |  t j |  j	   q Wd  S(
   Nt   syrkR@   R   g      đ?Ro   i   R   R*   R˝   (
   RĎ   R@   R   R+   R   RŇ   R   R   t   shapeRÝ   (   RC   R:   R*   t   c0(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_syrkq  s    ""$&c         C` sV   t  t d d   } | d  k	 rR t t | i |  j d 6d d 6t j d  d 6 n  d  S(	   Nt   dsyrkR@   g      đ?R   i   i   R*   (   i   i   (   RB   RI   R.   R   R   R@   R+   R   (   RC   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_syrk_wrong_c  s    (   RF   RG   RÓ   Rá   Ră   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRÜ   f  s   	
	t   TestBLAS3Syr2kc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s¸   t  j d d g d d g d d g g  |  _ t  j d d g d d g d d g g  |  _ t  j d d d g d d d g d d d g g  |  _ t  j d d g d d	 g g  |  _ d  S(
   Ng      đ?g        g       Ŕg       @g      @i    g      đżg      @i   (   R+   RŃ   R@   R   RŇ   RÝ   (   RC   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRÓ     s    		c         C` sX  xQt  d  D]C} | d |  j d |  j d d  } t t j |  t j |  j   | d |  j d |  j d d d d  } t t j |  t j |  j   t j |  j j	  } | d |  j d |  j d d d d d	 |  } t t j |  t j |  j |   | d |  j d |  j d d d
 d  } t t j |  t j |  j
   q Wd  S(   Nt   syr2kR@   R   R   g      đ?Ro   i   R   R*   R˝   (   RĎ   R@   R   R   R+   R   RŇ   R   R   Rß   RÝ   (   RC   R:   R*   Rŕ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt
   test_syr2k  s    !"'"-&'c         C` s`   t  t d d   } | d  k	 r\ t t | i |  j d 6|  j d 6d d 6t j d	  d 6 n  d  S(
   Nt   dsyr2kR@   R   g      đ?R   i   i   R*   (   i   i   (	   RB   RI   R.   R   R   R@   R   R+   R   (   RC   R:   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_syr2k_wrong_cŠ  s    
(   RF   RG   RÓ   Rć   Rč   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRä     s   		t   TestSyHec           B` sM   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   s2   Quick and simple tests for (zc)-symm, syrk, syr2k.c         C` s(   t  j d d g d d g g  |  _ d  S(   Ng        y              đży              đ?(   R+   RŃ   t   sigma_y(   RC   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRÓ   ľ  s    c         C` sd   x] t  d d  D]L } | d |  j d |  j d d  } t t j |  t j d d g   q Wd  S(	   NRÔ   t   zcR@   R   R   g      đ?i   i˙˙˙˙(   RĎ   Rę   R   R+   R   R   (   RC   R:   RÖ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_symm_zcš  s    !c         C` sd   x] t  d d  D]L } | d |  j d |  j d d  } t t j |  t j d d g   q Wd  S(   Nt   hemmRë   R@   R   R   g      đ?i   (   RĎ   Rę   R   R+   R   R   (   RC   R:   RÖ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_hemm_zcż  s    !c         C` s[   xT t  d d  D]C } | d |  j d d  } t t j |  t j d d g   q Wd  S(   NRŢ   Rë   R@   R   g      đ?i˙˙˙˙(   RĎ   Rę   R   R+   R   R   (   RC   R:   RÖ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_syrk_zrĹ  s    c         C` s[   xT t  d d  D]C } | d |  j d d  } t t j |  t j d d g   q Wd  S(   Nt   herkRë   R@   R   g      đ?i   (   RĎ   Rę   R   R+   R   R   (   RC   R:   RÖ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_herk_zrĘ  s    c         C` sh   xa t  d d  D]P } | d |  j d |  j d d  } t t j |  d t j d d g   q Wd  S(	   NRĺ   Rë   R@   R   R   g      đ?g       @i˙˙˙˙(   RĎ   Rę   R   R+   R   R   (   RC   R:   RÖ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_syr2k_zrĎ  s    !c         C` sh   xa t  d d  D]P } | d |  j d |  j d d  } t t j |  d t j d d g   q Wd  S(	   Nt   her2kRë   R@   R   R   g      đ?g       @i   (   RĎ   Rę   R   R+   R   R   (   RC   R:   RÖ   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_her2k_zrÔ  s    !(
   RF   RG   t   __doc__RÓ   Rě   Rî   Rď   Rń   Rň   Rô   (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRé   ł  s   						t   TestTRMMc           B` s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s!   Quick and simple tests for dtrmm.c         C` sR   t  j d d g d d g g  |  _ t  j d d d g d d d g g  |  _ d  S(	   Ng      đ?g       @g       Ŕg      @g      @g      đżg      @g      @(   R+   RŃ   R@   R   (   RC   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRÓ   Ü  s    c         C` sq   t  t d d   } | d  k	 rm | d |  j |  j  } t j d d d g d d d g g  } t | |  n  d  S(	   Nt   dtrmmg      đ?g      *@g      0@g      Ŕg      @g      @g       Ŕ(   RB   RI   R.   R@   R   R+   RŃ   R   (   RC   R:   t   resultt   expected(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_abâ  s    c         C` sw   t  t d d   } | d  k	 rs | d |  j |  j d t } t j d d d g d d d g g  } t | |  n  d  S(	   NR÷   g      đ?Ro   g      @g      @g      đżg       Ŕg        (	   RB   RI   R.   R@   R   R~   R+   RŃ   R   (   RC   R:   Rř   Rů   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_ab_lowerë  s    c         C` s  t  t d d   } | d  k	 rx| t t g D]n } |  j j   } | d |  j | d | } t | j	 j
 t k o t j | |  t k  t | |  j  q+ Wt j |  j j    } | d |  j | d t } t | j	 j
 t k oú t j | |  t k  t | |  n  d  S(   NR÷   g      đ?t   overwrite_b(   RB   RI   R.   R~   Rx   R   RJ   R@   R   t   flagst   f_contiguousR+   t   may_share_memoryR   t   asfortranarrayR   (   RC   R:   t   overwrt   bcopyRř   (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   test_b_overwritesó  s    (   RF   RG   Rő   RÓ   Rú   Rű   R  (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyRö   Ú  s
   				c          C` sÄ  t  d  xłt t  D]Ľ\ }  } t j |  j d } t d d | \ } t d d  j |  } t d d  j |  } | d  } t	 t
 | | | |  t	 t
 | | | j |  d } d	 } | d
  } |  d k  rě t | |  n t | |  t | |  d t |  } | j |  } t |  }	 t |  }
 t | |  j |  } t | |  j |  } | d | d | d |  } t | j | j  t |	 | |  } t | | d | | d | d | d | d d  } t |	 j | |  } t | | d | | d | d | d | d d  } t |	 j   j | |  } t | | d | | d | d | d | d d  } | d  |	 t |  t |  f <t |	 | |  } t | | d | | d | d | d | d d d d  } t |	 j   j | | j   j  } t | | j   j d | | d | d | d | d d d d d d  } | d  |
 t |  t |  f <t |
 j   j | | j   j  } t | | j   j d | q Wd  S(   NiŇ  ič  t   trsmR!   i   i   i   i   i   g      Ŕi   y              đ?R   R@   R   t   atolt   trans_aR   RŐ   Ro   (   R  (   R   R   R   R+   t   finfot   epsR   R   R   R   R   R   R   R   R   R   Rß   R   R   Rz   R   (   R   R!   t   tolR˘   R    t   BR   Rr   R   t   Aut   Alt   B1t   B2R]   t   x2(    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt	   test_trsm  sN    
E!!!"'%-"%(?   t
   __future__R    R   R   t	   __usage__RS   t   numpyR+   t   numpy.testingR   R   R   R   R   t   pytestR   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   t   numpy.randomR   R   t   scipy.linalgR   RI   R   R   R   R   R   R&   t   ImportErrorR.   t   REAL_DTYPESRŻ   R   R4   R=   t   objectR>   RH   Rc   RË   RĎ   RĐ   RÜ   Rä   Ré   Rö   R  (    (    (    s;   lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyt   <module>   s<   (d(

	'	v˙ ˙ A	-%('-