U
    9%e;                     @   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/Darija-Ai-API/env/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rd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







      