§
    fŠtjÃ  ã                   ó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_blocksçffffffæ?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 )z—Attempt 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
             úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/sparse/_spfuncs.pyr   r      s±  € õ �Q‰KŒKð ˜AœH¨Ð6Ð6Ý�a‰LŒLˆà„u�‚z€zØˆuàˆzÐÐÒÐ˜CÒÐÐÐÝÐIÑJÔJÐJà˜ZÑ'¨3Ñ.€OÝ
�”‰,Œ,€CØ
Œ'�C€A€aàˆ1�u�‚z€z�a˜!‘e˜q’j�jØ�Q� a¨Ñ.Ô.Ñ.Ñ/ˆˆàˆàˆ1�u�‚z€z�a˜!‘e˜q’j�jØ�Q� a¨Ñ.Ô.Ñ.Ñ/ˆˆàˆà
ˆ_ÒÐ  Ò!6Ð!6Ø�R�, q¨Ñ/Ô/Ñ/Ñ0ˆØ�ÒÐØ�5à�5àˆq‰5�AŠ:ˆ:˜!˜a™% 1š*˜*Ø˜�l¨1¨UÑ3Ô3Ñ3Ñ4ˆCˆCàˆ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¨   € ð �C€A€aØˆ1‚u€u��A’�ÝÐ3Ñ4Ô4Ð4å��{„{ð +ØŒ8�uÒÐØ”'‰CˆAˆaÝ# A a¨¨!¨A¬H°Q´YÑ?Ô?Ð?ØŒX˜ÒÐÝ ¤ Q q EÑ*Ô*Ð*Ý�	 !™œ 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#   