§
    rŠtj…   ã            
       óœ  — d dl Z d dlZd dlZd dlmZ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 d dlmZ d d	lmZmZmZmZ d d
lmZ d dlmZmZmZmZm Z m!Z!m"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/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ej;         <                    de4e5z   e6z   e8z   ¦  «        d„ ¦   «         Z=d„ Z>d„ Z?ej;         <                    dej@        ejA        ejB        ejC        f¦  «        d„ ¦   «         ZDej;         <                    dej@        ejA        ejB        ejC        f¦  «        d„ ¦   «         ZEej;         <                    dd¦  «        d„ ¦   «         ZFej;         <                    dg d¢¦  «        d„ ¦   «         ZGej;         <                    dejB        ejC        f¦  «        ej;         <                    de6¦  «        d„ ¦   «         ¦   «         ZHd„ ZId„ ZJd„ ZKd „ ZLej;         <                    de7e8z   ¦  «        d!„ ¦   «         ZMd"„ ZNej;         <                    d#d$d%g¦  «        d&„ ¦   «         ZOd'„ ZPd(„ ZQej;         <                    d)g d*¢¦  «        ej;         <                    d+g d*¢¦  «        ej;         <                    dg d,¢¦  «        ej;         <                    d- eRd.¦  «        ¦  «        d/„ ¦   «         ¦   «         ¦   «         ¦   «         ZSd0„ ZTej;         <                    d1 ejU        g d2¢ej@        ¬3¦  «         ejU        d4d.gejA        ¬3¦  «        g ejV        ejA        ¦  «        f ejU        g d2¢ej@        ¬3¦  «         ejU        d4d.gejC        ¬3¦  «        g ejV        ejC        ¦  «        f ejU        g d2¢ej@        ¬3¦  «         ejU        d5d6geW¬3¦  «        g ejV        eW¦  «        fg¦  «        d7„ ¦   «         ZXej;         <                    dejB        ejC        g¦  «        ej;         <                    d8d9¦  «        d:„ ¦   «         ¦   «         ZYej;         <                    d; e¦   «         ¦  «        d<„ ¦   «         ZZej;         <                    d=g d>¢¦  «        ej;         <                    d?g d@¢¦  «        ej;         <                    dAg dB¢¦  «        dC„ ¦   «         ¦   «         ¦   «         Z[ej;         <                    dejB        ejC        g¦  «        dD„ ¦   «         Z\dE„ Z]dF„ Z^e"dG„ ¦   «         Z_dH„ Z`dI„ ZadJ„ ZbdK„ Zcej;         <                    dLejU        ge6¢dMgdN„ e6D ¦   «         z   ¬O¦  «        ej;         <                    dPejU        ge6¢dMgdQ„ e6D ¦   «         z   ¬O¦  «        dR„ ¦   «         ¦   «         Zdej;         <                    de6¦  «        dS„ ¦   «         Zeej;         <                    dTejU        ge6¢dMgdU„ e6D ¦   «         z   ¬O¦  «        dV„ ¦   «         Zfej;         <                    dWdXdYg¦  «        dZ„ ¦   «         Zgd[„ Zhej;         <                    d; e¦   «         ¦  «        d\„ ¦   «         Ziej;         <                    d; e¦   «         ¦  «        d]„ ¦   «         ZjdS )^é    N)ÚlinalgÚsparse)Úeigh)Úeigsh)Úconfig_context)Úmake_low_rank_matrixÚmake_sparse_spd_matrix)Úgen_batches)Ú_init_arpack_v0)Ú_max_precision_float_dtypeÚget_namespaceÚmove_toÚ)yield_namespace_device_dtype_combinations©Údevice)Ú_array_api_for_testsÚassert_allcloseÚassert_allclose_dense_sparseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚskip_if_32bit)Ú_approximate_modeÚ_deterministic_vector_sign_flipÚ_incremental_mean_and_varÚ_randomized_eigshÚ_safe_accumulator_opÚ	cartesianÚdensityÚrandomized_range_finderÚrandomized_svdÚ	row_normsÚsafe_sparse_dotÚsoftmaxÚstable_cumsumÚsvd_flipÚweighted_mode)ÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERSÚLIL_CONTAINERSÚ_modeÚ_sparse_random_arrayÚsparse_containerc                 óÜ   — t           j                             d¦  «        }|                     dd¬¦  «        }d|d<   d|d<   t	           | |¦  «        ¦  «        t	          |¦  «        k    sJ ‚d S )Nr   é
   ©r1   é   ©Úsize)é   é   )r3   é   )ÚnpÚrandomÚRandomStateÚrandintr   )r/   ÚrngÚXs      ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_extmath.pyÚtest_densityr@   >   sq   € õ
 Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�B˜WˆÑ%Ô%€AØ€A€d�GØ€A€d�GåÐ#Ð# AÑ&Ô&Ñ'Ô'­7°1©:¬:Ò5Ð5Ð5Ð5Ð5Ð5ó    c                  ó>  — t           j                             d¦  «        } |                      dd¬¦  «        }t          j        |j        ¦  «        }dD ]J}t          ||¦  «        \  }}t          |||¬¦  «        \  }}t          ||¦  «         t          ||¦  «         ŒKd S )Nr   r1   r2   r4   )Nr   r6   ©Úaxis)	r9   r:   r;   r<   ÚonesÚshaper-   r'   r   )r=   ÚxÚweightsrD   ÚmodeÚscoreÚmode2Úscore2s           r?   Útest_uniform_weightsrM   K   s¢   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�B˜WˆÑ%Ô%€AÝŒg�a”gÑÔ€Gàð *ð *ˆÝ˜A˜t‘n”n‰ˆˆeÝ% a¨°tÐ<Ñ<Ô<‰ˆˆvå˜4 Ñ'Ô'Ð'Ý˜5 &Ñ)Ô)Ð)Ð)ð*ð *rA   c                  ó¸  — d} t           j                             d¦  «        }|                     | d¬¦  «        }|                     |j        ¦  «        }| |d d …d d…f<   |d d …d d…fxx         dz  cc<   t          ||d¬¦  «        \  }}t          || ¦  «         t          | 	                    ¦   «         |d d …d d…f          
                    d¦  «        ¦  «         d S )Né   r   ©éd   r1   r4   r3   r6   rC   )r9   r:   r;   r<   Úrandom_samplerF   r'   r   r   ÚravelÚsum)Úmode_resultr=   rG   ÚwrI   rJ   s         r?   Útest_random_weightsrW   Y   sÞ   € ð €Kå
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�K iˆÑ0Ô0€AØ×Ò˜!œ'Ñ"Ô"€Aà€A€a€a€aˆˆ!ˆ€e�HØ€a€a€aˆˆ!ˆ€e€H€H„H��M€H€H�Hå  1¨1Ð-Ñ-Ô-�K€Dˆ%å�t˜[Ñ)Ô)Ð)Ý˜eŸkšk™mœm¨Q¨q¨q¨q°"°1°"¨u¬X¯\ª\¸!©_¬_Ñ=Ô=Ð=Ð=Ð=rA   Údtypec           
      óZ  — d}d}d}d}| t           j        k    rdnd}t          j        | ¦  «        } t          |||dd¬¦  «                             | d	¬
¦  «        }|j        ||fk    sJ ‚t          j        |d	¬¦  «        \  }}}	|                     | d	¬
¦  «        }|                     | d	¬
¦  «        }|	                     | d	¬
¦  «        }	dD �]ß}
t          |||
d¬¦  «        \  }}}| j	        dk    r(|j        | k    sJ ‚|j        | k    sJ ‚|j        | k    sJ ‚nE|j        t           j
        k    sJ ‚|j        t           j
        k    sJ ‚|j        t           j
        k    sJ ‚|j        ||fk    sJ ‚|j        |fk    sJ ‚|j        ||fk    sJ ‚t          |d |…         ||¬¦  «         t          t          j        |d d …d |…f         |	d |…d d …f         ¦  «        t          j        ||¦  «        |¬¦  «         t          D ]¯} ||¦  «        }t          |||
