§
    §éUgÙ’  ã            
       ó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 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(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ej1         2                    de+e,z   e-z   e/z   ¦  «        d„ ¦   «         Z3d„ Z4d„ Z5ej1         2                    dej6        ej7        ej8        ej9        f¦  «        d„ ¦   «         Z:ej1         2                    dej6        ej7        ej8        ej9        f¦  «        d„ ¦   «         Z;ej1         2                    dd¦  «        d„ ¦   «         Z<ej1         2                    dg d¢¦  «        d„ ¦   «         Z=ej1         2                    dej8        ej9        f¦  «        ej1         2                    de-¦  «        d„ ¦   «         ¦   «         Z>d„ Z?d„ Z@d„ ZAd„ ZBej1         2                    de.e/z   ¦  «        d„ ¦   «         ZCd „ ZDej1         2                    d!d"d#g¦  «        d$„ ¦   «         ZEd%„ ZFd&„ ZGej1         2                    d'g d(¢¦  «        ej1         2                    d)g d(¢¦  «        ej1         2                    dg d*¢¦  «        ej1         2                    d+ eHd,¦  «        ¦  «        d-„ ¦   «         ¦   «         ¦   «         ¦   «         ZId.„ ZJej1         2                    d/ ejK        g d0¢ej6        ¬1¦  «         ejK        d2d,gej7        ¬1¦  «        g ejL        ej7        ¦  «        f ejK        g d0¢ej6        ¬1¦  «         ejK        d2d,gej9        ¬1¦  «        g ejL        ej9        ¦  «        f ejK        g d0¢ej6        ¬1¦  «         ejK        d3d4geM¬1¦  «        g ejL        eM¦  «        fg¦  «        d5„ ¦   «         ZNd6„ ZO ejP        ¦   «         d7„ ¦   «         ZQej1         2                    dej8        ej9        g¦  «        d8„ ¦   «         ZRej1         2                    d9g d:¢¦  «        ej1         2                    d;g d<¢¦  «        ej1         2                    d=g d>¢¦  «        d?„ ¦   «         ¦   «         ¦   «         ZSej1         2                    dej8        ej9        g¦  «        d@„ ¦   «         ZTdA„ ZUdB„ ZVedC„ ¦   «         ZWdD„ ZXdE„ ZYdF„ ZZdG„ Z[ej1         2                    dHejK        ge-¢dIgdJ„ e-D ¦   «         z   ¬K¦  «        ej1         2                    dLejK        ge-¢dIgdM„ e-D ¦   «         z   ¬K¦  «        dN„ ¦   «         ¦   «         Z\ej1         2                    de-¦  «        dO„ ¦   «         Z]ej1         2                    dPejK        ge-¢dIgdQ„ e-D ¦   «         z   ¬K¦  «        dR„ ¦   «         Z^ej1         2                    dSdTdUg¦  «        dV„ ¦   «         Z_dW„ Z`dS )Xé    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)Ú_approximate_modeÚ_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)ÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERSÚLIL_CONTAINERSÚ_modeÚsparse_containerc                 óÜ   — t           j                             d¦  «        }|                     dd¬¦  «        }d|d<   d|d<   t	           | |¦  «        ¦  «        t	          |¦  «        k    sJ ‚d S )Nr   é
   ©r)   é   ©Úsize)é   é   )r+   é   )ÚnpÚrandomÚRandomStateÚrandintr   )r'   ÚrngÚXs      ú_/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/utils/tests/test_extmath.pyÚtest_densityr8   3   sq   € õ
 Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�B˜WˆÑ%Ô%€AØ€A€d�GØ€A€d�GåÐ#Ð# AÑ&Ô&Ñ'Ô'­7°1©:¬:Ò5Ð5Ð5Ð5Ð5Ð5ó    c                  ó>  — t           j                             d¦  «        } |                      dd¬¦  «        }t          j        |j        ¦  «        }dD ]J}t          ||¦  «        \  }}t          |||¬¦  «        \  }}t          ||¦  «         t          ||¦  «         ŒKd S )Nr   r)   r*   r,   )Nr   r.   ©Úaxis)	r1   r2   r3   r4   ÚonesÚshaper&   r    r   )r5   ÚxÚweightsr<   ÚmodeÚscoreÚmode2Úscore2s           r7   Útest_uniform_weightsrE   @   s¢   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�B˜WˆÑ%Ô%€AÝŒg�a”gÑÔ€Gàð *ð *ˆÝ˜A˜t‘n”n‰ˆˆeÝ% a¨°tÐ<Ñ<Ô<‰ˆˆvå˜4 Ñ'Ô'Ð'Ý˜5 &Ñ)Ô)Ð)Ð)ð*ð *r9   c                  ó¸  — d} t           j                             d¦  «        }|                     | d¬¦  «        }|                     |j        ¦  «        }| |d d …d d…f<   |d d …d d…fxx         dz  cc<   t          ||d¬¦  «        \  }}t          || ¦  «         t          | 	                    ¦   «         |d d …d d…f          
                    d¦  «        ¦  «         d S )Né   r   ©éd   r)   r,   r+   r.   r;   )r1   r2   r3   r4   Úrandom_sampler>   r    r   r   ÚravelÚsum)Úmode_resultr5   r?   ÚwrA   rB   s         r7   Útest_random_weightsrO   N   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¯\ª\¸!©_¬_Ñ=Ô=Ð=Ð=Ð=r9   Údtypec           
      óZ  — d}d}d}d}| t           j        k    rdnd}t          j        | ¦  «        } t          |||dd¬¦  «                             | d	¬
