
    0Phk                        d dl Zd dl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 d dl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 d d	l m!Z!m"Z"m#Z#m$Z$ ej%        &                    d
e          ej%        &                    de          ej%        &                    de          d                                     Z'ej%        &                    dej(        ej)        g          ej%        &                    deez             d                         Z*ej%        &                    d
e          ej%        &                    de          ej%        &                    de          d                                     Z+ej%        &                    g dg dg dgg dg dgg dfg dg dgg dg dgg dfg dg dgg dg dgdfd ej,        dgd ej,        ej,        ggd ej,        dgd ej,        ej,        ggg dfd d gdej,        gdd gd dgej,        ej,        gej,        dggg dddej,        gg dg d ej,        ej,        ej,        gej,        ej,        dggd!d"gfg d#g d$gg d%g d&g ej-        g d'          fg          ej%        &                    deez             ej%        &                    dej(        ej)        g          d(                                     Z.ej%        &                    g dg dg dgg dg dgddgfg dg dgg dg dg dgddgfg dg dgg dg dgdfd ej,        dgd ej,        ej,        ggd ej,        dgd ej,        ej,        ggd"d"gfd d dej,        dd gd dej,        ej,        ej,        dggd d dej,        dd gd d dej,        dd gd dej,        ej,        ej,        dggd!d"gfg d#g dgg d#g dg dg dg ej-        ddg          fg          ej%        &                    deez             ej%        &                    dej(        ej)        g          d)                                     Z/ej%        &                    d
e          ej%        &                    de          ej%        &                    de          d*                                     Z0ej%        &                    deez             d+             Z1ej%        &                    d, ej2        d-dd.d/d 0           ej2        d1dd.d/d 0          f ej2        d-dd.d/d 0           ej3         ej4        d2ej,        3           ej2        d1dd.d45          gd/6          fg          ej%        &                    de          d7                         Z5d8 Z6d9 Z7ej%        &                    d:d dg          ej%        &                    deez             d;                         Z8ej%        &                    de          d<             Z9ej%        &                    de          d=             Z:d> Z;d? Z<ej%        &                    d
e          ej%        &                    de          d@                         Z=ej%        &                    d
e          ej%        &                    de          dA                         Z>ej%        &                    dej(        ej)        g          ej%        &                    d:g dB          ej%        &                    dCeez             ej%        &                    dDd ej?        ej@        dEfej,        ejA        ejB        dFfg          ej%        &                    dGdFdEg          dH                                                             ZCej%        &                    d
e          ej%        &                    de          dI                         ZDej%        &                    d
e          ej%        &                    de          dJ                         ZEej%        &                    d
e          ej%        &                    de          dK                         ZFej%        &                    dLe#e$f          ej%        &                    de          dM                         ZGej%        &                    dej(        ej)        g          dN             ZH ejI        dOeez   P          dQ             ZJdR ZKdS ZLdT ZMdU ZNdS )V    N)RandomState)assert_array_almost_equalassert_array_equal)linalg)make_classification)assert_allclose)CSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERS)
_implicit_column_offsetcount_nonzerocsc_median_axis_0incr_mean_variance_axisinplace_column_scaleinplace_row_scaleinplace_swap_columninplace_swap_rowmean_variance_axismin_max_axis)assign_rows_csrcsr_row_normsinplace_csr_row_normalize_l1inplace_csr_row_normalize_l2csc_containercsr_containerlil_containerc           	      B   t          ddd          \  }}d|d<   d|d<   d|d<    ||          }d|d<   d|d<   t          j        t                    5  t	          |d	           d d d            n# 1 swxY w Y    ||          } | |          }t
          j        t
          j        ft
          j        t
          j        ft
          j        t
          j        ft
          j	        t
          j        fg}|D ]\  }	}
|
                    |	          }||fD ]}|
                    |	          }t	          |d	          \  }}|j        |
