§
    ¦˜ºhE�  ã            
       ó¦	  — 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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&m'Z'm(Z( d dl)m*Z* d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/ej0         1                    dej2        ej3        ej4        ej5        f¦  «        d„ ¦   «         Z6ej0         1                    dej2        ej3        ej4        ej5        f¦  «        d„ ¦   «         Z7ej0         1                    dd¦  «        d„ ¦   «         Z8ej0         1                    dg d¢¦  «        d„ ¦   «         Z9ej0         1                    dej4        ej5        f¦  «        d„ ¦   «         Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d „ Z@d!„ ZAd"„ ZBej0         1                    d#g d$¢¦  «        ej0         1                    d%g d$¢¦  «        ej0         1                    dg d&¢¦  «        ej0         1                    d' eCd(¦  «        ¦  «        d)„ ¦   «         ¦   «         ¦   «         ¦   «         ZDd*„ ZEej0         1                    d+ ejF        g d,¢ej2        ¬-¦  «         ejF        d.d(gej3        ¬-¦  «        g ejG        ej3        ¦  «        f ejF        g d,¢ej2        ¬-¦  «         ejF        d.d(gej5        ¬-¦  «        g ejG        ej5        ¦  «        f ejF        g d,¢ej2        ¬-¦  «         ejF        d/d0geH¬-¦  «        g ejG        eH¦  «        fg¦  «        d1„ ¦   «         ZId2„ ZJ ejK        ¦   «         d3„ ¦   «         ZLej0         1                    dej4        ej5        g¦  «        d4„ ¦   «         ZMej0         1                    d5g d6¢¦  «        ej0         1                    d7g d8¢¦  «        ej0         1                    d9g d:¢¦  «        d;„ ¦   «         ¦   «         ¦   «         ZNej0         1                    dej4        ej5        g¦  «        d<„ ¦   «         ZOd=„ ZPd>„ ZQed?„ ¦   «         ZRd@„ ZSdA„ ZTdB„ ZUdC„ ZVej0         1                    dDejF        ejW        gdEdFg¬G¦  «        ej0         1                    dHejF        ejW        gdEdFg¬G¦  «        dI„ ¦   «         ¦   «         ZXdJ„ ZYej0         1                    dDejF        ejW        gdEdFg¬G¦  «        dK„ ¦   «         ZZej0         1                    dLdMdNg¦  «        dO„ ¦   «         Z[dS )Pé    N)ÚlinalgÚsparse)Úeigh)Úeigsh)Úexpit)Úmake_low_rank_matrixÚmake_sparse_spd_matrix)Úgen_batches)Ú_init_arpack_v0)Úassert_allcloseÚassert_allclose_dense_sparseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚskip_if_32bit)Ú_deterministic_vector_sign_flipÚ_incremental_mean_and_varÚ_randomized_eigshÚ_safe_accumulator_opÚ	cartesianÚdensityÚlog_logisticÚrandomized_svdÚ	row_normsÚsafe_sparse_dotÚsoftmaxÚstable_cumsumÚsvd_flipÚweighted_mode)Ú_modec                  ó|  — t           j                             d¦  «        } |                      dd¬¦  «        }d|d<   d|d<   t	          j        |¦  «        }t	          j        |¦  «        }t	          j        |¦  «        }t	          j        |¦  «        }||||fD ]$}t          |¦  «        t          |¦  «        k    sJ ‚Œ%d S )Nr   é
   ©r"   é   ©Úsize)é   é   )r$   é   )
ÚnpÚrandomÚRandomStateÚrandintr   Ú
csr_matrixÚ
csc_matrixÚ
coo_matrixÚ
lil_matrixr   )ÚrngÚXÚX_csrÚX_cscÚX_cooÚX_lilÚX_s          úh/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_extmath.pyÚtest_densityr:   +   sÀ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�B˜WˆÑ%Ô%€AØ€A€d�GØ€A€d�GÝÔ˜aÑ Ô €EÝÔ˜aÑ Ô €EÝÔ˜aÑ Ô €EÝÔ˜aÑ Ô €Eà�e˜U EÐ*ð )ð )ˆÝ�r‰{Œ{�g a™jœjÒ(Ð(Ð(Ð(Ð(ð)ð )ó    c                  óÄ   — t          j        g d¢g d¢g¦  «        } t          j        t          d¬¦  «        5  t          | d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zGCheck that future warning is raised when user enters keyword arguments.©r'   r(   r)   )é   r$   é   z^Additional keyword arguments are deprecated in version 1.2 and will be removed in version 1.4.©Úmatchr'   )ÚaN)r*   ÚarrayÚpytestÚwarnsÚFutureWarningr   )Ú
test_arrays    r9   Útest_density_deprecated_kwargsrH   :   s¶   € å”˜9˜9˜9 i i iÐ0Ñ1Ô1€JÝ	ŒÝð'ð
ñ 
ô 
ð !ð !õ 	�
˜aÐ Ñ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   ¶AÁAÁAc                  ó>  — t           j                             d¦  «        } |                      dd¬¦  «        }t          j        |j        ¦  «        }dD ]J}t          ||¦  «        \  }}t          |||¬¦  «        \  }}t          ||¦  «         t          ||¦  «         ŒKd S )Nr   r"   r#   r%   )Nr   r'   ©Úaxis)	r*   r+   r,   r-   ÚonesÚshaper    r   r   )r2   ÚxÚweightsrK   ÚmodeÚscoreÚmode2Úscore2s           r9   Útest_uniform_weightsrT   G   s¢   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�B˜WˆÑ%Ô%€AÝŒg�a”gÑÔ€Gàð *ð *ˆÝ˜A˜t‘n”n‰ˆˆeÝ% a¨°tÐ<Ñ<Ô<‰ˆˆvå˜4 Ñ'Ô'Ð'Ý˜5 &Ñ)Ô)Ð)Ð)ð*ð *r;   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 )Nr?   r   ©éd   r"   r%   r$   r'   rJ   )r*   r+   r,   r-   Úrandom_samplerM   r   r   r   ÚravelÚsum)Úmode_resultr2   rN   ÚwrP   rQ   s         r9   Útest_random_weightsr]   U   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¯\ª\¸!©_¬_Ñ=Ô=Ð=Ð=Ð=r;   c           
      óX  — 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          j        |¦  «        }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 )NrW   éô  r$   r"   é   ç        r   ©Ú	n_samplesÚ