¦  «        }|j        ||fk    sJ ‚t          j        |d	¬¦  «        \  }}}	|                     | d	¬
¦  «        }|                     | d	¬
¦  «        }|	                     | d	¬
¦  «        }	dD �]ß}
t          |||
d¬¦  «        \  }}}| j	        dk    r(|j        | k    sJ ‚|j        | k    sJ ‚|j        | k    sJ ‚nE|j        t           j
        k    sJ ‚|j        t           j
        k    sJ ‚|j        t           j
        k    sJ ‚|j        ||fk    sJ ‚|j        |fk    sJ ‚|j        ||fk    sJ ‚t          |d |…         ||¬¦  «         t          t          j        |d d …d |…f         |	d |…d d …f         ¦  «        t          j        ||¦  «        |¬¦  «         t          D ]¯} ||¦  «        }t          |||
d¬¦  «        \  }}}| j	        dk    r(|j        | k    sJ ‚|j        | k    sJ ‚|j        | k    sJ ‚n6|j        j	        dk    sJ ‚|j        j	        dk    sJ ‚|j        j	        dk    sJ ‚t          |d |…         |d |…         |¬¦  «         Œ°�Œád S )NrI   éô  r+   r)   é   ç        r   ©Ú	n_samplesÚ
n_featuresÚeffective_rankÚtail_strengthÚrandom_stateF©Úcopy©Úfull_matrices)ÚautoÚLUÚQR©Úpower_iteration_normalizerrZ   Úf©Údecimal)r1   Úfloat32rP   r   Úastyper>   r   Úsvdr   ÚkindÚfloat64r   Údotr#   )rP   rV   rW   ÚrankÚkrf   r6   ÚUÚsÚVtÚ
normalizerÚUaÚsaÚVaÚcsr_containers                  r7   Ú'test_randomized_svd_low_rank_all_dtypesrw   `   sn  € ð €IØ€JØ€DØ
€AØ�BœJÒ&Ð&ˆaˆa¨A€GÝŒH�U‰OŒO€Eõ 	ØØØØØð	ñ 	ô 	÷ ‚fˆU˜€fÑÔð ð Œ7�y *Ð-Ò-Ð-Ð-Ð-õ Œz˜!¨5Ð1Ñ1Ô1�H€A€qˆ"ð 	
�Š�˜UˆÑ#Ô#€AØ	�Š�˜UˆÑ#Ô#€AØ	�Š�5˜uˆÑ	%Ô	%€Bà*ð 0Fñ 0Fˆ
å#Øˆq¨ZÀað
ñ 
ô 
‰
ˆˆB�ð Œ:˜ÒÐØ”8˜uÒ$Ð$Ð$Ð$Ø”8˜uÒ$Ð$Ð$Ð$Ø”8˜uÒ$Ð$Ð$Ð$Ð$à”8�rœzÒ)Ð)Ð)Ð)Ø”8�rœzÒ)Ð)Ð)Ð)Ø”8�rœzÒ)Ð)Ð)Ð)àŒx˜I q˜>Ò)Ð)Ð)Ð)ØŒx˜A˜4ÒÐÐÐØŒx˜A˜z˜?Ò*Ð*Ð*Ð*õ 	˜A˜b˜q˜bœE 2¨wÐ7Ñ7Ô7Ð7õ 	ÝŒF�1�Q�Q�Q˜˜˜�U”8˜R    A A A œYÑ'Ô'­¬°°B©¬Àð	
ñ 	
ô 	
ð 	
õ
 ,ð 	Fð 	FˆMØ�˜aÑ Ô ˆAõ (Ø�1°È!ðñ ô ‰JˆB��Bð Œz˜SÒ Ð Ø”x 5Ò(Ð(Ð(Ð(Ø”x 5Ò(Ð(Ð(Ð(Ø”x 5Ò(Ð(Ð(Ð(Ð(à”x”}¨Ò+Ð+Ð+Ð+Ø”x”}¨Ò+Ð+Ð+Ð+Ø”x”}¨Ò+Ð+Ð+Ð+å  % 4 %¤¨"¨U¨d¨U¬)¸WÐEÑEÔEÐEÐEñ!	FðA0Fð 0Fr9   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é*   )ç      ð?ç       ÀrT   ç      @©rP   r,   r   r/   Úmodule)Ún_componentsÚ	selection)r/   r|   r{   )é   r/   ÚvalueN)r1   r2   r3   ÚdiagÚarrayr   ÚqrÚnormalr>   ÚTr   r   ÚpytestÚraisesÚNotImplementedError)rP   r5   r6   Úrand_rotÚeigvalsÚeigvecss         r7   Ú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rn   )r)   é2   rI   éÇ   éÈ   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   )rZ   r~   é   )r   r€   Ún_iterrZ   é   ra   )r   r”   Ún_oversamplesrZ   rc   r€   r.   )Úsubset_by_indexNéÿÿÿÿrG   re   r�   ÚLA)ÚwhichÚtolÚmaxiterÚv0r)   é   )r	   r   r   Úargsortr>   r   r1   Ú
zeros_liker‡   r   r   r   )rn   rW   r6   rŒ   r�   Ú
eigvals_qrÚ
eigvecs_qrÚeigvals_lapackÚeigvecs_lapackÚindicesÚ
dummy_vecsÚ_r�   Úeigvals_arpackÚeigvecs_arpacks                  r7   Ú(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ð €~r9   zn,rank))r)   rS   rH   )rI   éP   )rR   r)   )rR   éú   )rR   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   rZ   r   r;   rG   re   N)r1   r2   r3   Úrandnr‡   r   r   r   Únormr=   r>   rƒ   )Únrm   r5   r6   ÚAÚSÚVÚA_reconstructs           r7   Ú&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¸Ð:Ñ:Ô:Ð:Ð:Ð:r9   rv   c                 ój  — t           j                             d¦  «                             dd¦  «        }| t           j        u rd}nd}|                     | d¬¦  «        }|dz                       d¬	¦  «        }t          |t          |d
¬¦  «        |¦  «         t          t          j	        |¦  «        t          |¦  «        |¦  «         t           j
        t           j        fD ]Ó} ||| ¬¦  «        }|t           j        u rB|j                             |d¬¦  «        |_        |j                             |d¬¦  «        |_        |j        j        |k    sJ ‚|j        j        |k    sJ ‚t          |t          |d
