a
    .'ØaÍ  ã                   @   sz   d dl mZmZmZ d dlmZ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 d dlmZ G dd„ dƒZd	S )
é    )ÚarrayÚkronÚdiag)Úassert_Úassert_equal)Úspfuncs)Ú
csr_matrixÚ
csc_matrixÚ
bsr_matrix)Úcsr_scale_rowsÚcsr_scale_columnsÚbsr_scale_rowsÚbsr_scale_columns)Úmatrixc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestSparseFunctionsc              	   C   sö  t g d¢g d¢g d¢gƒ}t|ƒ}tg d¢ƒ}tdd|j|j|j|ƒ t| ¡ t	|ƒ| ƒ t|ƒ}tg d¢ƒ}t
dd|j|j|j|ƒ t| ¡ |t	|ƒ ƒ t|dd	gdd
ggƒ}t|dd}tg d¢ƒ}tddd	d	|j|j|j|ƒ t| ¡ t	|ƒ| ƒ t|dd}tg d¢ƒ}tddd	d	|j|j|j|ƒ t| ¡ |t	|ƒ ƒ t|g d¢g d¢gƒ}t|dd}tg d¢ƒ}tddd	d|j|j|j|ƒ t| ¡ t	|ƒ| ƒ t|dd}tg d¢ƒ}tddd	d|j|j|j|ƒ t| ¡ |t	|ƒ ƒ d S )N)é   r   r   é   é   )r   é   r   é   r   )r   r   é   é   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   )Z	blocksize)r   r   r   r   r   r   )
r   r   r   r   r   r   r   é   é	   é
   )r   r   r   )r   r   )r   r   r   r   r   r   r   r   r   r   é   é   é   é   é   )r   r   r   r   ZindptrÚindicesÚdatar   Ztodenser   r   r   r
   r   r   )ÚselfÚDÚSÚvÚE© r'   ú>lib/python3.9/site-packages/scipy/sparse/tests/test_spfuncs.pyÚtest_scale_rows_and_cols   s<    þz,TestSparseFunctions.test_scale_rows_and_colsc                 C   s  g }|  ddgddgg¡ |  g d¢g d¢g d¢g¡ |  dgdgdgg¡ dd„ |D ƒ}g }|  dgg¡ |  ddgddgg¡ |  ddgddgg¡ |  g d¢g d¢g d¢g¡ d	d„ |D ƒ}|D ]J}|D ]@}t||ƒ}t |¡\}}t||jd kƒ t||jd kƒ qÎqÆd S )
Nr   r   ©r   r   r   ©r   r   r   ©r   r   r   c                 S   s   g | ]}t |ƒ‘qS r'   ©r   ©Ú.0Úxr'   r'   r(   Ú
<listcomp>8   ó    z?TestSparseFunctions.test_estimate_blocksize.<locals>.<listcomp>)r   r   r   c                 S   s   g | ]}t |ƒ‘qS r'   r-   r.   r'   r'   r(   r1   ?   r2   )Úappendr   r   Zestimate_blocksizer   Úshape)r"   ÚmatsZblksÚAÚBÚXÚrÚcr'   r'   r(   Útest_estimate_blocksize3   s"    
z+TestSparseFunctions.test_estimate_blocksizec           	   
   C   sT  dd„ }g }|  dgg¡ |  dgg¡ |  ddgg¡ |  ddgg¡ |  ddgddgg¡ |  g d¢g d¢g d¢g¡ |  dgdgdgg¡ |D ]`}|D ]V}t||ƒ}t|ƒ}tddƒD ]4}tddƒD ]$}tt |||f¡||||fƒƒ qÊq¼qœq”tg d¢g d¢g d¢gddggƒ}t|ƒ}tt |d	¡||d	ƒƒ tt |d	¡||d	ƒƒ d S )
Nc                 S   s.   |\}}|   ¡ \}}ttt|| || ƒƒƒS )N)ZnonzeroÚlenÚsetÚzip)r6   ZbsÚRÚCÚIÚJr'   r'   r(   ÚgoldI   s    z3TestSparseFunctions.test_count_blocks.<locals>.goldr   r   r*   r+   r,   r   )r   r   )r3   r   r   Úranger   r   Zcount_blocksr	   )	r"   rC   r5   r6   r7   r8   ÚYr?   r@   r'   r'   r(   Útest_count_blocksH   s(    
("z%TestSparseFunctions.test_count_blocksN)Ú__name__Ú
__module__Ú__qualname__r)   r;   rF   r'   r'   r'   r(   r      s   'r   N)Znumpyr   r   r   Znumpy.testingr   r   Zscipy.sparser   r   r	   r
   Zscipy.sparse._sparsetoolsr   r   r   r   Zscipy.sparse.sputilsr   r   r'   r'   r'   r(   Ú<module>   s   