Ë
    ÷Q(hé�  ã            
       óT  — 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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(m)Z)m*Z*m+Z+m,Z,m-Z- ej\                  j_                  de(e)z   e*z   e,z   «      d„ «       Z0d„ Z1d„ Z2ej\                  j_                  dejf                  ejh                  ejj                  ejl                  f«      d„ «       Z7ej\                  j_                  dejf                  ejh                  ejj                  ejl                  f«      d„ «       Z8ej\                  j_                  dd«      d„ «       Z9ej\                  j_                  dg d¢«      d„ «       Z:ej\                  j_                  dejj                  ejl                  f«      ej\                  j_                  de*«      d„ «       «       Z;d„ Z<d„ Z=d„ Z>d„ Z?ej\                  j_                  de+e,z   «      d„ «       Z@d„ ZAej\                  j_                  d d!d"g«      d#„ «       ZBd$„ ZCd%„ ZDej\                  j_                  d&g d'¢«      ej\                  j_                  d(g d'¢«      ej\                  j_                  dg d)¢«      ej\                  j_                  d* eEd+«      «      d,„ «       «       «       «       ZFd-„ ZGej\                  j_                  d. ej�                  g d/¢ejf                  ¬0«       ej�                  d1d+gejh                  ¬0«      g ej’                  ejh                  «      f ej�                  g d/¢ejf                  ¬0«       ej�                  d1d+gejl                  ¬0«      g ej’                  ejl                  «      f ej�                  g d/¢ejf                  ¬0«       ej�                  d2d3geJ¬0«      g ej’                  eJ«      fg«      d4„ «       ZK ej˜                  «       d5„ «       ZMej\                  j_                  dejj                  ejl                  g«      d6„ «       ZNej\                  j_                  d7g d8¢«      ej\                  j_                  d9g d:¢«      ej\                  j_                  d;g d<¢«      d=„ «       «       «       ZOej\                  j_                  dejj                  ejl                  g«      d>„ «       ZPd?„ ZQd@„ ZRedA„ «       ZSdB„ ZTdC„ ZUdD„ ZVdE„ ZWej\                  j_                  dFej�                  ge*¢dGge*D � cg c]  } | j°                  ‘Œ c} z   ¬H«      ej\                  j_                  dIej�                  ge*¢dGge*D � cg c]  } | j°                  ‘Œ c} z   ¬H«      dJ„ «       «       ZYej\                  j_                  de*«      dK„ «       ZZej\                  j_                  dLej�                  ge*¢dGge*D � cg c]  } | j°                  ‘Œ c} z   ¬H«      dM„ «       Z[ej\                  j_                  dNdOdPg«      dQ„ «       Z\dR„ Z]yc c} w c c} w c c} w )Sé    N)ÚlinalgÚsparse)Úeigh)Úeigsh)Ú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)Ú_approximate_modeÚ_deterministic_vector_sign_flipÚ_incremental_mean_and_varÚ_randomized_eigshÚ_safe_accumulator_opÚ	cartesianÚdensityÚ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_containerc                 óº   — t         j                  j                  d«      }|j                  dd¬«      }d|d<   d|d<   t	         | |«      «      t	        |«      k(  sJ ‚y )Nr   é
   ©r'   é   ©Úsize)é   é   )r)   é   )ÚnpÚrandomÚRandomStateÚrandintr   )r%   ÚrngÚXs      ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/utils/tests/test_extmath.pyÚtest_densityr6   /   sY   € ô
 �)‰)×
Ñ
 Ó
"€CØ�‰�B˜WˆÓ%€AØ€A€d�GØ€A€d�GäÑ# AÓ&Ó'¬7°1«:Ò5Ð5Ñ5ó    c                  ó$  — t         j                  j                  d«      } | j                  dd¬«      }t        j                  |j
                  «      }dD ]:  }t        ||«      \  }}t        |||¬«      \  }}t        ||«       t        ||«       Œ< y )Nr   r'   r(   r*   )Nr   r,   ©Úaxis)	r/   r0   r1   r2   ÚonesÚshaper$   r   r   )r3   ÚxÚweightsr:   ÚmodeÚscoreÚmode2Úscore2s           r5   Útest_uniform_weightsrC   <   s~   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰�B˜WˆÓ%€AÜ�g‰g�a—g‘gÓ€Gàò *ˆÜ˜A˜t“n‰ˆˆeÜ% a¨°tÔ<‰ˆˆvä˜4 Ô'Ü˜5 &Õ)ñ*r7   c                  ó|  — d} t         j                  j                  d«      }|j                  | d¬«      }|j	                  |j
                  «      }| |d d …d d…f<   |d d …d d…fxx   dz  cc<   t        ||d¬«      \  }}t        || «       t        |j                  «       |d d …d d…f   j                  d«      «       y )Né   r   ©éd   r'   r*   r)   r,   r9   )r/   r0   r1   r2   Úrandom_sampler<   r   r   r   ÚravelÚsum)Úmode_resultr3   r=   Úwr?   r@   s         r5   Útest_random_weightsrM   J   s©   € ð €Kä
�)‰)×
Ñ
 Ó
"€CØ�‰�K iˆÓ0€AØ×Ñ˜!Ÿ'™'Ó"€Aà€A‚aˆˆ!ˆ€e�HØ‚aˆˆ!ˆ€eƒH��MƒHä  1¨1Ô-�K€Dˆ%ä�t˜[Ô)Ü˜eŸk™k›m¨Qªq°"°1°"¨u©X¯\©\¸!«_Õ=r7   Údtypec           
      ó®  — d}d}d}d}| t         j                  k(  rdnd}t        j                  | «      } t        |||dd¬«      j	                  | d	¬
«      }|j
                  ||fk(  sJ ‚t        j                  |d	¬«      \  }}}	|j	                  | d	¬
