L iBdZddgZddlmZddlmZddlmZd dZdZ y ) z+ Functions that operate on sparse matrices count_blocksestimate_blocksize)issparse) csr_array)csr_count_blockscPt|r|jdvs t|}|jdk(ryd|cxkrdkst dt dd|zdz }t |j}|j \}}|dzdk(r|dzdk(r|dt|d zz }nd }|d zdk(r|d zdk(r|d t|d zz }nd }||kDr||kDr|dt|dzz }||kDryy |dzdk(r|dzdk(r|dt|dzz } nd } | |kDry||kDry ||kDry y)zAttempt to determine the blocksize of a sparse matrix Returns a blocksize=(r,c) such that - A.nnz / A.tobsr( (r,c) ).nnz > efficiency )csccsr)rrg?z.efficiency must satisfy 0.0 < efficiency < 1.0g@)r r g )rr$)r)r r )rformatrnnz ValueErrorfloatshaper) A efficiencyhigh_efficiencyrMNe22e33e66e44s [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/sparse/_spfuncs.pyrr sg QKAHH6 aLuuz z C IJJ IJJZ'3.O ,C ''CAa1uza!eqjQa../1uza!eqjQa../ _!6R,q//0   q5A:!a%1*l1U334CC   :  : cH|\}}|dks|dkr tdt|ri|jdk(r3|j\}}t |||||j |j S|jdk(rt|j||fStt||S)z]For a given blocksize=(r,c) count the number of occupied blocks in a sparse matrix A rzr and c must be positiver r ) rrrrrindptrindicesrTr)r blocksizercrrs r!rr>s CAa1uA344{ 88u ''CAa#Aa!AHHQYY? ? XX QqE* *  ! Y //r"N)gffffff?) __doc____all___baser_csrr _sparsetoolsrrrr"r!r0s+ . /*0f0r"