d¬¦  «        \  }}}| j	        dk    r(|j        | k    sJ ‚|j        | k    sJ ‚|j        | k    sJ ‚n6|j        j	        dk    sJ ‚|j        j	        dk    sJ ‚|j        j	        dk    sJ ‚t          |d |…         |d |…         |¬¦  «         Œ°�Œád S )NrQ   éô  r3   r1   é   ç        r   ©Ú	n_samplesÚ
n_featuresÚeffective_rankÚtail_strengthÚrandom_stateF©Úcopy©Úfull_matrices)ÚautoÚLUÚQR©Úpower_iteration_normalizerrb   Úf©Údecimal)r9   Úfloat32rX   r   ÚastyperF   r   Úsvdr!   ÚkindÚfloat64r   Údotr*   )rX   r^   r_   ÚrankÚkrn   r>   ÚUÚsÚVtÚ
normalizerÚUaÚsaÚVaÚcsr_containers                  r?   Ú'test_randomized_svd_low_rank_all_dtypesr   k   sn  € ð €IØ€JØ€DØ
€AØ�BœJÒ&Ð&ˆaˆa¨A€GÝŒH�U‰OŒO€Eõ 	ØØØØØð	ñ 	ô 	÷ ‚fˆU˜€fÑÔð ð Œ7�y *Ð-Ò-Ð-Ð-Ð-õ Œz˜!¨5Ð1Ñ1Ô1�H€A€qˆ"ð 	
�Š�˜UˆÑ#Ô#€AØ	�Š�˜UˆÑ#Ô#€AØ	�Š�5˜uˆÑ	%Ô	%€Bà*ð 0Fñ 0Fˆ
å#Øˆq¨ZÀað
ñ 
ô 
‰
ˆˆB�ð Œ:˜ÒÐØ”8˜uÒ$Ð$Ð$Ð$Ø”8˜uÒ$Ð$Ð$Ð$Ø”8˜uÒ$Ð$Ð$Ð$Ð$à”8�rœzÒ)Ð)Ð)Ð)Ø”8�rœzÒ)Ð)Ð)Ð)Ø”8�rœzÒ)Ð)Ð)Ð)àŒx˜I q˜>Ò)Ð)Ð)Ð)ØŒx˜A˜4ÒÐÐÐØŒx˜A˜z˜?Ò*Ð*Ð*Ð*õ 	˜A˜b˜q˜bœE 2¨wÐ7Ñ7Ô7Ð7õ 	ÝŒF�1�Q�Q�Q˜˜˜�U”8˜R    A A A œYÑ'Ô'­¬°°B©¬Àð	
ñ 	
ô 	
ð 	
õ
 ,ð 	Fð 	FˆMØ�˜aÑ Ô ˆAõ (Ø�1°È!ðñ ô ‰JˆB��Bð Œz˜SÒ Ð Ø”x 5Ò(Ð(Ð(Ð(Ø”x 5Ò(Ð(Ð(Ð(Ø”x 5Ò(Ð(Ð(Ð(Ð(à”x”}¨Ò+Ð+Ð+Ð+Ø”x”}¨Ò+Ð+Ð+Ð+Ø”x”}¨Ò+Ð+Ð+Ð+å  % 4 %¤¨"¨U¨d¨U¬)¸WÐEÑEÔEÐEÐEñ!	FðA0Fð 0FrA   c                 ó8  — t           j                             d¦  «        }t          j        t          j        g d¢| ¬¦  «        ¦  «        }t           j                             |                     |j        ¬¦  «        ¦  «        d         }||z  |j	        z  }t          |dd¬¦  «        \  }}|j        d	k    sJ ‚t          |d
dg¦  «         |j        dk    sJ ‚t          j        t          ¦  «        5  t          |dd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z@Test that `_randomized_eigsh` returns the appropriate componentsé*   )ç      ð?ç       Àr\   ç      @©rX   r4   r   r7   Úmodule)Ún_componentsÚ	selection)r7   r„   rƒ   )é   r7   ÚvalueN)r9   r:   r;   ÚdiagÚarrayr   ÚqrÚnormalrF   ÚTr   r   ÚpytestÚraisesÚNotImplementedError)rX   r=   r>   Úrand_rotÚeigvalsÚeigvecss         r?   Útest_randomized_eigshr–   »   sk  € õ Œ)×
Ò
 Ñ
#Ô
#€CÝ
Œ•”Ð.Ð.Ð.°eÐ<Ñ<Ô<Ñ=Ô=€AåŒy�|Š|˜CŸJšJ¨A¬G˜JÑ4Ô4Ñ5Ô5°aÔ8€HØ�1‰�x”zÑ!€Aõ )¨¸ÀhÐOÑOÔOÑ€GˆWàŒ=˜DÒ Ð Ð Ð Ý˜g¨¨T {Ñ3Ô3Ð3àŒ=˜FÒ"Ð"Ð"Ð"õ 
ŒÕ*Ñ	+Ô	+ð @ð @Ý˜!¨!°wÐ?Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s   Ã/DÄDÄDrv   )r1   é2   rQ   éÇ   éÈ   c           	      óÆ  — d}t          |d¬¦  «        }t          || ddd¬¦  «        \  }}t          || ddddd¬	¦  «        \  }}t          ||| z
  |d
z
  f¬¦  «        \  }}|                     ¦   «         ddd…         }	||	         }|dd…|	f         }|j        | fk    sJ ‚t          ||d¬¦  «         t          ||d¬¦  «         |j        || fk    sJ ‚t          j        |¦  «        j        }
t          ||
¦  «        \  }}t          ||
¦  «        \  }}t          ||
¦  «        \  }}t          ||d¬¦  «         t          ||d¬¦  «         | |k     r“t          |d¬¦  «        }t          || ddd|¬¦  «        \  }}|                     ¦   «         ddd…         }	||	         }t          ||d¬¦  «         |dd…|	f         }t          ||
¦  «        \  }}t          ||d¬¦  «         dS dS )a&  Check that `_randomized_eigsh` is similar to other `eigsh`

    Tests that for a random PSD matrix, `_randomized_eigsh` provides results
    comparable to LAPACK (scipy.linalg.eigh) and ARPACK
    (scipy.sparse.linalg.eigsh).

    Note: some versions of ARPACK do not support k=n_features.
    r™   r   ©rb   r†   é   )r‡   rˆ   Ún_iterrb   é   ri   )r‡   r�   Ún_oversamplesrb   rk   rˆ   r6   )Úsubset_by_indexNéÿÿÿÿrO   rm   r‰   ÚLA)ÚwhichÚtolÚmaxiterÚv0r1   é   )r	   r   r   ÚargsortrF   r   r9   Ú
zeros_liker�   r&   r   r   )rv   r_   r>   r”   r•   Ú
eigvals_qrÚ
eigvecs_qrÚeigvals_lapackÚeigvecs_lapackÚindicesÚ
dummy_vecsÚ_r¦   Úeigvals_arpackÚeigvecs_arpacks                  r?   Ú(test_randomized_eigsh_compared_to_othersr³   Ò   sr  € ð €JÝ˜z¸Ð:Ñ:Ô:€Aõ )Ø	˜ X°bÀqðñ ô Ñ€GˆWõ /Ø	ØØØØØ#'Øðñ ô Ñ€J�
õ &*Ø	˜J¨™N¨J¸©NÐ;ð&ñ &ô &Ñ"€N�Nð ×$Ò$Ñ&Ô& t t¨ tÔ,€GØ# GÔ,€NØ# A A A w JÔ/€Nð Ô A 4Ò'Ð'Ð'Ð'å˜g ~¸qÐAÑAÔAÐAÝ˜j¨.À!ÐDÑDÔDÐDð Ô J° ?Ò2Ð2Ð2Ð2å”˜wÑ'Ô'Ô)€JÝ˜' :Ñ.Ô.�J€GˆQÝ˜Z¨Ñ4Ô4�M€J�Ý  °Ñ<Ô<Ñ€N�AÝ˜g ~¸qÐAÑAÔAÐAÝ˜j¨.À!ÐDÑDÔDÐDð 	ˆ:‚~€~Ý˜Z°aÐ8Ñ8Ô8ˆå).Øˆq˜ !¨T°bð*
ñ *
ô *
Ñ&ˆ˜ð !×(Ò(Ñ*Ô*¨4¨4¨R¨4Ô0ˆà'¨Ô0ˆÝ! .°.È"ÐMÑMÔMÐMà'¨¨¨¨7¨
Ô3ˆÝ$ ^°ZÑ@Ô@Ñˆ˜Ý! .°.È!ÐLÑLÔLÐLÐLÐLð €~rA   zn,rank))r1   r[   rP   )rQ   éP   )rZ   r1   )rZ   éú   )rZ   i�  c                 ó.  — || k     sJ ‚t           j                             d¦  «        }|                     | |¦  «        }||j        z  }t          |||¬¦  «        \  }}t          t           j                             |d¬¦  «        t          j	        |j
        ¦  «        ¦  «         t          |j        |z  t          j        t          j	        |j
        ¦  «        ¦  «        ¦  «         |t          j        |¦  «        z  |j        z  }t          ||d¬¦  «         dS )a  Check that randomized_eigsh is able to reconstruct a low rank psd matrix

    Tests that the decomposition provided by `_randomized_eigsh` leads to
    orthonormal eigenvectors, and that a low rank PSD matrix can be effectively
    reconstructed with good accuracy using it.
    éE   )r‡   rb   r   rC   rO   rm   N)r9   r:   r;   Úrandnr�   r   r   r   ÚnormrE   rF   r‹   )Únru   r=   r>   ÚAÚSÚVÚA_reconstructs           r?   Ú&test_randomized_eigsh_reconst_low_rankr¿     sï   € ð$ �!Š8ˆ8ˆ8ˆ8õ Œ)×
Ò
 Ñ
#Ô
#€CØ�	Š	�!�TÑÔ€AØ	ˆAŒC‰€Aõ ˜Q¨TÀÐDÑDÔD�D€A€qå�bœiŸnšn¨Q°Q˜nÑ7Ô7½¼ÀÄÑ9IÔ9IÑJÔJÐJÝ˜aœc A™g¥r¤w­r¬w°q´wÑ/?Ô/?Ñ'@Ô'@ÑAÔAÐAà�œ ™
œ
‘N Q¤SÑ(€Mõ ˜m¨Q¸Ð:Ñ:Ô:Ð:Ð:Ð:rA   r~   c                 ój  — t           j                             d¦  «                             dd¦  «        }| t           j        u rd}nd}|                     | d¬¦  «        }|dz                       d¬	¦  «        }t          |t          |d
¬¦  «        |¦  «         t          t          j	        |¦  «        t          |¦  «        |¦  «         t           j
        t           j        fD ]Ó} ||| ¬¦  «        }|t           j        u rB|j                             |d¬¦  «        |_        |j                             |d¬¦  «        |_        |j        j        |k    sJ ‚|j        j        |k    sJ ‚t          |t          |d
