§
    fŠtjÃK  ã                   óú   — d Z ddlZddlZddlmZmZ ddlmZm	Z	m
Z
 ddgZ G d„ d	e¦  «        Z G d
„ de¦  «        Zd„ Z G d„ d¦  «        Zdd„Zd„ Zd„ Z G d„ d¦  «        Z G d„ d¦  «        Zddœd„Zdd„ZdS )a  
Implementation of Harwell-Boeing read/write.

At the moment not the full Harwell-Boeing format is supported. Supported
features are:

    - assembled, non-symmetric, real matrices
    - integer for pointer/indices
    - exponential format for float values, and int format

é    N)Ú	csc_arrayÚ
csc_matrixé   )ÚFortranFormatParserÚ	IntFormatÚ	ExpFormatÚhb_readÚhb_writec                   ó   — e Zd ZdS )ÚMalformedHeaderN©Ú__name__Ú
__module__Ú__qualname__© ó    úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/io/_harwell_boeing/hb.pyr   r      ó   € € € € € Ø€Dr   r   c                   ó   — e Zd ZdS )ÚLineOverflowNr   r   r   r   r   r   "   r   r   r   c                 ó2   — | j         | j        z  dz   |dz
  z  S )zcReturn the number of bytes to read to get every full lines for the
    given parsed fortran format.r   )ÚrepeatÚwidth)ÚfmtÚnliness     r   Ú_nbytes_fullr   &   s!   € ð ŒJ˜œÑ" QÑ&¨6°A©:Ñ6Ð6r   c                   óL   — e Zd Zed	d„¦   «         Zed„ ¦   «         Z	 d
d„Zd„ ZdS )ÚHBInfoúDefault titleÚ0Nc                 óè  — |                      d¬¦  «        }|j        }|j        }|j        }|j        \  }	}
|j        }|�€!t          j        t          j	        |dz   ¦  «        ¦  «        }t          j        t          j	        |dz   ¦  «        ¦  «        }|j
        j        t          j        d         v r:t          j        t          j	        t          j        |¦  «        ¦  «         ¦  «        }n†|j
        j        t          j        d         v r:t          j        t          j	        t          j        |¦  «        ¦  «         ¦  «        }n.d|j
        j        › d�}t          |¦  «        ‚t          d	¦  «        ‚|€�t          j        |¦  «        st#          d
¦  «        ‚|j
        j        t          j        d         v rd}n9|j
        j        t          j        d         v rd}nt          d|j
        › d�¦  «        ‚t%          |dd¦  «        }nt#          d¦  «        ‚d„ } |||j        ¦  «        } |||j        ¦  «        } |||j        ¦  «        }||z   |z   } | ||||||||	|
||j        |j        |j        ¦  «        S )aâ  Create a HBInfo instance from an existing sparse matrix.

        Parameters
        ----------
        m : sparse array or matrix
            the HBInfo instance will derive its parameters from m
        title : str
            Title to put in the HB header
        key : str
            Key
        mxtype : HBMatrixType
            type of the input matrix
        fmt : dict
            not implemented

        Returns
        -------
        hb_info : HBInfo instance
        F©ÚcopyNr   ÚAllFloatÚ