«      }|j	                  | d	¬
«      }|	j	                  | d	¬
«      }	dD �]  }
t        |||
d¬«      \  }}}| j                  dk(  r3|j                  | k(  sJ ‚|j                  | k(  sJ ‚|j                  | k(  s_J ‚|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(  r3|j                  | k(  sJ ‚|j                  | k(  sJ ‚|j                  | k(  sSJ ‚|j                  j                  dk(  sJ ‚|j                  j                  dk(  sJ ‚|j                  j                  dk(  sJ ‚t        |d | |d | |¬«       ŒÆ �Œ y )NrG   éô  r)   r'   é   ç        r   ©Ú	n_samplesÚ
n_featuresÚeffective_rankÚtail_strengthÚrandom_stateF©Úcopy©Úfull_matrices)ÚautoÚLUÚQR©Úpower_iteration_normalizerrX   Úf©Údecimal)r/   Úfloat32rN   r   Úastyper<   r   Úsvdr   ÚkindÚfloat64r   Údotr!   )rN   rT   rU   ÚrankÚkrd   r4   ÚUÚsÚVtÚ
normalizerÚUaÚsaÚVaÚcsr_containers                  r5   Ú'test_randomized_svd_low_rank_all_dtypesru   \   sç  € ð €IØ€JØ€DØ
€AØœBŸJ™JÒ&‰a¨A€GÜ�H‰H�U‹O€Eô 	ØØØØØô	÷ �fˆU˜€fÓð ð �7‰7�y *Ð-Ò-Ð-Ð-ô �z‰z˜!¨5Ô1�H€A€qˆ"ð 	
�‰�˜UˆÓ#€AØ	�‰�˜UˆÓ#€AØ	�‰�5˜uˆÓ	%€Bà*ó 0Fˆ
ä#Øˆq¨ZÀaô
‰
ˆˆB�ð �:‰:˜ÒØ—8‘8˜uÒ$Ð$Ð$Ø—8‘8˜uÒ$Ð$Ð$Ø—8‘8˜uÒ$Ð$Ð$à—8‘8œrŸz™zÒ)Ð)Ð)Ø—8‘8œrŸz™zÒ)Ð)Ð)Ø—8‘8œrŸz™zÒ)Ð)Ð)à�x‰x˜I q˜>Ò)Ð)Ð)Ø�x‰x˜A˜4ÒÐÐØ�x‰x˜A˜z˜?Ò*Ð*Ð*ô 	˜A˜b˜q˜E 2¨wÕ7ô 	Ü�F‰F�1’Q˜˜˜�U‘8˜R   ¢A ™YÓ'¬¯©°°B«Àõ	
ô
 ,ò 	FˆMÙ˜aÓ ˆAô (Ø�1°È!ô‰JˆB��Bð �z‰z˜SÒ Ø—x‘x 5Ò(Ð(Ð(Ø—x‘x 5Ò(Ð(Ð(Ø—x‘x 5Ò(Ð(Ð(à—x‘x—}‘}¨Ò+Ð+Ð+Ø—x‘x—}‘}¨Ò+Ð+Ð+Ø—x‘x—}‘}¨Ò+Ð+Ð+ä  % 4 ¨"¨U¨d¨)¸WÖEò!	FñA0Fr7   c                 ó0  — t         j                  j                  d«      }t        j                  t        j                  g d¢| ¬«      «      }t         j
                  j                  |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«       y# 1 sw Y   yxY w)z@Test that `_randomized_eigsh` returns the appropriate componentsé*   )ç      ð?ç       ÀrR   ç      @©rN   r*   r   r-   Úmodule)Ún_componentsÚ	selection)r-   rz   ry   )é   r-   ÚvalueN)r/   r0   r1   ÚdiagÚarrayr   ÚqrÚnormalr<   ÚTr   r   ÚpytestÚraisesÚNotImplementedError)rN   r3   r4   Úrand_rotÚeigvalsÚeigvecss         r5   Útest_randomized_eigshrŒ   ¬   så   € ô �)‰)×
Ñ
 Ó
#€CÜ
�‰”—‘Ò.°eÔ<Ó=€Aä�y‰y�|‰|˜CŸJ™J¨A¯G©G˜JÓ4Ó5°aÑ8€HØ�1‰�x—z‘zÑ!€Aô )¨¸ÀhÔOÑ€GˆWà�=‰=˜DÒ Ð Ð Ü˜g¨¨T {Ô3à�=‰=˜FÒ"Ð"Ð"ô 
�‰Ô*Ó	+ñ @Ü˜!¨!°wÕ?÷@÷ @ñ @ús   Ã4DÄDrl   )r'   é2   rG   éÇ   éÈ   c           	      ó(  — d}t        |d¬«      }t        || ddd¬«      \  }}t        || ddddd¬	«      \  }}t        ||| z
  |d
z
  f¬«      \  }}|j                  «       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  rqt        |d¬«      }t        || ddd|¬«      \  }}|j                  «       ddd…   }	||	   }t        ||d¬«       |dd…|	f   }t        ||
«      \  }}t        ||d¬«       yy)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   )rX   r|   é   )r}   r~   Ún_iterrX   é   r_   )r}   r’   Ún_oversamplesrX   ra   r~   r,   )Úsubset_by_indexNéÿÿÿÿrE   rc   r   ÚLA)ÚwhichÚtolÚmaxiterÚv0r'   é   )r   r   r   Úargsortr<   r   r/   Ú
zeros_liker…   r   r
   r   )rl   rU   r4   rŠ   r‹   Ú
eigvals_qrÚ
eigvecs_qrÚeigvals_lapackÚeigvecs_lapackÚindicesÚ
dummy_vecsÚ_r›   Úeigvals_arpackÚeigvecs_arpacks                  r5   Ú(test_randomized_eigsh_compared_to_othersr¨   Ã   sâ  € ð €JÜ˜z¸Ô:€Aô )Ø	˜ X°bÀqôÑ€GˆWô /Ø	ØØØØØ#'ØôÑ€J�
ô &*Ø	˜J¨™N¨J¸©NÐ;ô&Ñ"€N�Nð ×$Ñ$Ó&¡t¨ tÑ,€GØ# GÑ,€NØ#¢A w JÑ/€Nð ×Ñ A 4Ò'Ð'Ð'ä˜g ~¸qÕAÜ˜j¨.À!ÕDð ×Ñ J° ?Ò2Ð2Ð2ä—‘˜wÓ'×)Ñ)€JÜ˜' :Ó.�J€GˆQÜ˜Z¨Ó4�M€J�Ü  °Ó<Ñ€N�AÜ˜g ~¸qÕAÜ˜j¨.À!ÕDð 	ˆ:‚~Ü˜Z°aÔ8ˆä).Øˆq˜ !¨T°bô*
Ñ&ˆ˜ð !×(Ñ(Ó*©4¨R¨4Ñ0ˆà'¨Ñ0ˆÜ! .°.È"ÕMà'ª¨7¨
Ñ3ˆÜ$ ^°ZÓ@Ñˆ˜Ü! .°.È!ÖLð r7   zn,rank))r'   rQ   rF   )rG   éP   )rP   r'   )rP   éú   )rP   i�  c                 ó<  — || k  sJ ‚t         j                  j                  d«      }|j                  | |«      }||j                  z  }t        |||¬«      \  }}t        t         j                  j                  |d¬«      t        j                  |j                  «      «       t        |j                  |z  t        j                  t        j                  |j                  «      «      «       |t        j                  |«      z  |j                  z  }t        ||d¬«       y)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}   rX   r   r9   rE   rc   N)r/   r0   r1   Úrandnr…   r   r   r   Únormr;   r<   r�   )Únrk   r3   r4   ÚAÚSÚVÚA_reconstructs           r5   Ú&test_randomized_eigsh_reconst_low_rankr´     sÎ   € ð$ �!Š8€Oˆ8ô �)‰)×
Ñ
 Ó