¬¦  «        |¦  «         t          t          j	        |¦  «        t          |¦  «        |¦  «         ŒÔd S )Nr�   rQ   r‰   r3   Frc   r7   r6   rC   T)Úsquaredr…   )r9   r:   r;   r¸   ro   rp   rT   r   r"   ÚsqrtÚint32Úint64Úindptrr®   rX   )rX   r~   r>   Ú	precisionÚsq_normÚcsr_index_dtypeÚXcsrs          r?   Útest_row_normsrÊ   ?  s   € õ 	Œ	×Ò˜bÑ!Ô!×'Ò'¨¨SÑ1Ô1€AØ•”
ÐÐØˆ	ˆ	àˆ	à	�Š�˜UˆÑ#Ô#€AØ�!‰t�jŠj˜aˆjÑ Ô €Gå˜g¥y°¸DÐ'AÑ'AÔ'AÀ9ÑMÔMÐMÝ�bœg gÑ.Ô.µ	¸!±´¸iÑHÔHÐHåœH¥b¤hÐ/ð 
Pð 
PˆØˆ}˜Q eÐ,Ñ,Ô,ˆð �bœhÐ&Ð&Øœ+×,Ò,¨_À5Ð,ÑIÔIˆDŒKØœ<×.Ò.¨ÀUÐ.ÑKÔKˆDŒLØŒ|Ô! _Ò4Ð4Ð4Ð4ØŒ{Ô  OÒ3Ð3Ð3Ð3Ý! '­9°TÀ4Ð+HÑ+HÔ+HÈ)ÑTÔTÐTÝ!¥"¤'¨'Ñ"2Ô"2µI¸d±O´OÀYÑOÔOÐOÐOð
Pð 
PrA   c                  óš  — d} d}d}d}t          | ||dd¬¦  «        }|j        | |fk    sJ ‚t          j        |d¬	¦  «        \  }}}d
D ]‚}t	          ||d|d¬¦  «        \  }}}t          j        |d |…         |z
  ¦  «                             ¦   «         dk    sJ ‚t	          |||d¬¦  «        \  }}	}t          |d |…         |	d¬¦  «         Œƒd S )NrQ   rZ   r3   r1   çš™™™™™¹?r   r]   Fre   ©rg   Únonerh   ri   ©r�   rk   rb   g{®Gáz„?rj   r8   rm   ©	r   rF   r   rq   r!   r9   ÚabsÚmaxr   ©
r^   r_   ru   rv   r>   r°   rx   rz   r|   Úsaps
             r?   Ú'test_randomized_svd_low_rank_with_noiserÕ   [  s.  € à€IØ€JØ€DØ
€Aõ 	ØØØØØð	ñ 	ô 	€Að Œ7�y *Ð-Ò-Ð-Ð-Ð-õ Œj˜¨%Ð0Ñ0Ô0�G€A€qˆ!à2ð 3ð 3ˆ
õ "Øˆq˜°zÐPQð
ñ 
ô 
‰ˆˆ2ˆqõ
 Œv�a˜˜˜”e˜b‘jÑ!Ô!×%Ò%Ñ'Ô'¨$Ò.Ð.Ð.Ð.õ #Øˆq¨ZÀað
ñ 
ô 
‰	ˆˆ3�õ
 	˜A˜b˜q˜bœE 3°Ð2Ñ2Ô2Ð2Ð2ð#3ð 3rA   c                  óœ  — d} d}d}d}t          | ||dd¬¦  «        }|j        | |fk    sJ ‚t          j        |d¬	¦  «        \  }}}d
D ]ƒ}t	          ||d|d¬¦  «        \  }}}t          j        |d |…         |z
  ¦  «                             ¦   «         dk    sJ ‚t	          ||d|d¬¦  «        \  }}	}t          |d |…         |	d¬¦  «         Œ„d S )NrQ   rZ   r3   r1   r‚   r   r]   Fre   rÍ   rÏ   rÌ   r8   rm   rÐ   rÓ   s
             r?   Ú!test_randomized_svd_infinite_rankr×   „  s1  € à€IØ€JØ€DØ
€Aõ 	ØØØØØð	ñ 	ô 	€Að Œ7�y *Ð-Ò-Ð-Ð-Ð-õ Œj˜¨%Ð0Ñ0Ô0�G€A€qˆ!Ø2ð 3ð 3ˆ
õ "Øˆq˜°zÐPQð
ñ 
ô 
‰ˆˆ2ˆqõ
 Œv�a˜˜˜”e˜b‘jÑ!Ô!×%Ò%Ñ'Ô'¨#Ò-Ð-Ð-Ð-õ #Øˆq˜°zÐPQð
ñ 
ô 
‰	ˆˆ3�õ 	˜A˜b˜q˜bœE 3°Ð2Ñ2Ô2Ð2Ð2ð%3ð 3rA   c            
      ó  — d} d}d}d}t          | ||dd¬¦  «        }|j        | |fk    sJ ‚t          ||dd	d¬
¦  «        \  }}}t          ||ddd¬
¦  «        \  }}	}
t          ||ddd¬
¦  «        \  }}}t          j        |d	¬¦  «        \  }}}t          ||d |…         d¬¦  «         t          |	|d |…         d¬¦  «         t          ||d |…         d¬¦  «         t          t          j        ||¦  «        t          j        |d d …d |…f         |d |…d d …f         ¦  «        d¬¦  «         t          t          j        ||
¦  «        t          j        |d d …d |…f         |d |…d d …f         ¦  «        d¬¦  «         t          |	|¦  «         d S )NrQ   rZ   r‰   r1   g      à?r   r]   r8   F)r�   Ú	transposerb   Trg   re   rm   r7   )r   rF   r!   r   rq   r   r9   rt   )r^   r_   ru   rv   r>   ÚU1Ús1ÚV1ÚU2Ús2ÚV2ÚU3Ús3ÚV3ÚU4Ús4ÚV4s                    r?   Ú)test_randomized_svd_transpose_consistencyræ   ­  sÌ  € à€IØ€JØ€DØ
€AåØØØØØð	ñ 	ô 	€Að Œ7�y *Ð-Ò-Ð-Ð-Ð-å  1¨Q¸%ÈaÐPÑPÔP�J€BˆˆBÝ  1¨Q¸$ÈQÐOÑOÔO�J€BˆˆBÝ  1¨Q¸&ÈqÐQÑQÔQ�J€BˆˆBÝ”˜A¨UÐ3Ñ3Ô3�J€BˆˆBå˜˜B˜r ˜rœF¨AÐ.Ñ.Ô.Ð.Ý˜˜B˜r ˜rœF¨AÐ.Ñ.Ô.Ð.Ý˜˜B˜r ˜rœF¨AÐ.Ñ.Ô.Ð.å�œ˜r 2™œ­¬¨r°!°!°!°R°a°R°%¬y¸"¸R¸a¸RÀÀÀ¸U¼)Ñ(DÔ(DÈaÐPÑPÔPÐPÝ�œ˜r 2™œ­¬¨r°!°!°!°R°a°R°%¬y¸"¸R¸a¸RÀÀÀ¸U¼)Ñ(DÔ(DÈaÐPÑPÔPÐPõ ˜˜BÑÔÐÐÐrA   c            	      ó”  — t           j                             d¦  «        } t          ddd| ¬¦  «        }|d|                      dd|j        ¬	¦  «        z  z  }d}t          ||dd
d¬¦  «        \  }}}||                     t          j        |¦  «                             |¦  «        ¦  «        z
  }t          j
        |d¬¦  «        }t          ||dd
d¬¦  «        \  }}}||                     t          j        |¦  «                             |¦  «        ¦  «        z
  }t          j
        |d¬¦  «        }t          j        ||z
  ¦  «        dk    sJ ‚dD ]ú}	t          ||d|	d¬¦  «        \  }}}||                     t          j        |¦  «                             |¦  «        ¦  «        z
  }t          j
        |d¬¦  «        }dD ]Š}