AllIntegerztype z not implemented yetzfmt argument not supported yet.z Complex values not supported yetÚintegerÚrealz for values not implementedÚunsymmetricÚ	assembledz mxtype argument not handled yet.c                 ó@   — || j         z  }|| j         z  |k    r|dz  }|S )Nr   )r   )r   Úsizer   s      r   Ú_nlinesz!HBInfo.from_data.<locals>._nlinesi   s.   € Ø˜SœZÑ'ˆFØ˜œ
Ñ" dÒ*Ð*Ø˜!‘�ØˆMr   )ÚtocscÚindptrÚindicesÚdataÚshapeÚnnzr   Úfrom_numberÚnpÚmaxÚdtypeÚkindÚ	typecodesr   ÚabsÚNotImplementedErrorÚ	isrealobjÚ
ValueErrorÚHBMatrixTyper+   Úfortran_format)ÚclsÚmÚtitleÚkeyÚmxtyper   Úpointerr/   ÚvaluesÚnrowsÚncolsÚ
nnon_zerosÚpointer_fmtÚindices_fmtÚ
values_fmtÚmessageÚtpr,   Úpointer_nlinesÚindices_nlinesÚvalues_nlinesÚtotal_nliness                         r   Ú	from_datazHBInfo.from_data-   sm  € ð* �GŠG˜ˆGÑÔˆà”(ˆØ”)ˆØ”ˆà”w‰ˆˆuØ”Uˆ
à‰;õ $Ô/µ´°w¸q±yÑ0AÔ0AÑBÔBˆKÝ#Ô/µ´°w¸q±yÑ0AÔ0AÑBÔBˆKàŒ|Ô ¥B¤L°Ô$<Ð<Ð<Ý&Ô2µB´F½2¼6À&¹>¼>Ñ4JÔ4JÐ3JÑKÔK�
�
Ø”Ô"¥b¤l°<Ô&@Ð@Ð@Ý&Ô2µB´F½2¼6À&¹>¼>Ñ4JÔ4JÐ3JÑKÔK�
�
àI &¤,Ô"3ÐIÐIÐI�Ý)¨'Ñ2Ô2Ð2å%Ð&GÑHÔHÐHàˆ>Ý”< Ñ'Ô'ð EÝ Ð!CÑDÔDÐDØŒ|Ô ¥B¤L°Ô$>Ð>Ð>Ø��Ø”Ô"¥b¤l°:Ô&>Ð>Ð>Ø��å)ØE˜FœLÐEÐEÐEñGô Gð Gå! " m°[ÑAÔAˆFˆFåÐ?Ñ@Ô@Ð@ð	ð 	ð 	ð !˜ ¨g¬lÑ;Ô;ˆØ ˜ ¨g¬lÑ;Ô;ˆØ˜ 
¨F¬KÑ8Ô8ˆà%¨Ñ6¸ÑFˆàˆs�5˜#Ø˜.¨.¸-Ø�E˜5 *ØÔ&¨Ô(BØÔ%ñ	'ô 'ð 	'r   c                 óø  — |                      ¦   «                              d¦  «        }t          |¦  «        dk    st          d|› �¦  «        ‚|dd…         }|dd…         }|                      ¦   «                              d¦  «        }t          |                     ¦   «         ¦  «        dk    st          d|› �¦  «        ‚t          |dd…         ¦  «        }t          |dd…         ¦  «        }t          |dd	…         ¦  «        }t          |d	d…         ¦  «        }|dd…                              ¦   «         }	|	d
k    rd}	nt          |	¦  «        }	|	dk    st          d¦  «        ‚|                      ¦   «                              d¦  «        }t          |¦  «        dk    st          d|› �¦  «        ‚|dd…                              ¦   «         }
t          |
¦  «        dk    st          d¦  «        ‚t                               |
¦  «        }|j	        dvrt          d|› d�¦  «        ‚|j
        dk    st          d|› d�¦  «        ‚|j        dk    st          d¦  «        ‚|dd…         dk    st          d|› �¦  «        ‚t          |dd…         ¦  «        }t          |dd	…         ¦  «        }t          |d	d…         ¦  «        }t          |dd…         ¦  «        }|dk    st          d|› d�¦  «        ‚|                      ¦   «                              d¦  «        }|                     ¦   «         }t          |¦  «        dk    st          d|› �¦  «        ‚ | |||||||||||d         |d         |d         |	|¦  «        S )a6  Create a HBInfo instance from a file object containing a matrix in the
        HB format.

        Parameters
        ----------
        fid : file-like matrix
            File or file-like object containing a matrix in the HB format.

        Returns
        -------
        hb_info : HBInfo instance
        ú