k    sJ |j        |
k    sJ t          |t          j        |d	                     t          |t          j        |d	                     d S )
N      r   random_stater   r         r      r%   r   axisr   pytestraises	TypeErrorr   npfloat32float64int32int64astypedtyper   meanvarr   r   r   X_X_lilX_csrX_cscexpected_dtypesinput_dtypeoutput_dtypeX_testX_sparseX_meansX_varss                  d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_sparsefuncs.pytest_mean_variance_axis0rF          q!!444DAqAdGAdGAdGM!EE$KAdG	y	!	! * *5q))))* * * * * * * * * * * * * * * M%  EM%  E 
RZ 	RZ 	2:	2:	O &5 F F!\+&& 	F 	FH{33H0BBBOGV=L0000<<////%grwvA/F/F/FGGG%fbfV!.D.D.DEEEE	FF F   A11A58A5r5   sparse_constructorc                    t           j                            d          }t          j        dd|           }|                    t          j        |j        d                   dd          }t           j        ||df<    ||          }|                    |j        d                   	                    |           }t          ||d          \  }}|t          j        |           j        k     sJ d S )	Nr   g      Y@)i  r%   )
fill_valueshaper5   
   F)replace)weightsr*   )r/   randomr   fullchoicearangerL   nanrandr4   r   finfoeps)r5   rI   rngr9   missing_indicessample_weightr:   r7   s           rE   "test_mean_variance_axis0_precisionr[   D   s    
 )


"
"C
5	???Ajj171:!6!6EjJJOFAoq1A HHQWQZ((//66M=qAAAFAs%$$$$$$$    c           	      B   t          ddd          \  }}d|d<   d|d<   d|d<    ||          }d|d<   d|d<   t          j        t                    5  t	          |d	
           d d d            n# 1 swxY w Y    ||          } | |          }t
          j        t
          j        ft
          j        t
          j        ft
          j        t
          j        ft
          j	        t
          j        fg}|D ]\  }	}
|
                    |	          }||fD ]}|
                    |	          }t	          |d
          \  }}|j        |
k    sJ |j        |
k    sJ t          |t          j        |d
                     t          |t          j        |d
                     d S )Nr   r   r   r    r"   r#   r&   r(   r%   r)   r+   r8   s                  rE   test_mean_variance_axis1r^   X   rG   rH   )Xwr9   rO   )r   r   r%   r   r$   r'   )r%   r%   r%   )r   r%   r%   )r   r   r   r%   )r   r%   r%   r%   )r%   r$   r%   r$   )      ?ra   ra   r%   r'   r   r   r   )r$   r$   r   )r   r   r'   g       @ra   )r%   r   r%   )r   r'   r%   )r%   r   r   r   r%   )r   r'   r'   r'   r%   )r%   r'   r%   c                    d} ||                                |          } ||                               |          }t          j        t          j        |           d         |          }t          j        ||          }	t          j        |t          j                  }
t          ||||	|
d           \  }}}t          ||||	|
|          \  }}}|j        |k    sJ |j        |k    sJ |j        |k    sJ t          ||          \  }}t          ||           t          ||           t          ||           t          ||           t          ||           t          |||||d           \  }}}t          ||||||          \  }}}t          ||           t          ||           t          ||           |j        |k    sJ |j        |k    sJ |j        |k    sJ d S )Nr%   r   r5   r9   r*   	last_meanlast_varlast_nrO   r9   r*   )
r4   r/   zerosrL   
zeros_liker3   r   r5   r   r   r_   r9   rO   rI   r5   r*   	Xw_sparserB   rf   rg   rh   means0vars0n_incr0means_w0vars_w0	n_incr_w0means_simplevars_simplemeans1vars1n_incr1means_w1vars_w1	n_incr_w1s                            rE   +test_incr_mean_variance_axis_weighted_axis1r|   }   s]   F D""2&&--e44I!!!$$++E22H"a666I}Ye444H]9BH555F4
  FE7 $;
$ $ $ Hgy >U""""=E!!!!?e#### 2XD I I IL+fh///fl333eW---e[111gy111 5
  FE7 $;
$ $ $ Hgy fh///eW---gy111>U""""=E!!!!?e######r\   c                    d} ||                                |          } ||                               |          }t          j        t          j        | d          |          }t          j        |          }	t          j        |t          j                  }
t          ||||	|
d           \  }}}t          ||||	|
|          \  }}}|j        |k    sJ |j        |k    sJ |j        |k    sJ t          ||          \  }}t          ||           t          ||           t          ||           t          ||           t          ||           t          |||||d           \  }}}t          ||||||          \  }}}t          ||           t          ||           t          ||           |j        |k    sJ |j        |k    sJ |j        |k    sJ d S )Nr   r%   rd   re   ri   )
r4   r/   rj   sizerk   r3   r   r5   r   r   rl   s                            rE   +test_incr_mean_variance_axis_weighted_axis0r      sV   @ D""2&&--e44I!!!$$++E22HQu555I}Y''H]9BH555F4
  FE7 $;