t          |||
|	d¬¦  «        \  }}}||                     t          j        |¦  «                             |¦  «        ¦  «        z
  }t          j
        |d¬¦  «        }dt          j        ||z
  ¦  «        k    sJ ‚Œ‹Œûd S )Nr�   rQ   rZ   r—   ©r`   rb   r8   r   r7   r4   rÎ   rÏ   Úfro)Úordrž   )rh   ri   rg   )r3   r1   r—   é   )r9   r:   r;   r   r<   rF   r!   rt   r‹   r   r¹   rÑ   )r=   r>   r‡   rw   rx   ry   r»   Úerror_2Úerror_20rz   ÚiÚerrors               r?   Ú.test_randomized_svd_power_iteration_normalizerrð   Í  sf  € õ Œ)×
Ò
 Ñ
#Ô
#€CÝ˜S #°bÀsÐKÑKÔK€AØˆˆS�[Š[˜˜A A¤Gˆ[Ñ,Ô,Ñ	,Ñ,€AØ€Lõ Ø	ˆ< ¸fÐSTðñ ô �H€A€qˆ"ð 	
ˆA�EŠE•"”'˜!‘*”*—.’. Ñ$Ô$Ñ%Ô%Ñ%€AÝŒk˜! Ð'Ñ'Ô'€GÝØ	ˆ< ¸vÐTUðñ ô �H€A€qˆ"ð 	
ˆA�EŠE•"”'˜!‘*”*—.’. Ñ$Ô$Ñ%Ô%Ñ%€AÝŒ{˜1 %Ð(Ñ(Ô(€HÝŒ6�'˜HÑ$Ñ%Ô%¨Ò+Ð+Ð+Ð+à*ð 0ð 0ˆ
Ý!ØØØØ'1Øð
ñ 
ô 
‰ˆˆ1ˆbð �—’•b”g˜a‘j”j—n’n RÑ(Ô(Ñ)Ô)Ñ)ˆÝ”+˜a UÐ+Ñ+Ô+ˆàð 
	0ð 
	0ˆAÝ%ØØØØ+5Øðñ ô ‰HˆAˆq�"ð �A—E’E�"œ' !™*œ*Ÿ.š.¨Ñ,Ô,Ñ-Ô-Ñ-ˆAÝ”K  uÐ-Ñ-Ô-ˆEØ�œ˜w¨™Ñ/Ô/Ò/Ð/Ð/Ð/Ð/ð
	0ð0ð 0rA   c                 óP  — t           j                             d¦  «        }t          ddd|¬¦  «        }d} | |¦  «        }d                     | j        ¦  «        }t          j        t          j	        |¬¦  «        5  t          ||d	d
¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr�   r—   rž   r1   rè   r3   zCCalculating SVD of a {} is expensive. CSR format is more efficient.©Úmatchr6   rÎ   )r�   rk   )r9   r:   r;   r   ÚformatÚ__name__r�   Úwarnsr   ÚSparseEfficiencyWarningr!   )r/   r=   r>   r‡   Úwarn_msgs        r?   Ú#test_randomized_svd_sparse_warningsrù   ú  s  € õ Œ)×
Ò
 Ñ
#Ô
#€CÝ˜R °BÀSÐIÑIÔI€AØ€LàÐ˜ÑÔ€AàM×TÒTØÔ%ñ	
ô 	
ð õ
 
Œ•fÔ4¸HÐ	EÑ	EÔ	Eð Uð UÝ�q˜,¨qÈVÐTÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð Us   Á:BÂBÂ"Bc                  óÖ  — t           j                             d¦  «        } d}d}|                      ||¦  «        }t	          j        |d¬¦  «        \  }}}t          ||d¬¦  «        \  }}t          t          j        ||z  |¦  «        |d¬¦  «         |j	        }	t	          j        |	d¬¦  «        \  }}}t          ||d	¬¦  «        \  }
}t          t          j        |
|z  |¦  «        |	d¬¦  «         t          ||d	¬¦  «        \  }}t          t          j        ||z  |¦  «        |	d¬¦  «         t          ||d¬¦  «        \  }}t          t          j        ||z  |¦  «        |	d¬¦  «         d S )
NéÏ  rž   r1   Fre   ©Úu_based_decisionrO   rm   T)
r9   r:   r;   r¸   r   rq   r&   r   rt   r�   )Úrsr^   r_   r>   rw   r¼   ry   rÚ   rÜ   ÚXTrÝ   rß   ÚU_flip1ÚV_flip1ÚU_flip2ÚV_flip2s                   r?   Útest_svd_flipr    sq  € å	Œ×	Ò	˜tÑ	$Ô	$€BØ€IØ€JØ
�Š�˜JÑ'Ô'€Aõ Œz˜!¨5Ð1Ñ1Ô1�H€A€qˆ"Ý�a˜¨eÐ4Ñ4Ô4�F€BˆÝ�œ˜r A™v rÑ*Ô*¨A°qÐ9Ñ9Ô9Ð9ð 
Œ€BÝŒz˜"¨EÐ2Ñ2Ô2�H€A€qˆ"Ý�a˜¨dÐ3Ñ3Ô3�F€BˆÝ�œ˜r A™v rÑ*Ô*¨B¸Ð:Ñ:Ô:Ð:õ    2¸Ð=Ñ=Ô=Ñ€GˆWÝ�œ˜w¨™{¨GÑ4Ô4°bÀ!ÐDÑDÔDÐDÝ  2¸Ð>Ñ>Ô>Ñ€GˆWÝ�œ˜w¨™{¨GÑ4Ô4°bÀ!ÐDÑDÔDÐDÐDÐDrA   zn_samples, n_features)r8   r‰   )r‰   r8   c                 ó”  — t           j                             |¦  «        }|                     | |¦  «        }t	          j        |d¬¦  «        \  }}}t          ||d¬¦  «        \  }}t          j        t          j        |¦  «        d¬¦  «        }	||	t          j	        |j
        d         ¦  «        f         dk                         ¦   «         sJ ‚t          ||d¬¦  «        \  }}
t          j        t          j        |
¦  «        d¬¦  «        }|
t          j	        |
j
        d         ¦  «        |f         dk                         ¦   «         sJ ‚d S )NFre   Trü   r   rC   r6   )r9   r:   r;   r¸   r   rq   r&   ÚargmaxrÑ   ÚarangerF   Úall)r^   r_   Úglobal_random_seedrþ   r>   rw   r°   ry   rÚ   Úmax_abs_U1_row_idx_for_colrß   Úmax_abs_V2_col_idx_for_rows               r?   Útest_svd_flip_max_abs_colsr  $  s%  € å	Œ×	Ò	Ð1Ñ	2Ô	2€BØ
�Š�˜JÑ'Ô'€AÝŒz˜!¨5Ð1Ñ1Ô1�H€A€qˆ"å�Q˜¨TÐ2Ñ2Ô2�E€BˆÝ!#¤­2¬6°"©:¬:¸AÐ!>Ñ!>Ô!>ÐØÐ)­2¬9°R´X¸a´[Ñ+AÔ+AÐAÔBÀaÒG×LÒLÑNÔNÐNÐNÐNå�Q˜¨UÐ3Ñ3Ô3�E€A€rÝ!#¤­2¬6°"©:¬:¸AÐ!>Ñ!>Ô!>ÐØ�rŒy˜œ !œÑ%Ô%Ð'AÐAÔBÀaÒG×LÒLÑNÔNÐNÐNÐNÐNÐNrA   c                  ó.  — t          j        ddgddgg¦  «        } t          | ddd¬¦  «        \  }}}t          d¦  «        D ]Ó}t          | dd|¬¦  «        \  }}}t	          ||¦  «         t	          ||¦  «         t	          t          j        ||z  |¦  «        | ¦  «         t	          t          j        |j        |¦  «        t          j        d¦  «        ¦  «         t	          t          j        |j        |¦  «        t          j        d¦  «        ¦  «         ŒÔd S )	Ng       @r\   r‚   r7   Té)   ©Ú	flip_signrb   r1   )r9   rŒ   r!   Úranger   rt   r�   Úeye)ÚaÚu1rÛ   Úv1ÚseedÚu2rÞ   Úv2s           r?   Útest_randomized_svd_sign_flipr  3  s  € Ý
Œ�3˜�*˜s C˜jÐ)Ñ*Ô*€AÝ  1°À2ÐFÑFÔF�J€BˆˆBÝ�b‘	”	ð 9ð 9ˆÝ# A q°DÀtÐLÑLÔL‰
ˆˆB�Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý�BœF 2¨¡7¨BÑ/Ô/°Ñ3Ô3Ð3Ý�BœF 2¤4¨Ñ,Ô,­b¬f°Q©i¬iÑ8Ô8Ð8Ý�BœF 2¤4¨Ñ,Ô,­b¬f°Q©i¬iÑ8Ô8Ð8Ð8ð9ð 9rA   c                  ó  — d„ } t          j        d¦  «                             dd¦  «        }t          |ddd¬¦  «        \  }}} | ||¦  «        \  }}|sJ ‚|rJ ‚t          |dddd¬	¦  «        \  }}} | ||¦  «        \  }}|sJ ‚|rJ ‚d S )
Nc                 óR  — t          j        | ¦  «                             d¬¦  «        |                      d¬¦  «        k                         ¦   «         }t          j        |¦  «                             d¬¦  «        |                     d¬¦  «        k                         ¦   «         }||fS )z˜
        returns bool tuple indicating if the values maximising np.abs
        are positive across all rows for u and across all columns for v.
        r   rC   r6   )r9   rÑ   rÒ   r  )ÚuÚvÚu_basedÚv_baseds       r?   Úmax_loading_is_positivezMtest_randomized_svd_sign_flip_with_transpose.<locals>.max_loading_is_positiveD  s   € õ
 ”6˜!‘9”9—=’= a�=Ñ(Ô(¨A¯EªE°q¨E©M¬MÒ9×>Ò>Ñ@Ô@ˆÝ”6˜!‘9”9—=’= a�=Ñ(Ô(¨A¯EªE°q¨E©M¬MÒ9×>Ò>Ñ@Ô@ˆØ˜ÐÐrA   r´   r1   r¡   r8   Tr   r  )r  rÙ   rb   )r9   r  Úreshaper!   )	r   ÚmatÚ	u_flippedr°   Ú	v_flippedr  r  Úu_flipped_with_transposeÚv_flipped_with_transposes	            r?   Ú,test_randomized_svd_sign_flip_with_transposer'  ?  sã   € ð
 ð  ð  õ Œ)�FÑ
Ô
×
#Ò
# B¨Ñ
+Ô
+€Cõ -¨S°!¸tÐRSÐTÑTÔTÑ€Iˆq�)Ø.Ð.¨y¸)ÑDÔDÑ€GˆWØ€N€Nˆ7ØÐÐˆ;õ =KØˆQ˜$¨$¸Qð=ñ =ô =Ñ9Ð˜aÐ!9ð /Ð.Ø Ð":ñô Ñ€GˆWð €N€Nˆ7ØÐÐˆ;ÐÐrA   rº   )r—   rQ   é,  Úm)r1   rž   r—   r  r3   c                 óª  — t           j                             |¦  «        }|                     | |¦  «        }t	          ||dd¬¦  «        \  }}}t	          ||dd¬¦  «        \  }	}
}|j        |	j        k    sJ ‚t          ||	dd¬¦  «         |j        |
j        k    sJ ‚t          ||
dd¬¦  «         |j        |j        k    sJ ‚t          ||dd¬¦  «         d S )NÚgesddr   )Úsvd_lapack_driverrb   Úgesvdgü©ñÒMbP?)ÚatolÚrtol)r9   r:   r;   Úrandr!   rF   r   )rº   r)  rv   r  r=   r>   r  rÛ   Úvt1r  rÞ   Úvt2s               r?   Ú!test_randomized_svd_lapack_driverr3  `  sð   € õ Œ)×
Ò
 Ñ