éH   z6Expected at least 72 characters for first line, got: 
Né8   z7Expected at least 56 characters for second line, got: 
é   é   é*   Ú r   z5Only files without right hand side supported for now.éF   z4Expected at least 72 character for third line, got:
é   z'mxtype expected to be 3 characters long)r'   r&   z:Only real or integer matrices supported for now (detected ú)r(   z6Only unsymmetric matrices supported for now (detected r)   z)Only assembled matrices supported for nowz           zMalformed data for third line: zUnexpected value z! for nltvl (last entry of line 3)zExpected 3 formats, got r   é   )ÚreadlineÚstripÚlenr<   ÚrstripÚ_expect_intÚupperr=   Úfrom_fortranÚ
value_typeÚ	structureÚstorageÚsplit)r?   ÚfidÚlinerA   rB   rQ   rN   rO   rP   Ú
rhs_nlinesÚmxtype_srC   rF   rG   rH   ÚnelementalsÚcts                    r   Ú	from_filezHBInfo.from_file{   sÖ  € ð �|Š|‰~Œ~×#Ò# DÑ)Ô)ˆÝ�4‰yŒy˜2Š~ˆ~Ýð .Ø'+ð.ð .ñ /ô /ð /à�S�b�S”	ˆØ�2�3�3Œiˆð �|Š|‰~Œ~×#Ò# DÑ)Ô)ˆÝ�4—;’;‘=”=Ñ!Ô! RÒ'Ð'Ýð .Ø'+ð.ð .ñ /ô /ð /å" 4¨¨¨¤9Ñ-Ô-ˆÝ$ T¨"¨R¨%¤[Ñ1Ô1ˆÝ$ T¨"¨R¨%¤[Ñ1Ô1ˆÝ# D¨¨B¨¤KÑ0Ô0ˆà˜"˜R˜%”[×&Ò&Ñ(Ô(ˆ
Ø˜ÒÐØˆJˆJå$ ZÑ0Ô0ˆJØ˜QŠˆÝð $ñ %ô %ð %ð �|Š|‰~Œ~×#Ò# DÑ)Ô)ˆÝ�4‰yŒy˜BŠˆÝð -Ø&*ð-ð -ñ .ô .ð .ð ˜˜˜”8—>’>Ñ#Ô#ˆÝ�8‰}Œ} Ò!Ð!ÝÐFÑGÔGÐGå×*Ò*¨8Ñ4Ô4ˆØÔÐ$7Ð7Ð7Ýð 8Ø.4ð8ð 8ð 8ñ 9ô 9ð 9àÔ =Ò0Ð0Ýð 8Ø.4ð8ð 8ð 8ñ 9ô 9ð 9àŒ~ Ò,Ð,ÝÐHÑIÔIÐIà�A�b�DŒz˜XÒ%Ð%ÝÐE¸tÐEÐEÑFÔFÐFå˜D  B œKÑ(Ô(ˆÝ˜D  B œKÑ(Ô(ˆÝ   b¨ e¤Ñ-Ô-ˆ
Ý! $ r¨" u¤+Ñ.Ô.ˆØ˜aÒÐÝØR KÐRÐRÐRñô ð ð
 �|Š|‰~Œ~×#Ò# DÑ)Ô)ˆà�ZŠZ‰\Œ\ˆÝ�2‰wŒw˜!Š|ˆ|ÝÐ<¸Ð<Ð<Ñ=Ô=Ð=àˆs�5˜#Ø °ÀØ˜5 %¨Ø�a”5˜"˜Qœ%  A¤Ø˜{ñ	,ô ,ð 	,r   r   c                 óÎ  — |€d}t          |¦  «        dk    rt          d¦  «        ‚|€d}t          |¦  «        dk    r t          j        d|› d�t          d	¬
¦  «         || _        || _        || _        || _        || _	        || _
        t          ¦   «         }|                     |¦  «        }t          |t          ¦  «        st          d|› �¦  «        ‚|                     |¦  «        }t          |t          ¦  «        st          d|› �¦  «        ‚|                     |¦  «        }t          |t          ¦  «        r+|j        dvrt          d|› d|› �¦  «        ‚t"          j        }nMt          |t          ¦  «        r&|j        dvrt          d|› d|› �¦  «        ‚t&          }nt          d|›�¦  «        ‚|| _        || _        || _        t"          j        | _        t"          j        | _        || _        || _        t7          ||¦  «        | _        || _	        t7          ||¦  «        | _        || _
        t7          ||¦  «        | _        || _        |	| _         |
