§
    fŠtj[\  ã                   ó  — d Z dZg d¢ZddlZddlmZ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mZmZ ddlmZmZmZmZ  G d„ de¦  «        Zd„ Z d„ Z! G d„ dee¦  «        Z" G d„ de	e¦  «        Z#dS )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                   óÈ  ‡ — 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d„Zˆ fd„Zd„ Zˆ fd„Zd„ Zd„ Zˆ f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d„ Zej        j	        e_	        ˆ xZS )"Ú	_dia_baseÚdiaNF©Úmaxprintc                óÔ  — t          j        | ||¬¦  «         t          |¦  «        rÂ|j        dk    rI|r|                     ¦   «         }|j        | _        |j        | _        t          |j        ¦  «        | _	        �nÒ|j        | j        k    r|r|                     ¦   «         }n| 
                    ¦   «         }|j        | _        |j        | _        t          |j        ¦  «        | _	        �ndt          |t          ¦  «        �rzt          |¦  «        r‡t          |¦  «        | _	        t          j        dt!          |t"          ¬¦  «        ¦  «        | _        |                      t'          | j        ¦  «        ¬¦  «        }t          j        d|¬¦  «        | _        �n¸	 |\  }}	|€t)          d¦  «        ‚|st*          }t          j        t          j        |d         ||¬	¦  «        ¦  «        | _        t          j        |d
         |                      t'          |¦  «        ¬¦  «        |¬	¦  «        }	t          j        |	¦  «        | _        t          |¦  «        | _	        nø# t2          $ r}
d}t)          |¦  «        |
‚d }
~
ww xY w	 t          j        |¦  «        }n+# t2          $ r}
t)          d| j        › d�¦  «        |
‚d }
~
ww xY wt          | t6          ¦  «        r#|j        dk    rt)          d|j        › d�¦  «        ‚|                      |||¬¦  «         
                    ¦   «         }|j        | _        |j        | _        t          |j        ¦  «        | _	        |�0t!          |¦  «        }| j                             |d¬¦  «        | _        | j        j        d
k    rt)          d¦  «        ‚| j        j        dk    rt)          d¦  «        ‚| j        j        d         t?          | j        ¦  «        k    r8t)          d| j        j        d         › dt?          | j        ¦  «        › d�¦  «        ‚t?          t          j         | j        ¦  «        ¦  «        t?          | j        ¦  «        k    rt)          d¦  «        ‚d S )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                úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/sparse/_dia.pyr+   z_dia_base.__init__   s=  € ÝÔ˜d D°8Ð<Ñ<Ô<Ð<å�D‰>Œ>ð 5	/ØŒ{˜eÒ#Ð#Øð 'ØŸ9š9™;œ;�DØ œI�”	Ø#œ|�”Ý)¨$¬*Ñ5Ô5�”‘à”; $¤+Ò-Ð-°$Ð-ØŸ	š	™œ�A�AàŸ
š
™œ�AØœF�”	Ø œy�”Ý)¨!¬'Ñ2Ô2�”‘Ý˜�eÑ$Ô$ñ &	/Ý�t‰}Œ}ð 5õ *¨$Ñ/Ô/�”ÝœH U­H°UÅEÐ,JÑ,JÔ,JÑKÔK�”	Ø ×1Ò1½¸T¼Z¹¼Ð1ÑIÔI�	Ý!œx¨°9Ð=Ñ=Ô=�”‘ð5à$(‘M�D˜'ð
 �}Ý(Ð)DÑEÔEÐEØð .Ý-˜Ý "¤­b¬h°t¸A´wÀeÐRVÐ.WÑ.WÔ.WÑ XÔ X�D”IÝ œh t¨A¤wØ-1×-BÒ-BÍ#ÈeÉ*Ì*Ð-BÑ-UÔ-UØ,0ð2ñ 2ô 2�Gõ $&¤=°Ñ#9Ô#9�D”LÝ"-¨eÑ"4Ô"4�D”K�Køõ !ð 5ð 5ð 5ØK�GÝ$ WÑ-Ô-°1Ð4øøøøð5øøøð MÝ”z $Ñ'Ô'��øÝð Mð Mð MÝ ð "EØ$(¤Kð"Eð "Eð "Eñ Fô FØKLðMøøøøðMøøøõ ˜$¥Ñ(Ô(ð Y¨T¬Y¸!ª^¨^Ý Ð!W¸T¼YÐ!WÐ!WÐ!WÑXÔXÐXØ×#Ò# D°¸UÐ#ÑCÔC×IÒIÑKÔKˆAØœˆDŒIØœ9ˆDŒLÝ% a¤gÑ.Ô.ˆDŒKàÐÝ ‘”ˆHØœ	×(Ò(¨¸Ð(Ñ>Ô>ˆDŒIð Œ<Ô Ò!Ð!ÝÐ=Ñ>Ô>Ð>àŒ9Œ>˜QÒÐÝÐ:Ñ;Ô;Ð;àŒ9Œ?˜1Ô¥ T¤\Ñ!2Ô!2Ò2Ð2Ýð4¨¬	¬¸Ô(:ð 4ð 4Ý" 4¤<Ñ0Ô0ð4ð 4ð 4ñô ð õ �rŒy˜œÑ&Ô&Ñ'Ô'­3¨t¬|Ñ+<Ô+<Ò<Ð<ÝÐEÑFÔFÐFð =Ð<s0   ÆI É
I6ÉI1É1I6É:J Ê
J7ÊJ2Ê2J7c                 óÊ   — t           | j                 \  }}t          | t          ¦  «        rdnd}| j        j        d         }d|› d|› d| j        › d| j        › d|› d	| j        › d
�S )Nr:   Úmatrixr   ú<z sparse z of dtype 'z'
	with z stored elements (z diagonals) and shape ú>)r   r,   r1   r   r-   r(   r&   Únnz)rC   Ú_ÚfmtÚ