%Ô
%€CØ�Š��A‰Œ€Aõ !  A¸ÈqÐQÑQÔQ�K€BˆˆCÝ   A¸ÈqÐQÑQÔQ�K€BˆˆCð Œ8�r”xÒÐÐÐÝ�B˜ ¨Ð.Ñ.Ô.Ð.àŒ8�r”xÒÐÐÐÝ�B˜ ¨Ð.Ñ.Ô.Ð.àŒ9˜œ	Ò!Ð!Ð!Ð!Ý�C˜ 1¨4Ð0Ñ0Ô0Ð0Ð0Ð0rA   c                  óÂ  — t          j        g d¢¦  «        t          j        ddg¦  «        t          j        ddg¦  «        f} t          j        g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          | ¦  «        }t          ||¦  «         t          j        d¦  «        }t          |d d …t           j        f         t          |f¦  «        ¦  «         d S )N©r6   r7   r8   r‰   r3   rO   r[   )r6   r‰   rO   )r6   r‰   r[   )r6   r3   rO   )r6   r3   r[   )r7   r‰   rO   )r7   r‰   r[   )r7   r3   rO   )r7   r3   r[   )r8   r‰   rO   )r8   r‰   r[   )r8   r3   rO   )r8   r3   r[   r8   )r9   rŒ   r   r   r  Únewaxis)ÚaxesÚtrue_outÚoutrG   s       r?   Útest_cartesianr:  z  sý   € õ ŒH�Y�Y�YÑÔ¥¤¨1¨a¨&Ñ!1Ô!1µ2´8¸QÀ¸FÑ3CÔ3CÐD€DåŒxàˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIð	
ñô €Hõ" �D‰/Œ/€CÝ�x Ñ%Ô%Ð%õ 	Œ	�!‰Œ€AÝ�q˜˜˜�BœJ˜Ô'­°A°4©¬Ñ9Ô9Ð9Ð9Ð9rA   zarrays, output_dtyper5  r…   r‰   rG   Úyc                 ó>   — t          | ¦  «        }|j        |k    sJ ‚dS )z8Check that the cartesian product works with mixed types.N)r   rX   )ÚarraysÚoutput_dtypeÚoutputs      r?   Útest_cartesian_mix_typesr@  ˜  s*   € õ& �vÑÔ€FàŒ<˜<Ò'Ð'Ð'Ð'Ð'Ð'rA   Úas_list)TFc                 óô  — t           j                             d¦  «        }d}|                     dd¦  «                             | ¦  «        |z  }|                     |j        d         ¦  «        |z  }|r|                     ¦   «         n|}t          |ddd|¬¦  «        \  }}}	t          j        ||d¬¦  «        }
t          j        |dz  |d¬¦  «        |
dz  z
  }t          ||
¦  «         t          ||¦  «         d S )	Nr�   r1   éè  rž   r   ©Úsample_weight©rH   rD   r7   )
r9   r:   r;   r0  rp   rF   Útolistr   Úaverager   )rX   rA  r=   Úmultr>   rE  ÚX1ÚmeanÚvarr°   Úexpected_meanÚexpected_vars               r?   Ú2test_incremental_weighted_mean_and_variance_simplerO  °  sõ   € õ Œ)×
Ò
 Ñ
#Ô
#€CØ€DØ�Š��rÑÔ×!Ò! %Ñ(Ô(¨4Ñ/€AØ—H’H˜QœW QœZÑ(Ô(¨4Ñ/€MØÐ	%ˆ�Š‰Œˆ A€BÝ,¨R°°A°qÈÐVÑVÔV�L€Dˆ#ˆqå”J˜q¨-¸aÐ@Ñ@Ô@€MÝ”:˜a ™d¨MÀÐBÑBÔBÀ]ÐTUÑEUÑU€LÝ˜˜mÑ,Ô,Ð,Ý˜˜\Ñ*Ô*Ð*Ð*Ð*rA   z(array_namespace, device_name, dtype_namec                 óÔ  — t          | ||¦  «        \  }}t          j                             d¦  «        }d}|                     dd¦  «                             |¦  «        |z  }|                     |j        d         ¦  «                             |¦  «        |z  }t          |ddd|¬¦  «        \  }	}
}|                     ||¬¦  «        }|                     ||¬¦  «        }t          d¬	¦  «        5  t          |ddd|¬¦  «        \  }}}d d d ¦  «         n# 1 swxY w Y   t          |¦  «        t          |¦  «        k    sJ ‚|j        t          ||¬¦  «        k    sJ ‚t          |¦  «        t          |¦  «        k    sJ ‚|j        t          ||¬¦  «        k    sJ ‚t          |t          d
¬¦  «        }t          |t          d
¬¦  «        }t          |	|¦  «         t          |
|¦  «         d S )Nr�   r1   rC  rž   r   rD  r   T©Úarray_api_dispatchÚcpu©Úxpr   )r   r9   r:   r;   r0  rp   rF   r   Úasarrayr   Úarray_devicerX   r   r   r   )Úarray_namespaceÚdevice_nameÚ
dtype_namerU  r   r=   rI  r>   rE  rK  rL  r°   ÚX_xpÚsample_weight_xpÚmean_xpÚvar_xps                   r?   Ú5test_incremental_weighted_mean_and_variance_array_apir_  À  s-  € õ & o°{ÀJÑOÔO�J€BˆÝ
Œ)×
Ò
 Ñ
#Ô
#€CØ€DØ�Š��rÑÔ×!Ò! *Ñ-Ô-°Ñ4€AØ—H’H˜QœW QœZÑ(Ô(×/Ò/°
Ñ;Ô;¸dÑB€MÝ,¨Q°°1°aÀ}ÐUÑUÔU�L€Dˆ#ˆqà�:Š:�a ˆ:Ñ'Ô'€DØ—z’z -¸�zÑ?Ô?Ðå	¨4Ð	0Ñ	0Ô	0ð 
ð 
Ý6Ø�!�Q˜Ð)9ð
ñ 
ô 
Ñˆ�˜ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ ˜Ñ Ô ¥L°Ñ$6Ô$6Ò6Ð6Ð6Ð6ØŒ=Õ6°rÀ&ÐIÑIÔIÒIÐIÐIÐIÝ˜ÑÔ¥<°Ñ#5Ô#5Ò5Ð5Ð5Ð5ØŒ<Õ5°bÀÐHÑHÔHÒHÐHÐHÐHå�g¥"¨UÐ3Ñ3Ô3€GÝ�V¥¨5Ð1Ñ1Ô1€Få�D˜'Ñ"Ô"Ð"Ý�C˜Ñ Ô Ð Ð Ð s   Ã.DÄDÄDrK  )r   ç    ÐcAg    ÐcÁrL  )r6   ç:Œ0âŽyE>g     jø@zweight_loc, weight_scale))r   r6   )r   ra  )r6   ra  )r1   r6   )r`  r6   c                 óF  — t           j                             d¦  «        }d„ }d}|                     |||d         ¬¦  «        }|                     | ||¬¦  «        }t	          t           j        ||d¬¦  «        }	t	          t           j        ||	z
  dz  |d¬¦  «        }
 ||||	|
¦  «         |                     | ||¬¦  «        }t          j        |d         ¦  «        }t	          t           j        |d¬¦  «        }	t	          t           j        |d¬¦  «        }
 ||||	|
¦  «         d S )	Nr�   c           
      ó  — | j         d         }d|dz  dz   |dz  dz   |dz  dz   |fD ]a}d\  }}}t          ||¦  «        D ]&}	t          | |	         |||||	         ¬¦  «        \  }}}Œ't          ||¦  «         t          ||d¬	¦  «         Œbd S )
Nr   r6   r1   r‰   r7   )r   r   r   rD  ç�íµ ÷Æ°>©r.  )rF   r
   r   r   )
r>   rE  rM  rN  rº   Ú
chunk_sizeÚ	last_meanÚlast_weight_sumÚlast_varÚbatchs
             r?   Ú_assertz<test_incremental_weighted_mean_and_variance.<locals>._assertí  sÍ   € ØŒG�AŒJˆØ˜a 2™g¨™k¨1°©6°A©:°q¸A±vÀ±zÀ1ÐEð 	?ð 	?ˆJØ3:Ñ0ˆI�¨Ý$ Q¨
Ñ3Ô3ð ð �Ý7PØ�e”HØØØ#Ø"/°Ô"6ð8ñ 8ô 8Ñ4�	˜8 _ _õ ˜I }Ñ5Ô5Ð5Ý˜H l¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?rA   )rQ   rž   r   )ÚlocÚscaler5   rF  r7   rC   )	r9   r:   r;   rŽ   r   rH  rE   rK  rL  )rK  rL  Ú
weight_locÚweight_scaler=   rk  r5   Úweightr>   rM  rN  Úones_weights               r?   Ú+test_incremental_weighted_mean_and_variancerr  ä  s0  € õ Œ)×
Ò
 Ñ