| _!        || _"        || _#        dS )z@Do not use this directly, but the class ctrs (from_* functions).NzNo TitlerU   ztitle cannot be > 72 charactersz|No Keyé   zkey is > 8 characters (key is r]   r\   )Ú
stacklevelz,Expected int format for pointer format, got z,Expected int format for indices format, got )r'   Úcomplexz"Inconsistency between matrix type z and value type )r&   zUnsupported format for values )$ra   r<   ÚwarningsÚwarnr   rA   rB   rQ   rN   rO   rP   r   ÚparseÚ
isinstancer   r   rf   r4   Úfloat64ÚintÚpointer_formatÚindices_formatÚvalues_formatÚint32Úpointer_dtypeÚindices_dtypeÚvalues_dtyper   Úpointer_nbytes_fullÚindices_nbytes_fullÚvalues_nbytes_fullrF   rG   rH   rn   rC   )ÚselfrA   rB   rQ   rN   rO   rP   rC   rF   rG   rH   Úpointer_format_strÚindices_format_strÚvalues_format_strÚright_hand_sides_nlinesrn   Úparserr{   r|   r}   r�   s                        r   Ú__init__zHBInfo.__init__Ñ   sÌ  € ð ˆ=ØˆEÝˆu‰:Œ:˜Š?ˆ?ÝÐ>Ñ?Ô?Ð?àˆ;ØˆCÝˆs‰8Œ8�aŠ<ˆ<ÝŒMÐA¸3ÐAÐAÐAÝ&°1ð6ñ 6ô 6ð 6àˆŒ
ØˆŒà(ˆÔØ,ˆÔØ,ˆÔØ*ˆÔå$Ñ&Ô&ˆØŸšÐ&8Ñ9Ô9ˆÝ˜.­)Ñ4Ô4ð 	2Ýð 1Ø .ð1ð 1ñ 2ô 2ð 2ð  ŸšÐ&8Ñ9Ô9ˆÝ˜.­)Ñ4Ô4ð 	2Ýð 1Ø .ð1ð 1ñ 2ô 2ð 2ð ŸšÐ%6Ñ7Ô7ˆÝ�m¥YÑ/Ô/ð 	QØÔ Ð(;Ð;Ð;Ý ð "?Àfð "?ð "?Ø/<ð"?ð "?ñ @ô @ð @åœ:ˆLˆLÝ˜¥yÑ1Ô1ð 	QØÔ ¨Ð3Ð3Ý ð "?Àfð "?ð "?Ø/<ð"?ð "?ñ @ô @ð @õ ˆLˆLåÐO¸mÐOÐOÑPÔPÐPà,ˆÔØ,ˆÔØ*ˆÔåœXˆÔÝœXˆÔØ(ˆÔà,ˆÔÝ#/°ÀÑ#OÔ#OˆÔ à,ˆÔÝ#/°ÀÑ#OÔ#OˆÔ à*ˆÔÝ".¨}¸mÑ"LÔ"LˆÔàˆŒ
ØˆŒ
Ø$ˆŒØ&ˆÔØˆŒˆˆr   c                 ó˜  — | j                              d¦  «        | j                             d¦  «        z   g}|                     | j        d›| j        d›| j        d›| j        d›�¦  «         |                     | j        j	                             d¦  «        d›| j
        d›| j        d›| j        d›dd›�¦  «         | j        j	        }| j        j	        }| j        j	        }|                     |                     d¦  «        d›|                     d¦  «        d›|                     d	¦  «        d
›�¦  «         d                     |¦  «        S )z<Gives the header corresponding to this instance as a string.rU   rr   Ú14drW   Ú14sr   é   Ú16sé   Ú20srT   )rA   ÚljustrB   ÚappendrQ   rN   rO   rP   rC   r>   rF   rG   rH   r{   r|   r}   Újoin)r…   ÚheaderÚpffmtÚiffmtÚvffmts        r   ÚdumpzHBInfo.dump  sK  € à”*×"Ò" 2Ñ&Ô&¨¬¯ª¸Ñ):Ô):Ñ:Ð;ˆà�Š˜Ô*ÐzÐz°Ô0CÐzÐzÈÔI\ÐzÐzÐbfÔbtÐzÐzÐzÑ{Ô{Ð{Ø�Š˜œÔ3×9Ò9¸"Ñ=Ô=ÐÐÀ4Ä:ÐÐÐSWÔS]ÐÐÐcgÔcrÐÐÐxyÐÐÐñ  	Aô  	Að  	AàÔ#Ô2ˆØÔ#Ô2ˆØÔ"Ô1ˆØ�Š˜Ÿš R™œÐXÐX¨e¯kªk¸"©o¬oÐXÐXÀ5Ç;Â;ÈrÁ?Ä?ÐXÐXÐXÑYÔYÐYØ�yŠy˜Ñ Ô Ð r   )r   r    NN)r   r   )r   r   r   ÚclassmethodrR   rp   r‹   rš   r   r   r   r   r   ,   sƒ   € € € € € ØðK'ð K'ð K'ñ „[ðK'ðZ ðS,ð S,ñ „[ðS,ðr 45ð	Gð Gð Gð GðR!ð !ð !ð !ð !r   r   c                 ót   — 	 t          | ¦  «        S # t          $ r}|€d}t          || z  ¦  «        |‚d }~ww xY w)NzExpected an int, got %s)rz   r<   )ÚvalueÚmsgÚes      r   rc   rc   (  sP   € ð-Ý�5‰zŒzÐøÝð -ð -ð -Øˆ;Ø+ˆCÝ˜˜u™Ñ%Ô%¨1Ð,øøøøð-øøøs   ‚ ‘
7›2²7c                 ó|  — d                      |                      |j        ¦  «        |                      ¦   «         g¦  «        }t	          j        |t          d¬¦  «        }d                      |                      |j        ¦  «        |                      ¦   «         g¦  «        }t	          j        |t          d¬¦  «        }d                      |                      |j        ¦  «        |                      ¦   «         g¦  «        }t	          j        ||j	        d¬¦  «        }t          ||dz
  |dz
  f|j        |j        f¬¦  «        S )NrZ   ú )r6   Úsepr   )r1   )r•   Úreadr‚   r_   r4   Ú
