
    /ii                     x   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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)                                     Z0ej&        '                    d
e          ej&        '                    de          ej&        '                    de          d*                                     Z1ej&        '                    deez             d+             Z2ej&        '                    d, ej3        d-dd.d/d 0           ej3        d1dd.d/d 0          f ej3        d-dd.d/d 0           ej4         ej5        d2ej-        3           ej3        d1dd.d45          gd/6          fg          ej&        '                    de          d7                         Z6d8 Z7d9 Z8ej&        '                    d:d dg          ej&        '                    deez             d;                         Z9ej&        '                    de          d<             Z:e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jA        dEfej-        ejB        ejC        dFfg          ej&        '                    dGdFdEg          dH                                                             ZDej&        '                    d
e          ej&        '                    de          dI                         ZEej&        '                    d
e          ej&        '                    de          dJ                         ZFej&        '                    d
e          ej&        '                    de          dK                         ZGej&        '                    dLe$e%f          ej&        '                    de          dM                         ZHej&        '                    dej)        ej*        g          dN             ZI ejJ        dOeez   P          dQ             ZKdR ZLdS ZMdT ZNdU ZOej&        '                    g dV ejP        dd/6           ejP        dd/6          ddWf ejP        dd/6           ejP        dd/6           ejP        d          dXf ejP        ddY6           ejP        dd/6          ddZf ejP        dd/6           ejP        ddY6          dd[f ejP        dd/ejQ        \           ejP        dd/6          dd]f ejP        dd/ej)        \           ejP        dd/ej*        \          dd]fg          d^             ZRej&        '                    d_dEdFg          ej&        '                    d`eez             ej&        '                    daeez             ej&        '                    dej)        ej*        g          db                                                 ZSdS )c    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sparse_matmul_to_dense)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                  j/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_sparsefuncs.pytest_mean_variance_axis0rG           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r6   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shaper6   
   F)replace)weightsr+   )r0   randomr   fullchoicearangerM   nanrandr5   r   finfoeps)r6   rJ   rngr:   missing_indicessample_weightr;   r8   s           rF   "test_mean_variance_axis0_precisionr\   E   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,   r9   s                  rF   test_mean_variance_axis1r_   Y   rH   rI   )Xwr:   rP   )r   r   r&   r   r%   r(   )r&   r&   r&   )r   r&   r&   )r   r   r   r&   )r   r&   r&   r&   )r&   r%   r&   r%   )      ?rb   rb   r&   r(   r   r   r   )r%   r%   r   )r   r   r(   g       @rb   )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   r6   r:   r+   	last_meanlast_varlast_nrP   r:   r+   )