¬¦  «        |¦  «         t          t          j	        |¦  «        t          |¦  «        |¦  «         ŒÔd S )Nry   rI   r�   r+   Fr[   r/   r.   r;   T)Úsquaredr}   )r1   r2   r3   r¯   rg   rh   rL   r   r   ÚsqrtÚint32Úint64Úindptrr¥   rP   )rP   rv   r6   Ú	precisionÚsq_normÚcsr_index_dtypeÚXcsrs          r7   Útest_row_normsrÁ   4  s   € õ 	Œ	×Ò˜bÑ!Ô!×'Ò'¨¨SÑ1Ô1€AØ•”
ÐÐØˆ	ˆ	àˆ	à	�Š�˜UˆÑ#Ô#€AØ�!‰t�jŠj˜aˆjÑ Ô €Gå˜g¥y°¸DÐ'AÑ'AÔ'AÀ9ÑMÔMÐMÝ�bœg gÑ.Ô.µ	¸!±´¸iÑHÔHÐHåœH¥b¤hÐ/ð 
Pð 
PˆØˆ}˜Q eÐ,Ñ,Ô,ˆð �bœhÐ&Ð&Øœ+×,Ò,¨_À5Ð,ÑIÔIˆDŒKØœ<×.Ò.¨ÀUÐ.ÑKÔKˆDŒLØŒ|Ô! _Ò4Ð4Ð4Ð4ØŒ{Ô  OÒ3Ð3Ð3Ð3Ý! '­9°TÀ4Ð+HÑ+HÔ+HÈ)ÑTÔTÐTÝ!¥"¤'¨'Ñ"2Ô"2µI¸d±O´OÀYÑOÔOÐOÐOð
Pð 
Pr9   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 )NrI   rR   r+   r)   çš™™™™™¹?r   rU   Fr]   ©r_   Únoner`   ra   ©r”   rc   rZ   g{®Gáz„?rb   r0   re   ©	r   r>   r   ri   r   r1   ÚabsÚmaxr   ©
rV   rW   rm   rn   r6   r§   rp   rr   rt   Úsaps
             r7   Ú'test_randomized_svd_low_rank_with_noiserÌ   P  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ð 3r9   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 )NrI   rR   r+   r)   rz   r   rU   Fr]   rÄ   rÆ   rÃ   r0   re   rÇ   rÊ   s
             r7   Ú!test_randomized_svd_infinite_rankrÎ   y  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ð 3r9   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 )NrI   rR   r�   r)   g      à?r   rU   r0   F)r”   Ú	transposerZ   Tr_   r]   re   r/   )r   r>   r   r   ri   r   r1   rl   )rV   rW   rm   rn   r6   ÚU1Ús1ÚV1ÚU2Ús2ÚV2ÚU3Ús3ÚV3ÚU4Ús4ÚV4s                    r7   Ú)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ÑÔÐÐÐr9   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 )Nry   rI   rR   r�   ©rX   rZ   r0   r   r/   r,   rÅ   rÆ   Úfro)Úordr•   )r`   ra   r_   )r+   r)   r�   é   )r1   r2   r3   r   r4   r>   r   rl   rƒ   r   r°   rÈ   )r5   r6   r   ro   rp   rq   r²   Úerror_2Úerror_20rr   ÚiÚerrors               r7   Ú.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ð 0r9   c                 óP  — t           j                             d¦  «        }t          ddd|¬¦  «        }d} | |¦  «        }d                     | j        ¦  «        }t          j        t          j	        |¬¦  «        5  t          ||d	d
¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nry   r�   r•   r)   rß   r+   zCCalculating SVD of a {} is expensive. csr_matrix is more efficient.©Úmatchr.   rÅ   )r”   rc   )r1   r2   r3   r   ÚformatÚ__name__rˆ   Úwarnsr   ÚSparseEfficiencyWarningr   )r'   r5   r6   r   Úwarn_msgs        r7   Ú#test_randomized_svd_sparse_warningsrð   ï  s  € õ Œ)×
Ò
 Ñ
#Ô
#€CÝ˜R °BÀSÐIÑIÔI€AØ€LàÐ˜ÑÔ€AàM×TÒTØÔ%ñ	
ô 	
ð õ
 
Œ•fÔ4¸HÐ	EÑ	EÔ	Eð Uð UÝ�q˜,¨qÈVÐTÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð Us   Á:BÂBÂ"Bc                  óÖ  — t           j                             d¦  «        } d}d}|                      ||¦  «        }t	          j        |d¬¦  «        \  }}}t          ||d¬¦  «        \  }}t          t          j        ||z  |¦  «        |d¬¦  «         |j	        }	t	          j        |	d¬¦  «        \  }}}t          ||d	¬¦  «        \  }
}t          t          j        |
|z  |¦  «        |	d¬¦  «         t          ||d	¬¦  «        \  }}t          t          j        ||z  |¦  «        |	d¬¦  «         t          ||d¬¦  «        \  }}t          t          j        ||z  |¦  «        |	d¬¦  «         d S )
NéÏ  r•   r)   Fr]   ©Úu_based_decisionrG   re   T)
r1   r2   r3   r¯   r   ri   r   r   rl   r‡   )ÚrsrV   rW   r6   ro   r³   rq   rÑ   rÓ   ÚXTrÔ   rÖ   ÚU_flip1ÚV_flip1ÚU_flip2ÚV_flip2s                   r7   Ú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ÐDr9   zn_samples, n_features)r0   r�   )r�   r0   c                 ó”  — t           j                             |¦  «        }|                     | |¦  «        }t	          j        |d¬¦  «        \  }}}t          ||d¬¦  «        \  }}t          j        t          j        |¦  «        d¬¦  «        }	||	t          j	        |j
        d         ¦  «        f         dk                         ¦   «         sJ ‚t          ||d¬¦  «        \  }}
t          j        t          j        |
¦  «        d¬¦  «        }|
t          j	        |
j
        d         ¦  «        |f         dk                         ¦   «         sJ ‚d S )NFr]   Tró   r   r;   r.   )r1   r2   r3   r¯   r   ri   r   ÚargmaxrÈ   Úaranger>   Úall)rV   rW   Úglobal_random_seedrõ   r6   ro   r§   rq   rÑ   Úmax_abs_U1_row_idx_for_colrÖ   Úmax_abs_V2_col_idx_for_rows               r7   Útest_svd_flip_max_abs_colsr    s%  € å	Œ×	Ò	Ð1Ñ	2Ô	2€BØ
