U
    Hvfy                     @   sJ   d dl Zd dlmZmZ d dlm  mZ G dd dZ	G dd dZ
dS )    N)assert_allcloseassert_equalc                   @   s   e Zd Zdd Zdd ZdS )	TestDGEMMc                 C   s  t jddddd dd df }t jdddddd dd df }t d	d dd df }td
||d| t||| td
|j|d| t||j| td
||jd| t|||j td
|j|jd| t||j|j td
||d|j t|||j td
|j|d|j t||j|j td
||jd|j t|||jj td
|j|jd|j t||j|jj d S )N   dZdtype               )r
   r	   r   r
         ?        	npZarangeZreshapeemptyblasZ_test_dgemmr   dotTselfabc r   G/tmp/pip-unpacked-wheel-96ln3f52/scipy/linalg/tests/test_cython_blas.pytest_transposes   s&    $&zTestDGEMM.test_transposesc                 C   s   t jdddd}t jddddd}t d}td	||d
| t||| td	|j|jd
|j t||j|jj d S )N   r   r   )r	   r   ir   r   r   r   r   r   r   r   r   r   test_shapes&   s    
zTestDGEMM.test_shapesN)__name__
__module____qualname__r   r    r   r   r   r   r      s   r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestWfuncPointersz Test the function pointers that are expected to fail on
    Mac OS X without the additional entry statement in their definitions
    in fblas_l1.pyf.src. c                 C   s  t dddgt j}t dddgt j}tt||dd tt||d	d tt|d
 tt	|dd tt
|dd tt|d d d |d d d dd tt|d d d |d d d dd tt	|d d d dd tt
|d d d dd d S )N      ?      ?      ?      ؿy      )@      y?       @      ?                   @yI! 1?3_5@   y4 fva+ P>@r	   g     2@gKg [*@r   yI! 2?335@y4 ffa+ >@g      2@g8f X*@)r   arrayZ	complex64r   r   Z_test_cdotcZ_test_cdotur   Z_test_icamaxZ_test_scasumZ_test_scnrm2r   Zcxcyr   r   r   test_complex_args6   s.          z#TestWfuncPointers.test_complex_argsc                 C   s   t dddgt j}t dddgt j}tt|dd tt||d	d tt|d
d tt|d d d dd tt|d d d |d d d dd tt|d d d dd tt	|d d S )N      @      r   r         ?      !@
         @ `h@      @     #@J @@)
r   r*   Zfloat64r   r   Z_test_dasumZ
_test_ddotZ_test_dnrm2r   Z_test_idamaxr   xyr   r   r   test_double_argsL   s    (z"TestWfuncPointers.test_double_argsc                 C   s   t dddgt j}t dddgt j}tt|d tt|dd tt||d	d tt	|d
d tt|d d d dd tt|d d d |d d d dd tt	|d d d dd d S )Nr.   r/   r0   r   r   r1   r2   r)   r4   r5   r6   r7   r8   )
r   r*   Zfloat32r   r   Z_test_isamaxr   Z_test_sasumZ
_test_sdotZ_test_snrm2r9   r   r   r   test_float_args[   s    (z!TestWfuncPointers.test_float_argsc                 C   s   t dddgt j}t dddgt j}tt|d tt||dd	 tt||d
d	 tt|d d d |d d d dd	 tt|d d d |d d d dd	 d S )Nr%   r&   y      *@      y      ?       @r'   r(   r	   y     2     L6@r3   y     P     d?@r   y     2      6@y     @     ?@)	r   r*   Z
complex128r   r   Z_test_izamaxr   Z_test_zdotcZ_test_zdotur+   r   r   r   test_double_complex_argsj   s        z*TestWfuncPointers.test_double_complex_argsN)r!   r"   r#   __doc__r-   r<   r=   r>   r   r   r   r   r$   1   s
   r$   )Znumpyr   Znumpy.testingr   r   Zscipy.linalg.cython_blasZlinalgZcython_blasr   r   r$   r   r   r   r   <module>   s   +