n_featuresÚeffective_rankÚtail_strengthÚrandom_stateF©Úcopy©Úfull_matrices)ÚautoÚLUÚQR©Úpower_iteration_normalizerrg   Úf©Údecimal)r*   Úfloat32Údtyper   ÚastyperM   r   Úsvdr   ÚkindÚfloat64r   Údotr   r.   )ru   rc   rd   ÚrankÚkrs   r3   ÚUÚsÚVtÚ
normalizerÚUaÚsaÚVas                 r9   Úcheck_randomized_svd_low_rankr„   g   sV  € à€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à*ð /Bñ /Bˆ
å#Øˆ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©¬Àð	
ñ 	
ô 	
ð 	
õ
 Ô˜aÑ Ô ˆõ $Øˆq¨ZÀað
ñ 
ô 
‰
ˆˆB�ð Œ:˜ÒÐØ”8˜uÒ$Ð$Ð$Ð$Ø”8˜uÒ$Ð$Ð$Ð$Ø”8˜uÒ$Ð$Ð$Ð$Ð$à”8”= CÒ'Ð'Ð'Ð'Ø”8”= CÒ'Ð'Ð'Ð'Ø”8”= CÒ'Ð'Ð'Ð'å˜A˜e˜t˜eœH b¨¨$¨¤i¸ÐAÑAÔAÐAÑAð_/Bð /Br;   ru   c                 ó$   — t          | ¦  «         d S ©N)r„   ©ru   s    r9   Ú'test_randomized_svd_low_rank_all_dtypesrˆ   µ   s   € å! %Ñ(Ô(Ð(Ð(Ð(r;   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é*   )ç      ð?ç       Àra   ç      @r‡   r%   r   r(   Úmodule)Ún_componentsÚ	selection)r(   r�   rŒ   )r>   r(   ÚvalueN)r*   r+   r,   ÚdiagrC   r   ÚqrÚnormalrM   ÚTr   r   rD   ÚraisesÚNotImplementedError)ru   r2   r3   Úrand_rotÚeigvalsÚeigvecss         r9   Ú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r|   )r"   é2   rW   éÇ   éÈ   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   )rg   rŽ   é   )r�   r�   Ún_iterrg   é   rn   )r�   r¡   Ún_oversamplesrg   rp   r�   r'   )Úsubset_by_indexNéÿÿÿÿr?   rr   r>   ÚLA)ÚwhichÚtolÚmaxiterÚv0r"   é   )r	   r   r   ÚargsortrM   r   r*   Ú
zeros_liker•   r   r   r   )r|   rd   r3   r™   rš   Ú
eigvals_qrÚ
eigvecs_qrÚeigvals_lapackÚeigvecs_lapackÚindicesÚ
dummy_vecsÚ_rª   Úeigvals_arpackÚeigvecs_arpacks                  r9   Ú(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ð €~r;   zn,rank))r"   r`   rV   )rW   éP   )r_   r"   )r_   éú   )r_   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�   rg   r   rJ   r?   rr   N)r*   r+   r,   Úrandnr•   r   r   r   ÚnormrL   rM   r’   )Únr{   r2   r3   ÚAÚSÚVÚA_reconstructs           r9   Ú&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¸Ð:Ñ:Ô:Ð:Ð:Ð:r;   c                 ó|  — 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        || ¬¦  «        }|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Š   rW   r>   r$   Frh   r(   r'   rJ   T)Úsquaredr‡   )r*   r+   r,   r¼   rt   rv   rZ   r   r   ÚsqrtÚint32Úint64r   r.   Úindptrr²   ru   )ru   r3   Ú	precisionÚsq_normÚcsr_index_dtypeÚXcsrs         r9   Ú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ˆÝÔ  ¨%Ð0Ñ0Ô0ˆð �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r;   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 )NrW   r_   r$   r"   çš™™™™™¹?r   rb   Frj   ©rl   Únonerm   rn   ©r¡   rp   rg   g{®Gáz„?ro   r)   rr   ©	r   rM   r   rw   r   r*   ÚabsÚmaxr   ©
rc   rd   r{   r|   r3   r´   r~   r€   r‚   Úsaps
             r9   Ú'test_randomized_svd_low_rank_with_noiserÙ   Y  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ð 3r;   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 )NrW   r_   r$   r"   r‹   r   rb   Frj   rÑ   rÓ   rÐ   r)   rr   rÔ   r×   s
             r9   Ú!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ð 3r;   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 )NrW   r_   r>   r"   g      à?r   rb   r)   F)r¡   Ú	transposerg   Trl   rj   rr   r(   )r   rM   r   r   rw   r   r*   rz   )rc   rd   r{   r|   r3   ÚU1Ús1ÚV1ÚU2Ús2ÚV2ÚU3Ús3ÚV3ÚU4Ús4ÚV4s                    r9   Ú)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ÑÔÐÐÐr;   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Š   rW   r_   rœ   ©re   rg   r)   r   r(   r%   rÒ   rÓ   Úfro)Úordr¢   )rm   rn   rl   )r$   r"   rœ   é   )r*   r+   r,   r   r-   rM   r   rz   r’   r   r½   rÕ   )r2   r3   r�   r}   r~   r   r¿   Úerror_2Úerror_20r€   ÚiÚerrors               r9   Ú.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ð 0r;   c                  ó„  — t           j                             d¦  «        } t          ddd| ¬¦  «        }d}t          j        t          j        fD ]r} ||¦  «        }d                     |j        ¦  «        }t          j
        t          j        |¬¦  «        5  t          ||d	d
