Ë
    âQ(hcN  ã                   óÖ   — d Z dZg d¢ZddlZddlmZ ddlmZ dd	l	m
Z
mZmZmZ dd
lmZ ddlmZmZmZmZmZmZ ddlmZ  G d„ de«      Zd„ Zd„ Z G d„ dee«      Z G d„ dee«      Zy)zSparse DIAgonal formatzrestructuredtext en)Ú	dia_arrayÚ
dia_matrixÚisspmatrix_diaé    Né   )Úcopy_if_neededé   )Úspmatrix)ÚissparseÚ_formatsÚ_spbaseÚsparray)Ú_data_matrix)ÚisshapeÚupcast_charÚgetdtypeÚget_sum_dtypeÚvalidateaxisÚcheck_shape)Ú
dia_matvecc                   óx  — e Zd ZdZdddœd„Zd„ Zd„ Zdd„Zej                  j                  e_	        dd„Z
ej                  j                  e
_	        dd	„Zej                  j                  e_	        d
„ Zd„ Zd„ Zdd„Zdd„Zej                   j                  e_	        dd„Zej"                  j                  e_	        dd„Zej$                  j                  e_	        dd„Zej&                  j                  e_	        dd„Zej(                  j                  e_	        dd„Zd„ Zej,                  j                  e_	        y)Ú	_dia_baseÚdiaN©Úmaxprintc                óÂ  — t        j                  | ||¬«       t        |«      rÙ|j                  dk(  rP|r|j	                  «       }|j
                  | _        |j                  | _        t        |j                  «      | _	        �nl|j                  | j                  k(  r|r|j	                  «       }n|j                  «       }|j
                  | _        |j                  | _        t        |j                  «      | _	        �nòt        |t        «      �r5t        |«      r}t        |«      | _	        t        j                  dt!        |t"        ¬«      «      | _        | j%                  t'        | j                  «      ¬«      }t        j                  d|¬«      | _        �nY	 |\  }}	|€t)        d«      ‚|st*        }t        j,                  t        j.                  |d   ||¬	«      «      | _        t        j.                  |d
   | j%                  t'        |«      ¬«      |¬	«      }	t        j0                  |	«      | _        t        |«      | _	        n¬	 t        j4                  |«      }t        | t6        «      r(|j8                  dk7  rt)        d|j8                  › d�«      ‚| j;                  |||¬«      j                  «       }|j
                  | _        |j                  | _        t        |j                  «      | _	        |�+t!        |«      }| j
                  j=                  |«      | _        | j                  j8                  d
k7  rt)        d«      ‚| j
                  j8                  dk7  rt)        d«      ‚| j
                  j                  d   t?        | j                  «      k7  r:t)        d| j
                  j                  d   t?        | j                  «      fz  «      ‚t?        t        j@                  | j                  «      «      t?        | j                  «      k7  rt)        d«      ‚y # t2        $ r}
d}t)        |«      |
‚d }
~
ww xY w# t2        $ r}
t)        d| j                  › d�«      |
‚d }
~
ww xY w)Nr   r   )r   r   )Údefault©Úmaxvalr   ©Údtypezexpected a shape argument)r    Úcopyr   z+unrecognized form for dia_array constructorzunrecognized form for z_matrix constructorr   zDIA arrays don't support zD input. Use 2D)r    Úshapezoffsets array must have rank 1zdata array must have rank 2zBnumber of diagonals (%d) does not match the number of offsets (%d)z&offset array contains duplicate values)!r   Ú__init__r
   Úformatr!   ÚdataÚoffsetsr   r"   Ú_shapeÚtodiaÚ