�Š�˜JÑ'Ô'€AÝŒz˜!¨5Ð1Ñ1Ô1�H€A€qˆ"å�Q˜¨TÐ2Ñ2Ô2�E€BˆÝ!#¤­2¬6°"©:¬:¸AÐ!>Ñ!>Ô!>ÐØÐ)­2¬9°R´X¸a´[Ñ+AÔ+AÐAÔBÀaÒG×LÒLÑNÔNÐNÐNÐNå�Q˜¨UÐ3Ñ3Ô3�E€A€rÝ!#¤­2¬6°"©:¬:¸AÐ!>Ñ!>Ô!>ÐØ�rŒy˜œ !œÑ%Ô%Ð'AÐAÔBÀaÒG×LÒLÑNÔNÐNÐNÐNÐNÐNr9   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       @rT   rz   r/   Té)   ©Ú	flip_signrZ   r)   )r1   r„   r   Úranger   rl   r‡   Úeye)ÚaÚu1rÒ   Úv1ÚseedÚu2rÕ   Úv2s           r7   Ú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ð 9r9   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   r;   r.   )r1   rÈ   rÉ   rÿ   )ÚuÚvÚu_basedÚv_baseds       r7   Úmax_loading_is_positivezMtest_randomized_svd_sign_flip_with_transpose.<locals>.max_loading_is_positive9  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×>Ò>Ñ@Ô@ˆØ˜ÐÐr9   r«   r)   r˜   r0   Tr   r  )r  rÐ   rZ   )r1   rþ   Úreshaper   )	r  ÚmatÚ	u_flippedr§   Ú	v_flippedr  r  Úu_flipped_with_transposeÚv_flipped_with_transposes	            r7   Ú,test_randomized_svd_sign_flip_with_transposer  4  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ØÐÐÐÐÐr9   r±   )r�   rI   é,  Ú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_driverrZ   Úgesvdgü©ñÒMbP?)ÚatolÚrtol)r1   r2   r3   Úrandr   r>   r   )r±   r   rn   r  r5   r6   r  rÒ   Úvt1r  rÕ   Úvt2s               r7   Ú!test_randomized_svd_lapack_driverr*  U  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Ð0r9   c                  óÂ  — t          j        g d¢¦  «        t          j        ddg¦  «        t          j        ddg¦  «        f} t          j        g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          | ¦  «        }t          ||¦  «         t          j        d¦  «        }t          |d d …t           j        f         t          |f¦  «        ¦  «         d S )N©r.   r/   r0   r�   r+   rG   rS   )r.   r�   rG   )r.   r�   rS   )r.   r+   rG   )r.   r+   rS   )r/   r�   rG   )r/   r�   rS   )r/   r+   rG   )r/   r+   rS   )r0   r�   rG   )r0   r�   rS   )r0   r+   rG   )r0   r+   rS   r0   )r1   r„   r   r   rþ   Únewaxis)ÚaxesÚtrue_outÚoutr?   s       r7   Útest_cartesianr1  o  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Ð9r9   zarrays, output_dtyper,  r}   r�   r?   Úyc                 ó>   — t          | ¦  «        }|j        |k    sJ ‚dS )z8Check that the cartesian product works with mixed types.N)r   rP   )ÚarraysÚoutput_dtypeÚoutputs      r7   Útest_cartesian_mix_typesr7  �  s*   € õ& �vÑÔ€FàŒ<˜<Ò'Ð'Ð'Ð'Ð'Ð'r9   c                  óÀ  — d„ } t          j        ddd¦  «        }d}t          j        t          |¬¦  «        5  t          t          |¦  «         | |¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ddg¦  «        }t          j        t          |¬¦  «        5  t          t          |¦  «        d	d
g¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 óD   — t          j        t          | ¦  «        ¦  «        S )N)r1   Úlogr   )r?   s    r7   Únaive_log_logisticz1test_logistic_sigmoid.<locals>.naive_log_logistic¨  s   € ÝŒv•e˜A‘h”hÑÔÐr9   éþÿÿÿr/   r�   z0`log_logistic` is deprecated and will be removedré   g      YÀg      Y@iœÿÿÿr   )r1   Úlinspacerˆ   rí   ÚFutureWarningr   r   r„   )r;  r?   rï   Ú	extreme_xs       r7   Útest_logistic_sigmoidr@  ¦  s†  € ð ð  ð  õ 	Œ�B˜˜2ÑÔ€AØA€HÝ	Œ•m¨8Ð	4Ñ	4Ô	4ð Jð JÝ!¥,¨q¡/¤/Ð3EÐ3EÀaÑ3HÔ3HÑIÔIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jõ ”˜& %˜Ñ)Ô)€IÝ	Œ•m¨8Ð	4Ñ	4Ô	4ð Fð FÝ!¥,¨yÑ"9Ô"9¸DÀ!¸9ÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fs#   ·'A*Á*A.Á1A.Â& CÃCÃCc                  ó@   — t           j                             d¦  «        S )Nry   )r1   r2   r3   © r9   r7   r5   r5   µ  s   € åŒ9× Ò  Ñ$Ô$Ð$r9   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©r@   r<   r/   )r'  rh   r>   r   r1   Úaverager   )
r5   rP   Úmultr6   rF  ÚmeanÚvarr§   Úexpected_meanÚexpected_vars
             r7   Ú2test_incremental_weighted_mean_and_variance_simplerN  º  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Ý”:˜a ™d¨MÀÐBÑBÔBÀ]ÐTUÑEUÑU€LÝ˜˜mÑ,Ô,Ð,Ý˜˜\Ñ*Ô*Ð*Ð*Ð*r9   rJ  )r   ç    ÐcAg    ÐcÁrK  )r.   ç:Œ0âŽyE>g     jø@zweight_loc, weight_scale))r   r.   )r   rP  )r.   rP  )r)   r.   )rO  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   rE  ç�íµ ÷Æ°>)r%  )r>   r
   r   r   )
