§
    ¦˜ºh‰@  ã            	       óh  — U d dl Z d dlZd dlmZmZ d dlZd dlZd dlm	Z
 d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZmZmZ egZee         ed<   egZee         ed<   eez   ZegZee         ed	<   egZ ee         ed
<   ee z   Z!d:d„Z"d„ Z#d\  Z$Z% e&e$e%z  dz  ¦  «        Z' e"e$e%e'¦  «        \  Z(Z)ej*         +                    dddgddgfddgddgfddgddgfg¦  «        d„ ¦   «         Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1ej*         +                    d e¦  «        d!„ ¦   «         Z2ej*         +                    d e¦  «        d"„ ¦   «         Z3d#„ Z4d$„ Z5d%„ Z6d&„ Z7d'„ Z8d(„ Z9d)„ Z:d*„ Z;d+„ Z<d,„ Z=d-„ Z>ej*         +                    d.e!¦  «        d/„ ¦   «         Z?ej*         +                    d0d1¦  «        ej*         +                    d2d1¦  «        ej*         +                    d.e!¦  «        ej*         +                    d3d4d5g¦  «        d6„ ¦   «         ¦   «         ¦   «         ¦   «         Z@ej*         +                    d.e!¦  «        ej*         +                    d7ejA        ejA        fejB        ejB        fejC        ejB        fejD        ejB        ff¦  «        d8„ ¦   «         ¦   «         ZEej*         +                    d.e!¦  «        d9„ ¦   «         ZFdS );é    N)ÚAnyÚList)ÚDataDimensionalityWarning)Úeuclidean_distances)ÚGaussianRandomProjectionÚSparseRandomProjectionÚ_gaussian_random_matrixÚ_sparse_random_matrixÚjohnson_lindenstrauss_min_dim)Úassert_allcloseÚassert_allclose_dense_sparseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚall_sparse_random_matrixÚall_dense_random_matrixÚall_SparseRandomProjectionÚall_DenseRandomProjectionc                 óB  — t           j                             |¦  «        }t          j        |                     |¦  «        |                     | |¬¦  «        |                     ||¬¦  «        ff| |f¬¦  «        }|                     ¦   «         |                     ¦   «         fS )N©Úsize©Úshape)	ÚnpÚrandomÚRandomStateÚspÚ
coo_matrixÚrandnÚrandintÚtoarrayÚtocsr)Ú	n_samplesÚ
n_featuresÚ
n_nonzerosÚrandom_stateÚrngÚdata_coos         úl/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/tests/test_random_projection.pyÚmake_sparse_random_datar*   %   s™   € Ý
Œ)×
Ò
 Ñ
-Ô
-€CÝŒ}à�IŠI�jÑ!Ô!à—’˜I¨J�Ñ7Ô7Ø—’˜J¨Z�Ñ8Ô8ðð	
ð ˜*Ð%ð	ñ 	ô 	€Hð ×ÒÑÔ˜xŸ~š~Ñ/Ô/Ð/Ð/ó    c                 óV   — t          j        | ¦  «        s| S |                      ¦   «         S ©N)r   Úissparser!   )Úmatrixs    r)   Údensifyr0   4   s)   € ÝŒ;�vÑÔð  Øˆà�~Š~ÑÔÐr+   )é
   éè  g      Y@zn_samples, epséd   én   çÍÌÌÌÌÌì?çš™™™™™ñ?éZ   çš™™™™™¹?ç        é2   iØÿÿÿçš™™™™™É?c                 óŒ   — t          j        t          ¦  «        5  t          | |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©Úeps)ÚpytestÚraisesÚ