sparse_clsÚds        rJ   Ú__repr__z_dia_base.__repr__d   s¦   € Ý˜$œ+Ô&‰ˆˆ3Ý *¨4µÑ 9Ô 9ÐG�W�W¸xˆ
ØŒIŒO˜AÔˆðY�ð Yð Y˜Zð Yð Y°D´Jð Yð YØ”hðYð YØ23ðYð YØKOÌ:ðYð Yð 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(   r3   Úaranger-   r.   )rC   Únum_rowsÚnum_colsÚoffset_indsÚrowÚmasks         rJ   Ú
_data_maskz_dia_base._data_maskm   sl   € ð "œZÑˆ�(Ý”i ¤	¤°Ô 2Ñ3Ô3ˆØ˜DœL¨¨¨¨4¨Ô0Ñ0ˆØ�q’ˆØ��x’Ñ ˆØ�˜xÒ'Ñ(ˆØˆrU   c                 óŠ   — |�t          d¦  «        ‚|                      ¦   «         }t          j        | j        |         ¦  «        S )Nz<count_nonzero over an axis is not implemented for DIA format)ÚNotImplementedErrorr]   r3   Úcount_nonzeror-   )rC   Úaxisr\   s      rJ   r`   z_dia_base.count_nonzerox   sE   € ØÐÝ%ØNñô ð ð �ŠÑ Ô ˆÝÔ ¤	¨$¤Ñ0Ô0Ð0rU   c           	      óL  — |�t          d¦  «        ‚| j        \  }}t          | j        j        d         |¦  «        }t	          t          j        t          j        || j        z   |¦  «        t          j        | j        d¦  «        z
  d¦  «         	                    ¦   «         ¦  «        S )Nz6_getnnz over an axis is not implemented for DIA formatr	   r   )
r_   r(   Úminr-   Úintr3   ÚmaximumÚminimumr.   Úsum)rC   ra   ÚMÚNÚLs        rJ   Ú_getnnzz_dia_base._getnnz‚   s™   € ØÐÝ%ð '7ñ 8ô 8ð 8àŒz‰ˆˆ1Ý�”	” Ô" AÑ&Ô&ˆÝ•2”:�bœj¨¨T¬\Ñ)9¸1Ñ=Ô=Ý œj¨¬°qÑ9Ô9ñ:àñ!ô !ç!$¢¡¤ñ(ô (ð 	(rU   c           
      ó@  — t          |¦  «        }t          | j        ¦  «        }| j        \  }}d }|dk    r‹|                      ¦   «         }| j        |z                       d¬¦  «        }	|	j        d         |k    r|	}