$ $ $ Hgy >U""""=E!!!!?e#### 2XD I I IL+fh///fl333eW---e[111gy111 5
  FE7 $;
$ $ $ Hgy fh///eW---gy111>U""""=E!!!!?e######r\   c           
         dD ]}t           j                            d          dd|dk    rfdt                    D             }nfdt                    D             }|dk    rt          j                  nt          j                  }t          j        |          }t          j        |t           j                  }t          j        |d                   }t          j        |          }|dk    r|j	        n|} ||          }	 ||	          }
t          j        t                    5  t          ||||	           d d d            n# 1 swxY w Y   t          j        t                    5  t          |	||||
           d d d            n# 1 swxY w Y   t          |
|          \  }}t          |
||||
          \  }}}t          ||           t          ||           t!          |j        |         |            | |	          }t          ||          \  }}t          ||           t          ||           t!          |j        |         |           t          j        |          }|dk    r|j	        n|} ||          }	 ||	          }
 | |	          }t           j        t           j        ft           j        t           j        ft           j        t           j        ft           j        t           j        fg}|D ]\  }}|
|fD ]}|                    |          }|                    |          }|                    |          }t          ||          \  }}t          |||||
          \  }}}|j        |k    sJ |j        |k    sJ t          ||           t          ||           t!          |j        |         |           ̐d S )N)r   r%   r   2   rM   c                 @    g | ]}                     d d          S r   r$   )r~   randint).0i
n_featuresrX   s     rE   
<listcomp>z0test_incr_mean_variance_axis.<locals>.<listcomp>K  s+    XXX!3;;q!*;==XXXr\   c                 @    g | ]}                     d d          S r   r   )r   r   	n_samplesrX   s     rE   r   z0test_incr_mean_variance_axis.<locals>.<listcomp>M  s+    XXX3;;q!);<<XXXr\   rd   r%   )r9   r*   rf   rg   r*   rf   rg   rh   )r/   rP   r   rangerj   rk   r3   array
atleast_2dTr,   r-   r.   r   r   r   r   rL   vstackr0   r1   r2   r4   r5   )r   r   r   r*   data_chunksrf   rg   rh   r9   r;   r<   rC   rD   X_means_incrX_vars_incrn_incrr=   r>   r?   r@   rB   r   r   rX   s                        @@@rE   test_incr_mean_variance_axisr   B  s     M: M:i##A&&
	199XXXXXuYGWGWXXXKKXXXXXeJFWFWXXXK -1AIIBHZ(((28I;N;N	=++y999 H[^$$M!199ACC!a  e$$]9%% 	 	#Y(V   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9%% 	 	#DIQW   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 -UD99,C	HV-
 -
 -
)k6 	"'<888!&+666174=&111e$$,UD99!'<888!&+666174=&111 Ik""199ACC!a  e$$e$$ Z$Z$Xrz"Xrz"	
 *9 	: 	:%K"EN : :#??;77%,,\::	#??<88"4Xt"D"D4K'%!5 5 51k6 $)\9999"(L8888)'<@@@)&+>>>"174=&9999!:	:yM: M:s$   9EE	 E	=FF"	%F"	c                 ~   d\  }}t           j                            d          } | |                    ||                    }t          j        |          }t          j        |          }t          j        |j        t           j                  }t          |||          }t          |fddi|\  }	}
}t          t          j        |                                d          |	           t          t          j        |                                d          |
           t          j        t                     5  t          |fddi| d	d	d	           n# 1 swxY w Y   t          |d	d
         ||          }t          j        t                     5  t          |fddi| d	d	d	           d	S # 1 swxY w Y   d	S )zCheck that we raise proper error when axis=1 and the dimension mismatch.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/pull/18655
    )<   r   *   rd   )rf   rg   rh   r*   r   r)   r%   N)r/   rP   r   rU   rj   rk   rL   r3   dictr   r   r6   toarrayr7   r,   r-   
ValueError)rI   r   r   rX   r9   rf   rg   rh   kwargsmean0var0r:   s               rE   )test_incr_mean_variance_axis_dim_mismatchr     s(    "Iz
)


#
#C388Iz::;;A$$I}Y''HXioRX666FIHHHF,QAAQA&AANE4BGAIIKKa000%888BF199;;Q///666 
z	"	" 5 5444V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 IcrcNXfMMMF	z	"	" 5 5444V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s$   ;EEEF22F69F6zX1, X2r   皙?csrdensityformatr!      )r   r%   )rK   r   r   r!   )r   c           	          ||           }  ||          }d}t          j        | j        d                   t          j        | j        d                   }}t          j        | j        d         t           j                  }t	          | ||||          \  }}}	t	          |||||	          \  }}}	t          j        | |g          }
t          |t          j        |
	                                |                     t          |t          j
        |
	                                |                     t          |	t          j        t          j        |
	                                           d                     d S )Nr   r%   rd   r   r)   )r/   rj   rL   r3   r   spr   r   nanmeanr   nanvarr   isnan)X1X2r   r*   rf   rg   rh   updated_meanupdated_var	updated_nr9   s              rE   6test_incr_mean_variance_axis_equivalence_mean_variancer     sY   2 