fromstringrz   rƒ   r„   r�   r   rF   rG   )Úcontentr–   Ú
ptr_stringÚptrÚ
ind_stringÚindÚ
val_stringÚvals           r   Ú_read_hb_datar¬   1  s5  € à—’˜'Ÿ,š, vÔ'AÑBÔBØ"×+Ò+Ñ-Ô-ð/ñ 0ô 0€Jå
Œ-˜
Ý˜3ð ñ  ô  €Cð —’˜'Ÿ,š, vÔ'AÑBÔBØ×'Ò'Ñ)Ô)ð+ñ ,ô ,€Jå
Œ-˜
Ý˜3ð ñ  ô  €Cð —’˜'Ÿ,š, vÔ'@ÑAÔAØ!×*Ò*Ñ,Ô,ð.ñ /ô /€Jå
Œ-˜
ØÔ%¨3ð0ñ 0ô 0€Cõ �c˜3˜q™5 # a¡%Ð(°´¸v¼|Ð0LÐMÑMÔMÐMr   c                 ój  — |                       d¬¦  «        } d„ }|                     |                     ¦   «         ¦  «         |                     d¦  «          ||| j        dz   |j        |j        ¦  «          ||| j        dz   |j        |j        ¦  «          ||| j	        |j
        |j        ¦  «         d S )NFr"   c                 óŠ  — |j         }||j        z  }|d |dz
  |j        z  …         }|                     |dz
  |j        f¦  «        D ]*}|                      |t	          |¦  «        z  dz   ¦  «         Œ+|j        |j        z
  }|dk    r=|                      ||z  t	          ||j        |z
  d …         ¦  «        z  dz   ¦  «         d S d S )Nr   rT   r   )Úpython_formatr   ÚreshapeÚwriteÚtupler+   )	ÚfÚarr   r   ÚpyfmtÚ
