U
    _»{j;  ã                   @   s”  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mZmZmZmZmZmZmZ d dlmZ dd„ ZejdejdiZeded	iZd
d„ Zej dejejg¡dd„ ƒZej dejejg¡dd„ ƒZej dejejg¡dd„ ƒZej dejejg¡dd„ ƒZ ej dejejg¡dd„ ƒZ!ej dejejg¡dd„ ƒZ"ej dejejg¡dd„ ƒZ#ej dejejg¡dd„ ƒZ$ej dejejg¡ejjdeefej%efgddgd �ejjd!eegd"d#gd �d$d%„ ƒƒƒZ&ej dejejg¡ejjd!eegd"d#gd �d&d'„ ƒƒZ'ej dejejg¡ejjd(eefej%efgddgd �ejjdeefej%efgddgd �ejjd!eegd"d#gd �d)d*„ ƒƒƒƒZ(dS )+é    N)ÚColMajorÚNoTransÚRowMajorÚTransÚ_asum_memviewÚ_axpy_memviewÚ_copy_memviewÚ_dot_memviewÚ_gemm_memviewÚ_gemv_memviewÚ_ger_memviewÚ_nrm2_memviewÚ_rot_memviewÚ_rotg_memviewÚ_scal_memview)Úassert_allclosec                 C   s.   t  d¡}| tjkr|jS | tjkr*|jS d S )NÚcython)ÚpytestZimportorskipÚnpÚfloat32ÚfloatÚfloat64Údouble)Údtyper   © r   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/utils/tests/test_cython_blas.pyÚ_numpy_to_cython   s
    


r   g�íµ ÷Æ°>gê-�™—q=ÚCÚFc                 C   s   | S )Nr   )Úxr   r   r   Ú_no_op$   s    r    r   c                 C   sj   t t| ƒ }tj d¡}| d¡j| dd�}| d¡j| dd�}| |¡}|||ƒ}t||t	|  d� d S ©Nr   é
   F©Úcopy©Zrtol)
r	   r   r   ÚrandomÚRandomStateÚrandom_sampleÚastypeÚdotr   ÚRTOL)r   r*   Úrngr   ÚyÚexpectedÚactualr   r   r   Útest_dot(   s    

r0   c                 C   sX   t t| ƒ }tj d¡}| d¡j| dd�}t |¡ ¡ }||ƒ}t	||t
|  d� d S r!   )r   r   r   r&   r'   r(   r)   ÚabsÚsumr   r+   )r   Zasumr,   r   r.   r/   r   r   r   Ú	test_asum6   s    r3   c                 C   sr   t t| ƒ }tj d¡}| d¡j| dd�}| d¡j| dd�}d}|| | }||||ƒ t||t|  d� d S ©Nr   r"   Fr#   ç      @r%   )	r   r   r   r&   r'   r(   r)   r   r+   )r   Zaxpyr,   r   r-   Úalphar.   r   r   r   Ú	test_axpyC   s    r7   c                 C   sV   t t| ƒ }tj d¡}| d¡j| dd�}tj |¡}||ƒ}t	||t
|  d� d S r!   )r   r   r   r&   r'   r(   r)   ZlinalgZnormr   r+   )r   Znrm2r,   r   r.   r/   r   r   r   Ú	test_nrm2R   s    r8   c                 C   s^   t t| ƒ }tj d¡}| d¡j| dd�}t |¡}| ¡ }|||ƒ t	||t
|  d� d S r!   )r   r   r   r&   r'   r(   r)   Z
empty_liker$   r   r+   )r   r$   r,   r   r-   r.   r   r   r   Ú	test_copy_   s    

r9   c                 C   sX   t t| ƒ }tj d¡}| d¡j| dd�}d}|| }|||ƒ t||t|  d� d S r4   )	r   r   r   r&   r'   r(   r)   r   r+   )r   Zscalr,   r   r6   r.   r   r   r   Ú	test_scalm   s    
r:   c           
      C   sn   t t| ƒ }tj d¡}| | ¡ ƒ}| | ¡ ƒ}d\}}dd„ }|||ƒ}|||||ƒ}	t|	|t|  d� d S )Nr   )ç        r;   c                 S   sš   t | ƒt |ƒkr| n|}| dkr6|dkr6d\}}}}nXt | d |d  ¡|dkrVdnd }| | ||  }}|| krz|n|dkr†dnd| }||||fS )Nr   )é   r   r   r   é   r<   éÿÿÿÿ)r1   r   Úsqrt)ÚaÚbZroeÚcÚsÚrÚzr   r   r   Úexpected_rotg„   s    & z test_rotg.<locals>.expected_rotgr%   )r   r   r   r&   r'   Úrandnr   r+   )
r   Zrotgr,   r@   rA   rB   rC   rF   r.   r/   r   r   r   Ú	test_rotg{   s    

rH   c           	      C   sž   t t| ƒ }tj d¡}| d¡j| dd�}| d¡j| dd�}| | ¡ ƒ}| | ¡ ƒ}|| ||  }|| ||  }|||||ƒ t||ƒ t||ƒ d S )Nr   r"   Fr#   )	r   r   r   r&   r'   r(   r)   rG   r   )	r   Zrotr,   r   r-   rB   rC   Z
expected_xZ
expected_yr   r   r   Útest_rot”   s    
rI   zopA, transAr   r   )ZidsÚorderr   r   c                 C   s°   t t| ƒ }tj d¡}tj|| d¡j| dd�ƒt| d�}| d¡j| dd�}| d¡j| dd�}d\}	}
|	||ƒ 	|¡ |
|  }|||	|||
|ƒ t
||t|  d	� d S )
Nr   )é   r"   Fr#   ©rJ   r"   rK   ©r5   g      à¿r%   )r   r   r   r&   r'   Úasarrayr(   r)   ÚORDERr*   r   r+   )r   ÚopAÚtransArJ   Zgemvr,   ÚAr   r-   r6   Úbetar.   r   r   r   Ú	test_gemv§   s     ÿrT   c           	      C   sž   t t| ƒ }tj d¡}| d¡j| dd�}| d¡j| dd�}tj| d¡j| dd�t| d�}d}|t 	||¡ | }|||||ƒ t
||t|  d	� d S )
Nr   r"   Fr#   rK   ©r"   rK   rL   r5   r%   )r   r   r   r&   r'   r(   r)   rN   rO   Úouterr   r+   )	r   rJ   Zgerr,   r   r-   rR   r6   r.   r   r   r   Útest_ger½   s     ÿrW   zopB, transBc                 C   sÖ   t t| ƒ }tj d¡}tj|| d¡j| dd�ƒt| d�}tj|| d¡j| dd�ƒt| d�}	tj| d¡j| dd�t| d�}
d\}}|||ƒ 	||	ƒ¡ ||
  }||||||	||
ƒ t
|
|t|  d	� d S )
Nr   )é   r"   Fr#   rL   rU   )rX   rK   rM   r%   )r
   r   r   r&   r'   rN   r(   r)   rO   r*   r   r+   )r   rP   rQ   ZopBZtransBrJ   Zgemmr,   rR   ÚBr   r6   rS   r.   r   r   r   Ú	test_gemmÐ   s$    	 ÿ ÿ ÿrZ   ))Únumpyr   r   Zsklearn.utils._cython_blasr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Zsklearn.utils._testingr   r   r   r   r+   rO   r    ÚmarkZparametrizer0   r3   r7   r8   r9   r:   rH   rI   Z	transposerT   rW   rZ   r   r   r   r   Ú<module>   s^   D







  ÿ  ÿ  ÿ