#€CØ�	‰	�!�TÓ€AØ	ˆA�C‰C‰€Aô ˜Q¨TÀÔD�D€A€qäœbŸi™iŸn™n¨Q°Q˜nÓ7¼¿¹ÀÇÁÓ9IÔJÜ˜aŸc™c A™g¤r§w¡w¬r¯w©w°q·w±wÓ/?Ó'@ÔAàœŸ™ ›
‘N Q§S¡SÑ(€Mô ˜m¨Q¸Ö:r7   rt   c                 óZ  — t         j                  j                  d«      j                  dd«      }| t         j                  u rd}nd}|j                  | d¬«      }|dz  j                  d¬	«      }t        |t        |d
¬«      |«       t        t        j                  |«      t        |«      |«       t         j                  t         j                  fD ]Ù  } ||| ¬«      }|t         j                  u rD|j                  j                  |d¬«      |_        |j                  j                  |d¬«      |_        |j                  j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚t        |t        |d
¬«      |«       t        t        j                  |«      t        |«      |«       ŒÛ y )Nrw   rG   r   r)   FrY   r-   r,   r9   T)Úsquaredr{   )r/   r0   r1   r­   re   rf   rJ   r   r   ÚsqrtÚint32Úint64Úindptrr£   rN   )rN   rt   r4   Ú	precisionÚsq_normÚcsr_index_dtypeÚXcsrs          r5   Útest_row_normsr¿   0  sW  € ô 	�	‰	×Ñ˜bÓ!×'Ñ'¨¨SÓ1€AØ”—
‘
ÑØ‰	àˆ	à	�‰�˜UˆÓ#€AØ�!‰t�j‰j˜aˆjÓ €Gä˜g¤y°¸DÔ'AÀ9ÔMÜœbŸg™g gÓ.´	¸!³¸iÔHäŸH™H¤b§h¡hÐ/ò 
PˆÙ˜Q eÔ,ˆð œbŸh™hÑ&ØŸ+™+×,Ñ,¨_À5Ð,ÓIˆDŒKØŸ<™<×.Ñ.¨ÀUÐ.ÓKˆDŒLØ�|‰|×!Ñ! _Ò4Ð4Ð4Ø�{‰{× Ñ  OÒ3Ð3Ð3Ü! '¬9°TÀ4Ô+HÈ)ÔTÜ!¤"§'¡'¨'Ó"2´I¸d³OÀYÕOñ
Pr7   c                  ój  — d} d}d}d}t        | ||dd¬«      }|j                  | |fk(  sJ ‚t        j                  |d¬	«      \  }}}d
D ]h  }t	        ||d|d¬«      \  }}}t        j                  |d | |z
  «      j                  «       dkD  sJ ‚t	        |||d¬«      \  }}	}t        |d | |	d¬«       Œj y )NrG   rP   r)   r'   çš™™™™™¹?r   rS   Fr[   ©r]   Únoner^   r_   ©r’   ra   rX   g{®Gáz„?r`   r.   rc   ©	r   r<   r   rg   r   r/   ÚabsÚmaxr   ©
rT   rU   rk   rl   r4   r¥   rn   rp   rr   Úsaps
             r5   Ú'test_randomized_svd_low_rank_with_noiserÊ   L  sê   € à€IØ€JØ€DØ
€Aô 	ØØØØØô	€Að �7‰7�y *Ð-Ò-Ð-Ð-ô �j‰j˜¨%Ô0�G€A€qˆ!à2ò 3ˆ
ô "Øˆq˜°zÐPQô
‰ˆˆ2ˆqô
 �v‰v�a˜˜�e˜b‘jÓ!×%Ñ%Ó'¨$Ò.Ð.Ð.ô #Øˆq¨ZÀaô
‰	ˆˆ3�ô
 	˜A˜b˜q˜E 3°Ö2ñ#3r7   c                  ól  — d} d}d}d}t        | ||dd¬«      }|j                  | |fk(  sJ ‚t        j                  |d¬	«      \  }}}d
D ]i  }t	        ||d|d¬«      \  }}}t        j                  |d | |z
  «      j                  «       dkD  sJ ‚t	        ||d|d¬«      \  }}	}t        |d | |	d¬«       Œk y )NrG   rP   r)   r'   rx   r   rS   Fr[   rÂ   rÄ   rÁ   r.   rc   rÅ   rÈ   s
             r5   Ú!test_randomized_svd_infinite_rankrÌ   u  sí   € à€IØ€JØ€DØ
€Aô 	ØØØØØô	€Að �7‰7�y *Ð-Ò-Ð-Ð-ô �j‰j˜¨%Ô0�G€A€qˆ!Ø2ò 3ˆ
ô "Øˆq˜°zÐPQô
‰ˆˆ2ˆqô
 �v‰v�a˜˜�e˜b‘jÓ!×%Ñ%Ó'¨#Ò-Ð-Ð-ô #Øˆq˜°zÐPQô
‰	ˆˆ3�ô 	˜A˜b˜q˜E 3°Ö2ñ%3r7   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        |	|«       y )NrG   rP   r   r'   g      à?r   rS   r.   F)r’   Ú	transposerX   Tr]   r[   rc   r-   )r   r<   r   r   rg   r   r/   rj   )rT   rU   rk   rl   r4   ÚU1Ús1ÚV1ÚU2Ús2ÚV2ÚU3Ús3ÚV3ÚU4Ús4ÚV4s                    r5   Ú)test_randomized_svd_transpose_consistencyrÛ   ž  sZ  € à€IØ€JØ€DØ
€AäØØØØØô	€Að �7‰7�y *Ð-Ò-Ð-Ð-ä  1¨Q¸%ÈaÔP�J€BˆˆBÜ  1¨Q¸$ÈQÔO�J€BˆˆBÜ  1¨Q¸&ÈqÔQ�J€BˆˆBÜ—‘˜A¨UÔ3�J€BˆˆBä˜˜B˜r ˜F¨AÕ.Ü˜˜B˜r ˜F¨AÕ.Ü˜˜B˜r ˜F¨AÕ.äœŸ™˜r 2›¬¯©¨r²!°R°a°R°%©y¸"¸R¸a¸RÂ¸U¹)Ó(DÈaÕPÜœŸ™˜r 2›¬¯©¨r²!°R°a°R°%©y¸"¸R¸a¸RÂ¸U¹)Ó(DÈaÕPô ˜˜BÕr7   c            	      óD  — t         j                  j                  d«      } t        ddd| ¬«      }|d| j	                  dd|j
                  ¬	«      z  z  }d}t        ||dd
d¬«      \  }}}||j                  t        j                  |«      j                  |«      «      z
  }t        j                  |d¬«      }t        ||dd
d¬«      \  }}}||j                  t        j                  |«      j                  |«      «      z
  }t        j                  |d¬«      }t        j                  ||z
  «      dkD  sJ ‚dD ]è  }	t        ||d|	d¬«      \  }}}||j                  t        j                  |«      j                  |«      «      z
  }t        j                  |d¬«      }dD ]€  }
t        |||
|	d¬«      \  }}}||j                  t        j                  |«      j                  |«      «      z
  }t        j                  |d¬«      }dt        j                  ||z
  «      kD  rŒ€J ‚ Œê y )Nrw   rG   rP   r�   ©rV   rX   r.   r   r-   r*   rÃ   rÄ   Úfro)Úordr“   )r^   r_   r]   )r)   r'   r�   é   )r/   r0   r1   r   r2   r<   r   rj   r�   r   r®   rÆ   )r3   r4   r}   rm   rn   ro   r°   Úerror_2Úerror_20rp   ÚiÚerrors               r5   Ú.test_randomized_svd_power_iteration_normalizerrå   ¾  sô  € ô �)‰)×
Ñ
 Ó