¬¦  «         d d d ¦  «         n# 1 swxY w Y   Œsd S )NrŠ   rœ   r¢   r"   rì   r$   zCCalculating SVD of a {} is expensive. csr_matrix is more efficient.r@   r'   rÒ   )r¡   rp   )r*   r+   r,   r   r   r1   Ú
dok_matrixÚformatÚ__name__rD   rE   ÚSparseEfficiencyWarningr   )r2   r3   r�   ÚclsÚwarn_msgs        r9   Ú#test_randomized_svd_sparse_warningsrü   ø  s  € å
Œ)×
Ò
 Ñ
#Ô
#€CÝ˜R °BÀSÐIÑIÔI€AØ€LÝÔ!¥6Ô#4Ð5ð Yð YˆØˆC�‰FŒFˆð,ß,2ªF°3´<Ñ,@Ô,@ð 	õ Œ\�&Ô8ÀÐIÑIÔIð 	Yð 	YÝ˜1˜l°1ÐQWÐXÑXÔXÐXð	Yð 	Yð 	Yñ 	Yô 	Yð 	Yð 	Yð 	Yð 	Yð 	Yð 	Yøøøð 	Yð 	Yð 	Yð 	YøðYð Ys   ÂB4Â4B8	Â;B8	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¢   r"   Frj   )Úu_based_decisionr?   rr   T)
r*   r+   r,   r¼   r   rw   r   r   rz   r•   )Úrsrc   rd   r3   r}   rÀ   r   rÞ   rà   ÚXTrá   rã   ÚU_flip1ÚV_flip1ÚU_flip2ÚV_flip2s                   r9   Ú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ÐDr;   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       @ra   r‹   r(   Té)   ©Ú	flip_signrg   r"   )r*   rC   r   Úranger   rz   r•   Úeye)rB   Úu1rß   Úv1ÚseedÚu2râ   Úv2s           r9   Útest_randomized_svd_sign_flipr     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ð 9r;   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   rJ   r'   )r*   rÕ   rÖ   Úall)ÚuÚvÚu_basedÚv_baseds       r9   Úmax_loading_is_positivezMtest_randomized_svd_sign_flip_with_transpose.<locals>.max_loading_is_positive1  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×>Ò>Ñ@Ô@ˆØ˜ÐÐr;   r¸   r"   r¥   r)   Tr   r	  )r
  rÝ   rg   )r*   ÚarangeÚreshaper   )	r  ÚmatÚ	u_flippedr´   Ú	v_flippedr  r  Úu_flipped_with_transposeÚv_flipped_with_transposes	            r9   Ú,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€NØÐÐÐõ =KØˆQ˜$¨$¸Qð=ñ =ô =Ñ9Ð˜aÐ!9ð /Ð.Ø Ð":ñô Ñ€GˆWð €N€N€NØÐÐÐÐÐr;   r¾   )rœ   rW   é,  Úm)r"   r¢   rœ   r  r$   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_driverrg   Úgesvdgü©ñÒMbP?)ÚatolÚrtol)r*   r+   r,   Úrandr   rM   r   )r¾   r$  r|   r  r2   r3   r  rß   Úvt1r  râ   Úvt2s               r9   Ú!test_randomized_svd_lapack_driverr.  M  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Ð0r;   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 )Nr=   r>   r$   r?   r`   )r'   r>   r?   )r'   r>   r`   )r'   r$   r?   )r'   r$   r`   )r(   r>   r?   )r(   r>   r`   )r(   r$   r?   )r(   r$   r`   )r)   r>   r?   )r)   r>   r`   )r)   r$   r?   )r)   r$   r`   r)   )r*   rC   r   r   r  Únewaxis)ÚaxesÚtrue_outÚoutrN   s       r9   Útest_cartesianr4  g  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Ð9r;   zarrays, output_dtyper=   r‡   r>   rN   Úyc                 ó>   — t          | ¦  «        }|j        |k    sJ ‚dS )z8Check that the cartesian product works with mixed types.N)r   ru   )ÚarraysÚoutput_dtypeÚoutputs      r9   Útest_cartesian_mix_typesr:  …  s*   € õ& �vÑÔ€FàŒ<˜<Ò'Ð'Ð'Ð'Ð'Ð'r;   c                  óî   — d„ } t          j        ddd¦  «        }t          t          |¦  «         | |¦  «        ¦  «         t          j        ddg¦  «        }t          t          |¦  «        ddg¦  «         d S )	Nc                 óD   — t          j        t          | ¦  «        ¦  «        S r†   )r*   Úlogr   )rN   s    r9   Únaive_log_logisticz1test_logistic_sigmoid.<locals>.naive_log_logisticŸ  s   € ÝŒv•e˜A‘h”hÑÔÐr;   éþÿÿÿr(   rœ   g      YÀg      Y@iœÿÿÿr   )r*   Úlinspacer   r   rC   )r>  rN   Ú	extreme_xs      r9   Útest_logistic_sigmoidrB  �  s}   € ð ð  ð  õ 	Œ�B˜˜2ÑÔ€AÝ�l¨1™oœoÐ/AÐ/AÀ!Ñ/DÔ/DÑEÔEÐEå”˜& %˜Ñ)Ô)€IÝ�l¨9Ñ5Ô5¸¸a°yÑAÔAÐAÐAÐAr;   c                  ó@   — t           j                             d¦  «        S )NrŠ   )r*   r+   r,   © r;   r9   r2   r2   ©  s   € åŒ9× Ò  Ñ$Ô$Ð$r;   c                 ó†  — d}|                       dd¦  «                             |¦  «        |z  }|                       |j        d         ¦  «        |z  }t          |ddd|¬¦  «        \  }}}t	          j        ||d¬¦  «        }t	          j        |dz  |d¬¦  «        |dz  z
  }	t          ||¦  «         t          ||	¦  «         d S )Nr"   éè  r¢   r   ©Úsample_weight©rO   rK   r(   )r+  rv   rM   r   r*   Úaverager   )
r2   ru   Úmultr3   rH  ÚmeanÚvarr´   Úexpected_meanÚexpected_vars
             r9   Ú2test_incremental_weighted_mean_and_variance_simplerP  ®  sÌ   € à€DØ�Š��rÑÔ×!Ò! %Ñ(Ô(¨4Ñ/€AØ—H’H˜QœW QœZÑ(Ô(¨4Ñ/€MÝ,¨Q°°1°aÀ}ÐUÑUÔU�L€Dˆ#ˆqå”J˜q¨-¸aÐ@Ñ@Ô@€Må
Œ
�1�a‘4 °QÐ7Ñ7Ô7¸-ÈÑ:JÑJð õ ˜˜mÑ,Ô,Ð,Ý˜˜\Ñ*Ô*Ð*Ð*Ð*r;   rL  )r   ç    ÐcAg    ÐcÁrM  )r'   ç:Œ0âŽyE>g     jø@zweight_loc, weight_scale))r   r'   )r   rR  )r'   rR  )r"   r'   )rQ  r'   c                 ó  — 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 )Nc           
      ó  — | 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   r'   r"   r>   r(   )r   r   r   rG  ç�íµ ÷Æ°>)r)  )rM   r
   r   r   )
r3   rH  rN  rO  r¾   Ú
chunk_sizeÚ	last_meanÚlast_weight_sumÚlast_varÚbatchs
             r9   Ú_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¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?r;   )rW   r¢   r   )ÚlocÚscaler&   rI  r(   rJ   )r”   r   r*   rJ  rL   rL  rM  )rL  rM  Ú
weight_locÚweight_scaler2   r[  r&   Úweightr3   rN  rO  Úones_weights               r9   Ú+test_incremental_weighted_mean_and_variancerb  ½  s  € ð?ð ?ð ?ð €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Ð8r;   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©ç     ¸€@re  re  re  ©ç     �°@rg  rg  rg  ©r(   r(   r(   r(   r‡   r)   r>   ©éª   rj  rj  rj  ©é®  rl  rl  rl  ©r#  r#  r#  r#  rj  rl  r#  rG  )r*   rC   rÇ   rL   rv   Únanr   r   )ru   Ú	old_meansÚold_variancesÚold_weight_sumÚsample_weights_XÚsample_weights_X_nanr3   ÚX_nanÚX_meansÚX_variancesÚX_countÚX_nan_meansÚX_nan_variancesÚX_nan_counts                 r9   Ú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 Ñ)Ô)Ð)Ð)Ð)r;   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Ö  rj  rl  r#  r(   r   rJ   r'   r‡   r?   )
r*   rC   r•   rL  rM  ÚfullrM   rÇ   r   r   )
r¿   ÚidxÚX1ÚX2ro  rp  Úold_sample_countÚfinal_meansÚfinal_variancesÚfinal_counts
             r9   Ú)test_incremental_variance_update_formulasr…    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Ð0r;   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 )Nrd  rf  rh  r‡   ri  rk  rm  rj  rl  r#  )r*   rC   rÇ   rn  r   r   )ro  rp  r�  r3   rt  ru  rv  rw  rx  ry  rz  s              r9   Ú-test_incremental_mean_and_variance_ignore_nanr‡  '  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 Ñ)Ô)Ð)Ð)Ð)r;   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   rJ   )rM  )r¿   s    r9   Únp_varz=test_incremental_variance_numerical_stability.<locals>.np_varG  s   € Ø�uŠu˜!ˆu‰}Œ}Ðr;   c                 ó–   — | j         d         }| dz                       d¬¦  «        |z  }|                      d¬¦  «        |z  dz  }||z
  S )Nr   r(   rJ   )rM   rZ   )r3   r¾   Úexp_x2Úexpx_2s       r9   Úone_pass_varzCtest_incremental_variance_numerical_stability.<locals>.one_pass_varL  sN   € ØŒG�AŒJˆØ�Q‘$—’ �Ñ#Ô# aÑ'ˆØ—%’%˜Q�%‘-”- !Ñ#¨Ñ)ˆØ˜‰Ðr;   c                 óŽ   — |                       d¬¦  «        }|                      ¦   «         }t          j         ||z
  dz  d¬¦  «        S )Nr   rJ   r(   )rL  ri   r*   )r3   rL  ÚYs      r9   Útwo_pass_varzCtest_incremental_variance_numerical_stability.<locals>.two_pass_varU  s=   € Ø�vŠv˜1ˆv‰~Œ~ˆØ�FŠF‰HŒHˆÝŒw˜˜D™ Q‘¨QÐ/Ñ/Ô/Ð/r;   c                 óx   — |dz   }|t          |¦  «        z  }| |z  ||z  z   }||z  | |z
  | |z
  z  |z  z   }|||fS )Nr'   )Úfloat)rN   rW  Úlast_varianceÚlast_sample_countÚupdated_sample_countÚsamples_ratioÚupdated_meanÚupdated_variances           r9   Ú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ÐCr;   rž   r(   i'  g    „×—Ar‡   gñhãˆµøä>r   rJ   rU  r'   )r*   rC   ry   r=  r}  ÚvstackrÕ   rÖ   Úzerosr  rM   rL  rÇ   r   r  r   r   )rŠ  rŽ  r‘  rš  r¨   rd   rc   Úx1Úx2ÚA0ÚA1r¿   rL  rM  r¾   rò   s                   r9   Ú-test_incremental_variance_numerical_stabilityr¡  C  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™Ñ(Ô(×,Ò,Ñ.Ô.Ò.Ð.Ð.Ð.Ð.Ð.r;   c                  ó´  — t           j                             d¦  «        } |                      dd¦  «        }|j        \  }}dD �]”}t          j        d|j        d         |¦  «        }|d         |j        d         k    rt          j        ||g¦  «        }t          |d d…         |dd …         ¦  «        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œ   r"   )é   r¢   é%   r   r¥   r'   rJ   r‡   r?   )r*   r+   r,   r¼   rM   r  ÚhstackÚziprL  rM  r}  rÇ   r   r   r   )r2   r3   rc   rd   Ú
batch_sizeÚstepsrò   ÚjrZ  Úincremental_meansÚincremental_variancesÚincremental_countÚsample_countÚresultÚcalculated_meansÚcalculated_variancess                   r9   Ú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å˜˜c˜r˜cœ
 E¨!¨"¨"¤IÑ.Ô.ð 	@ñ 	@‰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°,Ñ?Ô?Ð?Ñ?ñ'	@ð@ð @r;   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é$   r$   r'   rJ   r   )r*   r+   r,   r¼   ÚargmaxrÕ   r   r   Úsignr  rM   r0  )ÚdataÚmax_abs_rowsÚdata_flippedÚmax_rowsÚsignss        r9   Ú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ÐAr;   c                  ó*  — t           j                             d¦  «        } |                      dd¦  «        }t          j        |¦  «        }t          j        |d¬¦  «                             d¦  «        }t          t          |¦  «        ||z  ¦  «         d S )Nr   r)   r$   r'   rJ   )r¥   r'   )	r*   r+   r,   r¼   ÚexprZ   r  r   r   )r2   r3   Úexp_XÚ	sum_exp_Xs       r9   Útest_softmaxrÀ  ·  sx   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ€AÝŒF�1‰IŒI€EÝ”�u 1Ð%Ñ%Ô%×-Ò-¨gÑ6Ô6€IÝ�g a™jœj¨%°)Ñ*;Ñ<Ô<Ð<Ð<Ð<r;   c                  óð  — t          t          g d¢¦  «        t          j        g d¢¦  «        ¦  «         t          j                             d¦  «                             d¦  «        } t          j        t          ¦  «        5  t          | dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j                             d¦  «         
                    dd¬¦  «        }t          t          |d¬	¦  «        t          j        |d¬	¦  «        ¦  «         t          t          |d
¬	¦  «        t          j        |d
¬	¦  «        ¦  «         t          t          |d¬	¦  «        t          j        |d¬	¦  «        ¦  «         d S )Nr=   r   i † )r*  r)  r³  rF  )r$   r$   r$   r%   rJ   r'   r(   )r   r   r*   Úcumsumr+   r,   r+  rD   rE   ÚRuntimeWarningr-   )Úrr¿   s     r9   Útest_stable_cumsumrÅ  ¿  s}  € Ý•} Y Y YÑ/Ô/µ´¸9¸9¸9Ñ1EÔ1EÑFÔFÐFÝ
Œ	×Ò˜aÑ Ô ×%Ò% fÑ-Ô-€AÝ	Œ•nÑ	%Ô	%ð )ð )Ý�a˜a aÐ(Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ 	Œ	×Ò˜bÑ!Ô!×)Ò)¨$°YÐ)Ñ?Ô?€AÝ•} Q¨QÐ/Ñ/Ô/µ´¸1À1Ð1EÑ1EÔ1EÑFÔFÐFÝ•} Q¨QÐ/Ñ/Ô/µ´¸1À1Ð1EÑ1EÔ1EÑFÔFÐFÝ•} Q¨QÐ/Ñ/Ô/µ´¸1À1Ð1EÑ1EÔ1EÑFÔFÐFÐFÐFs   Á?BÂB"Â%B"ÚA_array_constrÚdenser   )ÚidsÚB_array_constrc                 ó2  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        } ||¦  «        }t          ||d¬¦  «        }t          ||¦  «         d S )Nr   ©é   r"   )r"   r¢   T©Údense_output©r*   r+   r,   rX   rz   r   r   )rÆ  rÉ  r2   r¿   ÚBÚexpectedÚactuals          r9   Útest_safe_sparse_dot_2drÓ  Ì  s–   € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜(Ñ#Ô#€AØ×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€Hàˆ�qÑÔ€AØˆ�qÑÔ€AÝ˜Q °Ð5Ñ5Ô5€Få�F˜HÑ%Ô%Ð%Ð%Ð%r;   c                  ó  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t          j        ||¦  «        }t          j        |¦  «        }t          ||¦  «        }t          ||¦  «         |                      d¦  «        }|                      d¦  «        }t          j        ||¦  «        }t          j        |¦  «        }t          ||¦  «        }t          ||¦  «         d S )Nr   )r(   r)   r>   r$   r?   )r?   r`   )r(   r)   )r>   r$   r)   r?   )	r*   r+   r,   rX   rz   r   r.   r   r   )r2   r¿   rÐ  rÑ  rÒ  s        r9   Útest_safe_sparse_dot_ndrÕ  à  sé   € Ý
Œ)×
Ò
 Ñ