pyfmt_fullÚfullÚrowÚnremains	            r   Úwrite_arrayz _write_data.<locals>.write_arrayH  sÞ   € ð Ô!ˆØ˜SœZÑ'ˆ
ð Ð,�F˜Q‘J #¤*Ñ,Ð,Ô-ˆØ—<’< ¨¡¨3¬:Ð 6Ñ7Ô7ð 	4ð 	4ˆCØ�GŠG�J¥ s¡¤Ñ+¨dÑ2Ñ3Ô3Ð3Ð3Ø”'˜DœIÑ%ˆØ�QŠ;ˆ;Ø�GŠG�U˜W‘_­¨b°´¸7Ñ1BÐ1CÐ1CÔ.DÑ(EÔ(EÑEÈÑLÑMÔMÐMÐMÐMð ˆ;r   rT   r   )r-   r±   rš   r.   rN   r{   r/   rO   r|   r0   rP   r}   )r@   rj   r–   rº   s       r   Ú_write_datar»   E  sÓ   € Ø	�Š�UˆÑÔ€AðNð Nð Nð ‡I‚Iˆf�kŠk‰mŒmÑÔÐØ‡I‚Iˆd�O„O€Oà€K��Q”X˜a‘Z Ô!6ØÔ%ñ'ô 'ð 'à€K��Q”Y˜q‘[ &Ô"7ØÔ%ñ'ô 'ð 'à€K��Q”V˜VÔ1ØÔ$ñ&ô &ð &ð &ð &r   c                   ó(  — e Zd ZdZdddddœZddd	d
ddœZdddœZd„ e                     ¦   «         D ¦   «         Zd„ e                     ¦   «         D ¦   «         Z	d„ e                     ¦   «         D ¦   «         Z
ed„ ¦   «         Zdd„Zed„ ¦   «         Zd„ ZdS )r=   zClass to hold the matrix type.ÚRÚCÚPÚI)r'   rt   Úpatternr&   ÚSÚUÚHÚZ)Ú	symmetricr(   Ú	hermitianÚskewsymmetricÚrectangularÚAÚE)r)   Ú	elementalc                 ó   — i | ]\  }}||“Œ	S r   r   ©Ú.0ÚiÚjs      r   ú
<dictcomp>zHBMatrixType.<dictcomp>w  s   € Ð4Ð4Ð4™$˜!˜Q��AÐ4Ð4Ð4r   c                 ó   — i | ]\  }}||“Œ	S r   r   rÎ   s      r   rÒ   zHBMatrixType.<dictcomp>x  s   € Ð>Ð>Ð>™t˜q !�a˜Ð>Ð>Ð>r   c                 ó   — i | ]\  }}||“Œ	S r   r   rÎ   s      r   rÒ   zHBMatrixType.<dictcomp>y  s   € Ð:Ð:Ð:™T˜Q �A�qÐ:Ð:Ð:r   c                 ó  — t          |¦  «        dk    st          d¦  «        ‚	 | j        |d                  }| j        |d                  }| j        |d                  } | |||¦  «        S # t
          $ r}t          d|› �¦  «        |‚d }~ww xY w)Nr\   z:Fortran format for matrix type should be 3 characters longr   r   r^   zUnrecognized format )ra   r<   Ú	_f2q_typeÚ_f2q_structureÚ_f2q_storageÚKeyError)r?   r   rf   rg   rh   rŸ   s         r   re   zHBMatrixType.from_fortran{  s°   € å�3‰xŒx˜1Š}ˆ}Ýð /ñ 0ô 0ð 0ð	BØœ s¨1¤vÔ.ˆJØÔ*¨3¨q¬6Ô2ˆIØÔ& s¨1¤vÔ.ˆGØ�3�z 9¨gÑ6Ô6Ð6øÝð 	Bð 	Bð 	BÝÐ9°CÐ9Ð9Ñ:Ô:ÀÐAøøøøð	Bøøøs   ¤AA* Á*
BÁ4BÂBr)   c                 óÒ   — || _         || _        || _        || j        vrt	          d|› �¦  «        ‚|| j        vrt	          d|› �¦  «        ‚|| j        vrt	          d|› �¦  «        ‚d S )NzUnrecognized type zUnrecognized structure zUnrecognized storage )rf   rg   rh   Ú	_q2f_typer<   Ú_q2f_structureÚ_q2f_storage)r…   rf   rg   rh   s       r   r‹   zHBMatrixType.__init__ˆ  s�   € Ø$ˆŒØ"ˆŒØˆŒà˜Tœ^Ð+Ð+ÝÐ>°*Ð>Ð>Ñ?Ô?Ð?Ø˜DÔ/Ð/Ð/ÝÐB°yÐBÐBÑCÔCÐCØ˜$Ô+Ð+Ð+ÝÐ>°WÐ>Ð>Ñ?Ô?Ð?ð ,Ð+r   c                 ór   — | j         | j                 | j        | j                 z   | j        | j                 z   S ©N)rÛ   rf   rÜ   rg   rÝ   rh   ©r…   s    r   r>   zHBMatrixType.fortran_format”  s7   € àŒ~˜dœoÔ.ØÔ" 4¤>Ô2ñ3àÔ  ¤Ô.ñ/ð 	/r   c                 ó8   — d| j         › d| j        › d| j        › d�S )NzHBMatrixType(z, r]   )rf   rg   rh   rà   s    r   Ú__repr__zHBMatrixType.__repr__š  s)   € ØS˜tœÐSÐS°$´.ÐSÐSÀDÄLÐSÐSÐSÐSr   N)r)   )r   r   r   Ú__doc__rÛ   rÜ   rÝ   ÚitemsrÖ   r×   rØ   r›   re   r‹   Úpropertyr>   râ   r   r   r   r=   r=   b  s%  € € € € € Ø(Ð(ð ØØØð	ð €Ið ØØØ Øðð €Nð Øðð €Lð
 5Ð4 )§/¢/Ñ"3Ô"3Ð4Ñ4Ô4€IØ>Ð> ~×';Ò';Ñ'=Ô'=Ð>Ñ>Ô>€NØ:Ð: \×%7Ò%7Ñ%9Ô%9Ð:Ñ:Ô:€Làð
Bð 
Bñ „[ð
Bð
@ð 
@ð 
@ð 
@ð ð/ð /ñ „Xð/ð
Tð Tð Tð Tð Tr   r=   c                   ó�   — e Zd Zd
d„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d	„ ZdS )ÚHBFileNc                 óh   — || _         |€!t                               |¦  «        | _        dS || _        dS )a  Create a HBFile instance.

        Parameters
        ----------
        file : file-object
            StringIO work as well
        hb_info : HBInfo, optional
            Should be given as an argument for writing, in which case the file
            should be writable.
        N)Ú_fidr   rp   Ú_hb_info)r…   ÚfileÚhb_infos      r   r‹   zHBFile.__init__Ÿ  s6   € ð ˆŒ	Øˆ?Ý"×,Ò,¨TÑ2Ô2ˆDŒMˆMˆMð $ˆDŒMˆMˆMr   c                 ó   — | j         j        S rß   )rê   rA   rà   s    r   rA   zHBFile.title²  s   € àŒ}Ô"Ð"r   c                 ó   — | j         j        S rß   )rê   rB   rà   s    r   rB   z
