
    Ph                         d Z ddlmZmZmZmZmZmZmZ ddl	m
Z
 ddlm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mZ  G d d      Z G d d      Zd Zy)a  
Copyright (C) 2010 David Fong and Michael Saunders
Distributed under the same license as SciPy

Testing Code for LSMR.

03 Jun 2010: First version release with lsmr.py

David Chin-lung Fong            clfong@stanford.edu
Institute for Computational and Mathematical Engineering
Stanford University

Michael Saunders                saunders@stanford.edu
Systems Optimization Laboratory
Dept of MS&E, Stanford University.

    )arrayarangeeyezerosones	transposehstack)norm)assert_allcloseN)	coo_array)aslinearoperator)lsmr   )Gbc                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestLSMRc                      d| _         d| _        y )N
   )nmselfs    vC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\scipy/sparse/linalg/_isolve/tests/test_lsmr.pysetup_methodzTestLSMR.setup_method   s        c                     t        |      }|j                  |      }t        ||      d   }t        ||z
        t	        j
                  dd      k(  sJ y )Nr   h㈵>abs)r   matvecr   r
   pytestapprox)r   AxtrueAfunr   xs         r   assertCompatibleSystemzTestLSMR.assertCompatibleSystem"   sJ    "KKAJqMAI&--t"<<<<r   c                     t        | j                        }t        | j                  df      }| j                  ||       y Nr   )r   r   r   r(   r   r$   r%   s      r   testIdentityACase1zTestLSMR.testIdentityACase1(   s1    Ktvvqk"##Au-r   c                     t        | j                        }t        | j                  df      }| j                  ||       y r*   )r   r   r   r(   r+   s      r   testIdentityACase2zTestLSMR.testIdentityACase2-   s1    KdffQZ ##Au-r   c                     t        | j                        }t        t        | j                  dd            }| j	                  ||       y )Nr   r   r   r   r   r(   r+   s      r   testIdentityACase3zTestLSMR.testIdentityACase32   s6    K&"-.##Au-r   c                     t        d| j                        }t        t        | j                  dd            }| j	                  ||       y )N   r   r0   )lowerBidiagonalMatrixr   r   r   r(   r+   s      r   testBidiagonalAzTestLSMR.testBidiagonalA7   s9    !"TVV,&"-.##Ae,r   c                     t        ddgg      }d}t        ||      d   }t        |j                  |      |z
        t	        j
                  d      k(  sJ y )Ng      ?g       @g      @r   )r   r   r
   dotr"   r#   r   r$   r   r'   s       r   testScalarBzTestLSMR.testScalarB<   sN    C:,AJqMAEE!HqL!V]]1%5555r   c                     t        | j                        }t        t        | j                  dd      dz        }| j	                  ||       y )Nr   r0         ?      ?r1   r+   s      r   testComplexXzTestLSMR.testComplexXB   s;    K&B/6:;##Au-r   c                    dt        | j                        z  t        | j                  | j                  f      z   }t        t	        | j                  dd            }t        |      j                  |      }t        | j                  t              }t        |||      d   }t        ||z
        t        j                  dd      k(  sJ y )N   r   r0   dtypex0r   r   )r   r   r   r   r   r   r!   r   complexr   r
   r"   r#   )r   r$   r%   r   rC   r'   s         r   testComplexX0zTestLSMR.testComplexX0G   s    DFFOdDFFDFF#344&B/0Q&&u-466)A"a AI&--t"<<<<r   c                    dt        | j                        z  dt        | j                  | j                  f      z  z   }t        t	        | j                  dd      j                  t                    }| j                  ||       y )Nr?   y              ?r   r0   )r   r   r   r   r   astyperD   r(   r+   s      r   testComplexAzTestLSMR.testComplexAO   sa    DFFOb4(8#999&B/66w?@##Au-r   c                 `   dt        | j                        z  t        | j                  | j                  f      z   }t        t	        | j                  dd      dz        }t        |      j                  |      }t        ||      d   }t        ||z
        t        j                  dd      k(  sJ y )Nr?   r   r0   r<   r   r   )r   r   r   r   r   r   r!   r   r
   r"   r#   )r   r$   r%   r   r'   s        r   testComplexBzTestLSMR.testComplexBT   s    DFFOdDFFDFF#344&B/6:;Q&&u-AJqMAI&--t"<<<<r   c                    t        | j                        }t        | j                  df      }t        ||      d   }t	        |j                  |       |j                         z
        t        j                  d      k(  sJ y )Nr   r   )	r   r   r   r   r
   r8   ravelr"   r#   r9   s       r   testColumnBzTestLSMR.testColumnB[   sa    K$&&!AJqMAEE!Hwqwwy()V]]1-====r   c                    t        t        t              ^}}}}}t        t	        t        t        |z  z
        |d       t        t        j                        }t        t        t        |      d   }t        ||       t        t        t        d      d   }t        t        t        |      ^}}}}}t        t	        t        t        |z  z
        |d       ||z
  dv sJ ||dz  k  sJ y )	Ngư>)atolrB   r   r   )maxiter)r   r   gzo ?)r   r   r   r   r
   r   shape)	r   x_ref_itn_ref	normr_refrC   r'   itnnormrs	            r   testInitializationzTestLSMR.testInitializationa   s    +/1:(q'9qQ5[)94@ 177^A"a 5! !Q"1%#AqR01c51Q1Wu48 W}&&& yH----r   N)__name__