#€CÜ˜S #°bÀsÔK€AØˆˆS�[‰[˜˜A A§G¡Gˆ[Ó,Ñ	,Ñ,€AØ€Lô Ø	ˆ< ¸fÐSTô�H€A€qˆ"ð 	
ˆA�E‰E”"—'‘'˜!“*—.‘. Ó$Ó%Ñ%€AÜ�k‰k˜! Ô'€GÜØ	ˆ< ¸vÐTUô�H€A€qˆ"ð 	
ˆA�E‰E”"—'‘'˜!“*—.‘. Ó$Ó%Ñ%€AÜ�{‰{˜1 %Ô(€HÜ�6‰6�'˜HÑ$Ó%¨Ò+Ð+Ð+à*ò 0ˆ
Ü!ØØØØ'1Øô
‰ˆˆ1ˆbð �—‘”b—g‘g˜a“j—n‘n RÓ(Ó)Ñ)ˆÜ—+‘+˜a UÔ+ˆàò 
	0ˆAÜ%ØØØØ+5Øô‰HˆAˆq�"ð �A—E‘Eœ"Ÿ'™' !›*Ÿ.™.¨Ó,Ó-Ñ-ˆAÜ—K‘K  uÔ-ˆEØœŸ™˜w¨™Ó/Ó/Ð/Ð/ñ
	0ñ0r7   c                 ó<  — t         j                  j                  d«      }t        ddd|¬«      }d} | |«      }dj	                  | j
                  «      }t        j                  t        j                  |¬«      5  t        ||d	d
¬«       d d d «       y # 1 sw Y   y xY w)Nrw   r�   r“   r'   rÝ   r)   zCCalculating SVD of a {} is expensive. csr_matrix is more efficient.)Úmatchr,   rÃ   )r’   ra   )r/   r0   r1   r   ÚformatÚ__name__r†   Úwarnsr   ÚSparseEfficiencyWarningr   )r%   r3   r4   r}   Úwarn_msgs        r5   Ú#test_randomized_svd_sparse_warningsrí   ë  s�   € ô �)‰)×
Ñ
 Ó
#€CÜ˜R °BÀSÔI€AØ€Lá˜Ó€AàM×TÑTØ×%Ñ%ó	
ð ô
 
�‰”f×4Ñ4¸HÔ	Eñ UÜ�q˜,¨qÈVÕT÷U÷ Uñ Uús   Á9BÂBc                  ó¢  — t         j                  j                  d«      } d}d}| j                  ||«      }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¬«       y )
NéÏ  r“   r'   Fr[   ©Úu_based_decisionrE   rc   T)
r/   r0   r1   r­   r   rg   r   r   rj   r…   )ÚrsrT   rU   r4   rm   r±   ro   rÏ   rÑ   ÚXTrÒ   rÔ   ÚU_flip1ÚV_flip1ÚU_flip2ÚV_flip2s                   r5   Útest_svd_fliprø   ü  s!  € ä	�‰×	Ñ	˜tÓ	$€BØ€IØ€JØ
�‰�˜JÓ'€Aô �z‰z˜!¨5Ô1�H€A€qˆ"Ü�a˜¨eÔ4�F€BˆÜœŸ™˜r A™v rÓ*¨A°qÕ9ð 
�‰€BÜ�z‰z˜"¨EÔ2�H€A€qˆ"Ü�a˜¨dÔ3�F€BˆÜœŸ™˜r A™v rÓ*¨B¸Õ:ô    2¸Ô=Ñ€GˆWÜœŸ™˜w¨™{¨GÓ4°bÀ!ÕDÜ  2¸Ô>Ñ€GˆWÜœŸ™˜w¨™{¨GÓ4°bÀ!ÖDr7   zn_samples, n_features)r.   r   )r   r.   c                 óp  — t         j                  j                  |«      }|j                  | |«      }t	        j
                  |d¬«      \  }}}t        ||d¬«      \  }}t        j                  t        j                  |«      d¬«      }	||	t        j                  |j                  d   «      f   dk\  j                  «       sJ ‚t        ||d¬«      \  }}
t        j                  t        j                  |
«      d¬«      }|
t        j                  |
j                  d   «      |f   dk\  j                  «       sJ ‚y )NFr[   Trð   r   r9   r,   )r/   r0   r1   r­   r   rg   r   ÚargmaxrÆ   Úaranger<   Úall)rT   rU   Úglobal_random_seedrò   r4   rm   r¥   ro   rÏ   Úmax_abs_U1_row_idx_for_colrÔ   Úmax_abs_V2_col_idx_for_rows               r5   Útest_svd_flip_max_abs_colsr     sù   € ä	�‰×	Ñ	Ð1Ó	2€BØ
�‰�˜JÓ'€AÜ�z‰z˜!¨5Ô1�H€A€qˆ"ä�Q˜¨TÔ2�E€BˆÜ!#§¡¬2¯6©6°"«:¸AÔ!>ÐØÐ)¬2¯9©9°R·X±X¸a±[Ó+AÐAÑBÀaÑG×LÑLÔNÐNÐNä�Q˜¨UÔ3�E€A€rÜ!#§¡¬2¯6©6°"«:¸AÔ!>ÐØŒr�y‰y˜Ÿ™ !™Ó%Ð'AÐAÑBÀaÑG×LÑLÔNÐNÑNr7   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«      «       ŒÌ y )	Ng       @rR   rx   r-   Té)   ©Ú	flip_signrX   r'   )r/   r‚   r   Úranger   rj   r…   Úeye)ÚaÚu1rÐ   Úv1ÚseedÚu2rÓ   Úv2s           r5   Útest_randomized_svd_sign_flipr  $  sË   € Ü
�‰�3˜�*˜s C˜jÐ)Ó*€AÜ  1°À2ÔF�J€BˆˆBÜ�b“	ò 9ˆÜ# A q°DÀtÔL‰
ˆˆB�Ü˜B Ô#Ü˜B Ô#ÜœBŸF™F 2¨¡7¨BÓ/°Ô3ÜœBŸF™F 2§4¡4¨Ó,¬b¯f©f°Q«iÔ8ÜœBŸF™F 2§4¡4¨Ó,¬b¯f©f°Q«iÕ8ñ9r7   c                  óò   — d„ } t        j                  d«      j                  dd«      }t        |ddd¬«      \  }}} | ||«      \  }}|sJ ‚|rJ ‚t        |dddd¬	«      \  }}} | ||«      \  }}|sJ ‚|rJ ‚y )
Nc                 ó"  — t        j                  | «      j                  d¬«      | j                  d¬«      k(  j                  «       }t        j                  |«      j                  d¬«      |j                  d¬«      k(  j                  «       }||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   r9   r,   )r/   rÆ   rÇ   rü   )ÚuÚvÚu_basedÚv_baseds       r5   Úmax_loading_is_positivezMtest_randomized_svd_sign_flip_with_transpose.<locals>.max_loading_is_positive5  so   € ô
 —6‘6˜!“9—=‘= a�=Ó(¨A¯E©E°q¨E«MÑ9×>Ñ>Ó@ˆÜ—6‘6˜!“9—=‘= a�=Ó(¨A¯E©E°q¨E«MÑ9×>Ñ>Ó@ˆØ˜ÐÐr7   r©   r'   r–   r.   Tr   r  )r  rÎ   rX   )r/   rû   Úreshaper   )	r  ÚmatÚ	u_flippedr¥   Ú	v_flippedr  r  Úu_flipped_with_transposeÚv_flipped_with_transposes	            r5   Ú,test_randomized_svd_sign_flip_with_transposer  0  s©   € ò
 ô �)‰)�FÓ