isinstanceÚtupler   ÚnpÚzerosr   ÚfloatÚ_get_index_dtypeÚmaxÚ
ValueErrorr   Ú
atleast_2dÚarrayÚ
atleast_1dÚ	ExceptionÚasarrayr   ÚndimÚ_coo_containerÚastypeÚlenÚunique)ÚselfÚarg1r"   r    r!   r   ÚAÚ	idx_dtyper%   r&   ÚeÚmessageÚnewdtypes                úO/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/sparse/_dia.pyr#   z_dia_base.__init__   sv  € Ü×Ñ˜d D°8Õ<ä�DŒ>Ø�{‰{˜eÒ#ÙØŸ9™9›;�DØ ŸI™I�”	Ø#Ÿ|™|�”Ü)¨$¯*©*Ó5�–à—;‘; $§+¡+Ò-±$ØŸ	™	›‘AàŸ
™
›�AØŸF™F�”	Ø Ÿy™y�”Ü)¨!¯'©'Ó2�–Ü˜œeÕ$Ü�tŒ}ô *¨$Ó/�”ÜŸH™H U¬H°UÄEÔ,JÓK�”	Ø ×1Ñ1¼¸T¿Z¹Z»Ð1ÓI�	Ü!Ÿx™x¨°9Ô=�–ð5à$(‘M�D˜'ð
 �}Ü(Ð)DÓEÐEÙÜ-˜Ü "§¡¬b¯h©h°t¸A±wÀeÐRVÔ.WÓ X�D”IÜ Ÿh™h t¨A¡wØ-1×-BÑ-BÌ#ÈeË*Ð-BÓ-UØ,0ô2�Gô $&§=¡=°Ó#9�D”LÜ"-¨eÓ"4�D•KðMÜ—z‘z $Ó'�ô ˜$¤Ô(¨T¯Y©Y¸!ª^Ü Ð#<¸T¿Y¹Y¸KÀÐ!WÓXÐXØ×#Ñ# D°¸UÐ#ÓC×IÑIÓKˆAØŸ™ˆDŒIØŸ9™9ˆDŒLÜ% a§g¡gÓ.ˆDŒKàÐÜ “ˆHØŸ	™	×(Ñ(¨Ó2ˆDŒIð �<‰<×Ñ Ò!ÜÐ=Ó>Ð>à�9‰9�>‰>˜QÒÜÐ:Ó;Ð;à�9‰9�?‰?˜1Ñ¤ T§\¡\Ó!2Ò2Üð @à—y‘y—‘ qÑ)¬3¨t¯|©|Ó+<Ð=ñ>ó ?ð ?ô Œr�y‰y˜Ÿ™Ó&Ó'¬3¨t¯|©|Ó+<Ò<ÜÐEÓFÐFð =øôY !ò 5ØK�GÜ$ WÓ-°1Ð4ûð5ûô$ ò MÜ Ð!9Ø$(§K¡K =Ð0Cð"Eó FØKLðMûðMús0   ÆP ÉP6 Ð	P3Ð P.Ð.P3Ð6	QÐ?QÑQc                 óî   — t         | j                     \  }}t        | t        «      rdnd}| j                  j
                  d   }d|› d|› d| j                  › d| j                  › d|› d	| j
                  › d
�S )Nr2   Úmatrixr   ú<z sparse z of dtype 'z'
	with z stored elements (z diagonals) and shape ú>)r   r$   r)   r   r%   r"   r    Únnz)r;   Ú_ÚfmtÚ
sparse_clsÚds        rB   Ú__repr__z_dia_base.__repr__c   s|   € Ü˜$Ÿ+™+Ñ&‰ˆˆ3Ü *¨4´Ô 9‘W¸xˆ
Ø�I‰I�O‰O˜AÑˆà�ˆu�H˜Z˜L¨°D·J±J°<ð @Ø—h‘h�ZÐ1°!°Ð4JÈ4Ï:É:È,ÐVWðYð	
ó    c                 óÒ   — | j                   \  }}t        j                  | j                  j                   d   «      }|| j                  dd…df   z
  }|dk\  }|||k  z  }|||k  z  }|S )z~Returns a mask of the same shape as self.data, where
        mask[i,j] is True when data[i,j] corresponds to a stored element.r   Nr   )r"   r+   Úaranger%   r&   )r;   Únum_rowsÚnum_colsÚoffset_indsÚrowÚmasks         rB   Ú
