
    _nd              	       (   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZ d Zej        dej        diZedediZd Ze j                            dej        ej        g          d             Ze j                            dej        ej        g          d             Ze j                            dej        ej        g          d             Ze j                            dej        ej        g          d             Z e j                            dej        ej        g          d             Z!e j                            dej        ej        g          d             Z"e j                            dej        ej        g          d             Z#e j                            dej        ej        g          d             Z$e j                            dej        ej        g          e j                            deefej%        efgd d!g"          e j                            d#eegd$d%g"          d&                                     Z&e j                            dej        ej        g          e j                            d#eegd$d%g"          d'                         Z'e j                            dej        ej        g          e j                            d(eefej%        efgd d!g"          e j                            deefej%        efgd d!g"          e j                            d#eegd$d%g"          d)                                                 Z(dS )*    N)assert_allclose)_dot_memview)_asum_memview)_axpy_memview)_nrm2_memview)_copy_memview)_scal_memview)_rotg_memview)_rot_memview)_gemv_memview)_ger_memview)_gemm_memview)RowMajorColMajor)TransNoTransc                     t          j        d          }| t          j        k    r|j        S | t          j        k    r|j        S d S )Ncython)pytestimportorskipnpfloat32floatfloat64double)dtyper   s     Dlib/python3.11/site-packages/sklearn/utils/tests/test_cython_blas.py_numpy_to_cythonr      sD     **F
|	"*		} 
	    gư>g-q=CFc                     | S )N )xs    r   _no_opr%   !   s    Hr   r   c                    t           t          |                    }t          j                            d          }|                    d                              | d          }|                    d                              | d          }|                    |          } |||          }t          ||t          |                     d S Nr   
   Fcopyrtol)
r   r   r   randomRandomStaterandom_sampleastypedotr   RTOL)r   r1   rngr$   yexpectedactuals          r   test_dotr7   %   s    
'..
/C
)


"
"C"$$U$77A"$$U$77AuuQxxHSAYYFFH4;777777r   c                 h   t           t          |                    }t          j                            d          }|                    d                              | d          }t          j        |                                          } ||          }t          ||t          |                     d S r'   )r   r   r   r-   r.   r/   r0   abssumr   r2   )r   asumr3   r$   r5   r6   s         r   	test_asumr<   3   s    )%001D
)


"
"C"$$U$77Avayy}}HT!WWFFH4;777777r   c                    t           t          |                    }t          j                            d          }|                    d                              | d          }|                    d                              | d          }d}||z  |z   } ||||           t          ||t          |                     d S Nr   r(   Fr)         @r+   )	r   r   r   r-   r.   r/   r0   r   r2   )r   axpyr3   r$   r4   alphar5   s          r   	test_axpyrB   @   s    )%001D
)


"
"C"$$U$77A"$$U$77AEqy1}HD1Axd5k222222r   c                 Z   t           t          |                    }t          j                            d          }|                    d                              | d          }t          j                            |          } ||          }t          ||t          |                     d S r'   )r   r   r   r-   r.   r/   r0   linalgnormr   r2   )r   nrm2r3   r$   r5   r6   s         r   	test_nrm2rG   O   s    )%001D
)


"
"C"$$U$77Ay~~a  HT!WWFFH4;777777r   c                 n   t           t          |                    }t          j                            d          }|                    d                              | d          }t          j        |          }|                                } |||           t          ||t          |                     d S r'   )r   r   r   r-   r.   r/   r0   
empty_liker*   r   r2   )r   r*   r3   r$   r4   r5   s         r   	test_copyrJ   \   s    )%001D
)


"
"C"$$U$77A
aAvvxxHDAJJJAxd5k222222r   c                 ,   t           t          |                    }t          j                            d          }|                    d                              | d          }d}||z  } |||           t          ||t          |                     d S r>   )	r	   r   r   r-   r.   r/   r0   r   r2   )r   scalr3   r$   rA   r5   s         r   	test_scalrM   j   s    )%001D
)


"
"C"$$U$77AEqyHDNNNAxd5k222222r   c                 j   t           t          |                    }t          j                            d          } | |                                          } | |                                          }d\  }}d } |||          } |||||          }	t          |	|t          |                     d S )Nr   )        rO   c                    t          |           t          |          k    r| n|}| dk    r|dk    rd\  }}}}nGt          j        | dz  |dz  z             |dk    rdndz  }| |z  ||z  }}|| k    r|n|dk    rdnd|z  }||||fS )Nr   )   r   r   r      rQ   )r9   r   sqrt)abroecsrzs          r   expected_rotgz test_rotg.<locals>.expected_rotg   s    q66CFF??aa66a1ff%JAq!QQ1q!t$$SAXX2>Aq5!a%qAAXXaAAQUA!Qzr   r+   )r
   r   r   r-   r.   randnr   r2   )