r		B	r		BD(28A;//"(1+1F1FxIXbhqk222F+B
Xf, , ,(L+y ,C
I, , ,(L+y 		2r(AL"*QYY[[t"D"D"DEEEK199;;T!B!B!BCCCIr/!))++1F1F0FQOOOPPPPPr\   c                  D   d} t          j        dddd                                          }t          j        dddd                                          }t          j        |j        d                   t          j        |j        d                   }}t          j        |j        d         t          j                  }t          || |||          \  }}}t          || |||          \  }}}t          ||           t          ||           t          ||           d S )Nr   r   r%   r   r   rd   r   )	r   rP   tocsrr/   rj   rL   r3   r   r   )	r*   r   r   rf   rg   rh   r   r   r   s	            rE    test_incr_mean_variance_no_new_nr     s   D	1a1	5	5	5	;	;	=	=B	1a1	5	5	5	;	;	=	=B(28A;//"(1+1F1FxIXbhqk222F"9
Xf# # #Ix ,C
Xf, , ,(L+y L),,,K***Iv&&&&&r\   c                     d} t          j        dddd                                          }t          j        |j        d                   t          j        |j        d                   }}d}t          || |||          \  }}}t          |t          j        |j        d         |j        d                              d S )Nr   r   r$   r   r   r%   r   )	r   rP   r   r/   rj   rL   r   r   rQ   )r*   r9   rf   rg   rh   r:   new_ns          rE   test_incr_mean_variance_n_floatr     s    D
	!Q!444::<<A(171:..0D0DxIF)		HV  KAq% E27171:qwqz::;;;;;r\   r*   c                 X   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                    }| r|j        }|j        }t          || |                                |                                |                                          \  }}}	t          || |                                |                                |                                          \  }
}}t          |
|           t          ||           t          ||	           d S )N)     @r   r   r   )     @r   r   r   )r$   r$   r$   r$   rd   )   r   r   r   )  r   r   r   ),  r   r   r   r   r   r   r   )r/   r   r3   rT   r   r   copyr   )r*   rI   	old_meansold_variancesold_sample_countr9   X_nanrC   rD   X_sample_countX_nan_means
X_nan_varsX_nan_sample_counts                rE   'test_incr_mean_variance_axis_ignore_nanr     s    55566IH===>>MxBH===
&&&(<(<(<>R>R>RSTT	 	A 
bfc3'c3'c263'c3'		
 	
	 	E  C '>	..""##%%$$&&' ' '#GV^ 3J..""##%%$$&&3 3 3/K/ K)))J'''&77777r\   c                    t          ddd          \  }}d|d<   d|d<   d|d<    | |          }t          j        t                    5  t	          |d	           d d d            n# 1 swxY w Y   t          j        t                    5  t	          |d
	           d d d            n# 1 swxY w Y   t          j        t                    5  t	          |d	           d d d            n# 1 swxY w Y   t          j        t                    5  t          |dd d d            d d d            n# 1 swxY w Y   t          j        t                    5  t          |d
d d d            d d d            n# 1 swxY w Y   t          j        t                    5  t          |dd d d            d d d            d S # 1 swxY w Y   d S )Nr   r   r   r    r"   r#   r&   r)   r$   r   r   )r   r,   r-   r   r   r   )r   r9   r:   r<   s       rE   test_mean_variance_illegal_axisr   -  sV   q!!444DAqAdGAdGAdGM!E	z	"	" + +5r****+ + + + + + + + + + + + + + +	z	"	" * *5q))))* * * * * * * * * * * * * * *	z	"	" + +5r****+ + + + + + + + + + + + + + + 
z	"	" 
 
dT$	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
z	"	" 
 
TD	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
z	"	" 
 
dT$	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sl   	A''A+.A+B))B-0B-C++C/2C/D00D47D4E55E9<E9F;;F?F?c           	         t           j        t           j        fD ]} | g dg dg dg dg dg|          }t          j        g dt           j                  }t          j        d|j        d	         f|          }t          j        g d
t           j                  }t          j        |          }||d d f                                         ||<   t          ||||           t          ||           d S )Nr   r'   r   r$   r   r   rb   	         r   r   r   rd   r`      r%   )r%   r'   r   )r/   r0   r1   r   intponesrL   	ones_liker   r   r   )r   r5   r9   X_rowsoutout_rowsexpects          rE   test_densify_rowsr   L  s
   *bj) ( (MYY			999iiiC5
 
 
 )))27333gq!'!*oU3338IIIRW555c""VQQQY<//11x68S1113''''( (r\   c                     t           j                            d          } t          j        ddd          }|                                }|                                }|                                }|                     d          }||z  }t          ||           t          ||           t          |                                |                                           t          ||                                           t          ||                                           t          j        t                    5  t          |                                |           d d d            n# 1 swxY w Y   |                    t           j                  }|                    t           j                  }|                                }|                                }|                                }||z  }t          ||           t          ||           t          |                                |                                           t          ||                                           t          ||                                           t          j        t                    5  t          |                                |           d d d            d S # 1 swxY w Y   d S )Nr   d      皙?)r/   rP   r   r   rU   r   tocscr   r   r   r,   r-   r.   tolilr4   r0   rX   r9   XrXcXAscales         rE   test_inplace_column_scaler   ]  s   
)


"
"C
S$A	
B	
B	
BHHSMME%KBU###U###bjjllBJJLL999b"**,,///b"**,,///	y	!	! / /QWWYY.../ / / / / / / / / / / / / / / 	
ALL$$E	
B	
B	
B%KBU###U###bjjllBJJLL999b"**,,///b"**,,///	y	!	! / /QWWYY.../ / / / / / / / / / / / / / / / / /s$   =#E,,E03E0'#KKKc                     t           j                            d          } t          j        ddd          }|                                }|                                }|                                }|                     d          }||                    dd          z  }t          ||           t          ||           t          |                                |                                           t          ||                                           t          ||                                           t          j        t                    5  t          |                                |           d d d            n# 1 swxY w Y   |                    t           j                  }|                    t           j                  }|                                }|                                }|                                }||                    dd          z  }t          ||           t          ||           t          |                                |                                           t          ||                                           t          ||                                           t          j        t                    5  t          |                                |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r%   )r/   rP   r   r   rU   r   r   r   reshaper   r   r,   r-   r.   r   r   r4   r0   r   s         rE   test_inplace_row_scaler   }  s   
)


"
"C
S$A	
B	
B	
BHHSMME%--A

Bb%   b%   bjjllBJJLL999b"**,,///b"**,,///	y	!	! / /QWWYY.../ / / / / / / / / / / / / / / 	
ALL$$E	
B	
B	
B%--A

Bb%   b%   bjjllBJJLL999b"**,,///b"**,,///	y	!	! / /QWWYY.../ / / / / / / / / / / / / / / / / /s$   #F  FF#K??LLc                    t          j        g dg dg dg dg dgt           j                  } ||          } | |          }t          j        d|f          }|d         } ||d         |d	                   \  |d<   |d	<   t          |dd	           t          |dd	           t          |                                |                                           t          ||                                           t          ||                                            ||d
         |d                   \  |d
<   |d<   t          |d
d           t          |d
d           t          |                                |                                           t          ||                                           t          ||                                           t          j	        t                    5  t          |                                           d d d            n# 1 swxY w Y   t          j        g dg dg dg dg dgt           j                  } ||          } | |          }t          j        d|f          }|d         } ||d         |d	                   \  |d<   |d	<   t          |dd	           t          |dd	           t          |                                |                                           t          ||                                           t          ||                                            ||d
         |d                   \  |d
<   |d<   t          |d
d           t          |d
d           t          |                                |                                           t          ||                                           t          ||                                           t          j	        t                    5  t          |                                           d d d            d S # 1 swxY w Y   d S )Nr   r   rb   r   r   rd   swapr   r   r$   r'   )r/   r   r1   r   get_blas_funcsr   r   r   r,   r-   r.   r   r0   r   r   r9   r<   r=   r   s         rE   test_inplace_swap_rowr     sa    		IIIyyy)))YYY?rz	 	 	A M!EM!E QD11D7D$qtQrU##KAaD!B%UAr"""UAr"""u}}888q%--//***q%--//***adAaD!!JAaD!A$UAq!!!UAq!!!u}}888q%--//***q%--//***	y	!	! ( ('''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 		IIIyyy)))YYY?rz	 	 	A M!EM!E QD11D7D$qtQrU##KAaD!B%UAr"""UAr"""u}}888q%--//***q%--//***adAaD!!JAaD!A$UAq!!!UAq!!!u}}888q%--//***q%--//***	y	!	! ( ('''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s$   3"H!!H%(H%"QQQc                 4	   t          j        g dg dg dg dg dgt           j                  } ||          } | |          }t          j        d|f          }|d         } ||d d df         |d d d	f                   \  |d d df<   |d d d	f<   t          |dd	           t          |dd	           t          |                                |                                           t          ||                                           t          ||                                            ||d d df         |d d d
f                   \  |d d df<   |d d d
f<   t          |dd
           t          |dd
           t          |                                |                                           t          ||                                           t          ||                                           t          j	        t                    5  t          |                                           d d d            n# 1 swxY w Y   t          j        g dg dg dg dg dgt           j                  } ||          } | |          }t          j        d|f          }|d         } ||d d df         |d d d	f                   \  |d d df<   |d d d	f<   t          |dd	           t          |dd	           t          |                                |                                           t          ||                                           t          ||                                            ||d d df         |d d d
