§
    µ³Ùg  ã                   ó°   — d Z g ZddlmZmZmZmZ ddlmZm	Z	m
Z
 i dd“dd“dd	“d
d“dd“dd“dd“dd“dd	“dd“dd	“dd“dd“dd“dd“dd“Zd„ Zd„ Zd„ ZdS )zrestructuredtext ené    )Ú
asanyarrayÚasarrayÚarrayÚzeros)ÚaslinearoperatorÚLinearOperatorÚIdentityOperator)Úfr
   r
   )r
   Údr   )r
   ÚFr   )r
   ÚDr   )r   r
   )r   r   )r   r   )r   r   )r   r
   )r   r   )r   r   )r   r   )r   r
   )r   r   )r   r   )r   r   c                 ó8   — | dvrd} |dvrd}t           | |f         S )NÚfdFDr   )Ú_coerce_rules)ÚxÚys     úW/granary/edev/quantum/lib/python3.11/site-packages/scipy/sparse/linalg/_isolve/utils.pyÚcoercer      s-   € Ø�€€ØˆØ�€€ØˆÝ˜˜1˜ÔÐó    c                 ó   — | S ©N© ©r   s    r   Úidr      s   € Ø€Hr   c                 óh  — | }t          | ¦  «        } | j        d         | j        d         k    rt          d| j        f› �¦  «        ‚| j        d         }t          |¦  «        }|j        |dfk    s,|j        |fk    s t          d| j        › d|j        › d�¦  «        ‚|j        j        dvr|                     d¦  «        }d	„ }t          | d
¦  «        r| j        j        }n|                      |¦  «        j        j        }t          ||j        j        ¦  «        }t          ||¬¦  «        }|                     ¦   «         }|€Št          |d¦  «        r|j        }nt          }t          |d¦  «        r|j        }	nt          }	|t          u r%|	t          u rt          | j        | j        ¬¦  «        }nLt!          | j        ||	| j        ¬¦  «        }n.t          |¦  «        }| j        |j        k    rt          d¦  «        ‚|€t#          ||¬¦  «        }
n£t%          |t&          ¦  «        r0|dk    r)|                     ¦   «         }|                     |¦  «        }
n^t+          ||¬¦  «        }
|
j        |dfk    s,|
j        |fk    s t          d| j        › d|
j        › d�¦  «        ‚|
                     ¦   «         }
| ||
||fS )aÊ  Make a linear system Ax=b

    Parameters
    ----------
    A : LinearOperator
        sparse or dense matrix (or any valid input to aslinearoperator)
    M : {LinearOperator, Nones}
        preconditioner
        sparse or dense matrix (or any valid input to aslinearoperator)
    x0 : {array_like, str, None}
        initial guess to iterative method.
        ``x0 = 'Mb'`` means using the nonzero initial guess ``M @ b``.
        Default is `None`, which means using the zero initial guess.
    b : array_like
        right hand side

    Returns
    -------
    (A, M, x, b, postprocess)
        A : LinearOperator
            matrix of the linear system
        M : LinearOperator
            preconditioner
        x : rank 1 ndarray
            initial guess
        b : rank 1 ndarray
            right hand side
        postprocess : function
            converts the solution vector to the appropriate
            type and dimensions (e.g. (N,1) matrix)

    r   é   z&expected square matrix, but got shape=zshapes of A z and b z are incompatibler   r   c                 ó   — | S r   r   r   s    r   Úpostprocessz make_system.<locals>.postprocessQ   s   € Øˆr   Údtype)r   NÚpsolveÚrpsolve)Úshaper   )ÚmatvecÚrmatvecr   z/matrix and preconditioner have different shapesÚMbz and x0 )r   r"   Ú
ValueErrorr   r   ÚcharÚastypeÚhasattrr#   r   r   Úravelr    r   r!   r	   r   r   Ú
isinstanceÚstrÚcopyr   )ÚAÚMÚx0ÚbÚA_ÚNr   Úxtyper    r!   r   ÚbCopys               r   Úmake_systemr6      sâ  € ðB 
€BÝ˜ÑÔ€Aà„wˆq„z�Q”W˜Q”ZÒÐÝÐNÀ1Ä7À*ÐNÐNÑOÔOÐOà	Œ�Œ
€Aå�1‰Œ€AàŒG˜˜!�uÒÐ ¤¨A¨4¢ Ýð (¨¬ð (ð (¸¼ð (ð (ð (ñ )ô )ð 	)ð 	„w„|˜6Ð!Ð!Ø�HŠH�S‰MŒMˆðð ð õ ˆq�ÑÔð 'Ø””ˆˆà—’˜‘”Ô!Ô&ˆÝ�5˜!œ'œ,Ñ'Ô'€Eå�˜ÐÑÔ€AØ	�Š‰	Œ	€Að 	€yÝ�2�hÑÔð 	Ø”YˆFˆFåˆFÝ�2�iÑ Ô ð 	Ø”jˆGˆGåˆGØ•Rˆ<ˆ<˜G¥r˜M˜MÝ  q¤w°a´gÐ>Ñ>Ô>ˆAˆAå˜qœw¨v¸wØ%&¤Wð.ñ .ô .ˆAˆAõ ˜QÑÔˆØŒ7�a”gÒÐÝÐNÑOÔOÐOð 
€zÝ�!˜5Ð!Ñ!Ô!ˆˆÝ	�B�Ñ	Ô	ð 	Ø�Š:ˆ:Ø—F’F‘H”HˆEØ—’˜‘”ˆAøå�"˜EÐ"Ñ"Ô"ˆØ”˜A˜q˜6Ò!Ð! Q¤W°°¢_ _Ýð >¨A¬Gð >ð >Ø#$¤7ð>ð >ð >ñ ?ô ?ð ?à�GŠG‰IŒIˆàˆa��A�{Ð"Ð"r   N)Ú__docformat__Ú__all__Únumpyr   r   r   r   Úscipy.sparse.linalg._interfacer   r   r	   r   r   r   r6   r   r   r   ú<module>r;      sU  ðØ%€à
€ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð �˜3ð   	¨#ð  ¨y¸ð  Ø˜3ð Ø )¨#ð Ø/8¸ð à˜3ð à )¨#ð à/8¸ð ð ˜3ð ð !*¨#ð ð 09¸ð ð ˜3ð	 ð !*¨#ð	 ð 09¸ð	 ð
 ˜3ð €ðð ð ðð ð ð`#ð `#ð `#ð `#ð `#r   