×
#Ñ
# B¨Ó
+€Cô -¨S°!¸tÐRSÔTÑ€Iˆq�)Ù.¨y¸)ÓDÑ€GˆWÙ€Nˆ7ÙÐˆ;ô =KØˆQ˜$¨$¸Qô=Ñ9Ð˜aÐ!9ñ /Ø Ð":óÑ€GˆWñ €Nˆ7ÙÐˆ;ˆwr7   r¯   )r�   rG   é,  Úm)r'   r“   r�   r
  r)   c                 ó®  — t         j                  j                  |«      }|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¬«       y )NÚgesddr   )Úsvd_lapack_driverrX   Úgesvdgü©ñÒMbP?)ÚatolÚrtol)r/   r0   r1   Úrandr   r<   r   )r¯   r  rl   r
  r3   r4   r  rÐ   Úvt1r  rÓ   Úvt2s               r5   Ú!test_randomized_svd_lapack_driverr'  Q  sÃ   € ô �)‰)×
Ñ
 Ó
%€CØ�‰��A‹€Aô !  A¸ÈqÔQ�K€BˆˆCÜ   A¸ÈqÔQ�K€BˆˆCð �8‰8�r—x‘xÒÐÐÜ�B˜ ¨Õ.à�8‰8�r—x‘xÒÐÐÜ�B˜ ¨Õ.à�9‰9˜Ÿ	™	Ò!Ð!Ð!Ü�C˜ 1¨4Ö0r7   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«      «       y )N©r,   r-   r.   r   r)   rE   rQ   )r,   r   rE   )r,   r   rQ   )r,   r)   rE   )r,   r)   rQ   )r-   r   rE   )r-   r   rQ   )r-   r)   rE   )r-   r)   rQ   )r.   r   rE   )r.   r   rQ   )r.   r)   rE   )r.   r)   rQ   r.   )r/   r‚   r   r   rû   Únewaxis)ÚaxesÚtrue_outÚoutr=   s       r5   Útest_cartesianr.  k  s«   € ô �H‰H’YÓ¤§¡¨1¨a¨&Ó!1´2·8±8¸QÀ¸FÓ3CÐD€Dä�x‰xâÚÚÚÚÚÚÚÚÚÚÚð	
ó€Hô" �D‹/€CÜ�x Ô%ô 	�	‰	�!‹€AÜ�qšœBŸJ™J˜Ñ'¬°A°4«Õ9r7   zarrays, output_dtyper)  r{   r   r=   Úyc                 ó<   — t        | «      }|j                  |k(  sJ ‚y)z8Check that the cartesian product works with mixed types.N)r   rN   )ÚarraysÚoutput_dtypeÚoutputs      r5   Útest_cartesian_mix_typesr4  ‰  s    € ô& �vÓ€Fà�<‰<˜<Ò'Ð'Ñ'r7   c                  ó@   — t         j                  j                  d«      S )Nrw   )r/   r0   r1   © r7   r5   r3   r3   ¡  s   € ä�9‰9× Ñ  Ó$Ð$r7   c                 ó\  — d}| j                  dd«      j                  |«      |z  }| j                  |j                  d   «      |z  }t        |ddd|¬«      \  }}}t	        j
                  ||d¬«      }t	        j
                  |dz  |d¬«      |dz  z
  }	t        ||«       t        ||	«       y )Nr'   éè  r“   r   ©Úsample_weight©r>   r:   r-   )r$  rf   r<   r   r/   Úaverager   )
r3   rN   Úmultr4   r:  ÚmeanÚvarr¥   Úexpected_meanÚexpected_vars
             r5   Ú2test_incremental_weighted_mean_and_variance_simplerB  ¦  s¡   € à€DØ�‰��rÓ×!Ñ! %Ó(¨4Ñ/€AØ—H‘H˜QŸW™W Q™ZÓ(¨4Ñ/€MÜ,¨Q°°1°aÀ}ÔU�L€Dˆ#ˆqä—J‘J˜q¨-¸aÔ@€MÜ—:‘:˜a ™d¨MÀÔBÀ]ÐTUÑEUÑU€LÜ˜˜mÔ,Ü˜˜\Õ*r7   r>  )r   ç    ÐcAg    ÐcÁr?  )r,   ç:Œ0âŽyE>g     jø@zweight_loc, weight_scale))r   r,   )r   rD  )r,   rD  )r'   r,   )rC  r,   c                 óØ  — d„ }d}|j                  |||d   ¬«      }|j                  | ||¬«      }t        t        j                  ||d¬«      }	t        t        j                  ||	z
  dz  |d¬«      }
 ||||	|
«       |j                  | ||¬«      }t        j                  |d   «      }t        t        j
                  |d¬«      }	t        t        j                  |d¬«      }
 ||||	|
«       y )Nc           
      óô   — | j                   d   }d|dz  dz   |dz  dz   |dz  dz   |fD ]M  }d\  }}}t        ||«      D ]  }	t        | |	   |||||	   ¬«      \  }}}Œ t        ||«       t        ||d¬	«       ŒO y )
Nr   r,   r'   r   r-   )r   r   r   r9  ç�íµ ÷Æ°>)r"  )r<   r	   r   r   )
r4   r:  r@  rA  r¯   Ú
chunk_sizeÚ	last_meanÚlast_weight_sumÚlast_varÚbatchs
             r5   Ú_assertz<test_incremental_weighted_mean_and_variance.<locals>._assert¼  s¤   € Ø�G‰G�A‰JˆØ˜a 2™g¨™k¨1°©6°A©:°q¸A±vÀ±zÀ1ÐEò 	?ˆJØ3:Ñ0ˆI�¨Ü$ Q¨