f                   \  |d d df<   |d d d
f<   t          |dd
           t          |dd
           t          |                                |                                           t          ||                                           t          ||                                           t          j	        t                    5  t          |                                           d d d            d S # 1 swxY w Y   d S )Nr   r   rb   r   r   rd   r   r   r   r%   )r/   r   r1   r   r   r   r   r   r,   r-   r.   r   r0   r   s         rE   test_inplace_swap_columnr     s    		IIIyyy)))YYY?rz	 	 	A M!EM!E QD11D7DQqqq!tWa2h//AaaadGQqqq"uXq"%%%q"%%%u}}888q%--//***q%--//***tAaaadGQqqq!tW--AaaadGQqqq!tWq!$$$q!$$$u}}888q%--//***q%--//***	y	!	! + +EKKMM***+ + + + + + + + + + + + + + + 		IIIyyy)))YYY?rz	 	 	A M!EM!E QD11D7DQqqq!tWa2h//AaaadGQqqq"uXq"%%%q"%%%u}}888q%--//***q%--//***tAaaadGQqqq!tW--AaaadGQqqq!tWq!$$$q!$$$u}}888q%--//***q%--//***	y	!	! + +EKKMM***+ + + + + + + + + + + + + + + + + +s$   "III"RRR)r   r%   Nsparse_formatz.missing_values, min_func, max_func, ignore_nanFTlarge_indicesc                    t          j        g ddd|gg dd|dgg dg|           } ||          }	|r>|	j                            d	          |	_        |	j                            d	          |	_        t          |	||
          \  }
}t          |
 |||                     t          | |||                     d S )Nr   r$   r   rb   r   r   r   rd   r3   )r*   