ValueErrorr   )r#   r>   s     r)   Útest_invalid_jl_domainrB   E   s‹   € õ 
Œ•zÑ	"Ô	"ð :ð :Ý% i°SÐ9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :s   š9¹=Á =c                  ó"  — t          j        t          ¦  «        5  t          ddgz  ddgz  ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          j                             ddd¬	¦  «        t	          j        dd
¦  «        ¬¦  «         d S )Né   r3   é   r5   r=   é   r1   )r1   r1   r   ç      à?)r?   r@   rA   r   r   r   r    Úfull© r+   r)   Útest_input_size_jl_min_dimrJ   R   sâ   € Ý	Œ•zÑ	"Ô	"ð @ð @Ý% a¨3¨%¡i°Q¸#¸±YÐ?Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @õ "Ý
Œ	×Ò˜!˜R hÐÑ/Ô/µR´W¸XÀsÑ5KÔ5Kðñ ô ð ð ð s   šA Á AÁAc                 ó˜   — g d¢}|D ]B\  }}t          j        t          ¦  «        5   | ||¦  «         d d d ¦  «         n# 1 swxY w Y   ŒCd S )N))r   r   )éÿÿÿÿrF   )rF   rL   )rF   r   )rL   r   ©r?   r@   rA   ©Úrandom_matrixÚinputsÚn_componentsr$   s       r)   Úcheck_input_size_random_matrixrR   ^   s£   € Ø8Ð8Ð8€FØ$*ð 4ð 4Ñ ˆ�jÝŒ]�:Ñ&Ô&ð 	4ð 	4ØˆM˜,¨
Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4øð4ð 4s   ¥>¾A	ÁA	c                 óP   — g d¢}|D ]\  }} | ||¦  «        j         ||fk    sJ ‚Œd S )N))rF   é   )rT   rF   )rT   rT   )rF   rF   r   rN   s       r)   Úcheck_size_generatedrU   e   sb   € Ø-Ð-Ð-€FØ$*ð 
ð 
Ñ ˆ�jØˆ}˜\¨:Ñ6Ô6Ô<ØØðA
ò 
ð 
ð 
ð 
ð 
ð
ð 
r+   c                 óÞ   — t           | ddd¬¦  «        ¦  «        }t          dt          j        |¦  «        d¦  «         t          dt          j                             |¦  «        d¦  «         d S )Ni'  rF   r   ©r&   rD   ç      ð?)r0   r   r   ÚmeanÚlinalgÚnorm)rO   ÚAs     r)   Úcheck_zero_mean_and_unit_normr]   n   sb   € õ 	��˜e Q°QÐ7Ñ7Ô7Ñ8Ô8€Aå˜a¥¤¨¡¤¨QÑ/Ô/Ð/Ý˜c¥2¤9§>¢>°!Ñ#4Ô#4°aÑ8Ô8Ð8Ð8Ð8r+   c                 ó˜   — d\  }}dD ]A}t          j        t          ¦  «        5   | |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   ŒBd S )N)rT   r1   )g      ð¿r9   r6   ©ÚdensityrM   )rO   rQ   r$   r`   s       r)   Ú%check_input_with_sparse_random_matrixra   x   s·   € Ø$Ñ€L�*à#ð Eð EˆÝŒ]�:Ñ&Ô&ð 	Eð 	EØˆM˜,¨
¸GÐDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	EøðEð Es   £>¾A	ÁA	rO   c                 ó`   — t          | ¦  «         t          | ¦  «         t          | ¦  «         d S r-   )rR   rU   r]   )rO   s    r)   Ú$test_basic_property_of_random_matrixrc   €   s4   € õ # =Ñ1Ô1Ð1Ý˜Ñ'Ô'Ð'Ý! -Ñ0Ô0Ð0Ð0Ð0r+   c                 ón   — t          | ¦  «         t          j        | d¬¦  «        }t          |¦  «         d S )NrX   r_   )ra   Ú	functoolsÚpartialr]   )rO   Úrandom_matrix_denses     r)   Ú+test_basic_property_of_sparse_random_matrixrh   ˆ   s;   € å)¨-Ñ8Ô8Ð8å#Ô+¨MÀ3ÐGÑGÔGÐå!Ð"5Ñ6Ô6Ð6Ð6Ð6r+   c                  óÈ   — d} d}t          | |d¬¦  «        }t          dt          j        |¦  «        d¦  «         t          t          j        |d¬¦  «        d| z  d¦  «         d S )	Nr3   r2   r   rW   r9   rE   rF   ©Úddof)r	   r   r   rY   Úvar)rQ   r$   r\   s      r)   Útest_gaussian_random_matrixrm   ‘   sh   € ð €LØ€JÝ ¨jÀqÐIÑIÔI€Aå˜c¥2¤7¨1¡:¤:¨qÑ1Ô1Ð1Ý�bœf Q¨QÐ/Ñ/Ô/°°\Ñ1AÀ1ÑEÔEÐEÐEÐEr+   c            
      óv  — d} d}dD �]°}d|z  }t          | ||d¬¦  «        }t          |¦  «        }t          j        |¦  «        }t          j        |¦  «        t          j        | ¦  «        z  |v sJ ‚t          j        |¦  «         t          j        | ¦  «        z  |v sJ ‚|dk    rt          j        |¦  «        dk    sJ ‚n d	|v sJ ‚t          j        |¦  «        d
k    sJ ‚t          t          j        |d	k    ¦  «        dd|z  z
  d¬¦  «         t          t          j        |t          j        |¦  «        t          j        | ¦  «        z  k    ¦  «        dd|z  z  d¬¦  «         t          t          j        |t          j        |¦  «         t          j        | ¦  «        z  k    ¦  «        dd|z  z  d¬¦  «         t          t          j        |d	k    d¬¦  «        dd|z  z
  dz  |z  d¬¦  «         t          t          j        |t          j        |¦  «        t          j        | ¦  «        z  k    d¬¦  «        ddd|z  z  z
  dz  d|z  z  d¬¦  «         t          t          j        |t          j        |¦  «         t          j        | ¦  «        z  k    d¬¦  «        ddd|z  z  z
  dz  d|z  z  d¬¦  «         �Œ²d S )Nr3   iô  )g333333Ó?rX   rF   r   )r`   r&   rX   rE   r9   rD   )Údecimalrj   )	r
   r0   r   ÚuniqueÚsqrtr   r   rY   rl   )rQ   r$   r`   Úsr\   Úvaluess         r)   Útest_sparse_random_matrixrt   Ÿ   sß  € à€LØ€Jàð ,
ñ ,
ˆØ�‰Kˆå!Ø˜*¨gÀAð
ñ 
ô 
ˆõ �A‰JŒJˆõ ”˜1‘”ˆÝŒw�q‰zŒz�BœG LÑ1Ô1Ñ1°VÐ;Ð;Ð;Ð;Ý”˜‘
”
ˆ{�RœW \Ñ2Ô2Ñ2°fÐ<Ð<Ð<Ð<à�cŠ>ˆ>Ý”7˜6‘?”? aÒ'Ð'Ð'Ð'Ð'à˜&�=�=�=�=Ý”7˜6‘?”? aÒ'Ð'Ð'Ð'õ 	�BœG A¨¢HÑ-Ô-¨q°1°q±5©yÀ!ÐDÑDÔDÐDÝÝŒG�A�œ ™œ¥b¤g¨lÑ&;Ô&;Ñ;Ò;Ñ<Ô<¸aÀ1ÀqÁ5¹kÐSTð	
ñ 	
ô 	
ð 	
õ 	ÝŒG�A�"œ' !™*œ*˜¥r¤w¨|Ñ'<Ô'<Ñ<Ò<Ñ=Ô=¸qÀAÈÁE¹{ÐTUð	
ñ 	
ô 	
ð 	
õ 	�BœF 1¨¢8°!Ð4Ñ4Ô4°q¸1¸q¹5±yÀA±oÈÑ6IÐSTÐUÑUÔUÐUÝÝŒF�1�œ ™
œ
¥R¤W¨\Ñ%:Ô%:Ñ:Ò:ÀÐCÑCÔCØ��a˜!‘e‘‰_ Ñ! Q¨¡UÑ+Øð	
ñ 	
ô 	
ð 	
õ
 	ÝŒF�1�œ ™œ˜¥b¤g¨lÑ&;Ô&;Ñ;Ò;À!ÐDÑDÔDØ��a˜!‘e‘‰_ Ñ! Q¨¡UÑ+Øð	
ñ 	
ô 	
ð 	
ñ 	
ðQ,
ð ,
r+   c                  óÈ   — d} g d¢g}t           D ]R}t          j        t          ¦  «        5   || ¬¦  «                             |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒSd S )NÚauto)r   rF   rE   ©rQ   )Úall_RandomProjectionr?   r@   rA   Úfit)rQ   Úfit_dataÚRandomProjections      r)   Ú0test_random_projection_transformer_invalid_inputr|   Ø   sÉ   € Ø€LØ�	�	ˆ{€HÝ0ð Fð FÐÝŒ]�:Ñ&Ô&ð 	Fð 	FØÐ¨,Ð7Ñ7Ô7×;Ò;¸HÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	FøðFð Fs   ª AÁA	ÁA	c                  óÄ   — t           D ]W} t          j        t          ¦  «        5   | d¬¦  «                             t
          ¦  «         d d d ¦  «         n# 1 swxY w Y   ŒXd S )Nrv   rw   )rx   r?   r@   rA   Ú	transformÚdata)r{   s    r)   Ú test_try_to_transform_before_fitr€   à   s¹   € Ý0ð Bð BÐÝŒ]�:Ñ&Ô&ð 	Bð 	BØÐ¨&Ð1Ñ1Ô1×;Ò;½DÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	BøðBð Bs   £%AÁA	ÁA	c                  óð   — t          ddd¦  «        \  } }t          D ]Y} |dd¬¦  «        }d}t          j        t          |¬¦  «        5  |                     | ¦  «         d d d ¦  «         n# 1 swxY w Y   ŒZd S )Nr2   r3   rv   r8   )rQ   r>   z~eps=0.100000 and n_samples=1000 lead to a target dimension of 5920 which is larger than the original space with n_features=100)Úmatch)r*   rx   r?   r@   rA   ry   )r   Ú_r{   ÚrpÚexpected_msgs        r)   Ú.test_too_many_samples_to_find_a_safe_embeddingr†   æ   sÌ   € Ý% d¨C°Ñ6Ô6�G€Dˆ!å0ð ð ÐØÐ¨6°sÐ;Ñ;Ô;ˆðð 	õ
 Œ]�:¨\Ð:Ñ:Ô:ð 	ð 	Ø�FŠF�4‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øðð s   ÁA*Á*A.	Á1A.	c                  óÊ  — t          ddd¦  «        \  } }d}t          | d¬¦  «        }|                     ¦   «         }|dk    }||         }t          D ]‘} |d|d	¬
¦  «        }|                     | ¦  «        }t          |d¬¦  «        }|                     ¦   «         }||         }||z  }	|	                     ¦   «         d|z   k     sJ ‚d|z
  |	                     ¦   «         k     sJ ‚Œ’d S )Né   iˆ  i˜:  r;   T)Úsquaredr9   rv   r   )rQ   r>   r&   rF   )r*   r   Úravelrx   Úfit_transformÚmaxÚmin)
r   rƒ   r>   Úoriginal_distancesÚnon_identicalr{   r„   Ú	projectedÚprojected_distancesÚdistances_ratios
             r)   Ú(test_random_projection_embedding_qualityr“   ô   s   € Ý% a¨¨uÑ5Ô5�G€Dˆ!Ø
€Cå,¨T¸4Ð@Ñ@Ô@ÐØ+×1Ò1Ñ3Ô3ÐØ&¨#Ò-€Mð ,¨MÔ:Ðå0ð /ð /ÐØÐ¨6°sÈÐKÑKÔKˆØ×$Ò$ TÑ*Ô*ˆ	å1°)ÀTÐJÑJÔJÐØ1×7Ò7Ñ9Ô9Ðð 2°-Ô@Ðà-Ð0BÑBˆð
 ×"Ò"Ñ$Ô$ q¨3¡wÒ.Ð.Ð.Ð.Ø�3‰w˜×,Ò,Ñ.Ô.Ò.Ð.Ð.Ð.Ð.ð!/ð /r+   c                  óp  — t           D �],}  | ddd¬¦  «        }|                     t          ¦  «         t          |                     t          ¦  «        t
          j        ¦  «        sJ ‚t          j        t          ¦  «        }t          |                     |¦  «        t
          j        ¦  «        sJ ‚ | ddd¬¦  «        }|                     t          ¦  «        }t          |                     t          ¦  «        t
          j        ¦  «        sJ ‚t          j	        |                     |¦  «        ¦  «        sJ ‚�Œ.d S )Nr1   Tr   )rQ   Údense_outputr&   F)
r   ry   r   Ú
isinstancer~   r   Úndarrayr   Ú
csr_matrixr.   )ÚSparseRandomProjr„   Úsparse_datas      r)   Ú+test_SparseRandomProj_output_representationr›     s  € Ý6ð 6ñ 6Ðð Ð¨2¸DÈqÐQÑQÔQˆØ
�Š�t‰ŒˆÝ˜"Ÿ,š,¥tÑ,Ô,­b¬jÑ9Ô9Ð9Ð9Ð9å”m¥DÑ)Ô)ˆÝ˜"Ÿ,š, {Ñ3Ô3µR´ZÑ@Ô@Ð@Ð@Ð@ð Ð¨2¸EÐPQÐRÑRÔRˆØ�VŠV•D‰\Œ\ˆå˜"Ÿ,š,¥tÑ,Ô,­b¬jÑ9Ô9Ð9Ð9Ð9õ Œ{˜2Ÿ<š<¨Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5Ñ5ð#6ð 6r+   c                  óø  — t           D �]ð}  | ddd¬¦  «                             t          ¦  «        }|j        dk    sJ ‚|j        dk    sJ ‚| t
          v r#|j        dk    sJ ‚t          |j        dd¦  «         |j	        j
        dt          fk    sJ ‚|                     t          ¦  «        }|j
        t          dfk    sJ ‚|                     t          ¦  «        }t          ||¦  «          | dd¬¦  «        }|                     t          ¦  «        }t          ||¦  «         t!          j        t$          ¦  «        5  |                     t          d d …d	d
…f         ¦  «         d d d ¦  «         n# 1 swxY w Y   | t
          v ry | ddd¬¦  «        }|                     t          ¦  «        }|j
        t          dfk    sJ ‚|j	        j
        dt          fk    sJ ‚|j	        j        dk     sJ ‚d|j	        j        k     sJ ‚�Œòd S )Nrv   r   rG   )rQ   r&   r>   r4   g¸…ëQ¸ž?rE   )r&   r>   rF   rT   r3   gü©ñÒMbP?)rQ   r`   r&   és   éU   )rx   ry   r   rQ   Ún_components_r   r`   r   Údensity_Úcomponents_r   r$   r~   r#   r   r‹   r?   r@   rA   Únnz)r{   r„   Úprojected_1Úprojected_2Úrp2Úprojected_3r�   s          r)   Ú2test_correct_RandomProjection_dimensions_embeddingr§   '  sc  € Ý0ð &+ñ &+ÐØÐ¨6ÀÀsÐKÑKÔK×OÒOÕPTÑUÔUˆð Œ &Ò(Ð(Ð(Ð(ØÔ 3Ò&Ð&Ð&Ð&àÕ9Ð9Ð9Ø”: Ò'Ð'Ð'Ð'Ý ¤¨T°1Ñ5Ô5Ð5àŒ~Ô#¨­ZÐ'8Ò8Ð8Ð8Ð8à—l’l¥4Ñ(Ô(ˆØÔ ¥Y°Ð$4Ò4Ð4Ð4Ð4ð —l’l¥4Ñ(Ô(ˆÝ˜;¨Ñ4Ô4Ð4ð Ð¨A°3Ð7Ñ7Ô7ˆØ×'Ò'­Ñ-Ô-ˆÝ˜;¨Ñ4Ô4Ð4õ Œ]�:Ñ&Ô&ð 	'ð 	'Ø�LŠL�˜a˜a˜a  1 ˜fœÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð
 Õ9Ð9Ð9Ø!Ð!¨s¸EÐPQÐRÑRÔRˆBØ×(Ò(­Ñ.Ô.ˆIØ”?¥y°#Ð&6Ò6Ð6Ð6Ð6Ø”>Ô'¨CµÐ+<Ò<Ð<Ð<Ð<Ø”>Ô%¨Ò+Ð+Ð+Ð+Ø˜œÔ*Ò*Ð*Ð*Ð*ùðM&+ð &+s   Ä8'E+Å+E/	Å2E/	c                  ó  — d} t          d| t          | dz  ¦  «        ¦  «        \  }}t          D ]U}t          j        t
          ¦  «        5   || dz   ¬¦  «                             |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒVd S )Né   rT   é   rF   rw   )r*   Úintrx   r?   Úwarnsr   ry   )r$   r   rƒ   r{   s       r)   Ú1test_warning_n_components_greater_than_n_featuresr­   Q  sä   € Ø€JÝ% a¨µS¸Àa¹Ñ5HÔ5HÑIÔI�G€Dˆ!å0ð Dð DÐÝŒ\Õ3Ñ4Ô4ð 	Dð 	DØÐ¨*°q©.Ð9Ñ9Ô9×=Ò=¸dÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	DøðDð Ds   Á	#A8Á8A<	Á?A<	c                  ór  — d} t          d| t          | dz  ¦  «        ¦  «        \  }}t          D ]ˆ} |dd¬¦  «                             |¦  «        } |dd¬¦  «                             t	          j        |¦  «        ¦  «        }t          t          |j        ¦  «        t          |j        ¦  «        ¦  «         Œ‰d S )Nr©   rT   rª   rD   rF   )rQ   r&   )	r*   r«   rx   ry   r   r˜   r   r0   r¡   )r$   r   rƒ   r{   Úrp_denseÚ	rp_sparses         r)   Útest_works_with_sparse_datar±   Z  sË   € Ø€JÝ% a¨µS¸Àa¹Ñ5HÔ5HÑIÔI�G€Dˆ!å0ð 
ð 
ÐØ#Ð#°ÀÐCÑCÔC×GÒGÈÑMÔMˆØ$Ð$°!À!ÐDÑDÔD×HÒHÝŒM˜$ÑÔñ
ô 
ˆ	õ 	"Ý�HÔ(Ñ)Ô)­7°9Ô3HÑ+IÔ+Iñ	
ô 	
ð 	
ð 	
ð
ð 
r+   c                  ó4   — t          dd¬¦  «        dk    sJ ‚dS )zyTest Johnson-Lindenstrauss for small eps.

    Regression test for #17111: before #19374, 32-bit systems would fail.
    r3   çñhãˆµøä>r=   l   JžWN)r   rI   r+   r)   Ú"test_johnson_lindenstrauss_min_dimr´   h  s(   € õ
 )¨°$Ð7Ñ7Ô7¸<ÒGÐGÐGÐGÐGÐGr+   Úrandom_projection_clsc                 ó@  ‡—  | d¬¦  «        }|                      t          ¦  «         |                     ¦   «         }| j                             ¦   «         Št          j        ˆfd„t          |j        ¦  «        D ¦   «         t          ¬¦  «        }t          ||¦  «         d S )NrE   rw   c                 ó   •— g | ]}‰› |› �‘Œ	S rI   rI   )Ú.0ÚiÚclass_name_lowers     €r)   ú
<listcomp>z<test_random_projection_feature_names_out.<locals>.<listcomp>w  s%   ø€ ÐRÐRÐR aÐÐ	!˜aÐ	!Ð	!ÐRÐRÐRr+   )Údtype)ry   r   Úget_feature_names_outÚ__name__Úlowerr   ÚarrayÚrangerŸ   Úobjectr   )rµ   Úrandom_projectionÚ	names_outÚexpected_names_outrº   s       @r)   Ú(test_random_projection_feature_names_outrÆ   p  s§   ø€ à-Ð-¸1Ð=Ñ=Ô=ÐØ×Ò�$ÑÔÐØ!×7Ò7Ñ9Ô9€IØ,Ô5×;Ò;Ñ=Ô=ÐÝœØRÐRÐRÐR­5Ð1BÔ1PÑ+QÔ+QÐRÑRÔRÝðñ ô Ðõ
 �yÐ"4Ñ5Ô5Ð5Ð5Ð5r+   r#   )rE   é	   r1   é   r2   r$   Úcompute_inverse_componentsTFc                 ód  — d} ||||¬¦  «        }t          | || |z  dz  dz   |¬¦  «        \  }}||fD ]û}	t          j        ¦   «         5  t          j        ddt          ¬¦  «         |                     |	¦  «        }
d d d ¦  «         n# 1 swxY w Y   |r(t          |d	¦  «        sJ ‚|j        }|j        ||fk    sJ ‚| 	                    |
¦  «        }|j        |	j        k    sJ ‚| 
                    |¦  «        }t          |
d
¦  «        r|
                     ¦   «         }
t          |
|dd¬¦  «         Œüd S )Nr1   )rQ   rÉ   r&   r3   rF   rW   Úignorez>The number of components is higher than the number of features)ÚmessageÚcategoryÚinverse_components_r!   gH¯¼šò×z>g»½×Ùß|Û=)ÚrtolÚatol)r*   ÚwarningsÚcatch_warningsÚfilterwarningsr   r‹   ÚhasattrrÎ   r   Úinverse_transformr~   r!   r   )r#   r$   rµ   rÉ   Úglobal_random_seedrQ   rÃ   ÚX_denseÚX_csrÚXr�   Úinv_componentsÚprojected_backÚprojected_agains                 r)   Útest_inverse_transformrÝ   ~  sÜ  € ð €Là-Ð-Ø!Ø#=Ø'ðñ ô Ðõ -ØØØ�JÑ #Ñ%¨Ñ)Ø'ð	ñ ô �N€GˆUð �uÐð Kð KˆÝÔ$Ñ&Ô&ð 	;ð 	;ÝÔ#ØàTå2ðñ ô ð ð *×7Ò7¸Ñ:Ô:ˆIð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð &ð 	FÝÐ,Ð.CÑDÔDÐDÐDÐDØ.ÔBˆNØ!Ô'¨J¸Ð+EÒEÐEÐEÐEà*×<Ò<¸YÑGÔGˆØÔ# q¤wÒ.Ð.Ð.Ð.à+×5Ò5°nÑEÔEˆÝ�9˜iÑ(Ô(ð 	,Ø!×)Ò)Ñ+Ô+ˆIÝ˜	 ?¸ÀEÐJÑJÔJÐJÐJð-Kð Ks   Á	2BÂB	ÂB	zinput_dtype, expected_dtypec                 ó  — t           j                             d¦  «        }|                     dd¦  «        } | d¬¦  «        }|                     |                     |¦  «        ¦  «        }|j        j        |k    sJ ‚|j        |k    sJ ‚d S )Né*   é   é¸  r   rW   )r   r   r   Úrandr‹   Úastyper¡   r¼   )rµ   Úinput_dtypeÚexpected_dtyper'   rÙ   r„   Útransformeds          r)   Ú"test_random_projection_dtype_matchrç   ±  sŽ   € õ Œ)×
Ò
 Ñ
#Ô
#€CØ�Š��TÑÔ€AØ	Ð	¨AÐ	.Ñ	.Ô	.€BØ×"Ò" 1§8¢8¨KÑ#8Ô#8Ñ9Ô9€KàŒ>Ô >Ò1Ð1Ð1Ð1ØÔ Ò.Ð.Ð.Ð.Ð.Ð.r+   c                 óÄ  — d}t           j                             d¦  «        }|                     dd¦  «        } | d¬¦  «        } | d¬¦  «        }|                     |                     t           j        ¦  «        ¦  «        }|                     |                     t           j        ¦  «        ¦  «        }t          |||¬¦  «         t          |j
        |j
        ¦  «         d S )Nr³   rß   rà   rá   r   rW   )rÐ   )r   r   r   râ   r‹   rã   Úfloat32Úfloat64r   r   r¡   )rµ   rÐ   r'   rÙ   Úrp_32Úrp_64Úprojection_32Úprojection_64s           r)   Ú,test_random_projection_numerical_consistencyrï   È  sÊ   € ð €DÝ
Œ)×
Ò
 Ñ
#Ô
#€CØ�Š��TÑÔ€AØ!Ð!¨qÐ1Ñ1Ô1€EØ!Ð!¨qÐ1Ñ1Ô1€Eà×'Ò'¨¯ªµ´Ñ(<Ô(<Ñ=Ô=€MØ×'Ò'¨¯ªµ´Ñ(<Ô(<Ñ=Ô=€Må�M =°tÐ<Ñ<Ô<Ð<å  Ô!2°EÔ4EÑFÔFÐFÐFÐFr+   )r   )Gre   rÑ   Útypingr   r   Únumpyr   r?   Úscipy.sparseÚsparser   Úsklearn.exceptionsr   Úsklearn.metricsr   Úsklearn.random_projectionr   r   r	   r
   r   Úsklearn.utils._testingr   r   r   r   r   r   Ú__annotations__r   Úall_random_matrixr   r   rx   r*   r0   r#   r$   r«   r%   r   Údata_csrÚmarkÚparametrizerB   rJ   rR   rU   r]   ra   rc   rh   rm   rt   r|   r€   r†   r“   r›   r§   r­   r±   r´   rÆ   rÝ   ré   rê   Úint32Úint64rç   rï   rI   r+   r)   ú<module>rÿ      s>  ðØ Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð (=Ð&=Ð ˜$˜sœ)Ð =Ð =Ñ =Ø&=Ð%>Ð ˜˜cœÐ >Ð >Ñ >Ø,Ð/FÑFÐ à)?Ð(@Ð ˜D œIÐ @Ð @Ñ @Ø(@Ð'AÐ ˜4 œ9Ð AÐ AÑ AØ1Ð4MÑMÐ ð
0ð 0ð 0ð 0ð ð  ð  ð #Ñ €	ˆ:ØˆS�˜ZÑ'¨%Ñ/Ñ0Ô0€
Ø(Ð(¨°JÀ
ÑKÔK�€€hð „×ÒØà
ˆsˆ�c˜3�ZÐ Ø
ˆcˆ�S˜#�JÐØ
ˆcˆ�S˜#�JÐðñô ð:ð :ñô ð:ð
ð ð ð4ð 4ð 4ð
ð 
ð 
ð9ð 9ð 9ðEð Eð Eð „×Ò˜Ð*;Ñ<Ô<ð1ð 1ñ =Ô<ð1ð „×Ò˜Ð*BÑCÔCð7ð 7ñ DÔCð7ðFð Fð Fð1
ð 1
ð 1
ðrFð Fð FðBð Bð Bðð ð ð/ð /ð /ð<6ð 6ð 6ð*'+ð '+ð '+ðTDð Dð Dð
ð 
ð 
ðHð Hð Hð „×ÒÐ0Ð2FÑGÔGð
6ð 
6ñ HÔGð
6ð „×Ò˜Ð&:Ñ;Ô;Ø„×Ò˜Ð';Ñ<Ô<Ø„×ÒÐ0Ð2FÑGÔGØ„×ÒÐ5¸¸e°}ÑEÔEð,Kð ,Kñ FÔEñ HÔGñ =Ô<ñ <Ô;ð,Kð^ „×ÒÐ0Ð2FÑGÔGØ„×ÒØ!à	Œ�R”ZÐ Ø	Œ�R”ZÐ Ø	Œ�2”:ÐØ	Œ�2”:Ðð	ñô ð
/ð 
/ñô ñ HÔGð
/ð „×ÒÐ0Ð2FÑGÔGðGð Gñ HÔGðGð Gð Gr+   