ó
î&]\c        
   @` s  d  Z  d d l m Z m Z m Z d d d d d d g Z d d	 l Z d d	 l Z d
 d l	 m
 Z
 d d l m Z d
 d l m Z d d l m Z d d l m Z i d d 6d d 6d d 6d d 6Z d Z d Z d „  Z d „  Z d d d „ Z e d d ƒ e ƒ  d	 d  d	 d	 d	 d	 d! „ ƒ ƒ Z e d" d# ƒ e ƒ  d	 d  d	 d	 d	 d	 d$ „ ƒ ƒ Z e d% d& ƒ e ƒ  d	 d  d	 d	 d	 d	 d' „ ƒ ƒ Z e d( d) ƒ e ƒ  d	 d  d	 d	 d	 d	 d* „ ƒ ƒ Z e ƒ  d	 d  d	 d	 d	 d	 d	 d	 d+ „ ƒ Z e ƒ  d	 d  d	 d	 d	 d	 d	 d, „ ƒ Z d	 S(-   s,   Iterative methods for solving linear systemsi    (   t   divisiont   print_functiont   absolute_importt   bicgt   bicgstabt   cgt   cgst   gmrest   qmrNi   (   t
   _iterative(   t   LinearOperator(   t   make_system(   t   _aligned_zeros(   t   non_reentrantt   st   ft   dt   ct   Ft   zt   DsH   
Parameters
----------
A : {sparse matrix, dense matrix, LinearOperator}sw  b : {array, matrix}
    Right hand side of the linear system. Has shape (N,) or (N,1).

Returns
-------
x : {array, matrix}
    The converged solution.
info : integer
    Provides convergence information:
        0  : successful exit
        >0 : convergence to tolerance not achieved, number of iterations
        <0 : illegal input or breakdown

Other Parameters
----------------
x0  : {array, matrix}
    Starting guess for the solution.
tol, atol : float, optional
    Tolerances for convergence, ``norm(residual) <= max(tol*norm(b), atol)``.
    The default for ``atol`` is ``'legacy'``, which emulates
    a different legacy behavior.

    .. warning::

       The default value for `atol` will be changed in a future release.
       For future compatibility, specify `atol` explicitly.
maxiter : integer
    Maximum number of iterations.  Iteration will stop after maxiter
    steps even if the specified tolerance has not been achieved.
M : {sparse matrix, dense matrix, LinearOperator}
    Preconditioner for A.  The preconditioner should approximate the
    inverse of A.  Effective preconditioning dramatically improves the
    rate of convergence, which implies that fewer iterations are needed
    to reach a given error tolerance.
callback : function
    User-supplied function to call after each iteration.  It is called
    as callback(xk), where xk is the current solution vector.

c         C` s6   t  j j |  ƒ } | | k r( | d f S| d f Sd S(   s;   
    Successful termination condition for the solvers.
    i   i    N(   t   npt   linalgt   norm(   t   residualt   atolt   resid(    (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt	   _stoptestE   s    
c         C` s­   | d	 k r: t j d j d | ƒ d t d d ƒd } n  t |  ƒ }  | d k rŒ | ƒ  } | |  k rk d S| d k r{ |  S|  t | ƒ Sn t t | ƒ |  t | ƒ ƒ Sd	 S(
   sž  
    Parse arguments for absolute tolerance in termination condition.

    Parameters
    ----------
    tol, atol : object
        The arguments passed into the solver routine by user.
    bnrm2 : float
        2-norm of the rhs vector.
    get_residual : callable
        Callable ``get_residual()`` that returns the initial value of
        the residual.
    routine_name : str
        Name of the routine.
    s	  scipy.sparse.linalg.{name} called without specifying `atol`. The default value will be changed in a future release. For compatibility, specify a value for `atol` explicitly, e.g., ``{name}(..., atol=0)``, or to retain the old behavior ``{name}(..., atol='legacy')``t   namet   categoryt
   stackleveli   t   legacyt   exiti    N(   t   Nonet   warningst   warnt   formatt   DeprecationWarningt   floatt   max(   t   tolR   t   bnrm2t   get_residualt   routine_nameR   (    (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt	   _get_atolP   s    			t    t   0c         ` s   ‡  ‡ ‡ f d †  } | S(   Nc         ` s5   d j  ˆ t d ˆ  j d d ƒ t ˆ f ƒ |  _ |  S(   Ns   
s       s   
    (   t   joint   common_doc1t   replacet   common_doc2t   __doc__(   t   fn(   t   Ainfot   footert   header(    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   combinez   s    (    (   R7   R5   R6   t   atol_defaultR8   (    (   R5   R6   R7   sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   set_docstringy   s    s7   Use BIConjugate Gradient iteration to solve ``Ax = b``.s   The real or complex N-by-N matrix of the linear system.
It is required that the linear operator can produce
``Ax`` and ``A^T x``.gñhãˆµøä>c      
   ` sz  t  |  | | ˆ  ƒ \ }  } ‰ ‰  } t ˆ  ƒ }	 | d  k rI |	 d } n  |  j |  j ‰ }
 | j | j } } t ˆ j j } t t	 | d ƒ } ‡  ‡ ‡ f d †  } t
 | | t j j ˆ  ƒ | d ƒ } | d k rç | ˆ ƒ d f S| } d } d } t d	 |	 d
 ˆ j ƒ} d } d } t } | } xt r;| } | ˆ  ˆ | | | | | | | ƒ	 \	 ‰ } } } } } } } } | d  k	 r| | k r| ˆ ƒ n  t | d | d |	 ƒ } t | d | d |	 ƒ } | d k rü| d  k	 rø| ˆ ƒ n  Pn6| d k r9| | c | 9<| | c | ˆ | | ƒ 7<nù | d k rv| | c | 9<| | c | |
 | | ƒ 7<n¼ | d k r™| | | ƒ | | <n™ | d k r¼| | | ƒ | | <nv | d k rõ| | c | 9<| | c | ˆ ˆ ƒ 7<n= | d	 k r2| rd } t } n  t | | | ƒ \ } } n  d } q-W| d k rj| | k rj| | k rj| } n  | ˆ ƒ | f S(   Ni
   t
   bicgrevcomc           ` s   t  j j ˆ ˆ ƒ ˆ  ƒ S(   N(   R   R   R   (    (   t   bt   matvect   x(    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   <lambda>“   s    R   R    i    i   iÿÿÿÿi   t   dtypei   i   i   i   (   R   t   lenR!   R=   t   rmatvect
   _type_convR@   t   chart   getattrR	   R,   R   R   R   R   t   Truet   slicet   FalseR   (   t   AR<   t   x0R(   t   maxitert   Mt   callbackR   t   postprocesst   nRB   t   psolvet   rpsolvet   ltrt   revcomR*   R   t   ndx1t   ndx2t   workt   ijobt   infot   ftflagt   iter_t   olditert   sclr1t   sclr2t   slice1t   slice2(    (   R<   R=   R>   sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR   ‚   sj    $$	?!!	
%	sB   Use BIConjugate Gradient STABilized iteration to solve ``Ax = b``.s7   The real or complex N-by-N matrix of the linear system.c      
   ` s  t  |  | | ˆ  ƒ \ }  } ‰ ‰  } t ˆ  ƒ }	 | d  k rI |	 d } n  |  j ‰ | j }
 t ˆ j j } t t | d ƒ } ‡  ‡ ‡ f d †  } t	 | | t
 j j ˆ  ƒ | d ƒ } | d k rÓ | ˆ ƒ d f S| } d } d } t d	 |	 d
 ˆ j ƒ} d } d } t } | } x¯t rÇ| } | ˆ  ˆ | | | | | | | ƒ	 \	 ‰ } } } } } } } } | d  k	 r‰| | k r‰| ˆ ƒ n  t | d | d |	 ƒ } t | d | d |	 ƒ } | d k rè| d  k	 rä| ˆ ƒ n  PnÖ | d k r%| | c | 9<| | c | ˆ | | ƒ 7<n™ | d k rH|
 | | ƒ | | <nv | d k r| | c | 9<| | c | ˆ ˆ ƒ 7<n= | d k r¾| r¢d } t } n  t | | | ƒ \ } } n  d } qW| d k rö| | k rö| | k rö| } n  | ˆ ƒ | f S(   Ni
   t   bicgstabrevcomc           ` s   t  j j ˆ ˆ ƒ ˆ  ƒ S(   N(   R   R   R   (    (   R<   R=   R>   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR?   Ø   s    R   R    i    i   iÿÿÿÿi   R@   i   i   i   (   R   RA   R!   R=   RC   R@   RD   RE   R	   R,   R   R   R   R   RF   RG   RH   R   (   RI   R<   RJ   R(   RK   RL   RM   R   RN   RO   RP   RR   RS   R*   R   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   (    (   R<   R=   R>   sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR   È   s`    $		$	?!	
%	s5   Use Conjugate Gradient iteration to solve ``Ax = b``.ss   The real or complex N-by-N matrix of the linear system.
``A`` must represent a hermitian, positive definite matrix.c      
   ` sN  t  |  | | ˆ  ƒ \ }  } ‰ ‰  } t ˆ  ƒ }	 | d  k rI |	 d } n  |  j ‰ | j }
 t ˆ j j } t t | d ƒ } ‡  ‡ ‡ f d †  } t	 | | t
 j j ˆ  ƒ | d ƒ } | d k rÓ | ˆ ƒ d f S| } d } d } t d	 |	 d
 ˆ j ƒ} d } d } t } | } x÷t r| } | ˆ  ˆ | | | | | | | ƒ	 \	 ‰ } } } } } } } } | d  k	 r‰| | k r‰| ˆ ƒ n  t | d | d |	 ƒ } t | d | d |	 ƒ } | d k rè| d  k	 rä| ˆ ƒ n  Pn| d k r%| | c | 9<| | c | ˆ | | ƒ 7<ná | d k rH|
 | | ƒ | | <n¾ | d k r| | c | 9<| | c | ˆ ˆ ƒ 7<n… | d	 k r| r¢d } t } n  t | | | ƒ \ } } | d k r| d k rˆ  ˆ ˆ ƒ | | <t | | | ƒ \ } } qn  d } qW| d k r>| | k r>| | k r>| } n  | ˆ ƒ | f S(   Ni
   t   cgrevcomc           ` s   t  j j ˆ ˆ ƒ ˆ  ƒ S(   N(   R   R   R   (    (   R<   R=   R>   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR?     s    R   R    i    i   iÿÿÿÿi   R@   i   i   (   R   RA   R!   R=   RC   R@   RD   RE   R	   R,   R   R   R   R   RF   RG   RH   R   (   RI   R<   RJ   R(   RK   RL   RM   R   RN   RO   RP   RR   RS   R*   R   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   (    (   R<   R=   R>   sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR     sf    $		$	?!	
%	s=   Use Conjugate Gradient Squared iteration to solve ``Ax = b``.s3   The real-valued N-by-N matrix of the linear system.c      
   ` s‹  t  |  | | ˆ  ƒ \ }  } ‰ ‰  } t ˆ  ƒ }	 | d  k rI |	 d } n  |  j ‰ | j }
 t ˆ j j } t t | d ƒ } ‡  ‡ ‡ f d †  } t	 | | t
 j j ˆ  ƒ | d ƒ } | d k rÓ | ˆ ƒ d f S| } d } d } t d	 |	 d
 ˆ j ƒ} d } d } t } | } x÷t r| } | ˆ  ˆ | | | | | | | ƒ	 \	 ‰ } } } } } } } } | d  k	 r‰| | k r‰| ˆ ƒ n  t | d | d |	 ƒ } t | d | d |	 ƒ } | d k rè| d  k	 rä| ˆ ƒ n  Pn| d k r%| | c | 9<| | c | ˆ | | ƒ 7<ná | d k rH|
 | | ƒ | | <n¾ | d k r| | c | 9<| | c | ˆ ˆ ƒ 7<n… | d k r| r¢d } t } n  t | | | ƒ \ } } | d k r| d k rˆ  ˆ ˆ ƒ | | <t | | | ƒ \ } } qn  d } qW| d k rMt ˆ  ˆ ˆ ƒ | ƒ \ } } | rMd } qMn  | d k r{| | k r{| | k r{| } n  | ˆ ƒ | f S(   Ni
   t	   cgsrevcomc           ` s   t  j j ˆ ˆ ƒ ˆ  ƒ S(   N(   R   R   R   (    (   R<   R=   R>   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR?   \  s    R   R    i    i   iÿÿÿÿi   R@   i   i   i   iöÿÿÿ(   R   RA   R!   R=   RC   R@   RD   RE   R	   R,   R   R   R   R   RF   RG   RH   R   (   RI   R<   RJ   R(   RK   RL   RM   R   RN   RO   RP   RR   RS   R*   R   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   t   ok(    (   R<   R=   R>   sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR   M  sn    $		$	?!	
%	c
   &      ` s¼  | d k r | } n | d k	 r0 t d ƒ ‚ n  t |  | | ˆ  ƒ \ }  } ‰ ‰  }
 t ˆ  ƒ } | d k ry | d } n  | d k rŽ d } n  t | | ƒ } |  j ‰ | j } t ˆ j j } t	 t
 | d ƒ } t j j ˆ  ƒ } t j j | ˆ  ƒ ƒ } ‡  ‡ ‡ f d †  } t | |	 | | d ƒ }	 |	 d k rE|
 ˆ ƒ d f S| d k ra|
 ˆ  ƒ d f Sd	 } | t | |	 | ƒ } t j } t j } d
 } d } t d | | d ˆ j ƒ} t | d
 d | d d ˆ j ƒ} d
 } d } t } | } | } t } t }  d
 }! xyt r‰| ˆ  ˆ | | | | | | | | | | ƒ \	 ‰ } } } } } }" }# } t | d
 | d
 | ƒ }$ t | d
 | d
 | ƒ }% | d k rÎ|  rÊ| d k	 rÊ| | | ƒ t }  n  Pn–| d
 k r| |% c |# 9<| |% c |" ˆ ˆ ƒ 7<n]| d k rL| | |% ƒ | |$ <| rC| d k rCt }  n  t } n| d k r¼| |% c |# 9<| |% c |" ˆ | |$ ƒ 7<|  rd| d k	 rd| | | ƒ t }  |! d
 }! qdn¨ | d k rd| rÝd } t } n  t | |$ |	 ƒ \ } } | s| | k rt d	 d | ƒ } n t d d | ƒ } | d k rW| t | |	 | ƒ } qd| | } n  | } d } |! | k r| } PqqW| d k r¬| |	 k r¬| } n  |
 ˆ ƒ | f S(   sù  
    Use Generalized Minimal RESidual iteration to solve ``Ax = b``.

    Parameters
    ----------
    A : {sparse matrix, dense matrix, LinearOperator}
        The real or complex N-by-N matrix of the linear system.
    b : {array, matrix}
        Right hand side of the linear system. Has shape (N,) or (N,1).

    Returns
    -------
    x : {array, matrix}
        The converged solution.
    info : int
        Provides convergence information:
          * 0  : successful exit
          * >0 : convergence to tolerance not achieved, number of iterations
          * <0 : illegal input or breakdown

    Other parameters
    ----------------
    x0 : {array, matrix}
        Starting guess for the solution (a vector of zeros by default).
    tol, atol : float, optional
        Tolerances for convergence, ``norm(residual) <= max(tol*norm(b), atol)``.
        The default for ``atol`` is ``'legacy'``, which emulates
        a different legacy behavior.

        .. warning::

           The default value for `atol` will be changed in a future release.
           For future compatibility, specify `atol` explicitly.
    restart : int, optional
        Number of iterations between restarts. Larger values increase
        iteration cost, but may be necessary for convergence.
        Default is 20.
    maxiter : int, optional
        Maximum number of iterations (restart cycles).  Iteration will stop
        after maxiter steps even if the specified tolerance has not been
        achieved.
    M : {sparse matrix, dense matrix, LinearOperator}
        Inverse of the preconditioner of A.  M should approximate the
        inverse of A and be easy to solve for (see Notes).  Effective
        preconditioning dramatically improves the rate of convergence,
        which implies that fewer iterations are needed to reach a given
        error tolerance.  By default, no preconditioner is used.
    callback : function
        User-supplied function to call after each iteration.  It is called
        as callback(rk), where rk is the current residual vector.
    restrt : int, optional
        DEPRECATED - use `restart` instead.

    See Also
    --------
    LinearOperator

    Notes
    -----
    A preconditioner, P, is chosen such that P is close to A but easy to solve
    for. The preconditioner parameter required by this routine is
    ``M = P^-1``. The inverse should preferably not be calculated
    explicitly.  Rather, use the following template to produce M::

      # Construct a linear operator that computes P^-1 * x.
      import scipy.sparse.linalg as spla
      M_x = lambda x: spla.spsolve(P, x)
      M = spla.LinearOperator((n, n), M_x)

    Examples
    --------
    >>> from scipy.sparse import csc_matrix
    >>> from scipy.sparse.linalg import gmres
    >>> A = csc_matrix([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float)
    >>> b = np.array([2, 4, -1], dtype=float)
    >>> x, exitCode = gmres(A, b)
    >>> print(exitCode)            # 0 indicates successful convergence
    0
    >>> np.allclose(A.dot(x), b)
    True
    sO   Cannot specify both restart and restrt keywords. Preferably use 'restart' only.i
   i   t   gmresrevcomc           ` s   t  j j ˆ ˆ ƒ ˆ  ƒ S(   N(   R   R   R   (    (   R<   R=   R>   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR?     s    R   R    i    g      ð?i   iÿÿÿÿi   R@   i   i   i   g      ø?g¼‰Ø—²Òœ<g      Ð?N(   R!   t
   ValueErrorR   RA   t   minR=   RC   R@   RD   RE   R	   R   R   R   R,   t   nanR   RF   RH   RG   R   R'   (&   RI   R<   RJ   R(   t   restartRK   RL   RM   t   restrtR   RN   RO   RP   RR   RS   R)   t   Mb_nrm2R*   t   ptol_max_factort   ptolR   t   presidRT   RU   RV   t   work2RW   RX   RY   RZ   t   old_ijobt
   first_passt   resid_readyt   iter_numR\   R]   R^   R_   (    (   R<   R=   R>   sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR   —  s¤    V	$					%	H					c	   !   
   ` s  ˆ  ‰ t  ˆ  d | ˆ ƒ \ ‰  }	 ‰ ‰ }
 | d k r| d k rt ˆ d ƒ rÆ ‡ f d †  } ‡ f d †  } ‡ f d †  } ‡ f d †  } t ˆ  j d | d | ƒ} t ˆ  j d | d | ƒ} qd „  } t ˆ  j d | d | ƒ} t ˆ  j d | d | ƒ} n  t ˆ ƒ } | d k r-| d	 } n  t ˆ j j } t	 t
 | d
 ƒ } ‡  ‡ ‡ f d †  } t | | t j j ˆ ƒ | d ƒ } | d k r¥|
 ˆ ƒ d f S| } d } d } t d | ˆ j ƒ } d } d } t } | } xjt rQ| } | ˆ ˆ | | | | | | | ƒ	 \	 ‰ } } } } } } } } | d k	 rX| | k rX| ˆ ƒ n  t | d | d | ƒ } t | d | d | ƒ }  | d k r·| d k	 r³| ˆ ƒ n  Pn‘| d k r÷| |  c | 9<| |  c | ˆ  j | | ƒ 7<nQ| d k r7| |  c | 9<| |  c | ˆ  j | | ƒ 7<n| d k r]| j | |  ƒ | | <në | d k rƒ| j | |  ƒ | | <nÅ | d k r©| j | |  ƒ | | <nŸ | d k rÏ| j | |  ƒ | | <ny | d k r| |  c | 9<| |  c | ˆ  j ˆ ƒ 7<n= | d k rH| r,d } t } n  t | | | ƒ \ } } n  d } qèW| d k r€| | k r€| | k r€| } n  |
 ˆ ƒ | f S(   sÇ  Use Quasi-Minimal Residual iteration to solve ``Ax = b``.

    Parameters
    ----------
    A : {sparse matrix, dense matrix, LinearOperator}
        The real-valued N-by-N matrix of the linear system.
        It is required that the linear operator can produce
        ``Ax`` and ``A^T x``.
    b : {array, matrix}
        Right hand side of the linear system. Has shape (N,) or (N,1).

    Returns
    -------
    x : {array, matrix}
        The converged solution.
    info : integer
        Provides convergence information:
            0  : successful exit
            >0 : convergence to tolerance not achieved, number of iterations
            <0 : illegal input or breakdown

    Other Parameters
    ----------------
    x0  : {array, matrix}
        Starting guess for the solution.
    tol, atol : float, optional
        Tolerances for convergence, ``norm(residual) <= max(tol*norm(b), atol)``.
        The default for ``atol`` is ``'legacy'``, which emulates
        a different legacy behavior.

        .. warning::

           The default value for `atol` will be changed in a future release.
           For future compatibility, specify `atol` explicitly.
    maxiter : integer
        Maximum number of iterations.  Iteration will stop after maxiter
        steps even if the specified tolerance has not been achieved.
    M1 : {sparse matrix, dense matrix, LinearOperator}
        Left preconditioner for A.
    M2 : {sparse matrix, dense matrix, LinearOperator}
        Right preconditioner for A. Used together with the left
        preconditioner M1.  The matrix M1*A*M2 should have better
        conditioned than A alone.
    callback : function
        User-supplied function to call after each iteration.  It is called
        as callback(xk), where xk is the current solution vector.

    See Also
    --------
    LinearOperator

    Examples
    --------
    >>> from scipy.sparse import csc_matrix
    >>> from scipy.sparse.linalg import qmr
    >>> A = csc_matrix([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float)
    >>> b = np.array([2, 4, -1], dtype=float)
    >>> x, exitCode = qmr(A, b)
    >>> print(exitCode)            # 0 indicates successful convergence
    0
    >>> np.allclose(A.dot(x), b)
    True
    RP   c         ` s   ˆ  j  |  d ƒ S(   Nt   left(   RP   (   R<   (   t   A_(    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   left_psolve¡  s    c         ` s   ˆ  j  |  d ƒ S(   Nt   right(   RP   (   R<   (   Rt   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   right_psolve¤  s    c         ` s   ˆ  j  |  d ƒ S(   NRs   (   RQ   (   R<   (   Rt   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   left_rpsolve§  s    c         ` s   ˆ  j  |  d ƒ S(   NRv   (   RQ   (   R<   (   Rt   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   right_rpsolveª  s    R=   RB   c         S` s   |  S(   N(    (   R<   (    (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   id¯  s    i
   t	   qmrrevcomc           ` s   t  j j ˆ  j ˆ ƒ ˆ ƒ S(   N(   R   R   R   R=   (    (   RI   R<   R>   (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR?   »  s    R   R    i    i   iÿÿÿÿi   i   i   i   i   i   i   i   N(   R   R!   t   hasattrR
   t   shapeRA   RC   R@   RD   RE   R	   R,   R   R   R   R   RF   RG   R=   RB   RH   R   (!   RI   R<   RJ   R(   RK   t   M1t   M2RM   R   RL   RN   Ru   Rw   Rx   Ry   Rz   RO   RR   RS   R*   R   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   (    (   RI   Rt   R<   R>   sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyR   Z  s†    B$	$	?$$ 	
%	(    R3   t
   __future__R    R   R   t   __all__R"   t   numpyR   R-   R	   t   scipy.sparse.linalg.interfaceR
   t   utilsR   t   scipy._lib._utilR   t   scipy._lib._threadsafetyR   RC   R0   R2   R   R,   R:   R!   R   R   R   R   R   R   (    (    (    sC   lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyt   <module>   sJ   ")		)	!A!<!A!GÁ