ignore_nanr)   )r/   r   indicesr4   indptrr   r   )r5   r*   r   missing_valuesmin_funcmax_funcr   r   r9   rB   mins_sparsemaxs_sparses               rE   test_min_maxr     s    $ 	IIN#II"II	
 		 		 		A }QH :#+227;;"/0099+H4JWWWK{HHQT$:$:$:;;;{HHQT$:$:$:;;;;;r\   c                 B   t          j        g dg dg dg dg dgt           j                  } ||          } | |          }t          j        t
                    5  t          |                                d           d d d            n# 1 swxY w Y   t          j        t                    5  t          |d	           d d d            n# 1 swxY w Y   t          j        t                    5  t          |d
           d d d            d S # 1 swxY w Y   d S )Nr   r$   r   r   rb   r   r   rd   r   r)   r$   r   )	r/   r   r1   r,   r-   r.   r   r   r   )r   r   r9   r<   r=   s        rE   test_min_max_axis_errorsr  (  s    		JJJ			999iii@
	 	 	A M!EM!E	y	!	! , ,U[[]]++++, , , , , , , , , , , , , , ,	z	"	" $ $U####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	z	"	" % %U$$$$% % % % % % % % % % % % % % % % % %s6   $BBB3CCC5DDDc                    t          j        g dg dg dg dg dgt           j                  } ||          } | |          }|dk    }g d}|t          j        |          d d d f         z  }d	D ]i}t          t	          ||
          |                    |
                     t          t	          |||          |                    |
                     jt          j        t                    5  t	          |           d d d            n# 1 swxY w Y   t          j        t                    5  t	          |d
           d d d            n# 1 swxY w Y   t	          |d
          j
        t	          |d
          j
        k    sJ t	          |d|          j
        t	          |d|          j
        k    sJ 	 |j                            t           j                  |_        |j                            t           j                  |_        t	          |d
          j
        t	          |d
          j
        k    sJ t	          |d|          j
        t	          |d|          j
        k    sJ d S # t          $ r@}	d|	j        d         v rt          j                    j        dk     s