"Ô
"€Cð 	×Ò˜/Ñ*Ô*€AØ×Ò˜&Ñ!Ô!€AÝŒv�a˜‰|Œ|€HÝÔ˜!ÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%ð 	×Ò˜&Ñ!Ô!€AØ×Ò˜,Ñ'Ô'€AÝŒv�a˜‰|Œ|€HÝÔ˜!ÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%r;   c                 óÂ  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        }t          ||¦  «        }t          ||¦  «         |                     d¦  «        }t          j        ||¦  «        } | |¦  «        }t          ||¦  «        }t          ||¦  «         d S )Nr   r"   rË  )r"   rÌ  rÏ  )rÆ  r2   rÐ  r¿   rÑ  rÒ  s         r9   Útest_safe_sparse_dot_2d_1dr×  ô  sÖ   € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜2ÑÔ€Að 	×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€HØˆ�qÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%ð 	×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€HØˆ�qÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%r;   rÎ  TFc                 ót  — t           j                             d¦  «        }t          j        ddd|¬¦  «        }t          j        ddd|¬¦  «        }|                     |¦  «        }t          ||| ¬¦  «        }t          j        |¦  «        |  k    sJ ‚| r|                     ¦   «         }t          ||¦  «         d S )Nr   rÌ  r"   rÐ   )r   rg   r¢   rÍ  )	r*   r+   r,   r   rz   r   ÚissparseÚtoarrayr   )rÎ  r2   r¿   rÐ  rÑ  rÒ  s         r9   Ú!test_safe_sparse_dot_dense_outputrÛ    s·   € å
Œ)×
Ò
 Ñ