_data_maskz_dia_base._data_maskl   so   € ð "ŸZ™ZÑˆ�(Ü—i‘i §	¡	§¡°Ñ 2Ó3ˆØ˜DŸL™Lª¨4¨Ñ0Ñ0ˆØ�q‘ˆØ��x‘Ñ ˆØ�˜xÑ'Ñ(ˆØˆrM   c                 ó€   — |�t        d«      ‚| j                  «       }t        j                  | j                  |   «      S )Nz<count_nonzero over an axis is not implemented for DIA format)ÚNotImplementedErrorrU   r+   Úcount_nonzeror%   )r;   ÚaxisrT   s      rB   rX   z_dia_base.count_nonzerow   s?   € ØÐÜ%ØNóð ð �‰Ó ˆÜ×Ñ §	¡	¨$¡Ó0Ð0rM   c                 óÊ   — |�t        d«      ‚| j                  \  }}d}| j                  D ],  }|dkD  r|t        |||z
  «      z  }Œ|t        ||z   |«      z  }Œ. t	        |«      S )Nz6_getnnz over an axis is not implemented for DIA formatr   )rW   r"   r&   ÚminÚint)r;   rY   ÚMÚNrG   Úks         rB   Ú_getnnzz_dia_base._getnnz�   sy   € ØÐÜ%ð '7ó 8ð 8à�j‰j‰ˆˆ!ØˆØ—‘ò 	"ˆAØ�1ŠuØ”s˜1˜Q˜q™S“zÑ!‘à”s˜1˜Q™3˜q“zÑ!‘ð		"ô
 �3‹xˆrM   c           
      óR  — t        |«       |�
|dk  r|dz  }t        | j                  «      }| j                  \  }}d }|dk(  r‹| j	                  «       }| j
                  |z  j                  d¬«      }	|	j                  d   |k(  r|	}
n3t        j                  ||	j                  ¬«      }
|	|
d |	j                  d    | j                  |
|¬«      }nÇt        j                  |df|¬«      }t        j                  ||¬«      }t        ||t        | j                  «      | j
                  j                  d   | j                  | j
                  ||«       | j                  |«      }|€|j                  ||¬«      S | j                  |j                  |¬«      «      }|j                  d||¬«      S )	Nr   r   ©rY   r   r   )r    Úout© )rY   r    rc   )r   r   r    r"   rU   r%   Úsumr+   r,   Ú_ascontainerÚonesr   r9   r&   )r;   rY   r    rc   Ú	res_dtyperP   rQ   ÚretrT   ÚxÚresÚrow_sumsÚones                rB   re   z_dia_base.sum�   sy  € Ü�TÔàÐ  q¢Ø�A‰IˆDä! $§*¡*Ó-ˆ	Ø!ŸZ™ZÑˆ�(Øˆà�1Š9Ø—?‘?Ó$ˆDØ—‘˜TÑ!×&Ñ&¨AÐ&Ó.ˆAØ�w‰w�q‰z˜XÒ%Ø‘ä—h‘h˜x¨q¯w©wÔ7�Ø#$��K�Q—W‘W˜Q‘ZÐ Ø×#Ñ# C¨yÐ#Ó9‰Cô —x‘x ¨1 °YÔ?ˆHÜ—'‘'˜(¨)Ô4ˆCÜ�x ¬3¨t¯|©|Ó+<Ø—y‘y—‘ qÑ)¨4¯<©<¸¿¹ÀCÈôSð ×(Ñ(¨Ó2ˆHàˆ|Ø—|‘|¨%°S�|Ó9Ð9à×#Ñ# H§L¡L°d LÓ$;Ó<ˆCà�w‰w˜B e°ˆwÓ5Ð5rM   c                 óD  — t        |t        «      s|j                  | «      S t        j                  | j
                  |j
                  «      r(| j                  | j                  |j                  z   «      S t        j                  | j
                  |j
                  «      }t        j                  || j
                  «      }t        j                  ||j
                  «      }| j                  j                  d   }|j                  j                  d   }||k(  rVt        |«      t        | j
                  «      k(  r5| j                  t        |«         }||d d …fxx   |j                  z  cc<   �n||k(  rUt        |«      t        |j
                  «      k(  r4|j                  t        |«         }||d d …fxx   | j                  z  cc<   n¾t        | j                  d   |d   z   | j                  d   «      }t        j                  t        |«      |ft        j                  | j                  |j                  «      ¬«      }||d |…fxx   | j                  d d …d |…f   z  cc<   ||d |…fxx   |j                  d d …d |…f   z  cc<   | j!                  ||f| j                  ¬«      S )Nr   r   éÿÿÿÿr   ©r"   )r)   r   Ú_add_sparser+   Úarray_equalr&   Ú