HBFile.key¶  s   € àŒ}Ô Ð r   c                 ó$   — | j         j        j        S rß   )rê   rC   rf   rà   s    r   ÚtypezHBFile.typeº  s   € àŒ}Ô#Ô.Ð.r   c                 ó$   — | j         j        j        S rß   )rê   rC   rg   rà   s    r   rg   zHBFile.structure¾  s   € àŒ}Ô#Ô-Ð-r   c                 ó$   — | j         j        j        S rß   )rê   rC   rh   rà   s    r   rh   zHBFile.storageÂ  s   € àŒ}Ô#Ô+Ð+r   c                 ó6   — t          | j        | j        ¦  «        S rß   )r¬   ré   rê   rà   s    r   Úread_matrixzHBFile.read_matrixÆ  s   € Ý˜TœY¨¬Ñ6Ô6Ð6r   c                 ó8   — t          || j        | j        ¦  «        S rß   )r»   ré   rê   )r…   r@   s     r   Úwrite_matrixzHBFile.write_matrixÉ  s   € Ý˜1˜dœi¨¬Ñ7Ô7Ð7r   rß   )r   r   r   r‹   rå   rA   rB   rð   rg   rh   rô   rö   r   r   r   rç   rç   ž  sÍ   € € € € € ð$ð $ð $ð $ð& ð#ð #ñ „Xð#ð ð!ð !ñ „Xð!ð ð/ð /ñ „Xð/ð ð.ð .ñ „Xð.ð ð,ð ,ñ „Xð,ð7ð 7ð 7ð8ð 8ð 8ð 8ð 8r   rç   T)Úspmatrixc                óÊ   — d„ }t          | d¦  «        r || ¦  «        }n2t          | ¦  «        5 } ||¦  «        }ddd¦  «         n# 1 swxY w Y   |rt          |¦  «        S |S )aå  Read HB-format file.

    Parameters
    ----------
    path_or_open_file : path-like or file-like
        If a file-like object, it is used as-is. Otherwise, it is opened
        before reading.
    spmatrix : bool, optional (default: True)
        If ``True``, return sparse matrix. Otherwise return sparse array.

    Returns
    -------
    data : csc_array or csc_matrix
        The data read from the HB file as a sparse array.

    Notes
    -----
    At the moment not the full Harwell-Boeing format is supported. Supported
    features are:

        - assembled, non-symmetric, real matrices
        - integer for pointer/indices
        - exponential format for float values, and int format

    Examples
    --------
    We can read and write a harwell-boeing format file:

    >>> from scipy.io import hb_read, hb_write
    >>> from scipy.sparse import csr_array, eye
    >>> data = csr_array(eye(3))  # create a sparse array
    >>> hb_write("data.hb", data)  # write a hb file
    >>> print(hb_read("data.hb", spmatrix=False))  # read a hb file
    <Compressed Sparse Column sparse array of dtype 'float64'
        with 3 stored elements and shape (3, 3)>
        Coords	Values
        (0, 0)	1.0
        (1, 1)	1.0
        (2, 2)	1.0
    c                 óH   — t          | ¦  «        }|                     ¦   «         S rß   )rç   rô   )rj   Úhbs     r   Ú_get_matrixzhb_read.<locals>._get_matrixö  s   € Ý�C‰[Œ[ˆØ�~Š~ÑÔÐr   r£   N)ÚhasattrÚopenr   )Úpath_or_open_filer÷   rû   r0   r³   s        r   r	   r	   Í  sÂ   € ðR ð  ð  õ Ð  &Ñ)Ô)ð "Øˆ{Ð,Ñ-Ô-ˆˆåÐ#Ñ$Ô$ð 	"¨Ø�;˜q‘>”>ˆDð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"àð  Ý˜$ÑÔÐØ€Ks   ¯AÁAÁAc                 ó  ‡‡— ‰                      d¬¦  «        Š‰€t                               ‰¦  «        Šˆˆfd„}t          | d¦  «        r || ¦  «        S t	          | d¦  «        5 } ||¦  «        cddd¦  «         S # 1 swxY w Y   dS )a™  Write HB-format file.

    Parameters
    ----------
    path_or_open_file : path-like or file-like
        If a file-like object, it is used as-is. Otherwise, it is opened
        before writing.
    m : sparse array or matrix
        the sparse array to write
    hb_info : HBInfo
        contains the meta-data for write

    Returns
    -------
    None

    Notes
    -----
    At the moment not the full Harwell-Boeing format is supported. Supported
    features are:

        - assembled, non-symmetric, real matrices
        - integer for pointer/indices
        - exponential format for float values, and int format

    Examples
    --------
    We can read and write a harwell-boeing format file:

    >>> from scipy.io import hb_read, hb_write
    >>> from scipy.sparse import csr_array, eye
    >>> data = csr_array(eye(3))  # create a sparse array
    >>> hb_write("data.hb", data)  # write a hb file
    >>> print(hb_read("data.hb", spmatrix=False))  # read a hb file
    <Compressed Sparse Column sparse array of dtype 'float64'
        with 3 stored elements and shape (3, 3)>
        Coords	Values
        (0, 0)	1.0
        (1, 1)	1.0
        (2, 2)	1.0
    Fr"   Nc                 óN   •— t          | ‰¦  «        }|                     ‰¦  «        S rß   )rç   rö   )rj   rú   rì   r@   s     €€r   Ú_set_matrixzhb_write.<locals>._set_matrix3  s$   ø€ Ý�C˜Ñ!Ô!ˆØ�Š˜qÑ!Ô!Ð!r   r±   Úw)r-   r   rR   rü   rý   )rþ   r@   rì   r  r³   s    ``  r   r
   r
     só   øø€ ðT 	