#Ô
#€Cð?ð ?ð ?ð €DØ�ZŠZ˜J¨lÀÀaÄˆZÑIÔI€Fð 	�
Š
�t 3¨Tˆ
Ñ2Ô2€AÝ(­¬°QÀÈQÐOÑOÔO€MÝ'Ý
Œ
�Q˜Ñ&¨1Ñ,°fÀ1ðñ ô €Lð €GˆAˆv�} lÑ3Ô3Ð3ð 	�
Š
�t 3¨Tˆ
Ñ2Ô2€AÝ”'˜$˜qœ'Ñ"Ô"€KÝ(­¬°!¸!Ð<Ñ<Ô<€MÝ'­¬°¸Ð:Ñ:Ô:€LØ€GˆAˆ{˜M¨<Ñ8Ô8Ð8Ð8Ð8rA   c           	      óØ  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g d¢t           j        ¬¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j        g d¢g d¢g d	¢g¦  «                             | ¦  «        }t          j        d
t           j        d
d
gt           j        d
ddgddt           j        dgdddt           j        gg¦  «                             | ¦  «        }t          |||||¬¦  «        \  }}	}
t          |||||¬¦  «        \  }}}t          ||¦  «         t          ||	¦  «         t          ||
¦  «         d S )N©ç     ¸€@ru  ru  ru  ©ç     �°@rw  rw  rw  ©r7   r7   r7   r7   r…   r8   r‰   ©éª   rz  rz  rz  ©é®  r|  r|  r|  ©r(  r(  r(  r(  rz  r|  r(  rD  )r9   rŒ   rÃ   rE   rp   Únanr   r   )rX   Ú	old_meansÚold_variancesÚold_weight_sumÚsample_weights_XÚsample_weights_X_nanr>   ÚX_nanÚX_meansÚX_variancesÚX_countÚX_nan_meansÚX_nan_variancesÚX_nan_counts                 r?   Ú6test_incremental_weighted_mean_and_variance_ignore_nanr‹    s�  € å”Ð5Ð5Ð5Ñ6Ô6€IÝ”HÐ=Ð=Ð=Ñ>Ô>€MÝ”X˜l˜l˜lµ"´(Ð;Ñ;Ô;€NÝ”w˜q‘z”zÐÝœ7 1™:œ:Ðå
ŒØ	Ð	Ð	Ð3Ð3Ð3Ð5IÐ5IÐ5IÐJñ	ô 	ç‚fˆU�m„mð õ ŒHà•"”&˜#˜sÐ#ÝŒV�S˜#˜sÐ#Ø�#•r”v˜sÐ#Ø�#�s�BœFÐ#ð		
ñô ÷ ‚fˆU�m„mð 
õ %>Ø	ˆ9�m ^ÐCSð%ñ %ô %Ñ!€Gˆ[˜'õ 1JØØØØØ*ð1ñ 1ô 1Ñ-€K� +õ �K Ñ)Ô)Ð)Ý�O [Ñ1Ô1Ð1Ý�K Ñ)Ô)Ð)Ð)Ð)rA   c                  óH  — t          j        g d¢g d¢g d¢g d¢g¦  «        j        } d}| d |…d d …f         }| |d …d d …f         }|                     d¬¦  «        }|                     d¬¦  «        }t          j        |j        d         |j        d         t           j        ¬¦  «        }t          ||||¦  «        \  }}}	t          ||                      d¬¦  «        d¦  «         t          ||                      d¬¦  «        d¦  «         t          |	| j        d         ¦  «         d S )N)iX  iÖ  rz  r|  r(  r7   r   rC   r6   r…   rO   )
r9   rŒ   r�   rK  rL  ÚfullrF   rÃ   r   r   )
r»   ÚidxrJ  ÚX2r  r€  Úold_sample_countÚfinal_meansÚfinal_variancesÚfinal_counts
             r?   Ú)test_incremental_variance_update_formulasr”  4  s8  € õ 	Œà%Ð%Ð%Ø%Ð%Ð%Ø%Ð%Ð%Ø%Ð%Ð%ð		
ñ	ô 	ô ð ð €CØ	
ˆ4ˆCˆ4���ˆ7Œ€BØ	
ˆ3ˆ4ˆ4���ˆ7Œ€Bà—’˜Q�‘”€IØ—F’F �F‘N”N€MÝ”w˜rœx¨œ{¨B¬H°Q¬K½r¼xÐHÑHÔHÐÝ0IØ
ˆI�}Ð&6ñ1ô 1Ñ-€K� +õ ˜ Q§V¢V° V¡^¤^°QÑ7Ô7Ð7Ý˜¨¯ª°A¨©¬¸Ñ:Ô:Ð:Ý˜ Q¤W¨Q¤ZÑ0Ô0Ð0Ð0Ð0rA   c            	      ó4  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢t           j        ¬¦  «        }t          j        g d¢g d¢g d¢g¦  «        }t          j        dt           j        ddgt           j        dd	d	gd	d	t           j        d
gd
d
d
t           j        gg¦  «        }t	          || ||¦  «        \  }}}t	          || ||¦  «        \  }}	}
t          ||¦  «         t          |	|¦  «         t          |
|¦  «         d S )Nrt  rv  rx  r…   ry  r{  r}  rz  r|  r(  )r9   rŒ   rÃ   r~  r   r   )r  r€  r�  r>   r„  r…  r†  r‡  rˆ  r‰  rŠ  s              r?   Ú-test_incremental_mean_and_variance_ignore_nanr–  N  s?  € Ý”Ð5Ð5Ð5Ñ6Ô6€IÝ”HÐ=Ð=Ð=Ñ>Ô>€MÝ”x   µB´HÐ=Ñ=Ô=Ðå
ŒÐ&Ð&Ð&Ð(<Ð(<Ð(<Ð>RÐ>RÐ>RÐSÑTÔT€AåŒHà•"”&˜#˜sÐ#ÝŒV�S˜#˜sÐ#Ø�#•r”v˜sÐ#Ø�#�s�BœFÐ#ð		
ñô €Eõ %>Ø	ˆ9�mÐ%5ñ%ô %Ñ!€Gˆ[˜'õ 1JØˆy˜-Ð)9ñ1ô 1Ñ-€K� +õ �K Ñ)Ô)Ð)Ý�O [Ñ1Ô1Ð1Ý�K Ñ)Ô)Ð)Ð)Ð)rA   c                  óø  — d„ } d„ }d„ }d„ }d}d}d}t          j        dt           j        ¬	¦  «        }t          j        d
t           j        ¬	¦  «        }t          j        |dz  |f|t           j        ¬	¦  «        }	t          j        |dz  |f|t           j        ¬	¦  «        }
t          j        |	|
f¦  «        }t          j         | |¦  «         ||¦  «        z
  ¦  «                             ¦   «         |k    sJ ‚|	dd d …f         t          j        |¦  «        |dz  }}}t          |
j
        d         ¦  «        D ]} ||
|d d …f         |||¦  «        \  }}}Œ||j
        d         k    sJ ‚t          j        |                     d¬¦  «        |z
  ¦  «                             ¦   «         dk    sJ ‚t          j         | |¦  «        |z
  ¦  «                             ¦   «         |k    sJ ‚|	dd d …f         t          j        |¦  «        }}t          j        ||dz  t           j        ¬	¦  «        }t          |
j
        d         ¦  «        D ]B}t          |
|d d …f                              d|
j
        d         f¦  «        |||¦  «        \  }}}ŒCt          ||j
        d         ¦  «         t!          |                     d¬¦  «        |¦  «         |t          j         | |¦  «        |z
  ¦  «                             ¦   «         k    sJ ‚d S )Nc                 ó.   — |                       d¬¦  «        S )Nr   rC   )rL  )r»   s    r?   Únp_varz=test_incremental_variance_numerical_stability.<locals>.np_varn  s   € Ø�uŠu˜!ˆu‰}Œ}ÐrA   c                 ó–   — | j         d         }| dz                       d¬¦  «        |z  }|                      d¬¦  «        |z  dz  }||z
  S )Nr   r7   rC   )rF   rT   )r>   rº   Úexp_x2Úexpx_2s       r?   Úone_pass_varzCtest_incremental_variance_numerical_stability.<locals>.one_pass_vars  sN   € ØŒG�AŒJˆØ�Q‘$—’ �Ñ#Ô# aÑ'ˆØ—%’%˜Q�%‘-”- !Ñ#¨Ñ)ˆØ˜‰ÐrA   c                 óŽ   — |                       d¬¦  «        }|                      ¦   «         }t          j         ||z
  dz  d¬¦  «        S )Nr   rC   r7   )rK  rd   r9   )r>   rK  ÚYs      r?   Útwo_pass_varzCtest_incremental_variance_numerical_stability.<locals>.two_pass_var|  s=   € Ø�vŠv˜1ˆv‰~Œ~ˆØ�FŠF‰HŒHˆÝŒw˜˜D™ Q‘¨QÐ/Ñ/Ô/Ð/rA   c                 óx   — |dz   }|t          |¦  «        z  }| |z  ||z  z   }||z  | |z
  | |z
  z  |z  z   }|||fS )Nr6   )Úfloat)rG   rg  Úlast_varianceÚlast_sample_countÚupdated_sample_countÚsamples_ratioÚupdated_meanÚupdated_variances           r?   Únaive_mean_variance_updatezQtest_incremental_variance_numerical_stability.<locals>.naive_mean_variance_update„  sp   € Ø0°1Ñ4ÐØ)­EÐ2FÑ,GÔ,GÑGˆØÐ/Ñ/°)¸mÑ2KÑKˆà˜MÑ)Ø�9‰}  \Ñ!1Ñ2Ð5IÑIñJð 	ð Ð-Ð/CÐCÐCrA   r™   r7   i'  g    „×—Ar…   çñhãˆµøä>r   rC   rd  r6   )r9   rŒ   rs   Úlogr�  ÚvstackrÑ   rÒ   Úzerosr  rF   rK  rÃ   r   r!  r   r   )r™  r�  r   r©  r¤   r_   r^   Úx1Úx2ÚA0ÚA1r»   rK  rL  rº   rî   s                   r?   Ú-test_incremental_variance_numerical_stabilityr²  j  s  € ðð ð ð
ð ð ð0ð 0ð 0ðDð Dð Dð €CØ€JØ€IÝ	Œ�#�RœZÐ	(Ñ	(Ô	(€BÝ	Œ��BœJÐ	'Ñ	'Ô	'€BÝ	Œ�)˜q‘. *Ð-¨r½¼Ð	DÑ	DÔ	D€BÝ	Œ�)˜q‘. *Ð-¨r½¼Ð	DÑ	DÔ	D€BÝ
Œ	�2�r�(ÑÔ€Aõ Œ6�&�&˜‘)”)˜l˜l¨1™oœoÑ-Ñ.Ô.×2Ò2Ñ4Ô4°sÒ:Ð:Ð:Ð:ð
 �a˜˜˜�d”8�RœX jÑ1Ô1°9À±>ˆqˆ#€DÝ�2”8˜A”;ÑÔð Jð JˆØ1Ð1°"°Q¸¸¸°T´(¸DÀ#ÀqÑIÔI‰ˆˆc�1�1Ø�”˜”