r6   rF  rL  rM  r±   Ú
chunk_sizeÚ	last_meanÚlast_weight_sumÚlast_varÚbatchs
             r7   Ú_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¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?r9   )rI   r•   r   )ÚlocÚscaler-   rG  r/   r;   )r†   r   r1   rH  r=   rJ  rK  )rJ  rK  Ú
weight_locÚweight_scaler5   rY  r-   Úweightr6   rL  rM  Úones_weights               r7   Ú+test_incremental_weighted_mean_and_variancer`  Ç  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Ð8r9   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©ç     ¸€@rc  rc  rc  ©ç     �°@re  re  re  ©r/   r/   r/   r/   r}   r0   r�   ©éª   rh  rh  rh  ©é®  rj  rj  rj  ©r  r  r  r  rh  rj  r  rE  )r1   r„   rº   r=   rh   Únanr   r   )rP   Ú	old_meansÚold_variancesÚold_weight_sumÚsample_weights_XÚsample_weights_X_nanr6   ÚX_nanÚX_meansÚX_variancesÚX_countÚX_nan_meansÚX_nan_variancesÚX_nan_counts                 r7   Ú6test_incremental_weighted_mean_and_variance_ignore_nanry  ò  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 Ñ)Ô)Ð)Ð)Ð)r9   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Ö  rh  rj  r  r/   r   r;   r.   r}   rG   )
r1   r„   r‡   rJ  rK  Úfullr>   rº   r   r   )
r²   ÚidxÚX1ÚX2rm  rn  Úold_sample_countÚfinal_meansÚfinal_variancesÚfinal_counts
             r7   Ú)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Ð0r9   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 )Nrb  rd  rf  r}   rg  ri  rk  rh  rj  r  )r1   r„   rº   rl  r   r   )rm  rn  r  r6   rr  rs  rt  ru  rv  rw  rx  s              r7   Ú-test_incremental_mean_and_variance_ignore_nanr…  1  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 Ñ)Ô)Ð)Ð)Ð)r9   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   r;   )rK  )r²   s    r7   Únp_varz=test_incremental_variance_numerical_stability.<locals>.np_varQ  s   € Ø�uŠu˜!ˆu‰}Œ}Ðr9   c                 ó–   — | j         d         }| dz                       d¬¦  «        |z  }|                      d¬¦  «        |z  dz  }||z
  S )Nr   r/   r;   )r>   rL   )r6   r±   Úexp_x2Úexpx_2s       r7   Úone_pass_varzCtest_incremental_variance_numerical_stability.<locals>.one_pass_varV  sN   € ØŒG�AŒJˆØ�Q‘$—’ �Ñ#Ô# aÑ'ˆØ—%’%˜Q�%‘-”- !Ñ#¨Ñ)ˆØ˜‰Ðr9   c                 óŽ   — |                       d¬¦  «        }|                      ¦   «         }t          j         ||z
  dz  d¬¦  «        S )Nr   r;   r/   )rJ  r\   r1   )r6   rJ  ÚYs      r7   Útwo_pass_varzCtest_incremental_variance_numerical_stability.<locals>.two_pass_var_  s=   € Ø�vŠv˜1ˆv‰~Œ~ˆØ�FŠF‰HŒHˆÝŒw˜˜D™ Q‘¨QÐ/Ñ/Ô/Ð/r9   c                 óx   — |dz   }|t          |¦  «        z  }| |z  ||z  z   }||z  | |z
  | |z
  z  |z  z   }|||fS )Nr.   )Úfloat)r?   rU  Úlast_varianceÚlast_sample_countÚupdated_sample_countÚsamples_ratioÚupdated_meanÚupdated_variances           r7   Únaive_mean_variance_updatezQtest_incremental_variance_numerical_stability.<locals>.naive_mean_variance_updateg  sp   € Ø0°1Ñ4ÐØ)­EÐ2FÑ,GÔ,GÑGˆØÐ/Ñ/°)¸mÑ2KÑKˆà˜MÑ)Ø�9‰}  \Ñ!1Ñ2Ð5IÑIñJð 	ð Ð-Ð/CÐCÐCr9   r‘   r/   i'  g    „×—Ar}   gñhãˆµøä>r   r;   rS  r.   )r1   r„   rk   r:  r{  ÚvstackrÈ   rÉ   Úzerosr  r>   rJ  rº   r   r  r   r   )rˆ  rŒ  r�  r˜  r›   rW   rV   Úx1Úx2ÚA0ÚA1r²   rJ  rK  r±   rå   s                   r7   Ú-test_incremental_variance_numerical_stabilityrŸ  M  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™Ñ(Ô(×,Ò,Ñ.Ô.Ò.Ð.Ð.Ð.Ð.Ð.r9   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.   r;   r}   rG   )r1   r2   r3   r¯   r>   rþ   ÚhstackÚziprJ  rK  r{  rº   r   r   r   )r5   r6   rV   rW   Ú
batch_sizeÚstepsrå   ÚjrX  Úincremental_meansÚincremental_variancesÚincremental_countÚsample_countÚresultÚcalculated_meansÚcalculated_variancess                   r7   Ú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°,Ñ?Ô?Ð?Ñ?ñ'	@ð@ð @r9   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.   r;   r   )r1   r2   r3   r¯   rý   rÈ   r   r   Úsignr  r>   r-  )ÚdataÚmax_abs_rowsÚdata_flippedÚmax_rowsÚsignss        r7   Ú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ÐAr9   c                  ó*  — t           j                             d¦  «        } |                      dd¦  «        }t          j        |¦  «        }t          j        |d¬¦  «                             d¦  «        }t          t          |¦  «        ||z  ¦  «         d S )Nr   r0   r+   r.   r;   )r˜   r.   )	r1   r2   r3   r¯   ÚexprL   r  r   r   )r5   r6   Úexp_XÚ	sum_exp_Xs       r7   Útest_softmaxr½  Á  sx   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ€AÝŒF�1‰IŒI€EÝ”�u 1Ð%Ñ%Ô%×-Ò-¨gÑ6Ô6€IÝ�g a™jœj¨%°)Ñ*;Ñ<Ô<Ð<Ð<Ð<r9   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±  rD  )r+   r+   r+   r,   r;   r.   r/   )r   r   r1   Úcumsumr2   r3   r'  rˆ   rí   ÚRuntimeWarningr4   )Úrr²   s     r7   Ú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_containerÚdensec                 ó   — g | ]	}|j         ‘Œ
S rB  ©rì   ©Ú.0Ú	containers     r7   ú
<listcomp>rÊ  Ù  ó   € ÐHÐHÐH¨I�YÔ'ÐHÐHÐHr9   )ÚidsÚB_containerc                 ó   — g | ]	}|j         ‘Œ
S rB  rÆ  rÇ  s     r7   rÊ  rÊ  Þ  rË  r9   c                 ó2  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        } ||¦  «        }t          ||d¬¦  «        }t          ||¦  «         d S )Nr   ©é   r)   )r)   r•   T©Údense_output©r1   r2   r3   rJ   rl   r   r   )rÃ  rÍ  r5   r²   ÚBÚexpectedÚactuals          r7   Útest_safe_sparse_dot_2drØ  Ö  s’   € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜(Ñ#Ô#€AØ×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€Hàˆ�A‰Œ€AØˆ�A‰Œ€AÝ˜Q °Ð5Ñ5Ô5€Få�F˜HÑ%Ô%Ð%Ð%Ð%r9   c                 óì  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        }t          ||¦  «        }t          ||¦  «         |                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        } | |¦  «        }t          ||¦  «        }t          ||¦  «         d S )Nr   )r/   r0   r�   r+   rG   )rG   rS   )r/   r0   )r�   r+   r0   rG   rÔ  )rv   r5   r²   rÕ  rÖ  r×  s         r7   Útest_safe_sparse_dot_ndrÚ  î  sç   € å
Œ)×
Ò
 Ñ
"Ô
"€Cð 	×Ò˜/Ñ*Ô*€AØ×Ò˜&Ñ!Ô!€AÝŒv�a˜‰|Œ|€HØˆ�aÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%ð 	×Ò˜&Ñ!Ô!€AØ×Ò˜,Ñ'Ô'€AÝŒv�a˜‰|Œ|€HØˆ�aÑÔ€AÝ˜Q Ñ"Ô"€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%r9   rÉ  c                 ó   — g | ]	}|j         ‘Œ
S rB  rÆ  rÇ  s     r7   rÊ  rÊ    rË  r9   c                 óº  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        ||¦  «        }t           | |¦  «        |¦  «        }t          ||¦  «         |                     d¦  «        }t          j        ||¦  «        }t          | | |¦  «        ¦  «        }t          ||¦  «         d S )Nr   r)   rÐ  )r)   rÑ  rÔ  )rÉ  r5   rÕ  r²   rÖ  r×  s         r7   Útest_safe_sparse_dot_2d_1drÝ    sÈ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜2ÑÔ€Að 	×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€HÝ˜Y˜Y q™\œ\¨1Ñ-Ô-€FÝ�F˜HÑ%Ô%Ð%ð 	×Ò˜(Ñ#Ô#€AÝŒv�a˜‰|Œ|€HÝ˜Q 	 	¨!¡¤Ñ-Ô-€FÝ�F˜HÑ%Ô%Ð%Ð%Ð%r9   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   rZ   r•   rÒ  )	r1   r2   r3   r   rl   r   ÚissparseÚtoarrayr   )rÓ  r5   r²   rÕ  rÖ  r×  s         r7   Ú!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Ð2r9   c                  ó’   — t          j        ddgt           j        ¬¦  «        } t          | dd¬¦  «        }t	          |ddg¦  «         d	S )
a  Make sure sklearn.utils.extmath._approximate_mode returns valid
    results for cases where "class_counts * n_draws" is enough
    to overflow 32-bit signed integer.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i¸‚ rD  r}   i¨a  r   )Úclass_countsÚn_drawsr5   i®`  r¬   N)r1   r„   rº   r   r   )r6   Úrets     r7   Útest_approximate_moderæ  *  sN   € õ 	Œ�%˜�¥b¤hÐ/Ñ/Ô/€AÝ