_with_datar%   Úunion1dÚsearchsortedr"   r9   Ú_invert_indexr[   r,   Úresult_typeÚ_dia_container)	r;   ÚotherÚnew_offsetsÚself_idxÚ	other_idxÚself_dÚother_dÚnew_datarK   s	            rB   rq   z_dia_base._add_sparseµ   s  € ä˜%¤Ô+Ø×$Ñ$ TÓ*Ð*ô �>‰>˜$Ÿ,™,¨¯©Ô6Ø—?‘? 4§9¡9¨u¯z©zÑ#9Ó:Ð:ô —j‘j §¡¨u¯}©}Ó=ˆÜ—?‘? ;°·±Ó=ˆÜ—O‘O K°·±Ó?ˆ	à—‘—‘ Ñ#ˆØ—*‘*×"Ñ" 1Ñ%ˆð �WÒ¤ [Ó!1´S¸¿¹Ó5FÒ!FØ—y‘y¤¨xÓ!8Ñ9ˆHØ�Y¢�\Ó" e§j¡jÑ0Õ"Ø�wÒ¤3 {Ó#3´s¸5¿=¹=Ó7IÒ#IØ—z‘z¤-°	Ó":Ñ;ˆHØ�Xšq�[Ó! T§Y¡YÑ.Ô!ô �D—J‘J˜q‘M K°¡OÑ3°T·Z±ZÀ±]ÓCˆAô —x‘xÜ�[Ó! 1Ð%Ü—n‘n T§Y¡Y°·
±
Ó;ôˆHð �X˜w ˜wÐ&Ó'¨4¯9©9²Q¸¸¸°UÑ+;Ñ;Ó'Ø�Y   Ð(Ó)¨U¯Z©Zº¸2¸A¸2¸Ñ->Ñ>Ó)Ø×"Ñ" H¨kÐ#:À$Ç*Á*Ð"ÓMÐMrM   c                 ó>   — | j                  | j                  |z  «      S ©N)rs   r%   )r;   ry   s     rB   Ú_mul_scalarz_dia_base._mul_scalarÚ   s   € Ø�‰˜tŸy™y¨5Ñ0Ó1Ð1rM   c                 ó°  — |}t        j                  | j                  d   t        | j                  j
                  |j                  j
                  «      ¬«      }| j                  j                  d   }| j                  \  }}t        ||t        | j                  «      || j                  | j                  |j                  «       |j                  «       «       |S )Nr   r   r   )r+   r,   r"   r   r    Úcharr%   r   r9   r&   Úravel)r;   ry   rj   ÚyÚLr]   r^   s          rB   Ú_matmul_vectorz_dia_base._matmul_vectorÝ   s›   € Øˆä�H‰H�T—Z‘Z ‘]¬+°d·j±j·o±oØ78·w±w·|±|ó+Eô Fˆð �I‰I�O‰O˜AÑˆà�j‰j‰ˆˆ!ä�1�Qœ˜DŸL™LÓ)¨1¨d¯l©l¸D¿I¹IØ—7‘7“9˜aŸg™g›iô	)ð ˆrM   c                 ó€  — | j                   \  }}|j                  dk(  rt        j                  }nt	        |«      }|dk  rt        ||z   ||«      }d}|}nt        |||z
  |«      }|}||z   }|j                  dk7  r|d | }| j                  j                   \  }	}