"Ô
"€CåŒ�b˜" c¸Ð<Ñ<Ô<€AÝŒ�b˜" c¸Ð<Ñ<Ô<€Aà�uŠu�Q‰xŒx€HÝ˜Q °Ð=Ñ=Ô=€FåŒ?˜6Ñ"Ô"¨<Ð'7Ò8Ð8Ð8Ð8àð &Ø×#Ò#Ñ%Ô%ˆÝ  ¨Ñ2Ô2Ð2Ð2Ð2r;   )\Únumpyr*   rD   Úscipyr   r   Úscipy.linalgr   Úscipy.sparse.linalgr   Úscipy.specialr   Úsklearn.datasetsr   r	   Úsklearn.utilsr
   Úsklearn.utils._arpackr   Úsklearn.utils._testingr   r   r   r   r   r   Úsklearn.utils.extmathr   r   r   r   r   r   r   r   r   r   r   r   r   r   Úsklearn.utils.fixesr    r:   rH   rT   r]   r„   ÚmarkÚparametrizerÇ   rÈ   rt   ry   rˆ   r›   r·   rÃ   rÎ   rÙ   rÛ   rê   rô   rü   r  r  r"  r  r.  r4  rC   ru   Úobjectr:  rB  Úfixturer2   rP  rb  r{  r…  r‡  r¡  r±  r»  rÀ  rÅ  r.   rÓ  rÕ  r×  rÛ  rD  r;   r9   ú<module>rë     s@  ðð Ð Ð Ð Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð à IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ %Ð %Ð %Ð %Ð %Ð %Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  &Ð %Ð %Ð %Ð %Ð %ð)ð )ð )ð