�Š�UˆÑÔ€Aà€Ý×"Ò" 1Ñ%Ô%ˆð"ð "ð "ð "ð "ð "õ Ð  'Ñ*Ô*ð "Øˆ{Ð,Ñ-Ô-Ð-åÐ# SÑ)Ô)ð 	"¨QØ�;˜q‘>”>ð	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s   Á&A>Á>BÂBrß   )rã   ru   Únumpyr4   Úscipy.sparser   r   Ú_fortran_format_parserr   r   r   Ú__all__Ú	Exceptionr   ÚWarningr   r   r   rc   r¬   r»   r=   rç   r	   r
   r   r   r   ú<module>r	     sÆ  ðð
ð 
ð( €€€à Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà�jÐ
!€ð	ð 	ð 	ð 	ð 	�iñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�7ñ 	ô 	ð 	ð7ð 7ð 7ðy!ð y!ð y!ð y!ð y!ñ y!ô y!ð y!ðx-ð -ð -ð -ðNð Nð Nð(&ð &ð &ð:9Tð 9Tð 9Tð 9Tð 9Tñ 9Tô 9Tð 9Tðx,8ð ,8ð ,8ð ,8ð ,8ñ ,8ô ,8ð ,8ð^ ,0ð 4ð 4ð 4ð 4ð 4ðn7"ð 7"ð 7"ð 7"ð 7"ð 7"r   