|| j                  v ro||
kD  rIt        j                  |	|f| j                  j                  ¬«      }| j                  |d d …d |
…f<   || _        || j                  | j                  |k(  ||…f<   y t        j                  | j                  | j                  j                  j                  |«      «      | _        t        ||
«      }t        j                  |	dz   |f| j                  j                  ¬«      }| j                  |d d…d |
…f<   ||d||…f<   || _        y )Nr   r   r   ro   )r"   r6   r+   Úinfr9   r[   r%   r&   r,   r    ÚappendÚtyper/   )r;   Úvaluesr_   r]   r^   Úvalues_nÚnÚ	min_indexÚ	max_indexÚ	data_rowsÚ	data_colsr%   Úms                rB   Ú_setdiagz_dia_base._setdiagì   s•  € Ø�z‰z‰ˆˆ1à�;‰;˜!Òä—v‘v‰Hä˜6“{ˆHàˆqŠ5Ü�A˜‘E˜1˜hÓ'ˆAØˆIØ‰Iä�A�q˜1‘u˜hÓ'ˆAØˆIØ˜A™ˆIà�;‰;˜!Òà˜B˜Q�ZˆFà#Ÿy™yŸ™Ñˆ	�9Ø�—‘ÑØ˜9Ò$Ü—x‘x ¨IÐ 6¸d¿i¹i¿o¹oÔN�Ø&*§i¡i�’Q˜
˜˜
�]Ñ#Ø �”	Ø@FˆD�I‰I�d—l‘l aÑ'¨°9Ð)<Ð<Ò=äŸ9™9 T§\¡\°4·<±<×3EÑ3E×3JÑ3JÈ1Ó3MÓNˆDŒLÜ�I˜yÓ)ˆAÜ—8‘8˜Y¨™]¨AÐ.°d·i±i·o±oÔFˆDØ$(§I¡IˆD��"��j�y�j�Ñ!Ø,2ˆD��Y˜yÐ(Ð(Ñ)ØˆD�IrM   c                 ó*   — |r| j                  «       S | S r�   ©r!   )r;   r!   s     rB   r(   z_dia_base.todia  s   € ÙØ—9‘9“;ÐàˆKrM   c                 ó¦  — |�|dk7  rt        d«      ‚| j                  \  }}t        | j                  «      }| j                   }t	        j
                  t        |«      t        j                  ¬«      d d …d f   }t	        j
                  |t        j                  ¬«      ||z  d d …d f   z
  }t        d|| j                  j                  d   z
  «      }	t	        j                  | j                  t	        j                  | j                  j                  d   |	f| j                  j                  ¬«      f«      }
|
||f   }
| j                  |
|f||f|¬«      S )N)r   r   zvSparse arrays/matrices do not support an 'axes' parameter because swapping dimensions is the only logical permutation.r   r   r   )r"   r!   )r0   r"   r/   r&   r+   rO   r9   Úintcr%   Úhstackr,   r    rx   )r;   Úaxesr!   rP   rQ   Úmax_dimr&   ÚrÚcÚ
pad_amountr%   s              rB   Ú	transposez_dia_base.transpose  s3  € ØÐ ¨¢Üð Ló Mð Mð "ŸZ™ZÑˆ�(Ü�d—j‘j“/ˆð —<‘<�-ˆô �I‰I”c˜'“l¬"¯'©'Ô2²1°d°7Ñ;ˆÜ�I‰I�h¤b§g¡gÔ.°'¸GÑ2CÂQÈÀWÑ1MÑMˆÜ˜˜G D§I¡I§O¡O°AÑ$6Ñ6Ó7ˆ
Ü�y‰y˜$Ÿ)™)¤R§X¡X¨t¯y©y¯©¸qÑ/AÀ:Ð.NØ48·I±I·O±Oô&Eð Fó Gˆà�A�q�D‰zˆØ×"Ñ" D¨' ?Ø�hð; Ø&*ð #ó ,ð 	,rM   c                 ó  — | j                   \  }}|| k  s||k\  r+t        j                  d| j                  j                  ¬«      S t        j
                  | j                  |k(  «      \  }t        d|«      }t        ||z   |«      }||z
  }|j                  dk(  r+t        j                  || j                  j                  ¬«      S | j                  |d   ||…f   }|t        |«      z
  }	|	dkD  rt        j                  |d|	fd¬«      }|S )Nr   r   Úconstant)Úmode)r"   r+   Úemptyr%   r    Únonzeror&   r/   r[   Úsizer,   r9   Úpad)
r;   r_   ÚrowsÚcolsÚidxÚ	first_colÚlast_colÚresult_sizeÚresultÚpaddings
             rB   Údiagonalz_dia_base.diagonal1  så   € Ø—Z‘Z‰
ˆˆdØ��Š:˜˜dšÜ—8‘8˜A T§Y¡Y§_¡_Ô5Ð5Ü�z‰z˜$Ÿ,™,¨!Ñ+Ó,‰ˆÜ˜˜1“Iˆ	Ü�t˜a‘x Ó&ˆØ Ñ*ˆØ�8‰8�qŠ=Ü—8‘8˜K¨t¯y©y¯©Ô?Ð?Ø—‘˜3˜q™6 9¨XÐ#5Ð5Ñ6ˆØ¤ F£Ñ+ˆØ�QŠ;Ü—V‘V˜F Q¨ L°zÔBˆFØˆrM   c                 óL  — | j                   dk(  r'| j                  | j                  | j                  ¬«      S | j                  \  }}| j                  j                  \  }}t        j                  |«      }|| j                  d d …d f   z
  }|dk\  }|||k  z  }|||k  z  }|| j                  dk7  z  }| j                  t        | j                  «      ¬«      }	t        j                  |dz   |	¬«      }
