ó
Ë˝÷Xc           @` sś  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 m Z m Z m Z d  d l m Z m Z y d  d l m Z Wn e k
 rˇ d Z n Xd   Z d   Z d	 e	 f d
     YZ d e	 f d     YZ d e	 f d     YZ d e	 f d     YZ d d  Z d e	 f d     YZ  d e	 f d     YZ! d e	 f d     YZ" d e	 f d     YZ# d e	 f d     YZ$ e% d k r˛e
   n  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   TestCaset   run_module_suitet   assert_equalt   assert_almost_equalt   assert_array_almost_equalt   assert_raisest   assert_t   assert_allclose(   t   _fblast   get_blas_funcs(   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   emptyt	   complex64t
   complex128R   t   typecodeR   t   Nonet   module_namet   longcomplext   float64(   t   f1t   f2t   f3(    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   R&   s   dot(   s   dotR(   R)   (   R   R   R   R   t   AssertionErrorR!   (   t   ft   gt   h(    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_get_blas_funcs_aliasD   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;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_axpyQ   s    ;(   t   __name__t
   __module__R6   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR/   O   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(   NR0   R   i   i   i   i˙˙˙˙R1   i   i   i	   i   R2   y               @y              $@y      đż      $@(   R3   t   fblasR   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR6   `   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(   NR0   t   copyi   i   i   i   R2   y              @y              @y      @      @y      @      @(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_copyl   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(   NR0   t   asumi   iü˙˙˙i   i   t   sct   dzy              @y              @i   y      @      Ŕ(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_asumx   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(	   NR0   R'   i   iü˙˙˙i   i   i   i÷˙˙˙(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   NR2   R)   y              @iü˙˙˙i   y              @i   i   i÷˙˙˙y               @y      @      Ŕy      "Ŕ       @(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   NR2   R(   y              @iü˙˙˙i   y              @i   i   y              ,@y      @      Ŕy      @      ,Ŕ(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   NR0   R&   i   iü˙˙˙i   i2   R   R   R>   R?   y              @y              @y      @      Ŕ(   R3   R:   R   R   t   matht   sqrt(   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   NR0   t   scali   i   iü˙˙˙i   i   iř˙˙˙i
   R2   y              @y              @i÷˙˙˙y              (Ŕi   y              "@t   cst   zdiô˙˙˙i	   y              (@y      @      Ŕy      (@      "@y      @      Ŕy      "@      (Ŕ(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   NR0   t   swapi   i   i   iţ˙˙˙i   R2   y              @y      @      Ŕ(   R3   R:   R   R   (   R4   R5   R+   t   xt   yt   x1t   y1(    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   NR0   t   it   amaxiţ˙˙˙i   i   i   R2   iű˙˙˙y              @i   y      @      @(   R3   R:   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_amaxČ   s     (   R7   R8   R6   R<   R@   RA   RB   RC   RF   RJ   RP   RS   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR9   ^   s   									t   TestFBLAS2Simplec           B` s5   e  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(   NR0   t   gemvi   iü˙˙˙iÜ˙˙˙i   ië˙˙˙R2   y              @y              @iĐ˙˙˙y              B@y              @y              5@y      @      Ŕy      HŔ      BŔy      @      Ŕy      HŔ      5Ŕ(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   NR0   t   geri   i   i   i   i   i   i   i   i   i   R1   i	   R2   t   geruy              đ?y              @y              @iţ˙˙˙y               @t   gerc(   RW   RY   (   R3   R:   R   R   (   R4   R5   R+   t   name(    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_gerâ   s@    +4+8+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   R0   gHŻźň×z>g+Ą=t   syrg      đ?t   rtolt   lowert   incxi   t   offxt   niţ˙˙˙t   sR+   R   R1   t   overwrite_ag       @i   R2   iý˙˙˙R   t   her(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   t   aranget   triut   newaxist   linspacet   Falset   viewt   conjt   c_t   zerost   ravelt   zipR3   R:   R   R
   t   Truet   TR	   R   t	   Exception(   R4   RL   t   resxt   resx_reverseRM   R   t   reszt   resz_reverset   rehzt   rehz_reverset   wR5   R_   R+   R1   t   b(    (    s;   /tmp/pip-build-7oUkmx/scipy/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   R\   R0   gHŻźň×z>g+Ą=t   syr2g      đ?R_   Rc   i   R`   Ra   i   Rb   t   incyt   offyi
   iţ˙˙˙i   Rd   R+   R   R1   Re   g       @(   i   i   (   i   i   (   R   Rg   Rh   Ri   Rj   Rk   Rq   R3   R:   R   R
   Rr   Rs   Ro   R	   R   Rt   (   R4   RL   RM   t   resxyt   resxy_reverset   qR5   R_   R+   R1   R|   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_syr2h  sF    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   R]   i   i˙˙˙˙i   R2   gHŻźň×z>g+Ą=t   her2g      đ?R_   Rc   i   R`   Ra   Rb   R   R   iý˙˙˙R   R   R1   Re   g       @i    i   iţ˙˙˙i   (   i   i   (   i   i   (   R   Rg   Rl   Ri   Rm   Rh   Rn   Ro   Rp   Rq   R3   R:   R   R
   Rr   Rs   R	   R   Rt   (   R4   RL   RM   R   R   t   ut   vR5   R_   R+   R1   R|   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_her2  sL    !!D37..";.*0#*'(   R7   R8   RV   R[   R}   R   R   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyRT   Ň   s
   		&	`	,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(   NR0   R   i   iü˙˙˙iÜ˙˙˙i   ië˙˙˙R2   y              @y              @iĐ˙˙˙y              B@y              @y              5@y      @      Ŕy      HŔ      BŔy      @      Ŕy      HŔ      5Ŕ(   R3   R:   R   R   (   R4   R5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_gemmÇ  s    %/%(   R7   R8   R   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   R3   R:   R   (   t   funct   psR5   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   _get_funcÖ  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   arrayR1   R|   t   onesR   t   t(   R4   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   setUpá  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   symmR1   R|   R   t   alphag      đ?t   betaR`   i   t   side(   R   R1   R|   R   R   R   Rs   (   R4   R+   t   res(    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_symmę  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   dsymmR1   R|   i   R   R   (   R3   R:   R   R   Rt   R1   R|   (   R4   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_summ_wrong_sideő  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   R1   R|   R   R   g      đ?R   R`   i   N(
   R3   R:   R   R1   R|   R   R   t   allcloseR   R*   (   R4   R+   R   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_symm_wrong_uploý  s    06(   R7   R8   R   R   R   R   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR   ß  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   R1   R   t   tt(   R4   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR     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   syrkR1   R   g      đ?R`   i   R   R   t   trans(
   R   R1   R   R   Rh   R   t   trilR   t   shapeR   (   R4   R+   R   t   c0(    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt	   test_syrk  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   dsyrkR1   g      đ?R   i   i   R   (   i   i   (   R3   R:   R   R   Rt   R1   R   R   (   R4   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_syrk_wrong_c'  s    (   R7   R8   R   RĽ   R§   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR     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   R1   R|   R   R   (   R4   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR   0  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   syr2kR1   R|   R   g      đ?R`   i   R   R   RĄ   (   R   R1   R|   R   R   Rh   R   R˘   R   RŁ   R   (   R4   R+   R   R¤   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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   dsyr2kR1   R|   g      đ?R   i   i   R   (   i   i   (	   R3   R:   R   R   Rt   R1   R|   R   Ro   (   R4   R+   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_syr2k_wrong_cM  s    '(   R7   R8   R   RŞ   RŹ   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   R4   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR   W  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   zcR1   R|   R   g      đ?i   i˙˙˙˙(   R   RŽ   R   R   Rh   t   diag(   R4   R+   R   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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Ż   R1   R|   R   g      đ?i   (   R   RŽ   R   R   Rh   R°   (   R4   R+   R   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_hemm_zca  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Ż   R1   R   g      đ?i˙˙˙˙(   R   RŽ   R   R   Rh   R°   (   R4   R+   R   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_syrk_zrg  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Ż   R1   R   g      đ?i   (   R   RŽ   R   R   Rh   R°   (   R4   R+   R   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_herk_zrl  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Ż   R1   R|   R   g      đ?g       @i˙˙˙˙(   R   RŽ   R   R   Rh   R°   (   R4   R+   R   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_syr2k_zrq  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Ż   R1   R|   R   g      đ?g       @i   (   R   RŽ   R   R   Rh   R°   (   R4   R+   R   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_her2k_zrv  s    !(
   R7   R8   t   __doc__R   Rą   Rł   R´   Rś   Rˇ   Rš   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyR­   U  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   R1   R|   (   R4   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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       Ŕ(   R3   R:   R   R1   R|   R   R   R   (   R4   R+   t   resultt   expected(    (    s;   /tmp/pip-build-7oUkmx/scipy/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      đ?R`   g      @g      @g      đżg       Ŕg        (	   R3   R:   R   R1   R|   Rr   R   R   R   (   R4   R+   R˝   Rž   (    (    s;   /tmp/pip-build-7oUkmx/scipy/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(   R3   R:   R   Rr   Rk   R|   R;   R1   R	   t   flagst   f_contiguousR   t   may_share_memoryR   t   asfortranarrayR   (   R4   R+   t   overwrt   bcopyR˝   (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   test_b_overwrites  s    (   R7   R8   Rş   R   Rż   RŔ   RČ   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyRť   |  s
   			t   __main__(&   t
   __future__R    R   R   t	   __usage__RD   t   numpyR   t   numpy.testingR   R   R   R   R   R   R	   R
   t   scipy.linalgR   R:   R   R   R   t   ImportErrorR   R%   R.   R/   R9   RT   R   R   R   R   R¨   R­   Rť   R7   (    (    (    s;   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/tests/test_blas.pyt   <module>   s.   :
	'	tó	,$&',