r   rotgr3   rU   rV   rX   rY   r\   r5   r6   s
             r   	test_rotgr_   x   s    )%001D
)


"
"CciikkAciikkADAq   }Q""HT!Q1FFH4;777777r   c                    t           t          |                    }t          j                            d          }|                    d                              | d          }|                    d                              | d          } | |                                          } | |                                          }||z  ||z  z   }||z  ||z  z
  } |||||           t          ||           t          ||           d S )Nr   r(   Fr)   )	r   r   r   r-   r.   r/   r0   r]   r   )	r   rotr3   r$   r4   rX   rY   
expected_x
expected_ys	            r   test_rotrd      s    
'..
/C
)


"
"C"$$U$77A"$$U$77AciikkAciikkAQQJQQJC1aOOOAz"""Az"""""r   zopA, transAr   r   )idsorderr   r   c                 v   t           t          |                    }t          j                            d          }t          j         ||                    d                              | d                    t          |                   }|                    d                              | d          }|                    d                              | d          }d\  }	}
|	 ||          	                    |          z  |
|z  z   } |||	|||
|           t          ||t          |          	           d S )
Nr   )   r(   Fr)   rf   r(   rh   r?   g      r+   )r   r   r   r-   r.   asarrayr/   r0   ORDERr1   r   r2   )r   opAtransArf   gemvr3   Ar$   r4   rA   betar5   s               r   	test_gemvrr      s,    )%001D
)


"
"C

Ch''..u5.AABB%PU,	 	 	A 	"$$U$77A"$$U$77AKE4ss1vvzz!}}$tax/HD1dA&&&Axd5k222222r   c                 B   t           t          |                    }t          j                            d          }|                    d                              | d          }|                    d                              | d          }t          j        |                    d                              | d          t          |                   }d}|t          j	        ||          z  |z   } |||||           t          ||t          |          	           d S )
Nr   r(   Fr)   rh   r(   rh   ri   r?   r+   )r   r   r   r-   r.   r/   r0   rk   rl   outerr   r2   )	r   rf   gerr3   r$   r4   rp   rA   r5   s	            r   test_gerrw      s    '..
/C
)


"
"C"$$U$77A"$$U$77A

(##**5u*==U5\	 	 	A Erx1~~%)HCq!QAxd5k222222r   zopB, transBc           	         t           t          |                    }t          j                            d          }t          j         ||                    d                              | d                    t          |                   }t          j         ||                    d                              | d                    t          |                   }	t          j        |                    d                              | d          t          |                   }
d\  }}| ||          	                     ||	                    z  ||
z  z   } ||||||	||
           t          |
|t          |          	           d S )
Nr   )   r(   Fr)   ri   rt   )ry   rh   rj   r+   )r   r   r   r-   r.   rk   r/   r0   rl   r1   r   r2   )r   rm   rn   opBtransBrf   gemmr3   rp   Br    rA   rq   r5   s                 r   	test_gemmr~      s{    )%001D
)


"
"C

Ch''..u5.AABB%PU,	 	 	A 	
Ch''..u5.AABB%PU,	 	 	A 	
(##**5u*==U5\	 	 	A KE4ss1vvzz##a&&)))D1H4HD1dA...Axd5k222222r   ))r   numpyr   sklearn.utils._testingr   sklearn.utils._cython_blasr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r2   rl   r%   markparametrizer7   r<   rB   rG   rJ   rM   r_   rd   	transposerr   rw   r~   r#   r   r   <module>r      s        2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 4 4 4 4 4 4 3 3 3 3 3 3 4 4 4 4 4 4 9 9 9 9 9 9 9 9 5 5 5 5 5 5 5 5   	
D"*e,	3#&   2:rz":;;
8 
8 <;
8 2:rz":;;	8 	8 <;	8 2:rz":;;3 3 <;3 2:rz":;;	8 	8 <;	8 2:rz":;;
3 
3 <;
3 2:rz":;;
3 
3 <;
3 2:rz":;;8 8 <;80 2:rz":;;# # <;#$ 2:rz":;;VW%e'<=IwCW    8X"6Z<TUU3 3 VU  <;
3" 2:rz":;;8X"6Z<TUU3 3 VU <;3" 2:rz":;;VW%e'<=IwCW    VW%e'<=IwCW    8X"6Z<TUU3 3 VU   <;3 3 3r   