r5   r0   zerosrM   
zeros_liker4   r   r6   r   r   r`   r:   rP   rJ   r6   r+   	Xw_sparserC   rg   rh   ri   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                            rF   +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&   re   rf   rj   )
r5   r0   rk   sizerl   r4   r   r6   r   r   rm   s                            rF   +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   rN   c                 @    g | ]}                     d d          S r   r%   )r   randint).0i
n_featuresrY   s     rF   
<listcomp>z0test_incr_mean_variance_axis.<locals>.<listcomp>L  s+    XXX!3;;q!*;==XXXr]   c                 @    g | ]}                     d d          S r   r   )r   r   	n_samplesrY   s     rF   r   z0test_incr_mean_variance_axis.<locals>.<listcomp>N  s+    XXX3;;q!);<<XXXr]   re   r&   )r:   r+   rg   rh   r+   rg   rh   ri   )r0   rQ   r   rangerk   rl   r4   array
atleast_2dTr-   r.   r/   r   r   r   r   rM   vstackr1   r2   r3   r5   r6   )r   r   r   r+   data_chunksrg   rh   ri   r:   r<   r=   rD   rE   X_means_incrX_vars_incrn_incrr>   r?   r@   rA   rC   r   r   rY   s                        @@@rF   test_incr_mean_variance_axisr   C  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    *   re   )rg   rh   ri   r+   r   r*   r&   N)r0   rQ   r   rV   rk   rl   rM   r4   dictr   r   r7   toarrayr8   r-   r.   
ValueError)rJ   r   r   rY   r:   rg   rh   ri   kwargsmean0var0r;   s               rF   )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&   )rL   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&   re   r   r*   )r0   rk   rM   r4   r   spr   r   nanmeanr   nanvarr   isnan)X1X2r   r+   rg   rh   ri   updated_meanupdated_var	updated_nr:   s              rF   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   re   r   )	r   rQ   tocsrr0   rk   rM   r4   r   r   )	r+   r   r   rg   rh   ri   r   r   r   s	            rF    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   rQ   r   r0   rk   rM   r   r   rR   )r+   r:   rg   rh   ri   r;   new_ns          rF   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%   re   )   r   r   r   )  r   r   r   ),  r   r   r   r   r   r   r   )r0   r   r4   rU   r   r   copyr   )r+   rJ   	old_meansold_variancesold_sample_countr:   X_nanrD   rE   X_sample_countX_nan_means
X_nan_varsX_nan_sample_counts                rF   '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   r:   r;   r=   s       rF   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   rc   	         r    r   r   re   ra      r&   )r&   r(   r    )r0   r1   r2   r   intponesrM   	ones_liker   r   r   )r   r6   r:   X_rowsoutout_rowsexpects          rF   test_densify_rowsr   M  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   )r0   rQ   r   r   r   tocscr   rV   r   r   r-   r.   r/   tolilr5   r1   rY   r:   XrXcXAscales         rF   test_inplace_column_scaler   ^  s   
)


"
"C
	#sD)))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--E14E1(#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&   )r0   rQ   r   r   r   r   r   rV   reshaper   r   r-   r.   r/   r   r   r5   r1   r   s         rF   test_inplace_row_scaler   ~  s   
)


"
"C
	#sD)))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#L  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   rc   r   r   re   swapr   r   r%   r(   )r0   r   r2   r   get_blas_funcsr   r   r   r-   r.   r/   r   r1   r   r   r:   r=   r>   r   s         rF   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   rc   r   r   re   r   r   r   r&   )r0   r   r2   r   r   r   r   r   r-   r.   r/   r   r1   r   s         rF   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   rc   r   r   r   re   r4   )r+   
ignore_nanr*   )r0   r   indicesr5   indptrr   r   )r6   r+   r   missing_valuesmin_funcmax_funcr   r   r:   rC   mins_sparsemaxs_sparses               rF   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   rc   r   r   re   r   r*   r%   r   )	r0   r   r2   r-   r.   r/   r   r   r   )r   r   r:   r=   r>   s        rF   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  rc   r   r   re   r   )      ?g?g333333?皙?r  )r   r&   r   Nr*   )r+   r[   r%   r&   zaccording to the rule 'safe'r   )r0   r   r2   r   r   sumr-   r.   r/   r   r6   r   r5   r4   r   argsr   nbytes)
r   r   r:   r=   r>   	X_nonzeror[   X_nonzero_weightedr+   es
             rF   test_count_nonzeror  9  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?rN   r	  r   r&   r%   r  g      r   )r0   rQ   r   rV   medianr   r   r   r   r-   r.   r/   )r   r   rY   r:   dense_mediancscsparse_medianinds           rF   test_csc_row_medianr  g  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)rN   r&   rN   r   r%   r&   r*   )r   
csr_matrixr0   r   r   r2   r1   randnr5   r3   r4   r   r   r6   r   datar   absr
  )r   r  r   rsr6   r:   r=   index_dtypes           rF   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   rN   r   r   )r   r6   r"   r&   r*   r%   gư>Hz>)rtol)	r   rQ   r   normr   r6   r0   r1   r   )r6   r:   scipy_normsnormsr%  s        rF   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*   )
paramr0   rQ   default_rngr   r   asarrayr7   ravelr   )requestsparse_containerr"   rC   X_densemuX_sparse_centeredX_dense_centereds           rF   centered_matricesr8    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   )r0   rQ   r/  standard_normalrM   r   matmatglobal_random_seedr8  r6  r7  rY   Ys         rF   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&   )r0   rQ   r/  r:  rM   r   matvecr=  r8  r6  r7  rY   ys         rF   test_implicit_center_matvecrD    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   )r0   rQ   r/  r:  rM   r   r   rmatmatr<  s         rF   test_implicit_center_rmatmatrG    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   )r0   rQ   r/  r:  rM   r   r   rmatvecrB  s         rF   test_implit_center_rmatvecrJ    s    *;''
)

 2
3
3C,21566A$&*,=,E,Ea,H,HIII$&*,=,?!,CDDDDDr]   ABr   msgzShapes must fulfilzShape of outcoozInput 'A' mustzInput 'B' must)r   r6   zDtype of A and Bc                     t          j        t          |          5  t          | ||           ddd           dS # 1 swxY w Y   dS )z7Test that sparse_matmul_to_dense raises when it should.)matchr   N)r-   r.   r   r   rK  s       rF   "test_sparse_matmul_to_dense_raisesrS    s    . 
z	-	-	- . .q!----. . . . . . . . . . . . . . . . . .s   <A A out_is_Nonea_containerb_containerc                 t   t           j                            |           }d\  }}}|                    ||f                              |          }	|                    ||f                              |          }
d|	j        |                    ddg||z  ddg          <   d|
j        |                    ddg||z  ddg          <    ||	          } ||
          }|rd}nt          j        ||f|          }t          |||	          }t          ||	|
z  d
           |st          ||d
           dS dS )z4Test that sparse_matmul_to_dense computes correctly.)rN      r   r   FTr  )r   pNre   rR  r$  )atol)
r0   rQ   r/  r:  r5   flatrS   emptyr   r   )r=  rT  rU  rV  r6   rY   n1n2n3a_denseb_denseabr   results                  rF   test_sparse_matmul_to_densere    sc    )

 2
3
3CJBB!!2r(++22599G!!2r(++22599GJKGLUDMRC:FFGJKGLUDMRC:FFGGAGA .hBxu---#Aqc222FFGg-D9999 0V$//////0 0r]   )Tnumpyr0   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   r   sklearn.utils.sparsefuncs_fastr   r   r   r   markparametrizerG   r1   r2   r\   r_   rU   r   r}   r   r   r   rQ   hstackrR   r   r   r   r   r   r   r   r   r   r   minmaxnanminnanmaxr  r  r  r  r"  r)  fixturer8  r?  rD  rG  rJ  eyer3   rS  re   r]   rF   <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 	%	 	 	 &"&5"9"9"94AUV	%	 	 	 &"&5"9"9"9626!99nU	%	 	 	 &"&5"9"9"94AQR	%	 	 	 &"&5"9"9"94AQRBF1U"(333BF1U###		
 BF1U"*555BF1U"*555		
 *. .+ *. 66(GHH(GHH2:rz":;;0 0 <; IH IH 760 0 0r]   