
    Ph	                     t    d dl Zd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d Zd Zd Zd	 Zd
 Zd Zd Zd Zy)    N)norm)assert_equalassert_allcloseassert_)minres)raisesc                      t         j                  j                  d      } | j                  dd      }||j                  z   }| j                  d      }||fS )N  
   )nprandomRandomStaterandT)rngmatrixvectors      xC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\scipy/sparse/linalg/_isolve/tests/test_minres.pyget_sample_problemr   	   sK    
))


%CXXb"FfhhFXXb\F6>    c                      t               \  } }d| d<   d|d<   t        | |      \  }}t        |d       t        | |z  |z
        dt        |      z  k  sJ y )Nr   )r   h㈵>)r   r   r   r   Abxpinfos       r   test_singularr      s\    DAqAbFAaDa|HBqB
td1g~---r   c                     t               \  } }t        j                  j                  d      }|j	                  d      }g fd}t        | |||       }g t        | ||       t        t        j                  |d   d                 y )N90  r   c                 (    j                  |        y )N)append)xktraces    r   trace_iteratesz*test_x0_is_used_by.<locals>.trace_iterates#   s    Rr   )x0callback)r'   r   )r   r   r   r   r   r   r   array_equal)r   r   r   r&   r%   trace_with_x0r$   s         @r   test_x0_is_used_byr*      s}    DAq
))


&C	"BE
1aB0ME
1a.)}Q/q::;r   c                      t               \  } }d}| |t        j                  d      z  z
  }t        | ||      \  }}t        ||      \  }}t	        |d       t        ||d       y )Ng      ?r   )shiftr   r   )rtol)r   r   eyer   r   r   )r   r   r,   	shifted_Ax1info1x2info2s           r   
test_shiftr4   -   sb    DAqEEBFF2J&&Iq!5)IBy!$IBB&r   c                      t               \  } }d| d<   d| d<   t        t              5  t        | |d      \  }}ddd       y# 1 sw Y   yxY w)z;Asymmetric matrix should raise `ValueError` when check=True   )r6      r7   )r7   r6   T)checkN)r   assert_raises
ValueErrorr   r   s       r   test_asymmetric_failr;   7   sF    DAqAdGAdG	z	"!Qd+D 
#	"	"s   AAc                  V   t         j                  j                  d      } d}| j                  dd      }t        j                  ||j
                        }| j                  d      }| j                  d      }t        ||||      d   }t        ||z  |z
        |t        |      z  k  sJ y )Nr
   ư>   )r&   r-   r   r   r   r   randndotr   r   r   )r   r-   ar   cxs         r   test_minres_non_default_x0rE   @   s    
))


%CD		!QA
q!##A		!A		!Aq!%a(AA	?dT!Wn,,,r   c                     t         j                  j                  d      } d}| j                  dd      }t        j                  ||j
                        }| j                  d      }| j                  d      }| j                  dd      }t        j                  ||j
                        }t        |||||      d   }t        ||z  |z
        |t        |      z  k  sJ y )Nr    r=   r>   Mr&   r-   r   r?   r   r-   rB   r   rC   mrD   s          r   "test_minres_precond_non_default_x0rK   K   s    
))


&CD		!QA
q!##A		!A		!A		!QA
q!##Aq!qQT*1-AA	?dT!Wn,,,r   c                     t         j                  j                  d      } d}t        j                  d      }t        j                  d      }t        j                  d      }| j                  dd      }t        j                  ||j                        }t        |||||      d   }t        ||z  |z
        |t        |      z  k  sJ y )Nr
   r=   r   rG   r   )
r   r   r   r.   onesr@   rA   r   r   r   rI   s          r   test_minres_precond_exact_x0rN   X   s    
))


%CD
r
A
A
A		"bA
q!##Aq!qQT*1-AA	?dT!Wn,,,r   )numpyr   numpy.linalgr   numpy.testingr   r   r   scipy.sparse.linalg._isolver   pytestr   r9   r   r   r*   r4   r;   rE   rK   rN    r   r   <module>rU      s?      @ @ . *.<"',-
-	-r   