ó
    Eñi[\  ã                   óî   • S r Sr/ SQrSSKrSSKJrJr  SSKJ	r	  SS	K
JrJrJrJr  SS
KJr  SSKJrJrJrJrJrJrJrJr  SSKJrJrJrJr   " S S\5      rS r S r! " S S\\5      r" " S S\	\5      r#g)zSparse DIAgonal formatzrestructuredtext en)Ú	dia_arrayÚ
dia_matrixÚisspmatrix_diaé    Né   )Ú_prune_arrayÚcopy_if_neededé   )Úspmatrix)ÚissparseÚ_formatsÚ_spbaseÚsparray)Ú_data_matrix)ÚisdenseÚisscalarlikeÚisshapeÚupcast_charÚgetdtypeÚget_sum_dtypeÚvalidateaxisÚcheck_shape)Ú
dia_matmatÚ
dia_matvecÚdia_matvecsÚ	dia_tocsrc                   óŽ  ^ • \ rS rSrSrSSS.S jjrS rS rSS jr\	R                  R                  \l
        SS	 jr\	R                  R                  \l
        SS
 jr\	R                  R                  \l
        SS jrU 4S jrS rU 4S jrS rS rU 4S jrSS jrSS jr\	R*                  R                  \l
        SS jr\	R,                  R                  \l
        SS jr\	R.                  R                  \l
        SS jr\	R0                  R                  \l
        S S jrS r\	R4                  R                  \l
        SrU =r$ )!Ú	_dia_baseé   ÚdiaN©Úmaxprintc                óú  • [         R                  " XUS9  [        U5      (       aå  UR                  S:X  aU  U(       a  UR	                  5       nUR
                  U l        UR                  U l        [        UR                  5      U l	        GOwUR                  U R                  :X  a  U(       a  UR	                  5       nOUR                  5       nUR
                  U l        UR                  U l        [        UR                  5      U l	        GO÷[        U[        5      (       Ga2  [        U5      (       av  [        U5      U l	        [        R                  " S[!        U["        S95      U l        U R%                  ['        U R                  5      S9n[        R                  " SUS9U l        GO[ Uu  p‰Uc  [)        S5      eU(       d  [*        n[        R,                  " [        R.                  " US   X4S	95      U l        [        R.                  " US
   U R%                  ['        U5      S9US	9n	[        R0                  " U	5      U l        [        U5      U l	        O¯ [        R4                  " U5      n[        U [6        5      (       a)  UR8                  S:w  a  [)        SUR8                   S35      eU R;                  XUS9R                  5       nUR
                  U l        UR                  U l        [        UR                  5      U l	        Ub*  [!        U5      nU R
                  R=                  USS9U l        U R                  R8                  S
:w  a  [)        S5      eU R
                  R8                  S:w  a  [)        S5      eU R
                  R                  S   [?        U R                  5      :w  a<  [)        SU R
                  R                  S    S[?        U R                  5       S35      e[?        [        R@                  " U R                  5      5      [?        U R                  5      :w  a  [)        S5      eg ! [2         a  n
Sn[)        U5      U
eS n
A
ff = f! [2         a  n
[)        SU R                   S35      U
eS n
A
ff = f)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'   ÚshapeF©r(   zoffsets array must have rank 1zdata array must have rank 2znumber of diagonals (z() does not match the number of offsets (Ú)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                ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/scipy/sparse/_dia.pyr,   Ú_dia_base.__init__   sƒ  € Ü×Ò˜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Ñ.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ØŸ	™	×(Ñ(¨¸Ð(Ð>ˆDŒIð �<‰<×Ñ Ó!ÜÐ=Ó>Ð>à�9‰9�>‰>˜QÓÜÐ:Ó;Ð;à�9‰9�?‰?˜1Ñ¤ T§\¡\Ó!2Ó2ÜØ'¨¯	©	¯©¸Ñ(:Ð';ð <Ü" 4§<¡<Ó0Ð1°ð4óð ô Œ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   Æ(P1 ÉQ Ð1
QÐ;Q	Ñ	QÑ
Q:ÑQ5Ñ5Q:c                 óö   • [         U R                     u  p[        U [        5      (       a  SOSnU R                  R
                  S   nSU SU SU R                   SU R                   SU S	U R
                   S
3$ )Nr;   Úmatrixr   Ú<z sparse z of dtype 'z'
	with z stored elements (z diagonals) and shape Ú>)r   r-   r2   r   r.   r)   r'   Únnz)rD   Ú_ÚfmtÚ
sparse_clsÚds        rK   Ú__repr__Ú_dia_base.__repr__d   s}   € Ü˜$Ÿ+™+Ñ&‰ˆÜ *¨4´× 9Ñ 9‘W¸xˆ
Ø�I‰I�O‰O˜AÑˆà�ˆu�H˜Z˜L¨°D·J±J°<ð @Ø—h‘h�ZÐ1°!°Ð4JÈ4Ï:É:È,ÐVWðYð	
ó    c                 óÌ   • U R                   u  p[        R                  " U R                  R                   S   5      nX0R                  SS2S4   -
  nUS:¬  nXTU:  -  nXSU:  -  nU$ )zvReturns 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)   r4   Úaranger.   r/   )rD   Únum_rowsÚnum_colsÚoffset_indsÚrowÚmasks         rK   Ú
_data_maskÚ_dia_base._data_maskm   sg   € ð "ŸZ™ZÑˆÜ—i’i §	¡	§¡°Ñ 2Ó3ˆØŸL™Lª¨4¨Ñ0Ñ0ˆØ�q‘ˆØ�x‘Ñ ˆØ˜xÑ'Ñ(ˆØˆrX   c                 ó„   • Ub  [        S5      eU R                  5       n[        R                  " U R                  U   5      $ )Nz<count_nonzero over an axis is not implemented for DIA format)ÚNotImplementedErrorr`   r4   Úcount_nonzeror.   )rD   Úaxisr_   s      rK   rd   Ú_dia_base.count_nonzerox   s?   € ØÑÜ%ØNóð ð �‰Ó ˆÜ×Ò §	¡	¨$¡Ó0Ð0rX   c           	      ób  • Ub  [        S5      eU R                  u  p#[        U R                  R                  S   U5      n[	        [
        R                  " [
        R                  " X R                  -   U5      [
        R                  " U R                  S5      -
  S5      R                  5       5      $ )Nz6_getnnz over an axis is not implemented for DIA formatr	   r   )
rc   r)   Úminr.   Úintr4   ÚmaximumÚminimumr/   Úsum)rD   re   ÚMÚNÚLs        rK   Ú_getnnzÚ_dia_base._getnnz‚   s‹   € ØÑÜ%ð '7ó 8ð 8à�z‰z‰ˆÜ�—	‘	—‘ Ñ" AÓ&ˆÜ”2—:’:œbŸjšj¨¯\©\Ñ)9¸1Ó=Ü Ÿjšj¨¯©°qÓ9ñ:àó!ç!$¡£ó(ð 	(rX   c           
      ó  • [        U5      n[        U R                  5      nU R                  u  pVS nUS:X  a�  U R	                  5       nU R
                  U-  R                  SS9n	U	R                  S   U:X  a  U	n
O/[        R                  " XiR                  S9n
XšS U	R                  S   & U R                  X¤S9nOº[        R                  " US4US9n[        R                  " XdS9n[        XV[        U R                  5      U R
                  R                  S   U R                  U R
                  XË5        U R                  U5      nUc  UR                  X#S9$ U R                  UR                  US95      nUR                  SX#S9$ )	N©r   r   )re   r&   r	   )r'   Úout© )re   r'   rt   )r   r   r'   r)   r`   r.   rl   r4   r5   Ú_ascontainerÚonesr   rB   r/   )rD   re   r'   rt   Ú	res_dtyper[   r\   Úretr_   ÚxÚresÚrow_sumsÚones                rK   rl   Ú_dia_base.sumŽ   sT  € Ü˜DÓ!ˆä! $§*¡*Ó-ˆ	Ø!ŸZ™ZÑˆØˆà�4‹<Ø—?‘?Ó$ˆDØ—‘˜TÑ!×&Ñ&¨AÐ&Ð.ˆAØ�w‰w�q‰z˜XÓ%Ø‘ä—h’h˜x¯w©wÑ7�Ø#$�K�Q—W‘W˜Q‘ZÐ Ø×#Ñ# CÐ#Ð9‰Cô —x’x ¨1 °YÑ?ˆHÜ—'’'˜(Ñ4ˆCÜ�x¬3¨t¯|©|Ó+<Ø—y‘y—‘ qÑ)¨4¯<©<¸¿¹ÀCôSð ×(Ñ(¨Ó2ˆHà‰|Ø—|‘|¨%�|Ð9Ð9à×#Ñ# H§L¡L°d LÐ$;Ó<ˆCà�w‰w˜B eˆwÐ5Ð5rX   c                 ót  • [        U[        5      (       d  UR                  U 5      $ [        R                  " U R
                  UR
                  5      (       aL  U R                  U(       a  U R                  UR                  -
  5      $ U R                  UR                  -   5      $ [        R                  " U R
                  UR
                  5      n[        R                  " X0R
                  5      n[        R                  " X1R
                  5      nU R                  R                  S   nUR                  R                  S   nXg:X  ay  [        U5      [        U R
                  5      :X  aW  U R                  [        U5         nU(       a  X…S S 24==   UR                  -  ss'   GO}X…S S 24==   UR                  -  ss'   GOaXg:X  av  [        U5      [        UR
                  5      :X  aT  U(       a  UR                  [        U5         * nOUR                  [        U5         nX„S S 24==   U R                  -  ss'   Oæ[        U R                  S   US   -   U R                  S   5      n	[        R                  " [        U5      U	4[        R                  " U R                  UR                  5      S9nX„S U24==   U R                  S S 2S U	24   -  ss'   U(       a$  X…S U24==   UR                  S S 2S U	24   -  ss'   O#X…S U24==   UR                  S S 2S U	24   -  ss'   U R!                  Xƒ4U R                  S9$ )Nr	   r   éÿÿÿÿr&   ©r)   )r2   r   Ú_add_sparser4   Úarray_equalr/   Ú
_with_datar.   Úunion1dÚsearchsortedr)   rB   Ú_invert_indexrh   r5   Úresult_typeÚ_dia_container)
rD   ÚotherÚsubÚnew_offsetsÚself_idxÚ	other_idxÚself_dÚother_dÚnew_datarU   s
             rK   r‚   Ú_dia_base._add_sparse°   s‹  € ä˜%¤×+Ñ+Ø×$Ñ$ TÓ*Ð*ô �>Š>˜$Ÿ,™,¨¯©×6Ñ6Ø—?‘?¾S 4§9¡9¨u¯z©zÑ#9ó ;ð ;Ø#'§9¡9¨u¯z©zÑ#9ó;ð ;ô —j’j §¡¨u¯}©}Ó=ˆÜ—?’? ;·±Ó=ˆÜ—O’O K·±Ó?ˆ	à—‘—‘ Ñ#ˆØ—*‘*×"Ñ" 1Ñ%ˆð Ó¤ [Ó!1´S¸¿¹Ó5FÓ!FØ—y‘y¤¨xÓ!8Ñ9ˆHÞØ¢A˜Ó&¨%¯*©*Ñ4Õ&à¢A˜Ó&¨%¯*©*Ñ4Õ&ØÓ¤3 {Ó#3´s¸5¿=¹=Ó7IÓ#IÞØ!ŸJ™J¤}°YÓ'?Ñ@Ð@‘à Ÿ:™:¤m°IÓ&>Ñ?�Øš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ð ˜w ˜wÐ&Ó'¨4¯9©9²Q¸¸¸°UÑ+;Ñ;Ó'ÞØ H W HÐ,Ó-°·±ºA¸rÀ¸r¸EÑ1BÑBÔ-à H W HÐ,Ó-°·±ºA¸rÀ¸r¸EÑ1BÑBÓ-Ø×"Ñ" HÐ#:À$Ç*Á*Ð"ÐMÐMrX   c                 ól   >• [        U[        5      (       d  [        TU ]  U5      $ U R	                  USS9$ )NT)r‹   )r2   r   ÚsuperÚ_sub_sparser‚   )rD   rŠ   Ú	__class__s     €rK   r•   Ú_dia_base._sub_sparseß   s6   ø€ ä˜%¤×+Ñ+Ü‘7Ñ& uÓ-Ð-à×Ñ ¨4ÐÐ0Ð0rX   c                 ó>   • U R                  U R                  U-  5      $ ©N)r„   r.   )rD   rŠ   s     rK   Ú_mul_scalarÚ_dia_base._mul_scalaræ   s   € Ø�‰˜tŸy™y¨5Ñ0Ó1Ð1rX   c                 ól  >• [        U5      (       a  U R                  U5      $ [        U5      (       Gaš  UR                  S:”  a  U R	                  5       U-  $ SU R
                  ;   d   SU R
                  ;   d  SUR
                  ;   a  [        TU ]  U5      $ [        R                  " U5      nUR
                  u  p#U R
                  u  pE[        U R                  R
                  S   U5      nU R                  S S 2S U24   R                  [        R                  " U R                  U5      5      nUS:X  a  XqSS U24   -  nO}X$:w  a  [        S5      e[        R                  " U5      nXd:”  a  X€R                   S S 2S 4   -
  U-  n	OX€R                   S S 2S 4   U-  -
  n	US:X  a  SnOX5:w  a  [        S5      eXqX˜4   -  nU R#                  U5      $ [%        U[&        5      (       a  UR
                  U R
                  :w  a  [        TU ]  U5      $ [        R(                  " U R                   UR                   SSS9u  p«n[        U R                  R
                  S   UR                  R
                  S   5      nU R                  US U24   UR                  US U24   -  nU R+                  Xz4U R
                  S9$ )Nr   r   r	   zinconsistent shapesT)Úassume_uniqueÚreturn_indicesr�   )r   rš   r   r?   Útoarrayr)   r”   Úmultiplyr4   r:   rh   r.   rA   rˆ   r9   rZ   r/   r„   r2   r   Úintersect1dr‰   )rD   rŠ   Ú
other_rowsÚ
other_colsÚrowsÚcolsro   r.   ÚjÚir/   r�   rŽ   r–   s                €rK   r    Ú_dia_base.multiplyé   s[  ø€ Ü˜×ÑØ×#Ñ# EÓ*Ð*ä�5�>Š>Ø�z‰z˜A‹~Ø—|‘|“~¨Ñ-Ð-ð �D—J‘J‹ ! t§z¡z£/°Q¸%¿+¹+Ó5EÜ‘wÑ'¨Ó.Ð.ä—M’M %Ó(ˆEØ%*§[¡[Ñ"ˆJØŸ™‰JˆDÜ�D—I‘I—O‘O AÑ&¨Ó-ˆAØ—9‘9šQ   ˜UÑ#×*Ñ*¬2¯>ª>¸$¿)¹)ÀUÓ+KÓLˆDØ˜Q‹Ø˜a  ! ˜e™Ñ$‘ØÓ#Ü Ð!6Ó7Ð7ä—I’I˜a“L�Ø“8ØŸ\™\ª!¨T¨'Ñ2Ñ2°dÑ:‘AàŸL™Lª¨D¨Ñ1°DÑ8Ñ8�AØ “?Ø‘AØÓ'Ü$Ð%:Ó;Ð;Ø˜a˜d™Ñ#�Ø—?‘? 4Ó(Ð(ô ˜%¤×+Ñ+¨u¯{©{¸d¿j¹jÓ/HÜ‘7Ñ# EÓ*Ð*ô
 �NŠN˜4Ÿ<™<¨¯©Ø)-¸dñDñ 	%ˆ˜9ô �—	‘	—‘ Ñ" E§J¡J×$4Ñ$4°QÑ$7Ó8ˆØ�y‰y˜ 2 A 2˜Ñ&¨¯©°I¸rÀ¸r°MÑ)BÑBˆØ×"Ñ" D ?¸$¿*¹*Ð"ÐEÐErX   c                 ó¦  • Un[         R                  " U R                  S   [        U R                  R
                  UR                  R
                  5      S9nU R                  R                  S   nU R                  u  pV[        XV[        U R                  5      X@R                  U R                  UR                  5       UR                  5       5        U$ )Nr   r&   r	   )r4   r5   r)   r   r'   Úcharr.   r   rB   r/   Úravel)rD   rŠ   rz   Úyro   rm   rn   s          rK   Ú_matmul_vectorÚ_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œ˜DŸL™LÓ)¨1¯l©l¸D¿I¹IØ—7‘7“9˜aŸg™g›iô	)ð ˆrX   c                 óR  • [         R                  " U R                  S   UR                  S   4[         R                  " U R                  U5      S9n[        / U R                  QU R                  R                  QU R                  PU R                  PUR                  S   PUPUP76   U$ )Nr   r	   r&   )r4   r5   r)   rˆ   r.   r   r/   )rD   rŠ   r{   s      rK   Ú_matmul_multivectorÚ_dia_base._matmul_multivector)  s–   € Ü�hŠh˜Ÿ
™
 1™ u§{¡{°1¡~Ð6ÜŸ^š^¨D¯I©I°uÓ=ñ?ˆäð 	0�T—Z‘Zð 	0 $§)¡)§/¡/ð 	0°4·<±<ð 	0ÀÇÁð 	0Ø—K‘K ‘Nð	0Ø$)ð	0Ø+.ó	0àˆ
rX   c                 ó|  >• [        U[        5      (       d  [        TU ]  U5      $ SU R                  ;   d  SUR                  ;   a-  U R                  U R                  S   UR                  S   45      $ [        / U R                  QU R                  R                  QU R                  PU R                  PUR                  S   PUR                  R                  QUR                  PUR                  P76 u  p#U R                  UR                  [        U5      S5      U4U R                  S   UR                  S   45      $ )Nr   r	   r€   )r2   r   r”   Ú_matmul_sparser)   r‰   r   r.   r/   ÚreshaperB   )rD   rŠ   r/   r.   r–   s       €rK   r³   Ú_dia_base._matmul_sparse0  s  ø€ ä˜%¤×+Ñ+Ü‘7Ñ)¨%Ó0Ð0ð �—
‘
‹?˜a 5§;¡;Ó.Ø×&Ñ&¨¯
©
°1©°u·{±{À1±~Ð'FÓGÐGä"ð > D§J¡Jð >°·±·±ð >Ø#'§<¡<ð>Ø15·±ð>à#(§;¡;¨q¡>ð>à49·J±J×4DÑ4Dð>ð $)§=¡=ð>ð 38·*±*ò>‰ˆð ×"Ñ" D§L¡L´°W³¸rÓ$BÀGÐ#LØ$(§J¡J¨q¡M°5·;±;¸q±>Ð#BóDð 	DrX   c                 óf  • U R                   u  p4UR                  S:X  a  [        R                  nO[	        U5      nUS:  a  [        X2-   XE5      nSnUnO[        X4U-
  U5      nUnX&-   nUR                  S:w  a  US U nU R                  R                   u  pšX R                  ;   ai  XŠ:”  aE  [        R                  " X˜4U R                  R                  S9nU R                  US S 2S U
24'   X°l        XR                  U R                  U:H  Xx24'   g [        R                  " U R                  U R                  R                  R                  U5      5      U l        [        XŠ5      n[        R                  " U	S-   U4U R                  R                  S9nU R                  US S2S U
24'   XSXx24'   X°l        g )Nr   r&   r	   r€   )r)   r?   r4   ÚinfrB   rh   r.   r/   r5   r'   ÚappendÚtyper8   )rD   ÚvaluesÚkrm   rn   Úvalues_nÚnÚ	min_indexÚ	max_indexÚ	data_rowsÚ	data_colsr.   Úms                rK   Ú_setdiagÚ_dia_base._setdiag@  su  € Ø�z‰z‰ˆà�;‰;˜!Óä—v‘v‰Hä˜6“{ˆHàˆq‹5Ü�A‘E˜1Ó'ˆAØˆIØ‰Iä�A˜1‘u˜hÓ'ˆAØˆIØ™ˆIà�;‰;˜!Óà˜B˜Q�ZˆFà#Ÿy™yŸ™Ñˆ	Ø—‘ÓØÓ$Ü—x’x Ð 6¸d¿i¹i¿o¹oÑN�Ø&*§i¡i�’Q˜
˜˜
�]Ñ#Ø ”	Ø@F�I‰I�d—l‘l aÑ'¨Ð)<Ð<Ò=äŸ9š9 T§\¡\°4·<±<×3EÑ3E×3JÑ3JÈ1Ó3MÓNˆDŒLÜ�IÓ)ˆAÜ—8’8˜Y¨™]¨AÐ.°d·i±i·o±oÑFˆDØ$(§I¡IˆD��"��j�y�j�Ñ!Ø,2��YÐ(Ð(Ñ)Ø�IrX   c                 ó4   • U(       a  U R                  5       $ U $ r™   r*   )rD   r(   s     rK   r1   Ú_dia_base.todiae  s   € ÞØ—9‘9“;ÐàˆKrX   c                 óŽ  • Ub  US:w  a  [        S5      eU R                  u  p4[        U R                  5      nU R                  * n[        R
                  " [        U5      [        R                  S9S S 2S 4   n[        R
                  " U[        R                  S9Xe-  S S 2S 4   -
  n[        SXPR                  R                  S   -
  5      n	[        R                  " U R                  [        R                  " U R                  R                  S   U	4U R                  R                  S945      n
X§U4   n
U R                  X¦4XC4US9$ )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(   )r9   r)   r8   r/   r4   rZ   rB   Úintcr.   Úhstackr5   r'   r‰   )rD   Úaxesr(   r[   r\   Úmax_dimr/   ÚrÚcÚ
pad_amountr.   s              rK   Ú	transposeÚ_dia_base.transposem  s'  € ØÑ ¨£Üð Ló Mð Mð "ŸZ™ZÑˆÜ�d—j‘j“/ˆð —<‘<�-ˆô �IŠI”c˜'“l¬"¯'©'Ñ2²1°d°7Ñ;ˆÜ�IŠI�h¤b§g¡gÑ.°'Ñ2CÂQÈÀWÑ1MÑMˆÜ˜˜G§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ˆà�q�D‰zˆØ×"Ñ" D ?Øð; Ø&*ð #ð ,ð 	,rX   c                 ó  • U R                   u  p#X* ::  d  X:¼  a)  [        R                  " SU R                  R                  S9$ [        R
                  " U R                  U:H  5      u  n[        SU5      n[        X!-   U5      nXe-
  nUR                  S:X  a(  [        R                  " XpR                  R                  S9$ U R                  US   XV24   nU[        U5      -
  n	U	S:”  a  [        R                  " USU	4SS9nU$ )Nr   r&   Úconstant)Úmode)r)   r4   Úemptyr.   r'   Únonzeror/   r8   rh   Úsizer5   rB   Úpad)
rD   r»   r¤   r¥   ÚidxÚ	first_colÚlast_colÚresult_sizeÚresultÚpaddings
             rK   ÚdiagonalÚ_dia_base.diagonal…  s×   € Ø—Z‘Z‰
ˆØ�‹:˜›Ü—8’8˜A T§Y¡Y§_¡_Ñ5Ð5Ü�zŠz˜$Ÿ,™,¨!Ñ+Ó,‰ˆÜ˜˜1“Iˆ	Ü�t‘x Ó&ˆØÑ*ˆØ�8‰8�q‹=Ü—8’8˜K¯y©y¯©Ñ?Ð?Ø—‘˜3˜q™6 9Ð#5Ð5Ñ6ˆØ¤ F£Ñ+ˆØ�Q‹;Ü—V’V˜F Q¨ L°zÑBˆFØˆrX   c                 ó”  • SU R                   ;   d  [        U R                  5      S:X  a$  U R                  U R                   U R                  S9$ U R                   u  p#U R
                  nU R                  [        XBU5      S9n[        R                  " U R                  5      R                  USS9n[        R                  " X@R                  S9n[        R                  " XES9n[        R                  " SU-   US9n	[        X#/U R                  R                   QU R                  R                  USS9PU R                  PUPUPUPU	P76 n
U R                  [        X¢U5      S9n[        US U
 5      n[        US U
 R                  USS95      nU	R                  USS9n	U R                  XxU	4U R                   U R                  S9nSUl        U$ )	Nr   r&   r$   Fr*   r	   )r)   r'   T)r)   rB   r/   Ú_csr_containerr'   rQ   r7   r8   r4   ÚargsortrA   rÔ   r   r.   r   Úhas_canonical_format)rD   r(   Ún_rowsÚn_colsÚmax_nnzrG   ÚorderÚcsr_dataÚindicesÚindptrrQ   rt   s               rK   ÚtocsrÚ_dia_base.tocsr—  s¹  € Ø�—
‘
‹?œc $§,¡,Ó/°1Ó4Ø×&Ñ& t§z¡z¸¿¹Ð&ÐDÐDàŸ™‰ˆØ—(‘(ˆð
 ×)Ñ)´°WÀfÓ1MÐ)ÐNˆ	Ü—
’
˜4Ÿ<™<Ó(×/Ñ/°	ÀÐ/ÐFˆÜ—8’8˜G¯:©:Ñ6ˆÜ—(’(˜7Ñ4ˆÜ—’˜!˜f™*¨IÑ6ˆä˜ð :¨¯©¯©ð :ØŸ™×+Ñ+¨I¸EÐ+ÐBð:ØDHÇIÁIð:àð:à'ð:à)0ð:à28ò:ˆð ×)Ñ)´°SÀ&Ó1IÐ)ÐJˆ	Ü ¨¨# Ó/ˆÜ˜w t¨˜}×3Ñ3°IÀEÐ3ÐJÓKˆØ—‘˜y¨u�Ð5ˆØ×!Ñ! 8°fÐ"=Ø(,¯
©
¸$¿*¹*ð "ð Fˆà#'ˆÔ Øˆ
rX   c                 óÀ   • U(       a3  U R                  XR                  R                  5       4U R                  S9$ U R                  XR                  4U R                  S9$ )z�Returns a matrix with the same sparsity structure as self,
but with different data.  By default the structure arrays are copied.
r�   )r‰   r/   r(   r)   )rD   r.   r(   s      rK   r„   Ú_dia_base._with_data·  sb   € ö Ø×&Ñ&Ø—|‘|×(Ñ(Ó*Ð+°4·:±:ð 'ð ð ð ×&Ñ&Ø—|‘|Ð$¨D¯J©Jð 'ð ð rX   c                 óä  • [        U5      nUu  p#U R                  S S 2S U24   U l        X R                  S   :”  a¯  [        R                  " U R
                  U R                  S   -   U R                  R                  S   :  5      (       a`  U R
                  S S 2S 4   U R                  S   -   [        R                  " U R                  R                  S   5      :*  nSU R                  U'   Xl        g )Nr   r	   )r   r.   r)   r4   Úanyr/   rZ   r0   )rD   r)   rm   rn   r_   s        rK   ÚresizeÚ_dia_base.resizeÄ  sº   € Ü˜EÓ"ˆØ‰ˆà—I‘Iša  ! ˜eÑ$ˆŒ	à—
‘
˜1‘ÓÜ—’�t—|‘| d§j¡j°¡mÑ3°d·i±i·o±oÀaÑ6HÑH×IÑ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à�rX   )r0   r.   r/   )NNFr™   )NNN)Frs   )NF)T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú_formatr,   rV   r`   rd   r   Ú__doc__rp   rl   r‚   r•   rš   r    r­   r°   r³   rÃ   r1   rÏ   rÞ   rë   r„   rñ   Ú__static_attributes__Ú__classcell__)r–   s   @rK   r   r      s"  ø† Ø€GðKGÈTö KGòZ
ò	ô1ð $×1Ñ1×9Ñ9€MÔô(ð —o‘o×-Ñ-€G„Oô6ð@ —+‘+×%Ñ%€C„Kô-Nõ^1ò2õ/FòbòõDô #ôJð —M‘M×)Ñ)€E„Mô,ð,  ×)Ñ)×1Ñ1€IÔôð  ×'Ñ'×/Ñ/€HÔôð: —M‘M×)Ñ)€E„Môòð —^‘^×+Ñ+€F‡N‚NrX   r   c                 ót   • [         R                  " U 5      n[         R                  " [        U 5      5      X'   U$ )z)Helper function to invert an index array.)r4   Ú
zeros_likerZ   rB   )rØ   Úinvs     rK   r‡   r‡   Ö  s)   € ä
�-Š-˜Ó
€CÜ�yŠyœ˜S›Ó"€C�HØ€JrX   c                 ó"   • [        U [        5      $ )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
)r2   r   )rz   s    rK   r   r   Ý  s   € ô. �aœÓ$Ð$rX   c                   ó   • \ rS rSrSrSrg)r   iø  aH  
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.]])
ru   N©ró   rô   rõ   rö   rø   rù   ru   rX   rK   r   r   ø  ó   † ôHrX   r   c                   ó   • \ rS rSrSrSrg)r   iD  a[  
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.]])
ru   Nr   ru   rX   rK   r   r   D  r  rX   r   )$rø   Ú__docformat__Ú__all__Únumpyr4   Ú
_lib._utilr   r   Ú_matrixr
   Ú_baser   r   r   r   Ú_datar   Ú_sputilsr   r   r   r   r   r   r   r   Ú_sparsetoolsr   r   r   r   r   r‡   r   r   r   ru   rX   rK   Ú<module>r     sv   ðÙ à%€â
7€ã ç 5Ý ß 7Ó 7Ý ÷÷ ó ÷ IÓ Hô,�ô ,òDò%ô6I�	˜7ô IôXI�˜9õ IrX   