J |	            Y d }	~	d S d }	~	ww xY w)Nr   r  rb   r   r   rd   r   )      ?g?g333333?皙?r  )r   r%   r   Nr)   )r*   rZ   r$   r%   zaccording to the rule 'safe'r   )r/   r   r1   r   r   sumr,   r-   r.   r   r5   r   r4   r3   r   argsr   nbytes)
r   r   r9   r<   r=   	X_nonzerorZ   X_nonzero_weightedr*   es
             rE   test_count_nonzeror  8  s    		JJJ			999iii@
	 	 	A M!EM!EQI---M"RXm%<%<QQQW%EE$ 
 
!%d+++Y]]]-E-E	
 	
 	
 	"%d-HHH"""--	
 	
 	
 	

 
y	!	!  e              	z	"	" % %e!$$$$% % % % % % % % % % % % % % % Q'''-u11M1M1M1SSSSSe!=AAAGQmDDDJ	K 	K 	K 	K	W,,RX66|**2844U+++1]5q5Q5Q5Q5WWWWW%a}EEEKU-HHHNO O O O O O  W W W-::rwyy?ORS?S?S?SUV?S?S?S?S?S?S?S?S?SWs=   6DDD6EEEB4I8 8
K5J==Kc                    t           j                            d          }|                    dd          }t          j        |d          } | |          }t          |          }t          ||           |                    dd          }d||dk     <   |                    ddd          }||          ||<    | |          }t          j        |d          }t          |          }t          ||           dd	gd
d
gddgddgg} | |          }t          t          |          t          j        ddg                     dd	gd
dgddgg} | |          }t          t          |          t          j        ddg                     t          j
        t                    5  t           ||                     d d d            d S # 1 swxY w Y   d S )Nr   r   r   r)   3   g        gffffff?rM   r  r   r%   r$   r  g      r   )r/   rP   r   rU   medianr   r   r   r   r,   r-   r.   )r   r   rX   r9   dense_mediancscsparse_medianinds           rE   test_csc_row_medianr  f  s$    )


"
"CbA9QQ'''L
-

C%c**M}l333 	SAAa#gJ
++aR
 
 CfWAcF
-

C9QQ'''L%c**M}l333 R2r(QFQF+A
-

C(--rxd/D/DEEE
R2r(QG$A
-

C(--rxb	/B/BCCC 
y	!	! , ,--**+++, , , , , , , , , , , , , , , , , ,s   "GGGinplace_csr_row_normalizec                    | t           j        u rt          j        d          }nt          j        d          }t	          d          }t          j        t          j        fD ])}|                    dd                              |          } | |          }t          j	        t          j
        fD ]}|t          j
        u r>|j                            |          |_        |j                            |          |_        |j        j        |k    sJ |j        j        |k    sJ  ||           |j        |k    sJ |t          u r|xj        dz  c_        t!          t          j        |                              d          |           ڐ+d S )N)rM   r%   rM   r   r$   r%   r)   )r   
csr_matrixr/   r   r   r1   r0   randnr4   r2   r3   r   r   r5   r   datar   absr  )r   r  r   rsr5   r9   r<   index_dtypes           rE   test_inplace_normalizer     s    %%wwwr{{	RB*bj) G GHHROO""5))a  Hbh/ 	G 	GK bh&&$|22;?? % 4 4[ A A=&+5555<%4444%%e,,,;%''''(,HHH

q 

%bfUmm&7&7Q&7&?&?FFFF	GG Gr\   c                    t          j        ddd| d          }t           j                            |d          dz  }t	          |          }|j        | k    sJ | t          j        k    rd	nd
}t          |||           d S )Nr   rM   r   r   )r   r5   r!   r%   r)   r$   gư>gHz>)rtol)	r   rP   r   normr   r5   r/   r0   r   )r5   r9   scipy_normsnormsr"  s        rE   test_csr_row_normsr&    s     		#r%u2FFFA)...++q0K!E;%BJ&&44DDE;T222222r\   module)scopeparamsc           	      `   | j         }t          j                            d          } |t	          j        dddd|                    }|                                }t          j        |                    d                                                    }t          ||          }||z
  }||fS )	z?Returns equivalent tuple[sp.linalg.LinearOperator, np.ndarray].r   i  r   r  r   r   r   r)   )