Ó3ò �Ü7PØ�e‘HØØØ#Ø"/°Ñ"6ô8Ñ4�	˜8¡_ðô ˜I }Ô5Ü˜H l¸Ö>ñ	?r7   )rG   r“   r   )ÚlocÚscaler+   r;  r-   r9   )r„   r   r/   r<  r;   r>  r?  )r>  r?  Ú
weight_locÚweight_scaler3   rM  r+   Úweightr4   r@  rA  Úones_weights               r5   Ú+test_incremental_weighted_mean_and_variancerT  ³  sÛ   € ò?ð €DØ�Z‰Z˜J¨lÀÀaÁˆZÓI€Fð 	�
‰
�t 3¨Tˆ
Ó2€AÜ(¬¯©°QÀÈQÔO€MÜ'Ü
�
‰
�Q˜Ñ&¨1Ñ,°fÀ1ô€Lñ ˆAˆv�} lÔ3ð 	�
‰
�t 3¨Tˆ
Ó2€AÜ—'‘'˜$˜q™'Ó"€KÜ(¬¯©°!¸!Ô<€MÜ'¬¯©°¸Ô:€LÙˆAˆ{˜M¨<Õ8r7   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«      j	                  | «      }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«      j	                  | «      }t        |||||¬«      \  }}	}
t        |||||¬«      \  }}}t        ||«       t        ||	«       t        ||
«       y )N©ç     ¸€@rW  rW  rW  ©ç     �°@rY  rY  rY  ©r-   r-   r-   r-   r{   r.   r   ©éª   r\  r\  r\  ©é®  r^  r^  r^  ©r  r  r  r  r\  r^  r  r9  )r/   r‚   r¸   r;   rf   Únanr   r   )rN   Ú	old_meansÚold_variancesÚold_weight_sumÚsample_weights_XÚsample_weights_X_nanr4   ÚX_nanÚX_meansÚX_variancesÚX_countÚX_nan_meansÚX_nan_variancesÚX_nan_counts                 r5   Ú6test_incremental_weighted_mean_and_variance_ignore_nanrm  Þ  s;  € ä—‘Ò5Ó6€IÜ—H‘HÒ=Ó>€MÜ—X‘Xšl´"·(±(Ô;€NÜ—w‘w˜q“zÐÜŸ7™7 1›:Ðä
�‰Ú	Ò3Ò5IÐJó	ç�fˆUƒmð ô �H‰Hà”"—&‘&˜#˜sÐ#Ü�V‰V�S˜#˜sÐ#Ø�#”r—v‘v˜sÐ#Ø�#�sœBŸF™FÐ#ð		
ó÷ �fˆUƒmð 
ô %>Ø	ˆ9�m ^ÐCSô%Ñ!€Gˆ[˜'ô 1JØØØØØ*ô1Ñ-€K� +ô �K Ô)Ü�O [Ô1Ü�K Õ)r7   c                  ó  — t        j                  g d¢g d¢g d¢g d¢g«      j                  } d}| d |…d d …f   }| |d …d d …f   }|j                  d¬«      }|j	                  d¬«      }t        j
                  |j                  d   |j                  d   t         j                  ¬«      }t        ||||«      \  }}}	t        || j                  d¬«      d«       t        || j	                  d¬«      d«       t        |	| j                  d   «       y )N)iX  iÖ  r\  r^  r  r-   r   r9   r,   r{   rE   )
r/   r‚   r…   r>  r?  Úfullr<   r¸   r   r   )
r°   ÚidxÚX1ÚX2ra  rb  Úold_sample_countÚfinal_meansÚfinal_variancesÚfinal_counts
             r5   Ú)test_incremental_variance_update_formulasrw    sô   € ô 	�‰â%Ú%Ú%Ú%ð		