Š?ˆ?ˆ?ˆ?åŒ6�!—&’&˜a�&‘.”. 4Ñ'Ñ(Ô(×,Ò,Ñ.Ô.°Ò5Ð5Ð5Ð5ÝŒ6�&�&˜‘)”)˜c‘/Ñ"Ô"×&Ò&Ñ(Ô(¨3Ò.Ð.Ð.Ð.ð �1�a�a�a�4”�"œ( :Ñ.Ô.ˆ#€DÝ
Œ�
˜I¨™Nµ"´(Ð;Ñ;Ô;€AÝ�2”8˜A”;ÑÔð 
ð 
ˆÝ0Øˆq�!�!�!ˆtŒH×Ò˜a ¤¨!¤Ð-Ñ.Ô.°°c¸1ñ
ô 
‰ˆˆc�1�1õ �q˜!œ' !œ*Ñ%Ô%Ð%Ý˜aŸfšf¨!˜f™nœn¨dÑ3Ô3Ð3Ø•”˜˜˜q™	œ	 C™Ñ(Ô(×,Ò,Ñ.Ô.Ò.Ð.Ð.Ð.Ð.Ð.rA   c                  óœ  — t           j                             d¦  «        } |                      dd¦  «        }|j        \  }}dD �]ˆ}t          j        d|j        d         |¦  «        }|d         |j        d         k    rt          j        ||g¦  «        }t          j        |¦  «        D �]!\  }}|||…d d …f         }|dk    rq| 	                    d¬¦  «        }	| 
                    d¬¦  «        }
|j        d         }t          j        |j        d         |j        d         t           j        ¬	¦  «        }n(t          ||	|
|¦  «        }|\  }	}
}||j        d         z  }t          j	        |d |…         d¬¦  «        }t          j
        |d |…         d¬¦  «        }t          |	|d
¦  «         t          |
|d
¦  «         t          ||¦  «         �Œ#�ŒŠd S )Nrû   r—   r1   )é   rž   é%   r   r¡   rC   r6   r…   rO   )r9   r:   r;   r¸   rF   r  ÚhstackÚ	itertoolsÚpairwiserK  rL  r�  rÃ   r   r   r   )r=   r>   r^   r_   Ú
batch_sizeÚstepsrî   Újrj  Úincremental_meansÚincremental_variancesÚincremental_countÚsample_countÚresultÚcalculated_meansÚcalculated_variancess                   r?   Útest_incremental_variance_ddofrÃ  ³  sæ  € å
Œ)×
Ò
 Ñ
%Ô
%€CØ�	Š	�"�bÑÔ€AØœGÑ€IˆzØ"ð @ñ @ˆ
Ý”	˜!˜QœW QœZ¨Ñ4Ô4ˆØ�Œ9˜œ œ
Ò"Ð"Ý”I˜u iÐ0Ñ1Ô1ˆEåÔ& uÑ-Ô-ð 	@ñ 	@‰DˆAˆqØ�a˜�c˜1˜1˜1�f”IˆEØ�AŠvˆvØ$)§J¢J°A JÑ$6Ô$6Ð!Ø(-¯	ª	°q¨	Ñ(9Ô(9Ð%à$)¤K°¤NÐ!Ý!œw u¤{°1¤~°u´{À1´~ÍRÌXÐVÑVÔV��å2ØÐ,Ð.CÀ\ñô �ð QWÑMÐ"Ð$9Ð;LØ ¤¨A¤Ñ.�å!œw q¨¨!¨¤u°1Ð5Ñ5Ô5ÐÝ#%¤6¨!¨B¨Q¨B¬%°aÐ#8Ñ#8Ô#8Ð ÝÐ 1Ð3CÀQÑGÔGÐGÝÐ 5Ð7KÈQÑOÔOÐOÝÐ0°,Ñ?Ô?Ð?Ñ?ñ'	@ð@ð @rA   c                  óÜ  — t           j                             d¦  «                             dd¦  «        } t          j        t          j        | ¦  «        d¬¦  «        }t          | ¦  «        }t          j        |d¬¦  «        }t          ||¦  «         t          j        | t          | j
        d         ¦  «        |f         ¦  «        }t          | ||d d …t           j        f         z  ¦  «         d S )Né$   r3   r6   rC   r   )r9   r:   r;   r¸   r  rÑ   r   r   Úsignr  rF   r6  )ÚdataÚmax_abs_rowsÚdata_flippedÚmax_rowsÚsignss        r?   Útest_vector_sign_fliprÌ  Ó  sÅ   € åŒ9× Ò  Ñ$Ô$×*Ò*¨1¨aÑ0Ô0€DÝ”9�RœV D™\œ\°Ð2Ñ2Ô2€LÝ2°4Ñ8Ô8€LÝŒy˜¨AÐ.Ñ.Ô.€HÝ�| XÑ.Ô.Ð.ÝŒG�D�˜tœz¨!œ}Ñ-Ô-¨|Ð;Ô<Ñ=Ô=€EÝ�t˜\¨E°!°!°!µR´Z°-Ô,@Ñ@ÑAÔAÐAÐAÐArA   c                  ó*  — t           j                             d¦  «        } |                      dd¦  «        }t          j        |¦  «        }t          j        |d¬¦  «                             d¦  «        }t          t          |¦  «        ||z  ¦  «         d S )Nr   r8   r3   r6   rC   )r¡   r6   )	r9   r:   r;   r¸   ÚexprT   r!  r   r$   )r=   r>   Úexp_XÚ	sum_exp_Xs       r?   Útest_softmaxrÑ  Þ  sx   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ€AÝŒF�1‰IŒI€EÝ”�u 1Ð%Ñ%Ô%×-Ò-¨gÑ6Ô6€IÝ�g a™jœj¨%°)Ñ*;Ñ<Ô<Ð<Ð<Ð<rA   c                  ó�   — t          j        t          d¬¦  «        5  t          g d¢¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzstable_cumsum.+is deprecatedrò   r5  )r�   rö   ÚFutureWarningr%   © rA   r?   Útest_stable_cumsum_deprecationrÕ  æ  sŽ   € Ý	Œ•mÐ+IÐ	JÑ	JÔ	Jð !ð !Ý�i�i�iÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   œ;»?Á?ÚA_containerÚdensec                 ó   — g | ]	}|j         ‘Œ
S rÔ  ©rõ   ©Ú.0Ú	containers     r?   ú
<listcomp>rÝ  î  ó   € ÐHÐHÐH¨I�YÔ'ÐHÐHÐHrA   )ÚidsÚB_containerc                 ó   — g | ]	}|j         ‘Œ
S rÔ  rÙ  rÚ  s     r?   rÝ  rÝ  ó  rÞ  rA   c                 ó2  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        } ||¦  «        }t          ||d¬¦  «        }t          ||¦  «         d S )Nr   ©é   r1   ©r1   rž   T©Údense_output©r9   r:   r;   rR   rt   r#   r   )rÖ  rà  r=   r»   ÚBÚexpectedÚactuals          r?   Útest_safe_sparse_dot_2drì  ë  s’   € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜(Ñ#Ô#€AØ×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€Hàˆ�A‰Œ€AØˆ�A‰Œ€AÝ˜Q °Ð5Ñ5Ô5€Få�F˜HÑ%Ô%Ð%Ð%Ð%rA   c                 óì  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        }t          ||¦  «        }t          ||¦  «         |                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        }t          ||¦  «        }t          ||¦  «         d S )Nr   )r7   r8   r‰   r3   rO   )rO   r[   )r7   r8   )r‰   r3   r8   rO   rè  )r~   r=   r»   ré  rê  rë  s         r?   Útest_safe_sparse_dot_ndrî    sç   € å
Œ)×
Ò
 Ñ
"Ô
"€Cð 	×Ò˜/Ñ*Ô*€AØ×Ò˜&Ñ!Ô!€AÝŒv�a˜‰|Œ|€HØˆ�aÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%ð 	×Ò˜&Ñ!Ô!€AØ×Ò˜,Ñ'Ô'€AÝŒv�a˜‰|Œ|€HØˆ�aÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%rA   rÜ  c                 ó   — g | ]	}|j         ‘Œ
S rÔ  rÙ  rÚ  s     r?   rÝ  rÝ    rÞ  rA   c                 óº  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        }t           | |¦  «        |¦  «        }t          ||¦  «         |                     d¦  «        }t          j        ||¦  «        }t          | | |¦  «        ¦  «        }t          ||¦  «         d S )Nr   r1   rã  )r1   rä  rè  )rÜ  r=   ré  r»   rê  rë  s         r?   Útest_safe_sparse_dot_2d_1drñ    sÈ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜2ÑÔ€Að 	×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€HÝ˜Y˜Y q™\œ\¨1Ñ-Ô-€FÝ�F˜HÑ%Ô%Ð%ð 	×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€HÝ˜Q 	 	¨!¡¤Ñ-Ô-€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%rA   rç  TFc                 ó\  — t           j                             d¦  «        }t          dd|¬¦  «        }t          dd|¬¦  «        }|                     |¦  «        }t          ||| ¬¦  «        }t          j        |¦  «        |  k    sJ ‚| r|                     ¦   «         }t          ||¦  «         d S )Nr   rã  rÌ   )r   r=   rå  ræ  )
r9   r:   r;   r.   rt   r#   r   ÚissparseÚtoarrayr   )rç  r=   r»   ré  rê  rë  s         r?   Ú!test_safe_sparse_dot_dense_outputrõ  .  s¯   € å
Œ)×
Ò
 Ñ