¨°E¸qÐ
AÑ
AÔ
A€Cõ
 �s˜U C˜LÑ)Ô)Ð)Ð)Ð)r9   )aÚnumpyr1   rˆ   Ú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   r    Úsklearn.utils.fixesr!   r"   r#   r$   r%   r&   ÚmarkÚparametrizer8   rE   rO   rº   r»   rg   rk   rw   rŽ   rª   r¶   rÁ   rÌ   rÎ   rÝ   rç   rð   rû   r  r  r  r  r*  r1  r„   rP   Úobjectr7  r@  Úfixturer5   rN  r`  ry  rƒ  r…  rŸ  r¯  r¸  r½  rÂ  rØ  rÚ  rÝ  rá  ræ  rB  r9   r7   ú<module>rö     s€	  ðð Ð Ð Ð Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð à IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ %Ð %Ð %Ð %Ð %Ð %Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð"ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð „×ÒØØ�^Ñ# nÑ4°~ÑEñô ð6ð 6ñ	ô ð6ð*ð *ð *ð>ð >ð >ð$ „×Ò˜ 2¤8¨R¬X°r´zÀ2Ä:Ð"NÑOÔOðLFð LFñ PÔOðLFð^ „×Ò˜ 2¤8¨R¬X°r´zÀ2Ä:Ð"NÑOÔOð@ð @ñ PÔOð@ð, „×Ò˜Ð5Ñ6Ô6ðDMð DMñ 7Ô6ðDMðN „×ÒØðð ð ñ