ó	÷ �að ð €CØ	
ˆ4ˆCˆ4’ˆ7‰€BØ	
ˆ3‰4’ˆ7‰€Bà—‘˜Q�“€IØ—F‘F �F“N€MÜ—w‘w˜rŸx™x¨™{¨B¯H©H°Q©K¼r¿x¹xÔHÐÜ0IØ
ˆI�}Ð&6ó1Ñ-€K� +ô ˜ Q§V¡V° V£^°QÔ7Ü˜¨¯©°A¨«¸Ô:Ü˜ Q§W¡W¨Q¡ZÕ0r7   c            	      ó<  — 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        |
|«       y )NrV  rX  rZ  r{   r[  r]  r_  r\  r^  r  )r/   r‚   r¸   r`  r   r   )ra  rb  rs  r4   rf  rg  rh  ri  rj  rk  rl  s              r5   Ú-test_incremental_mean_and_variance_ignore_nanry    sû   € Ü—‘Ò5Ó6€IÜ—H‘HÒ=Ó>€MÜ—x‘x¢´B·H±HÔ=Ðä
�‰Ò&Ò(<Ò>RÐSÓT€Aä�H‰Hà”"—&‘&˜#˜sÐ#Ü�V‰V�S˜#˜sÐ#Ø�#”r—v‘v˜sÐ#Ø�#�sœBŸF™FÐ#ð		
ó€Eô %>Ø	ˆ9�mÐ%5ó%Ñ!€Gˆ[˜'ô 1JØˆy˜-Ð)9ó1Ñ-€K� +ô �K Ô)Ü�O [Ô1Ü�K Õ)r7   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
  «      j                  «       |kD  sJ ‚|	dd d …f   t        j                  |«      |dz  }}}t        |
j                  d   «      D ]  } ||
|d d …f   |||«      \  }}}Œ ||j                  d   k(  sJ ‚t        j                  |j                  d¬«      |z
  «      j                  «       dkD  sJ ‚t        j                   | |«      |z
  «      j                  «       |kD  sJ ‚|	dd d …f   t        j                  |«      }}t        j                  ||dz  t         j                  ¬	«      }t        |
j                  d   «      D ]9  }t        |
|d d …f   j                  d|
j                  d   f«      |||«      \  }}}Œ; t        ||j                  d   «       t!        |j                  d¬«      |«       |t        j                   | |«      |z
  «      j                  «       kD  sJ ‚y )Nc                 ó&   — | j                  d¬«      S )Nr   r9   )r?  )r°   s    r5   Únp_varz=test_incremental_variance_numerical_stability.<locals>.np_var=  s   € Ø�u‰u˜!ˆu‹}Ðr7   c                 óŠ   — | j                   d   }| dz  j                  d¬«      |z  }| j                  d¬«      |z  dz  }||z
  S )Nr   r-   r9   )r<   rJ   )r4   r¯   Úexp_x2Úexpx_2s       r5   Úone_pass_varzCtest_incremental_variance_numerical_stability.<locals>.one_pass_varB  sK   € Ø�G‰G�A‰JˆØ�Q‘$—‘ �Ó# aÑ'ˆØ—%‘%˜Q�%“- !Ñ#¨Ñ)ˆØ˜‰Ðr7   c                 ó€   — | j                  d¬«      }| j                  «       }t        j                   ||z
  dz  d¬«      S )Nr   r9   r-   )r>  rZ   r/   )r4   r>  ÚYs      r5   Útwo_pass_varzCtest_incremental_variance_numerical_stability.<locals>.two_pass_varK  s5   € Ø�v‰v˜1ˆv‹~ˆØ�F‰F‹HˆÜ�w‰w˜˜D™ Q‘¨QÔ/Ð/r7   c                 óp   — |dz   }|t        |«      z  }| |z  ||z  z   }||z  | |z
  | |z
  z  |z  z   }|||fS )Nr,   )Úfloat)r=   rI  Úlast_varianceÚlast_sample_countÚupdated_sample_countÚsamples_ratioÚupdated_meanÚupdated_variances           r5   Únaive_mean_variance_updatezQtest_incremental_variance_numerical_stability.<locals>.naive_mean_variance_updateS  sm   € Ø0°1Ñ4ÐØ)¬EÐ2FÓ,GÑGˆØÐ/Ñ/°)¸mÑ2KÑKˆà˜MÑ)Ø�9‰}  \Ñ!1Ñ2Ð5IÑIñJð 	ð Ð-Ð/CÐCÐCr7   r�   r-   i'  g    „×—Ar{   gñhãˆµøä>r   r9   rG  r,   )r/   r‚   ri   Úlogro  ÚvstackrÆ   rÇ   Úzerosr  r<   r>  r¸   r   r  r   r   )r|  r€  rƒ  rŒ  r™   rU   rT   Úx1Úx2ÚA0ÚA1r°   r>  r?  r¯   rã   s                   r5   Ú-test_incremental_variance_numerical_stabilityr”  9  su  € òò
ò0òDð €CØ€JØ€IÜ	�‰�#œRŸZ™ZÔ	(€BÜ	�‰�œBŸJ™JÔ	'€BÜ	�‰�)˜q‘. *Ð-¨r¼¿¹Ô	D€BÜ	�‰�)˜q‘. *Ð-¨r¼¿¹Ô	D€BÜ
�	‰	�2�r�(Ó€Aô �6‰6‘&˜“)™l¨1›oÑ-Ó.×2Ñ2Ó4°sÒ:Ð:Ð:ð
 �aš�d‘8œRŸX™X jÓ1°9À±>ˆqˆ#€DÜ�2—8‘8˜A‘;Óò JˆÙ1°"°Qº°T±(¸DÀ#ÀqÓI‰ˆˆc‘1ðJà�—‘˜‘
Š?Ðˆ?ä�6‰6�!—&‘&˜a�&“. 4Ñ'Ó(×,Ñ,Ó.°Ò5Ð5Ð5Ü�6‰6‘&˜“)˜c‘/Ó"×&Ñ&Ó(¨3Ò.Ð.Ð.ð �1’a�4‘œ"Ÿ(™( :Ó.ˆ#€DÜ
�‰�
˜I¨™N´"·(±(Ô;€AÜ�2—8‘8˜A‘;Óò 
ˆÜ0Øˆq’!ˆt‰H×Ñ˜a §¡¨!¡Ð-Ó.°°c¸1ó
‰ˆˆc‘1ð
ô �q˜!Ÿ'™' !™*Ô%Ü˜aŸf™f¨!˜f›n¨dÔ3Ø”—‘™˜q›	 C™Ó(×,Ñ,Ó.Ò.Ð.Ñ.r7   c                  óv  — t         j                  j                  d«      } | j                  dd«      }|j                  \  }}dD �]s  }t        j
                  d|j                  d   |«      }|d   |j                  d   k7  rt        j                  ||g«      }t        |d d |dd  «      D �]
  \  }}|||…d d …f   }|dk(  rt|j                  d¬«      }	|j                  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        ||«       �Œ �Œv y )Nrï   r�   r'   )é   r“   é%   r   r–   r,   r9   r{   rE   )r/   r0   r1   r­   r<   rû   ÚhstackÚzipr>  r?  ro  r¸   r   r   r   )r3   r4   rT   rU   Ú
batch_sizeÚstepsrã   ÚjrL  Úincremental_meansÚincremental_variancesÚincremental_countÚsample_countÚresultÚcalculated_meansÚcalculated_variancess                   r5   Útest_incremental_variance_ddofr¤  ‚  s«  € ä
�)‰)×
Ñ
 Ó
%€CØ�	‰	�"�bÓ€AØŸG™GÑ€IˆzØ"ó @ˆ
Ü—	‘	˜!˜QŸW™W Q™Z¨Ó4ˆØ�‰9˜Ÿ™ ™
Ò"Ü—I‘I˜u iÐ0Ó1ˆEä˜˜c˜r˜
 E¨!¨" IÓ.ó 	@‰DˆAˆqØ�a˜�cš1�f‘IˆEØ�AŠvØ$)§J¡J°A JÓ$6Ð!Ø(-¯	©	°q¨	Ó(9Ð%à$)§K¡K°¡NÐ!Ü!Ÿw™w u§{¡{°1¡~°u·{±{À1±~ÌRÏXÉXÔV‘ä2ØÐ,Ð.CÀ\ó�ð QWÑMÐ"Ð$9Ð;LØ §¡¨A¡Ñ.�ä!Ÿw™w q¨¨! u°1Ô5ÐÜ#%§6¡6¨!¨B¨Q¨%°aÔ#8Ð ÜÐ 1Ð3CÀQÔGÜÐ 5Ð7KÈQÔOÜÐ0°,Ö?ò'	@ñ@r7   c                  óº  — t         j                  j                  d«      j                  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  «       y )Né$   r)   r,   r9   r   )r/   r0   r1   r­   rú   rÆ   r   r   Úsignr  r<   r*  )ÚdataÚmax_abs_rowsÚdata_flippedÚmax_rowsÚsignss        r5   Útest_vector_sign_flipr­  ¢  s    € ä�9‰9× Ñ  Ó$×*Ñ*¨1¨aÓ0€DÜ—9‘9œRŸV™V D›\°Ô2€LÜ2°4Ó8€LÜ�y‰y˜¨AÔ.€HÜ�| XÔ.Ü�G‰G�Dœ˜tŸz™z¨!™}Ó-¨|Ð;Ñ<Ó=€EÜ�t˜\¨E²!´R·Z±Z°-Ñ,@Ñ@ÕAr7   c                  ó  — t         j                  j                  d«      } | j                  dd«      }t        j                  |«      }t        j
                  |d¬«      j                  d«      }t        t        |«      ||z  «       y )Nr   r.   r)   r,   r9   )r–   r,   )	r/   r0   r1   r­   ÚexprJ   r  r   r   )r3   r4   Úexp_XÚ	sum_exp_Xs       r5   Útest_softmaxr²  ­  s`   € Ü
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AÜ�F‰F�1‹I€EÜ—‘�u 1Ô%×-Ñ-¨gÓ6€IÜœg a›j¨%°)Ñ*;Õ<r7   c                  ó˜  — t        t        g d¢«      t        j                  g d¢«      «       t        j                  j                  d«      j                  d«      } t        j                  t        «      5  t        | dd¬«       d d d «       t        j                  j                  d«      j                  dd¬«      }t        t        |d¬	«      t        j                  |d¬	«      «       t        t        |d
¬	«      t        j                  |d
¬	«      «       t        t        |d¬	«      t        j                  |d¬	«      «       y # 1 sw Y   Œ¾xY w)Nr)  r   i † )r#  r"  r¦  r8  )r)   r)   r)   r*   r9   r,   r-   )r   r   r/   Úcumsumr0   r1   r$  r†   rê   ÚRuntimeWarningr2   )Úrr°   s     r5   Útest_stable_cumsumr·  µ  sà   € Ü”}¢YÓ/´·±º9Ó1EÔFÜ
�	‰	×Ñ˜aÓ ×%Ñ% fÓ-€AÜ	�‰”nÓ	%ñ )Ü�a˜a aÕ(÷)ô 	�	‰	×Ñ˜bÓ!×)Ñ)¨$°YÐ)Ó?€AÜ”} Q¨QÔ/´·±¸1À1Ô1EÔFÜ”} Q¨QÔ/´·±¸1À1Ô1EÔFÜ”} Q¨QÔ/´·±¸1À1Ô1EÕF÷)ð )ús   Á4E Å E	ÚA_containerÚdense)ÚidsÚB_containerc                 ó  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  ||«      } | |«      } ||«      }t        ||d¬«      }t        ||«       y )Nr   ©é   r'   )r'   r“   T©Údense_output©r/   r0   r1   rH   rj   r   r   )r¸  r»  r3   r°   ÚBÚexpectedÚactuals          r5   Útest_safe_sparse_dot_2drÅ  Â  sq   € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜(Ó#€AØ×Ñ˜(Ó#€AÜ�v‰v�a˜‹|€Há�A‹€AÙ�A‹€AÜ˜Q °Ô5€Fä�F˜HÕ%r7   c                 ó¢  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  ||«      } | |«      }t        ||«      }t        ||«       |j                  d«      }|j                  d«      }t        j                  ||«      } | |«      }t        ||«      }t        ||«       y )Nr   )r-   r.   r   r)   rE   )rE   rQ   )r-   r.   )r   r)   r.   rE   rÁ  )rt   r3   r°   rÂ  rÃ  rÄ  s         r5   Útest_safe_sparse_dot_ndrÇ  Ú  s¸   € ä
�)‰)×
Ñ
 Ó