t        j                  |j                  d¬«      d | «      |
d|dz    ||k  r|
|   |
|dz   d  |j                  |j                     j                  |	d¬«      }| j                  j                  |j                     }| j                  |||
f| j                  | j                  ¬«      S )	Nr   r   r   r   rb   Fr—   )r"   r    )rG   Ú_csc_containerr"   r    r%   r+   rO   r&   r.   r/   r,   Úcumsumre   ÚTr8   )r;   r!   rP   rQ   Únum_offsetsÚ
offset_lenrR   rS   rT   r>   ÚindptrÚindicesr%   s                rB   Útocscz_dia_base.tocscC  s„  € Ø�8‰8�qŠ=Ø×&Ñ& t§z¡z¸¿¹Ð&ÓDÐDà!ŸZ™ZÑˆ�(Ø"&§)¡)§/¡/Ñˆ�ZÜ—i‘i 
Ó+ˆà˜DŸL™Lª¨4¨Ñ0Ñ0ˆØ�q‘ˆØ��x‘Ñ ˆØ�˜xÑ'Ñ(ˆØ�—‘˜a‘Ñ ˆà×)Ñ)´°T·Z±Z³Ð)ÓAˆ	Ü—‘˜( Q™,¨iÔ8ˆÜ!#§¡¨4¯8©8¸¨8Ó+;¸I¸XÐ+FÓ!Gˆˆq�˜A‘ÐØ˜Ò Ø$*¨:Ñ$6ˆF�:˜a‘<�=Ð!Ø—%‘%˜Ÿ™‘-×&Ñ& y°uÐ&Ó=ˆØ�y‰y�{‰{˜4Ÿ6™6Ñ"ˆØ×"Ñ" D¨'°6Ð#:À$Ç*Á*Ø)-¯©ð #ó 5ð 	5rM   c                 ót  — | j                   \  }}| j                  j                   \  }}t        j                  |«      }|| j                  d d …d f   z
  }|dk\  }|||k  z  }|||k  z  }|| j                  dk7  z  }||   }t        j
                  ||«      |j                  «          }	| j                  | j                  ft        | j                   «      ¬«      }
|j                  |
d¬«      }|	j                  |
d¬«      }	| j                  |   }| j                  |||	ff| j                   | j                  d¬«      S )Nr   )Úarraysr   Fr—   )r"   r    r!   )r"   r%   r+   rO   r&   Útiler…   r.   r/   r8   r7   r    )r;   r!   rP   rQ   rµ   r¶   rR   rS   rT   Úcolr>   r%   s               rB   Útocooz_dia_base.tocoo]  s2  € Ø!ŸZ™ZÑˆ�(Ø"&§)¡)§/¡/Ñˆ�ZÜ—i‘i 
Ó+ˆà˜DŸL™Lª¨4¨Ñ0Ñ0ˆØ�q‘ˆØ��x‘Ñ ˆØ�˜xÑ'Ñ(ˆØ�—‘˜a‘Ñ ˆØ�$‰iˆÜ�g‰g�k ;Ó/°·
±
³Ñ=ˆØ×)Ñ)Ø—L‘L�?¬3¨t¯z©z«?ð *ó 
ˆ	ð �j‰j˜¨ˆjÓ/ˆØ�j‰j˜¨ˆjÓ/ˆØ�y‰y˜‰ˆð ×"Ñ"Ø�C˜�:Ð d§j¡j¸¿
¹
Èð #ó 
ð 	
rM   c                 óÆ   — |r7| j                  || j                  j                  «       f| j                  ¬«      S | j                  || j                  f| j                  ¬«      S )z‘Returns a matrix with the same sparsity structure as self,
        but with different data.  By default the structure arrays are copied.
        rp   )rx   r&   r!   r"   )r;   r%   r!   s      rB   rs   z_dia_base._with_datax  sf   € ñ Ø×&Ñ&Ø�t—|‘|×(Ñ(Ó*Ð+°4·:±:ð 'ó ð ð ×&Ñ&Ø�t—|‘|Ð$¨D¯J©Jð 'ó ð rM   c                 óÚ  — t        |«      }|\  }}| j                  d d …d |…f   | _        || j                  d   kD  r¨t        j                  | j
                  | j                  d   z   | j                  j                  d   k  «      r_| j
                  d d …d f   | j                  d   z   t        j                  | j                  j                  d   «      k  }d| j                  |<   || _        y )Nr   r   )r   r%   r"   r+   Úanyr&   rO   r'   )r;   r"   r]   r^   rT   s        rB   Úresizez_dia_base.resize…  s½   € Ü˜EÓ"ˆØ‰ˆˆ1à—I‘Iša  ! ˜eÑ$ˆŒ	à�—
