
     h                     H    d Z ddgZddlmZmZ ddlmZ ddlmZ ddZ	d	 Z
d
S )z+ Functions that operate on sparse matrices
count_blocksestimate_blocksize   )isspmatrix_csr
csr_matrix)isspmatrix_csc)csr_count_blocksffffff?c                    t          |           st          |           st          |           } | j        dk    rdS d|cxk     rdk     sn t	          d          d|z   dz  }t          | j                  }| j        \  }}|dz  dk    r |dz  dk    r|dt          | d          z  z  }nd	}|d
z  dk    r |d
z  dk    r|dt          | d          z  z  }nd	}||k    r&||k    r |dt          | d          z  z  }||k    rdS dS |dz  dk    r |dz  dk    r|dt          | d          z  z  }	nd	}	|	|k    rdS ||k    rdS ||k    rdS dS )zAttempt to determine the blocksize of a sparse matrix

    Returns a blocksize=(r,c) such that
        - A.nnz / A.tobsr( (r,c) ).nnz > efficiency
        )r   r   g      ?z.efficiency must satisfy 0.0 < efficiency < 1.0g       @      )r   r   g           	   )r   r   $   )   r      )r   r   )r   r   r   nnz
ValueErrorfloatshaper   )
A
efficiencyhigh_efficiencyr   MNe22e33e66e44s
             Q/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/sparse/_spfuncs.pyr   r      s    1 !2!2 qMMuzzuzCIJJJZ'3.O
,,C
'CAa1uzza!eqjjQa.../1uzza!eqjjQa.../
_!6!6R,q///055q5A::!a%1**l1U3334CCC5:5:55    c                 6   |\  }}|dk     s|dk     rt          d          t          |           r(| j        \  }}t          ||||| j        | j                  S t          |           rt          | j        ||f          S t          t          |           |          S )z]For a given blocksize=(r,c) count the number of occupied
    blocks in a sparse matrix A
    r   zr and c must be positive)
r   r   r   r   indptrindicesr   r   Tr   )r   	blocksizercr   r   s         r    r   r   >   s     CAa1uuA3444a 5g!!Aa;;;			 5AC1&&&JqMM)444r!   N)r	   )__doc____all___csrr   r   _cscr   _sparsetoolsr   r   r    r!   r    <module>r/      s     .
/ , , , , , , , ,             * * * * * *0 0 0 0f5 5 5 5 5r!   