o
    i5                     @   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 d dlmZ dd ZejdejdiZejdej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j%fej&ej'fgddgd ejjd!ejejgd"d#gd d$d% Z(ejdejejgejjd!ejejgd&d'gd d(d) Z)ejdejejgejjd*eej%fej&ej'fgddgd ejjdeej%fej&ej'fgddgd ejjd!ejejgd&d'gd d+d, Z*dS )-    N)
BLAS_Order
BLAS_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   ^/home/kim/smarthome/.venv/lib/python3.10/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   

r.   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_asum4   s   r1   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_axpyA   s   r5   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_nrm2P   s   r6   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   

r7   c                 C   sX   t t|  }tjd}|dj| dd}d}|| }||| t||t|  d d S r2   )	r   r   r   r$   r%   r&   r'   r   r)   )r   Zscalr*   r   r4   r,   r   r   r   	test_scalk   s   
r8   c           
      C   sn   t t|  }tjd}| | }| | }d\}}dd }|||}|||||}	t|	|t|  d d S )Nr   )        r9   c                 S   s   t | t |kr
| n|}| dkr|dkrd\}}}}n,t| d |d  |dkr+dnd }| | || }}|| kr=|n	|dkrCdnd| }||||fS )Nr   )   r   r   r      r:   )r/   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>   r?   r@   rA   rD   r,   r-   r   r   r   	test_rotgy   s   

rF   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'   rE   r   )	r   Zrotr*   r   r+   r@   rA   Z
expected_xZ
expected_yr   r   r   test_rot   s   
rG   zopA, transANoTransTrans)ZidsorderRowMajorColMajorc                 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    rM   r3   g      r#   )r	   r   r   r$   r%   asarrayr&   r'   ORDERr(   r   r)   )r   opAtransArJ   Zgemvr*   Ar   r+   r4   betar,   r   r   r   	test_gemv   s   rV   zBLAS_Order.RowMajorzBLAS_Order.ColMajorc           	      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!   rM   r    rM   rN   r3   r#   )r
   r   r   r$   r%   r&   r'   rP   rQ   outerr   r)   )	r   rJ   Zgerr*   r   r+   rT   r4   r,   r   r   r   test_ger   s   rY   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!   rN   rW   )rZ   rM   rO   r#   )r   r   r   r$   r%   rP   r&   r'   rQ   r(   r   r)   )r   rR   rS   ZopBZtransBrJ   Zgemmr*   rT   Br   r4   rU   r,   r   r   r   	test_gemm   s   r\   )+numpyr   r   Zsklearn.utils._cython_blasr   r   r   r   r   r   r   r	   r
   r   r   r   r   Zsklearn.utils._testingr   r   r   r   r)   rK   rL   rQ   r   markZparametrizer.   r1   r5   r6   r7   r8   rF   rG   rH   Z	transposerI   rV   rY   r\   r   r   r   r   <module>   sx    <