__module____qualname__r   r(   r,   r.   r2   r6   r:   r=   rE   rH   rJ   rM   rX    r   r   r   r      sC    =.
.
.
-
6.
=.
=>.r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestLSMRReturnsc                 8   d| _         t        d| j                         | _        t        t	        | j                   dd            | _        t        | j                        | _        | j                  j                  | j
                        | _	        t        | j                         | _        | j                  j                         | _        t        | j                  | j                        | _        t        | j                  | j                  | j                        | _        y )Nr   r4   r   r0   rB   )r   r5   r$   r   r   r%   r   r&   r!   r   r   rC   copyx00r   returnValuesreturnValuesX0r   s    r   r   zTestLSMRReturns.setup_method   s    &r4662vdffa45
$TVV,	!!$**-tvv,77<<> 0"466466dgg>r   c                 n    | j                   \  }}}}}}}}t        | j                  | j                         y N)rc   r   ra   rC   	r   r'   istoprV   rW   normarnormAcondAnormxs	            r   test_unchanged_x0z!TestLSMRReturns.test_unchanged_x0   s0    <@<O<O95#ufeUE$''*r   c                     | j                   \  }}}}}}}}t        | j                  | j                  j	                  |      z
        t        j                  |      k(  sJ y re   )rb   r
   r   r&   r!   r"   r#   rf   s	            r   	testNormrzTestLSMRReturns.testNormr   sR    <@<M<M95#ufeUEDFFTYY--a001V]]55IIIIr   c                     | j                   \  }}}}}}}}t        | j                  j                  | j                  | j                  j                  |      z
              t        j                  |      k(  sJ y re   )rb   r
   r&   rmatvecr   r!   r"   r#   rf   s	            r   
testNormarzTestLSMRReturns.testNormar   sh    <@<M<M95#ufeUETYY&&tvv		0@0@0C'CDE==() 	* )r   c                 t    | j                   \  }}}}}}}}t        |      t        j                  |      k(  sJ y re   )rb   r
   r"   r#   rf   s	            r   	testNormxzTestLSMRReturns.testNormx   s9    <@<M<M95#ufeUEAw&--....r   N)rY   rZ   r[   r   rl   rn   rq   rs   r\   r   r   r^   r^      s    	?+J*
/r   r^   c                    | |k  rt        t        | t              t        d| t              f      }t        t        | t              t        | dz
  t              f      }t        t        d| dz   t              t        d| t              f      }t	        |||ff| |f      S t        t        |t              t        d|dz   t              f      }t        t        |t              t        |t              f      }t        t        d|dz   t              t        d|dz   t              f      }t	        |||ff| |f      S )Nr@   r   )rQ   )r	   r   intfloatr   )r   r   rowcoldatas        r   r5   r5      s+    	AvfQc*Q-/ 0fQc*QqS,. /va1E2a/1 2$c
+Aa599fQc*Q!3/1 2fQc*Qc*, -va1E2a!513 4$Sz*1Q%88r   )__doc__numpyr   r   r   r   r   r   r	   numpy.linalgr
   numpy.testingr   r"   scipy.sparser   scipy.sparse.linalg._interfacer   scipy.sparse.linalgr   	test_lsqrr   r   r   r^   r5   r\   r   r   <module>r      sG   $ E D D  )  " ; $ `. `.F/ /<9r   