!ð 
!ð 
!ð*ð *ð *ð>ð >ð >ð$KBð KBð KBð\ „×Ò˜ 2¤8¨R¬X°r´zÀ2Ä:Ð"NÑOÔOð)ð )ñ PÔOð)ð „×Ò˜ 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Ð":Ñ;Ô;ðPð Pñ <Ô;ðPð4&3ð &3ð &3ðR&3ð &3ð &3ðR ð  ð  ð@*0ð *0ð *0ðZYð Yð YðEð Eð Eð2	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ÑÔð	
ðñô ð"(ð (ñ#ô ð"(ð	Bð 	Bð 	Bð €„ÑÔð%ð %ñ Ôð%ð „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;ð+ð +ñ <Ô;ð+ð „×Ò˜   Ñ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ð=ð =ð =ð
Gð 
Gð 
Gð „×ÒØ�r”x Ô!2Ð3¸'À8Ð9Lð ñ ô ð „×ÒØ�r”x Ô!2Ð3¸'À8Ð9Lð ñ ô ð&ð &ñô ñô ð&ð&ð &ð &ð( „×ÒØ�r”x Ô!2Ð3¸'À8Ð9Lð ñ ô ð&ð &ñô ð&ð( „×Ò˜¨$°¨Ñ7Ô7ð3ð 3ñ 8Ô7ð3ð 3ð 3r;   