ô 
ð;ð ;ñ
ô 
ð;ð4 „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;Ø„×Ò˜¨.Ñ9Ô9ðPð Pñ :Ô9ñ <Ô;ðPð4&3ð &3ð &3ðR&3ð &3ð &3ðR ð  ð  ð@*0ð *0ð *0ðZ „×ÒÐ+¨^¸nÑ-LÑMÔMðUð Uñ NÔMðUð Eð Eð Eð2 „×ÒÐ0°6¸6Ð2BÑCÔCðOð Oñ DÔCðOð	9ð 	9ð 	9ðð ð ðB „×Ò˜˜n˜n˜nÑ-Ô-Ø„×Ò˜˜n˜n˜nÑ-Ô-Ø„×Ò˜˜l˜l˜lÑ+Ô+Ø„×Ò˜   q¡¤Ñ*Ô*ð1ð 1ñ +Ô*ñ ,Ô+ñ .Ô-ñ .Ô-ð1ð,:ð :ð :ð< „×ÒØð ˆRŒX�i�i�i r¤xÐ0Ñ0Ô0°(°"´(¸A¸q¸6ÈÌÐ2RÑ2RÔ2RÐSØˆBŒH�R”XÑÔð	
ð
 ˆRŒX�i�i�i r¤xÐ0Ñ0Ô0°(°"´(¸A¸q¸6ÈÌÐ2TÑ2TÔ2TÐUØˆBŒH�R”ZÑ Ô ð	
ð
 ˆRŒX�i�i�i r¤xÐ0Ñ0Ô0°(°"´(¸CÀ¸:ÈVÐ2TÑ2TÔ2TÐUØˆBŒH�VÑÔð	
ðñô ð"(ð (ñ#ô ð"(ðFð Fð Fð €„ÑÔð%ð %ñ Ôð%ð „×Ò˜ 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ð „×ÒØØ„XÐ�ÐØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„XÐ�ÐØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
&ð &ñô ñô ð&ð „×Ò˜¨.Ñ9Ô9ð&ð &ñ :Ô9ð&ð( „×ÒØØ„XÐ�ÐØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
&ð &ñô ð
&ð" „×Ò˜¨$°¨Ñ7Ô7ð3ð 3ñ 8Ô7ð3ð *ð *ð *ð *ð *r9   