‘
˜1‘ÒÜ—‘�t—|‘| d§j¡j°¡mÑ3°d·i±i·o±oÀaÑ6HÑHÔIà—L‘L¢ D Ñ)¨D¯J©J°q©MÑ9Ü—I‘I˜dŸi™iŸo™o¨aÑ0Ó1ñ2ˆDàˆD�I‰I�d‰Oàˆ�rM   )NNFr�   )NNN)r   )F)NF)T)Ú__name__Ú
__module__Ú__qualname__Ú_formatr#   rL   rU   rX   r   Ú__doc__r`   re   rq   r‚   rˆ   r•   r(   r    r°   r¹   r¾   rs   rÂ   rd   rM   rB   r   r      s   „ Ø€GðKGÈTô KGòZ
ò	ó1ð $×1Ñ1×9Ñ9€MÔóð —o‘o×-Ñ-€G„Oó!6ðF —+‘+×%Ñ%€C„Kò#NòJ2òó#óJð —M‘M×)Ñ)€E„Mó,ð,  ×)Ñ)×1Ñ1€IÔóð  ×'Ñ'×/Ñ/€HÔó5ð0 —M‘M×)Ñ)€E„Mó
ð0 —M‘M×)Ñ)€E„Móòð —^‘^×+Ñ+€F…NrM   r   c                 ór   — t        j                  | «      }t        j                  t        | «      «      || <   |S )z)Helper function to invert an index array.)r+   Ú
zeros_likerO   r9   )rª   Úinvs     rB   rv   rv   —  s+   € ä
�-‰-˜Ó
€CÜ�y‰yœ˜S›Ó"€Cˆ�HØ€JrM   c                 ó"   — t        | t        «      S )aÒ  Is `x` of dia_matrix type?

    Parameters
    ----------
    x
        object to check for being a dia matrix

    Returns
    -------
    bool
        True if `x` is a dia matrix, False otherwise

    Examples
    --------
    >>> from scipy.sparse import dia_array, dia_matrix, coo_matrix, isspmatrix_dia
    >>> isspmatrix_dia(dia_matrix([[5]]))
    True
    >>> isspmatrix_dia(dia_array([[5]]))
    False
    >>> isspmatrix_dia(coo_matrix([[5]]))
    False
    )r)   r   )rj   s    rB   r   r   ž  s   € ô. �aœÓ$Ð$rM   c                   ó   — e Zd ZdZy)r   a<  
    Sparse array with DIAgonal storage.

    This can be instantiated in several ways:
        dia_array(D)
            where D is a 2-D ndarray

        dia_array(S)
            with another sparse array or matrix S (equivalent to S.todia())

        dia_array((M, N), [dtype])
            to construct an empty array with shape (M, N),
            dtype is optional, defaulting to dtype='d'.

        dia_array((data, offsets), shape=(M, N))
            where the ``data[k,:]`` stores the diagonal entries for
            diagonal ``offsets[k]`` (See example below)

    Attributes
    ----------
    dtype : dtype
        Data type of the array
    shape : 2-tuple
        Shape of the array
    ndim : int
        Number of dimensions (this is always 2)
    nnz
    size
    data
        DIA format data array of the array
    offsets
        DIA format offset array of the array
    T

    Notes
    -----

    Sparse arrays can be used in arithmetic operations: they support
    addition, subtraction, multiplication, division, and matrix power.
    Sparse arrays with DIAgonal storage do not support slicing.

    Examples
    --------

    >>> import numpy as np
    >>> from scipy.sparse import dia_array
    >>> dia_array((3, 4), dtype=np.int8).toarray()
    array([[0, 0, 0, 0],
           [0, 0, 0, 0],
           [0, 0, 0, 0]], dtype=int8)

    >>> data = np.array([[1, 2, 3, 4]]).repeat(3, axis=0)
    >>> offsets = np.array([0, -1, 2])
    >>> dia_array((data, offsets), shape=(4, 4)).toarray()
    array([[1, 0, 3, 0],
           [1, 2, 0, 4],
           [0, 2, 3, 0],
           [0, 0, 3, 4]])

    >>> from scipy.sparse import dia_array
    >>> n = 10
    >>> ex = np.ones(n)
    >>> data = np.array([ex, 2 * ex, ex])
    >>> offsets = np.array([-1, 0, 1])
    >>> dia_array((data, offsets), shape=(n, n)).toarray()
    array([[2., 1., 0., ..., 0., 0., 0.],
           [1., 2., 1., ..., 0., 0., 0.],
           [0., 1., 2., ..., 0., 0., 0.],
           ...,
           [0., 0., 0., ..., 2., 1., 0.],
           [0., 0., 0., ..., 1., 2., 1.],
           [0., 0., 0., ..., 0., 1., 2.]])
    N©rÃ   rÄ   rÅ   rÇ   rd   rM   rB   r   r   ¹  ó   „ òHrM   r   c                   ó   — e Zd ZdZy)r   aO  
    Sparse matrix with DIAgonal storage.

    This can be instantiated in several ways:
        dia_matrix(D)
            where D is a 2-D ndarray

        dia_matrix(S)
            with another sparse array or matrix S (equivalent to S.todia())

        dia_matrix((M, N), [dtype])
            to construct an empty matrix with shape (M, N),
            dtype is optional, defaulting to dtype='d'.

        dia_matrix((data, offsets), shape=(M, N))
            where the ``data[k,:]`` stores the diagonal entries for
            diagonal ``offsets[k]`` (See example below)

    Attributes
    ----------
    dtype : dtype
        Data type of the matrix
    shape : 2-tuple
        Shape of the matrix
    ndim : int
        Number of dimensions (this is always 2)
    nnz
    size
    data
        DIA format data array of the matrix
    offsets
        DIA format offset array of the matrix
    T

    Notes
    -----

    Sparse matrices can be used in arithmetic operations: they support
    addition, subtraction, multiplication, division, and matrix power.
    Sparse matrices with DIAgonal storage do not support slicing.

    Examples
    --------

    >>> import numpy as np
    >>> from scipy.sparse import dia_matrix
    >>> dia_matrix((3, 4), dtype=np.int8).toarray()
    array([[0, 0, 0, 0],
           [0, 0, 0, 0],
           [0, 0, 0, 0]], dtype=int8)

    >>> data = np.array([[1, 2, 3, 4]]).repeat(3, axis=0)
    >>> offsets = np.array([0, -1, 2])
    >>> dia_matrix((data, offsets), shape=(4, 4)).toarray()
    array([[1, 0, 3, 0],
           [1, 2, 0, 4],
           [0, 2, 3, 0],
           [0, 0, 3, 4]])

    >>> from scipy.sparse import dia_matrix
    >>> n = 10
    >>> ex = np.ones(n)
    >>> data = np.array([ex, 2 * ex, ex])
    >>> offsets = np.array([-1, 0, 1])
    >>> dia_matrix((data, offsets), shape=(n, n)).toarray()
    array([[2., 1., 0., ..., 0., 0., 0.],
           [1., 2., 1., ..., 0., 0., 0.],
           [0., 1., 2., ..., 0., 0., 0.],
           ...,
           [0., 0., 0., ..., 2., 1., 0.],
           [0., 0., 0., ..., 1., 2., 1.],
           [0., 0., 0., ..., 0., 1., 2.]])
    NrÍ   rd   rM   rB   r   r     rÎ   rM   r   )rÇ   Ú__docformat__Ú__all__Únumpyr+   Ú
_lib._utilr   Ú_matrixr	   Ú_baser
   r   r   r   Ú_datar   Ú_sputilsr   r   r   r   r   r   Ú_sparsetoolsr   r   rv   r   r   r   rd   rM   rB   ú<module>rÙ      sm   ðÙ à%€â
7€ã å 'Ý ß 7Ó 7Ý ÷÷ õ %ôA,�ô A,òHò%ô6I�	˜7ô IôXI�˜9õ IrM   