n-t          j        ||	j        ¬¦  «        }
|	|
d |	j        d         …<   |  	                    |
|¬¦  «        }nÇt          j        |df|¬¦  «        }t          j
        ||¬¦  «        }t          ||t          | j        ¦  «        | j        j        d         | j        | j        ||¦  «         |  	                    |¦  «        }|€|                     ||¬¦  «        S |  	                    |                     |¬¦  «        ¦  «        }|                     d||¬¦  «        S )	N©r   r   )ra   r%   r	   )r&   Úout© )ra   r&   rn   )r   r   r&   r(   r]   r-   rg   r3   r4   Ú_ascontainerÚonesr   rA   r.   )rC   ra   r&   rn   Ú	res_dtyperX   rY   Úretr\   ÚxÚresÚrow_sumsÚones                rJ   rg   z_dia_base.sumŽ   s”  € Ý˜DÑ!Ô!ˆå! $¤*Ñ-Ô-ˆ	Ø!œZÑˆ�(Øˆà�4Š<ˆ<Ø—?’?Ñ$Ô$ˆDØ”˜TÑ!×&Ò&¨AÐ&Ñ.Ô.ˆAØŒw�qŒz˜XÒ%Ð%Ø��å”h˜x¨q¬wÐ7Ñ7Ô7�Ø#$��K�Q”W˜Q”Z�KÑ Ø×#Ò# C¨yÐ#Ñ9Ô9ˆCˆCõ ”x ¨1 °YÐ?Ñ?Ô?ˆHÝ”'˜(¨)Ð4Ñ4Ô4ˆCÝ�x ­3¨t¬|Ñ+<Ô+<Ø”y” qÔ)¨4¬<¸¼ÀCÈñSô Sð Sð ×(Ò(¨Ñ2Ô2ˆHàˆ|Ø—|’|¨%°S�|Ñ9Ô9Ð9à×#Ò# H§L¢L°d LÑ$;Ô$;Ñ<Ô<ˆCà�wŠw˜B e°ˆwÑ5Ô5Ð5rU   c                 óÞ  — t          |t          ¦  «        s|                     | ¦  «        S t          j        | j        |j        ¦  «        r3|                      |r| j        |j        z
  n| j        |j        z   ¦  «        S t          j        | j        |j        ¦  «        }t          j	        || j        ¦  «        }t          j	        ||j        ¦  «        }| j        j
        d         }|j        j
        d         }||k    rwt          |¦  «        t          | j        ¦  «        k    rR| j        t          |¦  «                 }|r||d d …fxx         |j        z  cc<   �n{||d d …fxx         |j        z  cc<   �n`||k    rwt          |¦  «        t          |j        ¦  «        k    rR|r|j        t          |¦  «                  }n|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<   |r&||d |…fxx         |j        d d …d |	…f         z  cc<   n%||d |…fxx         |j        d d …d |	…f         z  cc<   |                      ||f| j
        ¬¦  «        S )Nr	   r   éÿÿÿÿr%   ©r(   )r1   r   Ú_add_sparser3   Úarray_equalr.   Ú
_with_datar-   Úunion1dÚsearchsortedr(   rA   Ú_invert_indexrc   r4   Úresult_typeÚ_dia_container)
rC   ÚotherÚsubÚnew_offsetsÚself_idxÚ	other_idxÚself_dÚother_dÚnew_datarS   s
             rJ   r{   z_dia_base._add_sparse°   s'  € å˜%¥Ñ+Ô+ð 	+Ø×$Ò$ TÑ*Ô*Ð*õ Œ>˜$œ,¨¬Ñ6Ô6ð 	;Ø—?’?¸Sð $: 4¤9¨u¬zÑ#9Ð#9Ø#'¤9¨u¬zÑ#9ñ;ô ;ð ;õ ”j ¤¨u¬}Ñ=Ô=ˆÝ”? ;°´Ñ=Ô=ˆÝ”O K°´Ñ?Ô?ˆ	à”” Ô#ˆØ”*Ô" 1Ô%ˆð �WÒÐ¥ [Ñ!1Ô!1µS¸¼Ñ5FÔ5FÒ!FÐ!FØ”y¥¨xÑ!8Ô!8Ô9ˆHØð 5Ø˜ A A A˜Ð&Ð&Ô&¨%¬*Ñ4Ð&Ð&Ñ&Ñ&à˜ A A A˜Ð&Ð&Ô&¨%¬*Ñ4Ð&Ð&Ñ&Ñ&Ø�wÒÐ¥3 {Ñ#3Ô#3µs¸5¼=Ñ7IÔ7IÒ#IÐ#IØð @Ø!œJ¥}°YÑ'?Ô'?Ô@Ð@��à œ:¥m°IÑ&>Ô&>Ô?�Ø�X˜q˜q˜q�[Ð!Ð!Ô! T¤YÑ.Ð!Ð!Ñ!Ð!õ �D”J˜q”M K°¤OÑ3°T´ZÀ´]ÑCÔCˆAõ ”xÝ�[Ñ!Ô! 1Ð%Ý”n T¤Y°´
Ñ;Ô;ðñ ô ˆHð �X˜w ˜wÐ&Ð'Ð'Ô'¨4¬9°Q°Q°Q¸¸¸°UÔ+;Ñ;Ð'Ð'Ñ'Øð CØ˜ H W HÐ,Ð-Ð-Ô-°´¸A¸A¸A¸rÀ¸r¸EÔ1BÑBÐ-Ð-Ñ-Ð-à˜ H W HÐ,Ð-Ð-Ô-°´¸A¸A¸A¸rÀ¸r¸EÔ1BÑBÐ-Ð-Ñ-Ø×"Ò" H¨kÐ#:À$Ä*Ð"ÑMÔMÐMrU   c                 óž   •— t          |t          ¦  «        s!t          ¦   «                              |¦  «        S |                      |d¬¦  «        S )NT)r„   )r1   r   ÚsuperÚ_sub_sparser{   )rC   rƒ   Ú	__class__s     €rJ   r�   z_dia_base._sub_sparseß   sF   ø€ å˜%¥Ñ+Ô+ð 	.Ý‘7”7×&Ò& uÑ-Ô-Ð-à×Ò ¨4ÐÑ0Ô0Ð0rU   c                 ó<   — |                       | j        |z  ¦  «        S ©N)r}   r-   )rC   rƒ   s     rJ   Ú_mul_scalarz_dia_base._mul_scalaræ   s   € Ø�Š˜tœy¨5Ñ0Ñ1Ô1Ð1rU   c                 óV  •— t          |¦  «        r|                      |¦  «        S t          |¦  «        �r˜|j        dk    r|                      ¦   «         |z  S d| j        v sd| j        v s	d|j        v r!t          ¦   «                              |¦  «        S t          j	        |¦  «        }|j        \  }}| j        \  }}t          | j        j        d         |¦  «        }| j        d d …d |…f                              t          j        | j        |¦  «        ¦  «        }|dk    r||dd |…f         z  }n‰||k    rt          d¦  «        ‚t          j        |¦  «        }||k    r|| j        d d …d f         z
  |z  }	n|| j        d d …d f         |z  z
  }	|dk    rd}n||k    rt          d¦  «        ‚|||	|f         z  }|                      |¦  «        S t%          |t&          ¦  «        r|j        | j        k    r!t          ¦   «                              |¦  «        S t          j        | j        |j        dd¬¦  «        \  }
}}t          | j        j        d         |j        j        d         ¦  «        }| j        |d |…f         |j        |d |…f         z  }|                      ||
f| j        ¬¦  «        S )Nr   r   r	   zinconsistent shapesT)Úassume_uniqueÚreturn_indicesrz   )r   r‘   r   r>   Útoarrayr(   rŒ   Úmultiplyr3   r9   rc   r-   r@   r�   r8   rW   r.   r}   r1   r   Úintersect1dr‚   )rC   rƒ   Ú
other_rowsÚ
other_colsÚrowsÚcolsrj   r-   ÚjÚir.   r†   r‡   rŽ   s                €rJ   r–   z_dia_base.multiplyé   s³  ø€ Ý˜ÑÔð 	+Ø×#Ò# EÑ*Ô*Ð*å�5‰>Œ>ñ 	)ØŒz˜AŠ~ˆ~Ø—|’|‘~”~¨Ñ-Ð-ð �D”Jˆˆ ! t¤z / /°Q¸%¼+Ð5EÐ5EÝ‘w”w×'Ò'¨Ñ.Ô.Ð.å”M %Ñ(Ô(ˆEØ%*¤[Ñ"ˆJ˜
Øœ‰JˆD�$Ý�D”I”O AÔ&¨Ñ-Ô-ˆAØ”9˜Q˜Q˜Q   ˜UÔ#×*Ò*­2¬>¸$¼)ÀUÑ+KÔ+KÑLÔLˆDØ˜QŠˆØ˜˜a  ! ˜eœÑ$��Ø˜tÒ#Ð#Ý Ð!6Ñ7Ô7Ð7å”I˜a‘L”L�Ø�t’8�8Ø˜Tœ\¨!¨!¨!¨T¨'Ô2Ñ2°dÑ:�A�Aà˜DœL¨¨¨¨D¨Ô1°DÑ8Ñ8�AØ ’?�?Ø�A�AØ 4Ò'Ð'Ý$Ð%:Ñ;Ô;Ð;Ø˜˜a ˜dœÑ#�Ø—?’? 4Ñ(Ô(Ð(õ ˜%¥Ñ+Ô+ð 	+¨u¬{¸d¼jÒ/HÐ/HÝ‘7”7×#Ò# EÑ*Ô*Ð*õ
 ŒN˜4œ<¨¬Ø)-¸dðDñ Dô Dñ 	%ˆ�˜9õ �”	” Ô" E¤JÔ$4°QÔ$7Ñ8Ô8ˆØŒy˜ 2 A 2˜Ô&¨¬°I¸rÀ¸r°MÔ)BÑBˆØ×"Ò" D¨' ?¸$¼*Ð"ÑEÔEÐErU   c                 ót  — |}t          j        | j        d         t          | j        j        |j        j        ¦  «        ¬¦  «        }| j        j        d         }| j        \  }}t          ||t          | j	        ¦  «        || j	        | j        | 
                    ¦   «         | 
                    ¦   «         ¦  «         |S )Nr   r%   r	   )r3   r4   r(   r   r&   Úcharr-   r   rA   r.   Úravel)rC   rƒ   rt   Úyrj   rh   ri   s          rJ   Ú_matmul_vectorz_dia_base._matmul_vector  s¦   € ØˆåŒH�T”Z ”]­+°d´j´oØ78´w´|ñ+Eô +Eð Fñ Fô Fˆð ŒIŒO˜AÔˆàŒj‰ˆˆ!å�1�Q�˜DœLÑ)Ô)¨1¨d¬l¸D¼IØ—7’7‘9”9˜aŸgšg™iœiñ	)ô 	)ð 	)ð ˆrU   c                 ó
  — t          j        | j        d         |j        d         ft          j        | j        |¦  «        ¬¦  «        }t          g | j        ¢| j        j        ¢| j        ‘| j        ‘|j        d         ‘|‘|‘R Ž  |S )Nr   r	   r%   )r3   r4   r(   r�   r-   r   r.   )rC   rƒ   ru   s      rJ   Ú_matmul_multivectorz_dia_base._matmul_multivector)  sœ   € ÝŒh˜œ
 1œ u¤{°1¤~Ð6Ýœ^¨D¬I°uÑ=Ô=ð?ñ ?ô ?ˆåð 	0�T”Zð 	0 $¤)¤/ð 	0°4´<ð 	0ÀÄð 	0Ø”K ”Nð	0Ø$)ð	0Ø+.ð	0ð 	0ð 	0ð 	0àˆ
rU   c                 ó:  •— t          |t          ¦  «        s!t          ¦   «                              |¦  «        S d| j        v s	d|j        v r-|                      | j        d         |j        d         f¦  «        S t          g | j        ¢| j        j        ¢| j        ‘| j        ‘|j        d         ‘|j        j        ¢|j        ‘|j        ‘R Ž \  }}|                      | 	                    t          |¦  «        d¦  «        |f| j        d         |j        d         f¦  «        S )Nr   r	   ry   )r1   r   rŒ   Ú_matmul_sparser(   r‚   r   r-   r.   ÚreshaperA   )rC   rƒ   r.   r-   rŽ   s       €rJ   r¦   z_dia_base._matmul_sparse0  s*  ø€ å˜%¥Ñ+Ô+ð 	1Ý‘7”7×)Ò)¨%Ñ0Ô0Ð0ð �”
ˆ?ˆ?˜a 5¤;Ð.Ð.Ø×&Ò&¨¬
°1¬°u´{À1´~Ð'FÑGÔGÐGå"ð > D¤Jð >°´´ð >Ø#'¤<ð>Ø15´ð>à#(¤;¨q¤>ð>à49´JÔ4Dð>ð $)¤=ð>ð 38´*ð>ð >ð >‰ˆ�ð ×"Ò" D§L¢Lµ°W±´¸rÑ$BÔ$BÀGÐ#LØ$(¤J¨q¤M°5´;¸q´>Ð#BñDô Dð 	DrU   r   c                 ó  — | j         \  }}|j        dk    rt          j        }nt	          |¦  «        }|dk     rt          ||z   ||¦  «        }d}|}nt          |||z
  |¦  «        }|}||z   }|j        dk    r
|d |…         }| j        j         \  }	}
|| j        v rX||
k    r9t          j        |	|f| j        j	        ¬¦  «        }| j        |d d …d |
…f<   || _        || j        | j        |k    ||…f<   d S t          j
        | j        | j        j	                             |¦  «        ¦  «        | _        t          ||
¦  «        }t          j        |	dz   |f| j        j	        ¬¦  «        }| j        |d d…d |
…f<   ||d||…f<   || _        d S )Nr   r%   r	   ry   )r(   r>   r3   ÚinfrA   rc   r-   r.   r4   r&   ÚappendÚtyper7   )rC   ÚvaluesÚkrh   ri   Úvalues_nÚnÚ	min_indexÚ	max_indexÚ	data_rowsÚ	data_colsr-   Úms                rJ   Ú_setdiagz_dia_base._setdiag@  s©  € ØŒz‰ˆˆ1àŒ;˜!ÒÐå”vˆHˆHå˜6‘{”{ˆHàˆqŠ5ˆ5Ý�A˜‘E˜1˜hÑ'Ô'ˆAØˆIØˆIˆIå�A�q˜1‘u˜hÑ'Ô'ˆAØˆIØ˜A™ˆIàŒ;˜!ÒÐà˜B˜Q˜B”ZˆFà#œyœÑˆ	�9Ø�”ÐÐØ˜9Ò$Ð$Ý”x ¨IÐ 6¸d¼i¼oÐNÑNÔN�Ø&*¤i��Q�Q�Q˜
˜˜
�]Ñ#Ø �”	Ø@FˆDŒI�d”l aÒ'¨°9Ð)<Ð<Ñ=Ð=Ð=åœ9 T¤\°4´<Ô3E×3JÒ3JÈ1Ñ3MÔ3MÑNÔNˆDŒLÝ�I˜yÑ)Ô)ˆAÝ”8˜Y¨™]¨AÐ.°d´i´oÐFÑFÔFˆDØ$(¤IˆD��"��j�y�j�Ñ!Ø,2ˆD��Y˜yÐ(Ð(Ñ)ØˆDŒIˆIˆIrU   c                 ó2   — |r|                       ¦   «         S | S r�   r)   )rC   r'   s     rJ   r0   z_dia_base.todiae  s   € Øð 	Ø—9’9‘;”;ÐàˆKrU   c                 ór  — |�|dk    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         }
|                      |
|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'   )r8   r(   r7   r.   r3   rW   rA   Úintcr-   Úhstackr4   r&   r‚   )rC   Úaxesr'   rX   rY   Úmax_dimr.   ÚrÚcÚ
pad_amountr-   s              rJ   Ú	transposez_dia_base.transposem  sM  € ØÐ ¨¢ Ýð Lñ Mô Mð Mð "œZÑˆ�(Ý�d”j‘/”/ˆð ”<�-ˆõ ŒI•c˜'‘l”l­"¬'Ð2Ñ2Ô2°1°1°1°d°7Ô;ˆÝŒI�h¥b¤gÐ.Ñ.Ô.°'¸GÑ2CÀQÀQÀQÈÀWÔ1MÑMˆÝ˜˜G D¤I¤O°AÔ$6Ñ6Ñ7Ô7ˆ
ÝŒy˜$œ)¥R¤X¨t¬y¬¸qÔ/AÀ:Ð.NØ48´I´Oð&Eñ &Eô &Eð Fñ Gô Gˆà�A�q�DŒzˆØ×"Ò" D¨' ?Ø�hð; Ø&*ð #ñ ,ô ,ð 	,rU   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k    rt          j        |d|	fd¬¦  «        }|S )Nr   r%   Úconstant)Úmode)r(   r3   Úemptyr-   r&   Únonzeror.   r7   rc   Úsizer4   rA   Úpad)
rC   r­   rš   r›   ÚidxÚ	first_colÚlast_colÚresult_sizeÚresultÚpaddings
             rJ   Údiagonalz_dia_base.diagonal…  sñ   € Ø”Z‰
ˆˆdØ��Š:ˆ:˜˜dš˜Ý”8˜A T¤Y¤_Ð5Ñ5Ô5Ð5ÝŒz˜$œ,¨!Ò+Ñ,Ô,‰ˆÝ˜˜1‘I”Iˆ	Ý�t˜a‘x Ñ&Ô&ˆØ Ñ*ˆØŒ8�qŠ=ˆ=Ý”8˜K¨t¬y¬Ð?Ñ?Ô?Ð?Ø”˜3˜qœ6 9¨XÐ#5Ð5Ô6ˆØ¥ F¡¤Ñ+ˆØ�QŠ;ˆ;Ý”V˜F Q¨ L°zÐBÑBÔBˆFØˆrU   c                 óÂ  — d| j         v st          | j        ¦  «        dk    r!|                      | j         | j        ¬¦  «        S | j         \  }}| j        }|                      t          |||¦  «        ¬¦  «        }t          j	        | j        ¦  «         
                    |d¬¦  «        }t          j        || j        ¬¦  «        }t          j        ||¬¦  «        }t          j        d|z   |¬¦  «        }	t          ||g| j        j         ¢| j         
                    |d¬¦  «        ‘| j        ‘|‘|‘|‘|	‘R Ž }
|                      t          |
||¦  «        ¬¦  «        }t          |d |
…         ¦  «        }t          |d |
…          
                    |d¬¦  «        ¦  «        }|	 
                    |d¬¦  «        }	|                      |||	f| j         | j        ¬¦  «        }d|_        |S )	Nr   r%   r#   Fr)   r	   )r(   r&   T)r(   rA   r.   Ú_csr_containerr&   rO   r6   r7   r3   Úargsortr@   rÃ   r   r-   r   Úhas_canonical_format)rC   r'   Ún_rowsÚn_colsÚmax_nnzrF   ÚorderÚcsr_dataÚindicesÚindptrrO   rn   s               rJ   Útocsrz_dia_base.tocsr—  sõ  € Ø�”
ˆ?ˆ?�c $¤,Ñ/Ô/°1Ò4Ð4Ø×&Ò& t¤z¸¼Ð&ÑDÔDÐDàœ‰ˆ�Ø”(ˆð
 ×)Ò)µ°W¸fÀfÑ1MÔ1MÐ)ÑNÔNˆ	Ý”
˜4œ<Ñ(Ô(×/Ò/°	ÀÐ/ÑFÔFˆÝ”8˜G¨4¬:Ð6Ñ6Ô6ˆÝ”(˜7¨)Ð4Ñ4Ô4ˆÝ”˜!˜f™*¨IÐ6Ñ6Ô6ˆå˜ ð :¨¬¬ð :Øœ×+Ò+¨I¸EÐ+ÑBÔBð:ØDHÄIð:àð:à'ð:à)0ð:à28ð:ð :ð :ˆð ×)Ò)µ°S¸&À&Ñ1IÔ1IÐ)ÑJÔJˆ	Ý ¨¨#¨¤Ñ/Ô/ˆÝ˜w t¨ tœ}×3Ò3°IÀEÐ3ÑJÔJÑKÔKˆØ—’˜y¨u�Ñ5Ô5ˆØ×!Ò! 8¨W°fÐ"=Ø(,¬
¸$¼*ð "ñ Fô Fˆà#'ˆÔ Øˆ
rU   Tc                 ó¶   — |r5|                       || j                             ¦   «         f| j        ¬¦  «        S |                       || 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.
        rz   )r‚   r.   r'   r(   )rC   r-   r'   s      rJ   r}   z_dia_base._with_data·  sp   € ð ð 	Ø×&Ò&Ø�t”|×(Ò(Ñ*Ô*Ð+°4´:ð 'ñ ô ð ð ×&Ò&Ø�t”|Ð$¨D¬Jð 'ñ ô ð rU   c                 ó¢  — t          |¦  «        }|\  }}| j        d d …d |…f         | _        || j        d         k    rŠt          j        | j        | j        d         z   | j        j        d         k     ¦  «        rO| j        d d …d f         | j        d         z   t          j        | j        j        d         ¦  «        k    }d| j        |<   || _        d S )Nr   r	   )r   r-   r(   r3   Úanyr.   rW   r/   )rC   r(   rh   ri   r\   s        rJ   Úresizez_dia_base.resizeÄ  sÂ   € Ý˜EÑ"Ô"ˆØ‰ˆˆ1à”I˜a˜a˜a  ! ˜eÔ$ˆŒ	à�”
˜1”ÒÐÝ”�t”| d¤j°¤mÑ3°d´i´oÀaÔ6HÒHÑIÔIð ð ”L    D Ô)¨D¬J°q¬MÑ9Ý”I˜dœiœo¨aÔ0Ñ1Ô1ò2ˆDàˆDŒI�d‰OàˆŒˆˆrU   )NNFr�   )NNN)Frm   )NF)T)Ú__name__Ú
__module__Ú__qualname__Ú_formatr+   rT   r]   r`   r   Ú__doc__rk   rg   r{   r�   r‘   r–   r¢   r¤   r¦   rµ   r0   r¿   rÍ   rÙ   r}   rÝ   Ú__classcell__)rŽ   s   @rJ   r   r      s:  ø€ € € € € Ø€GðKGÈTð KGð KGð KGð KGð KGðZ
ð 
ð 
ð	ð 	ð 	ð1ð 1ð 1ð 1ð $Ô1Ô9€MÔð(ð (ð (ð (ð ”oÔ-€G„Oð6ð 6ð 6ð 6ð@ ”+Ô%€C„Kð-Nð -Nð -Nð -Nð^1ð 1ð 1ð 1ð 1ð2ð 2ð 2ð/Fð /Fð /Fð /Fð /Fðbð ð ðð ð ðDð Dð Dð Dð Dð #ð #ð #ð #ðJð ð ð ð ”MÔ)€E„Mð,ð ,ð ,ð ,ð,  Ô)Ô1€IÔðð ð ð ð  Ô'Ô/€HÔðð ð ð ð: ”MÔ)€E„Mðð ð ð ðð ð ð ”^Ô+€F„N€N€N€N€NrU   r   c                 óv   — t          j        | ¦  «        }t          j        t          | ¦  «        ¦  «        || <   |S )z)Helper function to invert an index array.)r3   Ú
zeros_likerW   rA   )rÇ   Úinvs     rJ   r€   r€   Ö  s/   € å
Œ-˜Ñ
Ô
€CÝŒy�˜S™œÑ"Ô"€Cˆ�HØ€JrU   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
    )r1   r   )rt   s    rJ   r   r   Ý  s   € õ. �a�Ñ$Ô$Ð$rU   c                   ó   — e Zd ZdZdS )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â   ro   rU   rJ   r   r   ø  ó"   € € € € € ðHð Hð Hð HrU   r   c                   ó   — e Zd ZdZdS )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é   ro   rU   rJ   r   r   D  rê   rU   r   )$râ   Ú__docformat__Ú__all__Únumpyr3   Ú
_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   ro   rU   rJ   ú<module>rõ      sØ  ðØ Ð à%€à
7Ð
7Ð
7€à Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð IÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hð,ð ,ð ,ð ,ð ,�ñ ,ô ,ð ,ðDð ð ð%ð %ð %ð6Ið Ið Ið Ið I�	˜7ñ Iô Ið IðXIð Ið Ið Ið I�˜9ñ Iô Ið Ið Ið IrU   