"€Cð 	×Ñ˜/Ó*€AØ×Ñ˜&Ó!€AÜ�v‰v�a˜‹|€HÙ�aÓ€AÜ˜Q Ó"€FÜ�F˜HÔ%ð 	×Ñ˜&Ó!€AØ×Ñ˜,Ó'€AÜ�v‰v�a˜‹|€HÙ�aÓ€AÜ˜Q Ó"€FÜ�F˜HÕ%r7   Ú	containerc                 óx  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  ||«      }t         | |«      |«      }t        ||«       |j                  d«      }t        j                  ||«      }t        | | |«      «      }t        ||«       y )Nr   r'   r½  )r'   r¾  rÁ  )rÈ  r3   rÂ  r°   rÃ  rÄ  s         r5   Útest_safe_sparse_dot_2d_1drÊ  ï  sž   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜2Ó€Að 	×Ñ˜(Ó#€AÜ�v‰v�a˜‹|€HÜ™Y q›\¨1Ó-€FÜ�F˜HÔ%ð 	×Ñ˜(Ó#€AÜ�v‰v�a˜‹|€HÜ˜Q¡	¨!£Ó-€FÜ�F˜HÕ%r7   rÀ  TFc                 óV  — t         j                  j                  d«      }t        j                  ddd|¬«      }t        j                  ddd|¬«      }|j	                  |«      }t        ||| ¬«      }t        j                  |«      |  k(  sJ ‚| r|j                  «       }t        ||«       y )Nr   r¾  r'   rÁ   )r   rX   r“   r¿  )	r/   r0   r1   r   rj   r   ÚissparseÚtoarrayr   )rÀ  r3   r°   rÂ  rÃ  rÄ  s         r5   Ú!test_safe_sparse_dot_dense_outputrÎ    sŽ   € ä
�)‰)×
Ñ
 Ó
"€Cä�‰�b˜" c¸Ô<€AÜ�‰�b˜" c¸Ô<€Aà�u‰u�Q‹x€HÜ˜Q °Ô=€Fä�?‰?˜6Ó"¨<Ð'7Ò8Ð8Ð8áØ×#Ñ#Ó%ˆÜ  ¨Õ2r7   c                  óŠ   — t        j                  ddgt         j                  ¬«      } t        | dd¬«      }t	        |ddg«       y	)
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¸‚ r8  r{   i¨a  r   )Úclass_countsÚn_drawsr3   i®`  rª   N)r/   r‚   r¸   r   r   )r4   Úrets     r5   Útest_approximate_moderÓ    s:   € ô 	�‰�%˜�¤b§h¡hÔ/€AÜ
¨°E¸qÔ
A€Cô
 �s˜U C˜LÕ)r7   )^Únumpyr/   r†   Úscipyr   r   Úscipy.linalgr   Úscipy.sparse.linalgr   Ú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    r!   r"   r#   r$   ÚmarkÚparametrizer6   rC   rM   r¸   r¹   re   ri   ru   rŒ   r¨   r´   r¿   rÊ   rÌ   rÛ   rå   rí   rø   r   r  r  r  r'  r.  r‚   rN   Úobjectr4  Úfixturer3   rB  rT  rm  rw  ry  r”  r¤  r­  r²  r·  ré   rÅ  rÇ  rÊ  rÎ  rÓ  )rÈ  s   0r5   ú<module>râ     s  ðó Û ß  Ý Ý %ç IÝ %Ý 1÷÷ ÷÷ ÷ ÷ ÷ ÷ ð ‡�×ÑØØ�^Ñ# nÑ4°~ÑEóñ6ó	ð6ò*ò>ð$ ‡�×Ñ˜ 2§8¡8¨R¯X©X°r·z±zÀ2Ç:Á:Ð"NÓOñLFó PðLFð^ ‡�×Ñ˜ 2§8¡8¨R¯X©X°r·z±zÀ2Ç:Á:Ð"NÓOñ@ó Pð@ð, ‡�×Ñ˜Ð5Ó6ñDMó 7ðDMðN ‡�×ÑØòó
ñ;ó
ð;ð4 ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;Ø‡�×Ñ˜¨.Ó9ñPó :ó <ðPò4&3òR&3òR ò@*0ðZ ‡�×ÑÐ+¨^¸nÑ-LÓMñUó NðUò Eð2 ‡�×ÑÐ0°6¸6Ð2BÓCñOó DðOò	9òðB ‡�×Ñ˜šnÓ-Ø‡�×Ñ˜šnÓ-Ø‡�×Ñ˜šlÓ+Ø‡�×Ñ˜¡ q£Ó*ñ1ó +ó ,ó .ó .ð1ò,:ð< ‡�×ÑØð ˆR�X‰X’i r§x¡xÔ0°(°"·(±(¸A¸q¸6ÈÏÉÔ2RÐSØˆB�H‰H�R—X‘XÓð	
ð
 ˆR�X‰X’i r§x¡xÔ0°(°"·(±(¸A¸q¸6ÈÏÉÔ2TÐUØˆB�H‰H�R—Z‘ZÓ ð	
ð
 ˆR�X‰X’i r§x¡xÔ0°(°"·(±(¸CÀ¸:ÈVÔ2TÐUØˆB�H‰H�VÓð	
ðóñ"(ó#ð"(ð €‡�Óñ%ó ð%ð ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;ñ	+ó <ð	+ð ‡�×Ñ˜¢Ó0Ø‡�×Ñ˜¢Ó/Ø‡�×ÑØÒ Qóñ#9óó 0ó 1ð
#9ðL ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;ñ!*ó <ð!*òH1ò4*ð8 ñE/ó ðE/òP@ò@Bò=ò
Gð ‡�×ÑØØ‡X�XÐ�ÐØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ð
 ‡�×ÑØØ‡X�XÐ�ÐØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
&óóð&ð ‡�×Ñ˜¨.Ó9ñ&ó :ð&ð( ‡�×ÑØØ‡X�XÐ�ÐØ	ˆ	¸ÖH¨I�Y×'Ó'ÒHÑHð ó ñ
&óð
&ð" ‡�×Ñ˜¨$°¨Ó7ñ3ó 8ð3ó *ùòc Iùò
 IùòP Is   ÔXÕX ×X%