paramr/   rP   default_rngr   r   asarrayr6   ravelr   )requestsparse_containerr!   rB   X_densemuX_sparse_centeredX_dense_centereds           rE   centered_matricesr5    s     }9((,,L
	#sCLQQQ H   G	HMMqM))	*	*	0	0	2	2B/"==|...r\   c                 
   |\  }}t           j                            |           }|                    |j        d         df          }t          ||z  |                    |                     t          ||z  ||z             d S )Nr%   r   )r/   rP   r,  standard_normalrL   r   matmatglobal_random_seedr5  r3  r4  rX   Ys         rE   test_implicit_center_matmatr<    s    *;''
)

 2
3
3C-3A6;<<A$q(*;*B*B1*E*EFFF$q(*;a*?@@@@@r\   c                    |\  }}t           j                            |           }|                    |j        d                   }t          ||z  |                    |                     t          ||z  ||z             d S )Nr%   )r/   rP   r,  r7  rL   r   matvecr:  r5  r3  r4  rX   ys         rE   test_implicit_center_matvecrA    s    *;''
)

 2
3
3C,21566A$q(*;*B*B1*E*EFFF$q(*;a*?@@@@@r\   c                 (   |\  }}t           j                            |           }|                    |j        d         df          }t          |j        |z  |                    |                     t          |j        |z  |j        |z             d S )Nr   r   )r/   rP   r,  r7  rL   r   r   rmatmatr9  s         rE   test_implicit_center_rmatmatrD    s    *;''
)

 2
3
3C-3A6;<<A$&*,=,E,Ea,H,HIII$&*,=,?!,CDDDDDr\   c                 $   |\  }}t           j                            |           }|                    |j        d                   }t          |j        |z  |                    |                     t          |j        |z  |j        |z             d S )Nr   )r/   rP   r,  r7  rL   r   r   rmatvecr?  s         rE   test_implit_center_rmatvecrG    s    *;''
)

 2
3
3C,21566A$&*,=,E,Ea,H,HIII$&*,=,?!,CDDDDDr\   )Onumpyr/   r,   scipy.sparsesparser   numpy.randomr   numpy.testingr   r   scipyr   sklearn.datasetsr   sklearn.utils._testingr   sklearn.utils.fixesr	   r
   r   sklearn.utils.sparsefuncsr   r   r   r   r   r   r   r   r   r   sklearn.utils.sparsefuncs_fastr   r   r   r   markparametrizerF   r0   r1   r[   r^   rT   r   r|   r   r   r   rP   hstackrQ   r   r   r   r   r   r   r   r   r   r   minmaxnanminnanmaxr   r  r  r  r   r&  fixturer5  r<  rA  rD  rG   r\   rE   <module>r\     s              $ $ $ $ $ $ G G G G G G G G       0 0 0 0 0 0 2 2 2 2 2 2 N N N N N N N N N N                                   .99.99.99F F :9 :9 :9FD 2:rz":;;-~/NOO% % PO <;%$ .99.99.99F F :9 :9 :9FD 
))YYY	)))YYY!7C
))YYY	,,,!=yyyI
))YYY	)))YYY!7>^a01^a01OO	
 Va[1a&1a&26262BRVQKP		Arv				(# #J	
 YY			"__ooo.BHYYY	
+ < -~/NOO2:rz":;;A$ A$ <; PO= @A$H 
))YYY	)))YYY!7!Q@
))YYY	)))YYY			!BQFK
))YYY	)))YYY!7>^a01^a01#J	
 Arvq!$q!RVRVRVQ&GHAq"&!Q'Aq"&!Q'Arvrvrvq1
 #J	
 YY			"YY			999iii8BHaV	
% 6 -~/NOO2:rz":;;A$ A$ <; PO7 :A$H .99.99.99N: N: :9 :9 :9N:b -~/NOO5 5 PO58  BIaCAFFFBIb!SQGGG	

 BIaCAFFFBIBGG777BIb!SrBBB   		
 & .99Q Q :9' (Q,' ' '&	< 	< 	< !Q((-~/NOO,8 ,8 PO )(,8^ .99
 
 :9
< .99( ( :9( / / /@/ / /@ .99.99-( -( :9 :9-(` .99.99-+ -+ :9 :9-+` 2:rz":;;...>*IJJ4"&")RY!EF  4-88< < 98	  KJ /. <;<> .99.99% % :9 :9% .99.99)W )W :9 :9)WX .99.99, , :9 :9,D !#?@  .99G G :9	 
G2 2:rz":;;
3 
3 <;
3 h~'FGGG/ / HG/$A A AA A AE E EE E E E Er\   