
    ^Mh                     D    d Z ddgZddl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   )issparse)	csr_array)csr_count_blocksffffff?c                    t          |           r	| j        dv 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
    )csccsr    )r   r   g      ?z.efficiency must satisfy 0.0 < efficiency < 1.0g       @      )r   r   g           	   )r   r   $   )   r      )r   r   )r   formatr   nnz
ValueErrorfloatshaper   )
A
efficiencyhigh_efficiencyr   MNe22e33e66e44s
             U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/sparse/_spfuncs.pyr   r      s    QKK AH66aLL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                 D   |\  }}|dk     s|dk     rt          d          t          |           rU| j        dk    r(| j        \  }}t	          ||||| j        | j                  S | j        dk    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 positiver   r
   )
r   r   r   r   r   indptrindicesr   Tr   )r   	blocksizercr   r   s         r"   r   r   >   s     CAa1uuA3444{{ +8u'CAa#Aa!AHQY???XQqE***	!Y///r#   N)r   )
__doc____all___baser   _csrr   _sparsetoolsr   r   r    r#   r"   <module>r1      s     .
/             * * * * * *0 0 0 0f0 0 0 0 0r#   