"Ô
"€Cå˜X¨s¸Ð<Ñ<Ô<€AÝ˜X¨s¸Ð<Ñ<Ô<€Aà�uŠu�Q‰xŒx€HÝ˜Q °Ð=Ñ=Ô=€FåŒ?˜6Ñ"Ô"¨<Ð'7Ò8Ð8Ð8Ð8àð &Ø×#Ò#Ñ%Ô%ˆÝ  ¨Ñ2Ô2Ð2Ð2Ð2rA   c                  ó’   — t          j        ddgt           j        ¬¦  «        } t          | dd¬¦  «        }t	          |ddg¦  «         d	S )
a  Make sure sklearn.utils.extmath._approximate_mode returns valid
    results for cases where "class_counts * n_draws" is enough
    to overflow 32-bit signed integer.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i¸‚ rC  r…   i¨a  r   )Úclass_countsÚn_drawsr=   i®`  rµ   N)r9   rŒ   rÃ   r   r   )r>   Úrets     r?   Útest_approximate_moderú  ?  sN   € õ 	Œ�%˜�¥b¤hÐ/Ñ/Ô/€AÝ
¨°E¸qÐ
AÑ
AÔ
A€Cõ
 �s˜U C˜LÑ)Ô)Ð)Ð)Ð)rA   c                 óv  — t          | ||¦  «        \  }}t          j                             d¦  «        }|                     d¬¦  «                             |¦  «        }|                     ||¬¦  «        }d}|dk    rdnd}	t          d¬	¦  «        5  t          ||d¬
¦  «        \  }
}}t          ||d¬
¦  «        \  }}}t          |¦  «        d         j
        |j
        k    sJ ‚t          |¦  «        d         j
        |j
        k    sJ ‚t          |¦  «        d         j
        |j
        k    sJ ‚t          t          |t          d¬¦  «        |
|	¬¦  «         t          t          |t          d¬¦  «        ||	¬¦  «         t          t          |t          d¬¦  «        ||	¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rã  r4   r   r3   ro   rª  TrQ  r›   rS  rT  re  )r   r9   r:   r;   rŽ   rp   rV  r   r!   r   rõ   r   r   )rX  rY  rZ  rU  r   r=   r>   r[  r‡   r.  Úu_npÚs_npÚvt_npÚu_xpÚs_xpÚvt_xps                   r?   Ú(test_randomized_svd_array_api_compliancer  P  s  € õ
 & o°{ÀJÑOÔO�J€Bˆå
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜ˆ
Ñ!Ô!×(Ò(¨Ñ4Ô4€AØ�:Š:�a ˆ:Ñ'Ô'€DØ€LØ Ò*Ð*ˆ4ˆ4°€Då	¨4Ð	0Ñ	0Ô	0ð 
Oð 
OÝ*¨1¨lÈÐKÑKÔKÑˆˆd�EÝ*¨4°ÈAÐNÑNÔNÑˆˆd�Eå˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=Ý˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=Ý˜UÑ#Ô# AÔ&Ô/°2´;Ò>Ð>Ð>Ð>å� ­°EÐ:Ñ:Ô:¸DÀtÐLÑLÔLÐLÝ� ­°EÐ:Ñ:Ô:¸DÀtÐLÑLÔLÐLÝ� ­"°UÐ;Ñ;Ô;¸UÈÐNÑNÔNÐNð
Oð 
Oð 
Oñ 
Oô 
Oð 
Oð 
Oð 
Oð 
Oð 
Oð 
Oð 
Oøøøð 
Oð 
Oð 
Oð 
Oð 
Oð 
Os   ÂDF.Æ.F2Æ5F2c                 óL  — t          | ||¦  «        \  }}t          j                             d¦  «        }|                     d¬¦  «                             |¦  «        }|                     ||¬¦  «        }d}d}	|dk    rdnd}
t          d	¬
¦  «        5  t          |||	d¬¦  «        }t          |||	d¬¦  «        }t          |¦  «        d         j
        |j
        k    sJ ‚t          t          |t          d¬¦  «        ||
¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          ||¬¦  «        }|j        |k    s| dv rd S |dz                       t          j        ¦  «        }|
dz  }
|                     ||¬¦  «        }t          d	¬
¦  «        5  t          |||	d¬¦  «        }t          |||	d¬¦  «        }t          |¦  «        d         j
        |j
        k    sJ ‚|j        |k    sJ ‚t          t          |t          d¬¦  «        ||
¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rã  r4   r   r3   r1   ro   rª  TrQ  )r5   r�   rb   rS  rT  re  >   ÚtorchÚarray_api_strict)r   r9   r:   r;   rŽ   rp   rV  r   r    r   rõ   r   r   r   rX   rÄ   )rX  rY  rZ  rU  r   r=   r>   r[  r5   r�   r.  ÚQ_npÚQ_xpÚ	max_dtypeÚX_ints                  r?   Ú1test_randomized_range_finder_array_api_compliancer
  j  sæ  € õ & o°{ÀJÑOÔO�J€Bˆå
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜ˆ
Ñ!Ô!×(Ò(¨Ñ4Ô4€AØ�:Š:�a ˆ:Ñ'Ô'€DØ€DØ€FØ Ò*Ð*ˆ4ˆ4°€Då	¨4Ð	0Ñ	0Ô	0ð Mð MÝ& q¨t¸FÐQRÐSÑSÔSˆÝ& t°$¸vÐTUÐVÑVÔVˆå˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=Ý� ­°EÐ:Ñ:Ô:¸DÀtÐLÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mõ +¨2°fÐ=Ñ=Ô=€Ið „z�YÒÐ /Ð5RÐ"RÐ"RØˆà�‰V�OŠO�BœHÑ%Ô%€EØˆB�J€DØ�:Š:�e Fˆ:Ñ+Ô+€DÝ	¨4Ð	0Ñ	0Ô	0ð Mð MÝ& u°4ÀÐUVÐWÑWÔWˆÝ& t°$¸vÐTUÐVÑVÔVˆå˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=ØŒz˜YÒ&Ð&Ð&Ð&Ý� ­°EÐ:Ñ:Ô:¸DÀtÐLÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mð Mð Ms&   ÂA3DÄDÄDÆB HÈHÈ H)kr·  Únumpyr9   r�   Úscipyr   r   Úscipy.linalgr   Úscipy.sparse.linalgr   Úsklearnr   Úsklearn.datasetsr   r	   Úsklearn.utilsr
   Úsklearn.utils._arpackr   Úsklearn.utils._array_apir   r   r   r   r   rW  Úsklearn.utils._testingr   r   r   r   r   r   r   Úsklearn.utils.extmathr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   Úsklearn.utils.fixesr(   r)   r*   r+   r,   r-   r.   ÚmarkÚparametrizer@   rM   rW   rÃ   rÄ   ro   rs   r   r–   r³   r¿   rÊ   rÕ   r×   ræ   rð   rù   r  r  r  r'  r  r3  r:  rŒ   rX   Úobjectr@  rO  r_  rr  r‹  r”  r–  r²  rÃ  rÌ  rÑ  rÕ  rì  rî  rñ  rõ  rú  r  r
  rÔ  rA   r?   ú<module>r     s¢
  ðð Ð Ð Ð à Ð Ð Ð Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à "Ð "Ð "Ð "Ð "Ð "Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ %Ð %Ð %Ð %Ð %Ð %Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð"ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð „×ÒØØ�^Ñ# nÑ4°~ÑEñô ð6ð 6ñ	ô ð6ð*ð *ð *ð>ð >ð >ð$ „×Ò˜ 2¤8¨R¬X°r´zÀ2Ä:Ð"NÑOÔOðLFð LFñ PÔOðLFð^ „×Ò˜ 2¤8¨R¬X°r´zÀ2Ä:Ð"NÑOÔOð@ð @ñ PÔOð@ð, „×Ò˜Ð5Ñ6Ô6ðDMð DMñ 7Ô6ðDMðN „×ÒØðð ð ñ
ô 
ð;ð ;ñ
ô 
ð;ð4 „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;Ø„×Ò˜¨.Ñ9Ô9ðPð Pñ :Ô9ñ <Ô;ðPð4&3ð &3ð &3ðR&3ð &3ð &3ðR ð  ð  ð@*0ð *0ð *0ðZ „×ÒÐ+¨^¸nÑ-LÑMÔMðUð Uñ NÔMðUð Eð Eð Eð2 „×ÒÐ0°6¸6Ð2BÑCÔCðOð Oñ DÔCðOð	9ð 	9ð 	9ðð ð ðB „×Ò˜˜n˜n˜nÑ-Ô-Ø„×Ò˜˜n˜n˜nÑ-Ô-Ø„×Ò˜˜l˜l˜lÑ+Ô+Ø„×Ò˜   q¡¤Ñ*Ô*ð1ð 1ñ +Ô*ñ ,Ô+ñ .Ô-ñ .Ô-ð1ð,:ð :ð :ð< „×ÒØð ˆRŒX�i�i�i r¤xÐ0Ñ0Ô0°(°"´(¸A¸q¸6ÈÌÐ2RÑ2RÔ2RÐSØˆBŒH�R”XÑÔð	
ð
 ˆRŒX�i�i�i r¤xÐ0Ñ0Ô0°(°"´(¸A¸q¸6ÈÌÐ2TÑ2TÔ2TÐUØˆBŒH�R”ZÑ Ô ð	
ð
 ˆRŒX�i�i�i r¤xÐ0Ñ0Ô0°(°"´(¸CÀ¸:ÈVÐ2TÑ2TÔ2TÐUØˆBŒH�VÑÔð	
ðñô ð"(ð (ñ#ô ð"(ð „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;Ø„×Ò˜ MÑ2Ô2ð+ð +ñ 3Ô2ñ <Ô;ð+ð „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð!ð !ñ	ô ð!ð@ „×Ò˜   Ñ0Ô0Ø„×Ò˜   Ñ/Ô/Ø„×ÒØÐ QÐ QÐ Qñô ð#9ð #9ñô ñ 0Ô/ñ 1Ô0ð
#9ðL „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;ð!*ð !*ñ <Ô;ð!*ðH1ð 1ð 1ð4*ð *ð *ð8 ðE/ð E/ñ „ðE/ðP@ð @ð @ð@Bð Bð Bð=ð =ð =ð!ð !ð !ð
 „×ÒØØ„XÐ�ÐØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„XÐ�ÐØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
&ð &ñô ñô ð&ð „×Ò˜¨.Ñ9Ô9ð&ð &ñ :Ô9ð&ð( „×ÒØØ„XÐ�ÐØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
&ð &ñô ð
&ð" „×Ò˜¨$°¨Ñ7Ô7ð3ð 3ñ 8Ô7ð3ð *ð *ð *ð" „×ÒØ.Ø-Ð-Ñ/Ô/ñô ðOð Oñ	ô ðOð, „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð"Mð "Mñ	ô ð"Mð "Mð "MrA   