
    Ug=H                        d Z ddlmZ ddlZddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZ ddl
ZddlZdd	lmZ ej        ej        ej        ej        ej        ej        ej        d
Zej        ej        ej        ej        dZd Zg de_        i e_        i e_        i e_         d Z!g de!_        ej        ej        de!_        i e!_        i e!_         d Z"g de"_        i e"_        i e"_        i e"_         d Z#g de#_        i e#_        i e#_        i e#_         d Z$ddge$_        ej        ej        ej        de$_        dhe$_        h de$_         d Z%g de%_        ej        ej        ej        de%_        ddhe%_        dhe%_         d Z&d d!ge&_        ej        ej        ej        de&_        i e&_        i e&_          G d" d#          Z' G d$ d%          Z( G d& d'          Z) G d( d)          Z* G d* d+          Z+dS ),zA Unit tests for nonlinear solvers
Author: Ondrej Certik
May 2007
    )assert_N)_nonlinroot)	csr_array)diagdot)inv   )pressure_network)andersondiagbroydenlinearmixingexcitingmixingbroyden1broyden2krylov)r   r   r   r   c                     t          j        |           j        } t          g d          }d}| | z  |t	          | j        | z            z  | z  z
  }|S )N)      g      ?r
         ?{Gz?)npasarrayTr   float)xdcfs       _/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/optimize/tests/test_nonlin.pyFr!       sU    

1A   !!AA	
QU137^^#a''AH    )r
   r
   r
   r
   r
   c                     | S N r   s    r    F2r'   .       Hr"   )r
   r   r            )r   r   c                     | S r$   r%   r&   s    r    F2_luckyr-   9   r(   r"   )r   r   r   r   r   r   c                 x    t          j        g dg dg dg          }t          j        g d          }|| z  |z
  S )N)r
           )r
   r/   r
   )r   r
   r/   )r
   r         @)r   arrayr   Abs      r    F3r6   C   sE    
+++zzz:::677A
Aq519r"   )r
   r   r   c                     d}|| d         z  | d         z  dz
  t          j        | d                    t          j        | d                    z   dd|z  z   z
  gS )Ng     @r   r
   )r   exp)r   r4   s     r    	F4_powellr9   O   sT    AadF1Q4K!ORVQqTE]]RVQqTE]]:a!A#gFGGr"   r/   )r   r   r   minres>   cgsgmrestfqmrr;   bicgstabc                 L    t          | dt          j        g d                    S )Nr)   )r   r   r   r   )r   r   r2   r&   s    r    F5rA   _   s%    Aq"(+;+;+;"<"<===r"   )       @r   r   r   )r   r   r   r<   c           	          | \  }}t          j        ddgddgg          }t          j        |dz   |dz  dz
  z  dz   t          j        |t          j        |          z  d	z
            g          }t           j                            ||           S )
Ng/$gffffff-@g+,?grD0?r   r*         r
   )r   r2   sinr8   linalgsolve)r   x1x2J0vs        r    F6rM   n   s    FB	FD>z*, 
- 
-B
26b!eai(3.&bfRjj1,--/ 	0 	0AIOOB""""r"   g      gffffff?c                   j   e Zd ZdZddZddZej        j        d             Z	ej        
                    d          d             Zej        
                    d          ej                            dg d	          d
                         Zej        
                    d          d             Zd ZdS )
TestNonlinz
    Check the Broyden methods for a few test problems.

    broyden1, broyden2, and newton_krylov must succeed for
    all functions. Some of the others don't -- tests in KNOWN_BAD are skipped.

    r   c           
         |t           d         k    rfdD ]c}||j        v r |||j        |d |dd          }t          t	          j         ||                                                    |k                d |||j        |dd          }t          t	          j         ||                                                    |k                d S )Nr   r=   r?   r<   r;   r>      r   )methodline_searchf_tolmaxiterverbose)rU   rV   rW   )SOLVERSJAC_KSP_BADxinr   r   absolutemax)selfr   funcrU   rS   r   s         r    _check_nonlin_funczTestNonlin._check_nonlin_func   s    78$$$I 9 9Q]**DAE&d$c1> > >AAaDD))--//%78888DAEQ???AAaDD!!%%''%/00000r"   c                    |dk    rjdD ]g}||j         v rt          ||j        ||ddd|id          }t          t	          j        |j                                                  |k                ht          ||j        ||ddd          }t          t	          j        |j                                                  |k                d S )	Nr   rQ   rR   r   rS   )ftolrV   dispjac_optionsrS   options)ra   rV   rb   )ROOT_JAC_KSP_BADr   rZ   r   r   r[   funr\   )r]   r   rS   rU   
jac_methodress         r    _check_rootzTestNonlin._check_root   s    XM < <
!3331aeF,1c,-4<j3I$K $KL L L CG,,0022U:;;;;1aeF$)c1EEG G GCG$$((**U233333r"   c                     d S r$   r%   )r]   akws      r    _check_func_failzTestNonlin._check_func_fail   s    r"   zignore::DeprecationWarningc                 b   t           t          t          t          t          t
          t          fD ]}t                                          D ]e}||j	                                        v r2|t                                          v r|                     ||           O|                     ||           fd S r$   )r!   r'   r-   r6   r9   rA   rM   rX   values	KNOWN_BAD	MUST_WORKrn   r_   )r]   r   r^   s      r    test_problem_nonlinzTestNonlin.test_problem_nonlin   s    R2y"b9 	1 	1A(( 1 11;--////y//1111--a666''400001	1 	1r"   rS   )lgmresr=   r?   r<   r;   r>   c           	           d _          fd}t          j        t          t          j        |ddd|           t           j                    d S )NFc                 ^    d_         t          j        |                                           S )NT)_tol_norm_usedr   r[   r\   )r   r]   s    r    local_norm_funcz8TestNonlin.test_tol_norm_called.<locals>.local_norm_func   s%    "&D;q>>%%'''r"   r   rR   r   )rS   rU   rV   rW   tol_norm)rw   nonlinnewton_krylovr!   rZ   r   )r]   rS   rx   s   `  r    test_tol_norm_calledzTestNonlin.test_tol_norm_called   sm    
 $	( 	( 	( 	( 	( 	QfD%(!&5	7 	7 	7 	7 	#$$$$$r"   c                     t           t          t          t          t          t
          t          fD ]K}t          D ]A}||j        v r |t          v r| 
                    ||           +|                     ||           BLd S r$   )r!   r'   r-   r6   r9   rA   rM   rX   rq   rr   rn   rj   )r]   r   meths      r    test_problem_rootzTestNonlin.test_problem_root   s    R2y"b9 	* 	*A * *1;&&y((--a666  D))))*	* 	*r"   c                     d }t          j        t          j        j                  5  t          j        |dgd           d d d            d S # 1 swxY w Y   d S )Nc                     d| z   S )Ng     @@r%   r&   s    r    wont_convergez5TestNonlin.test_no_convergence.<locals>.wont_converge   s    7Nr"   r   r
   )rZ   rV   )pytestraisesscipyoptimizeNoConvergencerz   r{   )r]   r   s     r    test_no_convergencezTestNonlin.test_no_convergence   s    	 	 	 ]5>788 	D 	D QCCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   AAAN)r   )__name__
__module____qualname____doc__r_   rj   r   markxfailrn   filterwarningsrs   parametrizer|   r   r   r%   r"   r    rO   rO      s2        1 1 1 14 4 4 4" [   [ <==1 1 >=1 [ <==[X (; (; (; < <% %< < >=% [ <==* * >=*D D D D Dr"   rO   c                   d   e Zd ZdZ ej        g d           ej        g d           ej        g d           ej        g d           ej        g d           ej        g d           ej        g d           ej        g d	          gZd
 eD             ZddZd Z	d Z
d Zd Zd ZdS )
TestSecantzDCheck that some Jacobian approximations satisfy the secant condition)      ?rB   r1         @      @)rB   r1   r   r   r   )r1   r   r   r   rB   )r   r   r   rB   r1   )      "@r   r   r   r1   )r0   r   r   r   r1   )r   r         @r   r   )r   rB   r   r   r   c                     g | ]
}|d z  dz
  S )r   r
   r%   ).0r   s     r    
<listcomp>zTestSecant.<listcomp>   s     			q!Q$(			r"   r
   c           
      h    |di |}|                     | j        d         | j        d         d           t          t	          | j        dd         | j        dd                             D ]C\  }\  }}|                    ||           t          t          ||dz                       D ]}| j        ||z
  dz            | j        ||z
           z
  }	| j        ||z
  dz            | j        ||z
           z
  }
t          t          j
        |	|                    |
                               ||k    r~| j        ||z
  dz            | j        ||z
           z
  }	| j        ||z
  dz            | j        ||z
           z
  }
t          t          j
        |	|                    |
                                EdS )z|
        Check that the given Jacobian approximation satisfies secant
        conditions for last `npoints` points.
        r   Nr
   r%   )setupxsfs	enumeratezipupdaterangeminr   r   allcloserH   )r]   jac_clsnpointsrm   jacjr   r   kdxdfs              r    _check_secantzTestSecant._check_secant   s   
 gmmmm		$'!*dgaj$///"3twqrr{DGABBK#@#@AA 	< 	<IAv1JJq!3w!,,-- 8 8WQqSU^dgacl2WQqSU^dgacl2B		"667777 G||WQwYq[)DGAgI,>>WQwYq[)DGAgI,>>BKCIIbMM:::;;;	< 	<r"   c                 D    |                      t          j                   d S r$   )r   rz   BroydenFirstr]   s    r    test_broyden1zTestSecant.test_broyden1   s    6./////r"   c                 D    |                      t          j                   d S r$   )r   rz   BroydenSecondr   s    r    test_broyden2zTestSecant.test_broyden2  s    6/00000r"   c           	         t          j        d          }|                    | j        d         | j        d         d            t          j        d          dz  }t          t          | j        dd          | j        dd                              D ]\  }\  }}|| j        |         z
  }|| j        |         z
  }||t          ||          z
  d d d f         |d d d f         z  t          ||          z  z  }|
                    ||           t          t          j        |                                |dd	                     d S )
N皙?alphar   r*   g      $r
   绽|=vIh%<=rtolatol)rz   r   r   r   r   r   identityr   r   r   r   r   r   todense)r]   r   Blast_jr   r   r   r   s           r    test_broyden1_updatezTestSecant.test_broyden1_update  s5   !,,,		$'!*dgaj$///KNNf%'DGABBK(E(EFF 	K 	KNFFQTWV_$BTWV_$B"s1bzz/111d7+bqqqk9CBKKGGAJJq!BKqu5IIIJJJJ	K 	Kr"   c           	         t          j        d          }|                    | j        d         | j        d         d            t          j        d          dz  }t          t          | j        dd          | j        dd                              D ]\  }\  }}|| j        |         z
  }|| j        |         z
  }||t          ||          z
  d d d f         |d d d f         z  t          ||          z  z  }|
                    ||           t          t          j        |                                t          |          dd	                     d S )
Nr   r   r   r*   gr
   r   r   r   )rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   )r]   r   Hr   r   r   r   r   s           r    test_broyden2_updatezTestSecant.test_broyden2_update  s;   "---		$'!*dgaj$///KNNd#'DGABBK(E(EFF 	P 	PNFFQTWV_$BTWV_$B"s1bzz/111d7+bqqqk9CBKKGGAJJq!BKs1vvENNNOOOO	P 	Pr"   c                 L    |                      t          j        ddd           d S )Nr   r   )Mw0r   )r   rz   Andersonr   s    r    test_andersonzTestSecant.test_anderson   s)    
 	6?aAqAAAAAr"   N)r
   )r   r   r   r   r   r2   r   r   r   r   r   r   r   r   r%   r"   r    r   r      sP       NN
"('''
(
(
"('''
(
(
"('''
(
(
"('''
(
(
"('''
(
(
"('''
(
(
"('''
(
(
"('''
(
(
+B 
 	B			B< < < <*0 0 01 1 1K K KP P PB B B B Br"   r   c                   D    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
d
 ZdS )
TestLinearz]Solve a linear equation;
    some methods find the exact solution in a finite number of stepsFc           	      .  	 t           j                            d           t           j                            ||          |r&dt           j                            ||          z  z   t           j                            |          	|r%	dt           j                            |          z  z   		fd}t	          j        |t          j        |          ||dd d          }t          t          j        t          |          	d                     d S )N{                 ?c                 *    t          |           z
  S r$   r   r3   s    r    r^   zTestLinear._check.<locals>.func6  s    q!99q= r"   ư>r   rV   rU   rT   rW   r   )
r   randomseedrandnrz   nonlin_solvezerosr   r   r   )
r]   r   NrV   complexrm   r^   solr4   r5   s
           @@r    _checkzTestLinear._check,  s
   
	sIOOAq!! 	-Bryq!,,,,AIOOA 	*Bryq))))A	! 	! 	! 	! 	! 	! !$S'(,$K K KC3KK66677777r"   c                     |                      t          j        d          ddd           |                      t          j        d          ddd           d S Nr   r      )   FT)r   rz   r   r   s    r    r   zTestLinear.test_broyden1=  sT    F'c222BEBBBF'c222BDAAAAAr"   c                     |                      t          j        d          ddd           |                      t          j        d          ddd           d S r   )r   rz   r   r   s    r    r   zTestLinear.test_broyden2B  sT    F(s333RUCCCF(s333RTBBBBBr"   c                     |                      t          j        dd          ddd           |                      t          j        dd          ddd           d S )N2   r   )r   r   r      FT)r   rz   r   r   s    r    r   zTestLinear.test_andersonG  sV    FOb444b"eDDDFOb444b"dCCCCCr"   c                     |                      t          j        dddd           |                      t          j        dddd           d S )Nr   r   F
   )inner_mT)r   rz   KrylovJacobianr   s    r    test_krylovzTestLinear.test_krylovL  sF    F)2q%DDDF)2q$CCCCCr"   c           	         fd}fd}t          j        |t          j        j        d                   |ddd d          }t          j                            |z  d           t          j        |t          j        j        d                   ddd d          }t          j                            |z  d           d S )Nc                 4                         |           z
  S r$   r   r3   s    r    r^   z'TestLinear._check_autojac.<locals>.funcR  s    5588a<r"   c                     S r$   r%   )rL   r4   s    r    r   z&TestLinear._check_autojac.<locals>.jacU  s    Hr"   r   r   r   r   r   )rz   r   r   r   shapetestingassert_allclose)r]   r4   r5   r^   r   r   s    ``   r    _check_autojaczTestLinear._check_autojacQ  s    	  	  	  	  	  	 	 	 	 	 	 !$(<(<c1(,$K K K

""1s7AD"999!$(<(<a(,$K K K

""1s7AD"99999r"   c                     t          ddgddgg          }t          j        ddg          }|                     ||           |                     d|z  d|z             d S Nr
   r   r:   y      ?       @y       @       @)r   r   r2   r   r]   r4   r5   s      r    test_jac_sparsezTestLinear.test_jac_sparse`  si    1v1v&''HaWAq!!!VqL6Q,77777r"   c                     t          j        ddgddgg          }t          j        ddg          }|                     ||           |                     d|z  d|z             d S r   )r   r2   r   r   s      r    test_jac_ndarrayzTestLinear.test_jac_ndarrayf  sk    Hq!fq!f%&&HaWAq!!!VqL6Q,77777r"   N)F)r   r   r   r   r   r   r   r   r   r   r   r   r%   r"   r    r   r   (  s        H H8 8 8 8"B B B
C C C
D D D
D D D
: : :8 8 88 8 8 8 8r"   r   c                   J    e Zd ZdZd ZddZd Zd Zd Zd	 Z	d
 Z
d Zd ZdS )TestJacobianDotSolvezP
    Check that solve/dot methods in Jacobian approximations are consistent
    c                 H    |dz  dz
  t          j        | j        |          z   S )Nr   r
   )r   r   r4   r]   r   s     r    _funczTestJacobianDotSolve._funcr  s#    !tax"&++++r"   Fr   c                    t           j                            d           d}fd}fd} |||          | _        t           j                            |          } |di |}	|	                    ||                     |          | j                   t          d|z            D ]}
 ||          }t          |	d          rtt          j	        |	          }t          |	d          rB|	
                    |          }t           j        
                    ||          } |||d           t          |	d	          rY|	                    |          }t           j        
                    |j                                        |          } |||d
           t          |	d          r7|	                    |          }t          j        ||          } |||d           t          |	d          rN|	                    |          }t          j        |j                                        |          } |||d           t          |	d          rZt          |	d          rJ|	                    |          }|	
                    |	                    |                    } |||d           t          |	d          rZt          |	d	          rJ|	                    |          }|	                    |	                    |                    } |||d            ||          }|	                    ||                     |                     d S )Nr   rD   c                  d    t          j        j        |  }r|dt          j        j        |  z  z   }|S )Nr   )r   r   rand)rl   qr   s     r    r   z-TestJacobianDotSolve._check_dot.<locals>.randz  s6    	"A .29>1---Hr"   c                     t          | |z
                                            }t          |                                          z  z   }||k    rt          | d|d          d S )Nz: err g)absr\   AssertionError)rl   r5   msgr   r   tols        r    assert_closez5TestJacobianDotSolve._check_dot.<locals>.assert_close  sh    AE

  Ac!ffjjll3&&A1uu$%8%81%8%8%8999 ur"   r   	__array__rH   zsolve vs arrayrsolvezrsolve vs arraymatveczdot vs arrayrmatveczrmatvec vs arrayzdot vs solvezrmatvec vs rsolver%   )r   r   r   r4   r   r   r   r   hasattrr2   rH   rG   r  r   conjr	  r   r
  r   )r]   r   r   r  rm   r   r   r  x0r   r   rL   JdGvGv2JvJv2r   s     ``              r    
_check_dotzTestJacobianDotSolve._check_dotu  s"   
	s	 	 	 	 		: 	: 	: 	: 	: a Y^^Agmmmm		"djjnndj111 qs !	) !	)AQAsK(( >Xc]]3(( <1B)//"a00C LS*:;;;3)) =AB)//"$))++q99C LS*;<<<3)) :AB&Q--C LS.9993	** >QB&a00C LS*<===sH%% 6'#w*?*? 6ZZ]]ii

2//Rn555sI&& ;73+A+A ;[[^^kk#**R..11R&9:::QAJJq$**Q--((((C!	) !	)r"   c                     |                      t          j        d           |                      t          j        d           d S NF)r   T)r  rz   r   r   s    r    r   z"TestJacobianDotSolve.test_broyden1  :    +U;;;+T:::::r"   c                     |                      t          j        d           |                      t          j        d           d S r  )r  rz   r   r   s    r    r   z"TestJacobianDotSolve.test_broyden2  s:    ,e<<<,d;;;;;r"   c                     |                      t          j        d           |                      t          j        d           d S r  )r  rz   r   r   s    r    r   z"TestJacobianDotSolve.test_anderson  s8    77766666r"   c                     |                      t          j        d           |                      t          j        d           d S r  )r  rz   DiagBroydenr   s    r    test_diagbroydenz%TestJacobianDotSolve.test_diagbroyden  s:    *E:::*D99999r"   c                     |                      t          j        d           |                      t          j        d           d S r  )r  rz   LinearMixingr   s    r    test_linearmixingz&TestJacobianDotSolve.test_linearmixing  r  r"   c                     |                      t          j        d           |                      t          j        d           d S r  )r  rz   ExcitingMixingr   s    r    test_excitingmixingz(TestJacobianDotSolve.test_excitingmixing  s:    -u===-t<<<<<r"   c                     |                      t          j        dd           |                      t          j        dd           d S )NFgMbP?)r   r  T)r  rz   r   r   s    r    r   z TestJacobianDotSolve.test_krylov  s>    -u$GGG-tFFFFFr"   N)Fr   )r   r   r   r   r   r  r   r   r   r  r  r!  r   r%   r"   r    r   r   m  s         , , ,:) :) :) :)x; ; ;< < <7 7 7: : :; ; ;= = =G G G G Gr"   r   c                   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dS )TestNonlinOldTestsz Test case for a simple constrained entropy maximization problem
    (the machine translation example of Berger et al in
    Computational Linguistics, vol 22, num 1, pp 39--72, 1996.)
    c                    t          j        t          t          j        dd          }t	          t          j        |          dk                t	          t          j        t          |                    dk                d S N   r
   iterr   &.>)rz   r   r!   rZ   r   normr   s     r    r   z TestNonlinOldTests.test_broyden1  `    OAqu2Q777A%&&&AaDD!!D()))))r"   c                    t          j        t          t          j        dd          }t	          t          j        |          dk                t	          t          j        t          |                    dk                d S r&  )rz   r   r!   rZ   r   r+  r   s     r    r   z TestNonlinOldTests.test_broyden2  r,  r"   c                     t          j        t          t          j        ddd          }t	          t          j        |          dk                d S )Nr'  Q?r*   )r)  r   r   Q?)rz   r   r!   rZ   r   r+  r   s     r    r   z TestNonlinOldTests.test_anderson  s?    OAqu2TQ???A%&&&&&r"   c                    t          j        t          t          j        dd          }t	          t          j        |          dk                t	          t          j        t          |                    dk                d S )N<   r   r(  Hz>)rz   r   r!   rZ   r   r+  r   s     r    r  z$TestNonlinOldTests.test_linearmixing  sa    15r===A%&&&AaDD!!D()))))r"   c                    t          j        t          t          j        dd          }t	          t          j        |          dk                t	          t          j        t          |                    dk                d S )Nr   r   r(  h㈵>)rz   r   r!   rZ   r   r+  r   s     r    test_excitingz TestNonlinOldTests.test_exciting  sa    !!QU3???A%&&&AaDD!!D()))))r"   c                    t          j        t          t          j        dd          }t	          t          j        |          dk                t	          t          j        t          |                    dk                d S )N   r
   r(  :0yE>)rz   r   r!   rZ   r   r+  r   s     r    r  z#TestNonlinOldTests.test_diagbroyden  sa    q!%b:::A%&&&AaDD!!D()))))r"   c                     t          t          t          j        ddddid          }t          t	          j        |j                  dk                t          t	          j        |j                  dk                d S )Nr   r'  r   r
   nitrc   rd   r*  r   r!   rZ   r   rz   r+  r   rg   r]   ri   s     r    test_root_broyden1z%TestNonlinOldTests.test_root_broyden1  t    1aeJ#%wlCCE E ECE""T)***CG$$t+,,,,,r"   c                     t          t          t          j        ddddid          }t          t	          j        |j                  dk                t          t	          j        |j                  dk                d S )Nr   r'  r   r
   r;  rd   r*  r=  r>  s     r    test_root_broyden2z%TestNonlinOldTests.test_root_broyden2  r@  r"   c           	          t          t          t          j        dddddd          }t          t	          j        |j                  dk                d S )	Nr   r'  r/  r*   )r   r   r;  rd   r0  )r   r!   rZ   r   rz   r+  r   r>  s     r    test_root_andersonz%TestNonlinOldTests.test_root_anderson  sb    1aeJ#%59+B+BD DE E E 	CE""T)*****r"   c                     t          t          t          j        ddddid          }t          t	          j        |j                  dk                t          t	          j        |j                  dk                d S )Nr   r2  r   r   r;  rd   r3  r=  r>  s     r    test_root_linearmixingz)TestNonlinOldTests.test_root_linearmixing  sx    1aeN#%,3S>; ;< < < 	CE""T)***CG$$t+,,,,,r"   c                     t          t          t          j        ddddid          }t          t	          j        |j                  dk                t          t	          j        |j                  dk                d S )Nr   r   r   r   r;  rd   r5  r=  r>  s     r    test_root_excitingmixingz+TestNonlinOldTests.test_root_excitingmixing
  sy    1ae$4#%,3S>; ;< < < 	CE""T)***CG$$t+,,,,,r"   c                     t          t          t          j        ddddid          }t          t	          j        |j                  dk                t          t	          j        |j                  dk                d S )Nr   r8  r   r
   r;  rd   r9  r=  r>  s     r    test_root_diagbroydenz(TestNonlinOldTests.test_root_diagbroyden  sx    1aeM#%,3Q<9 9: : : 	CE""T)***CG$$t+,,,,,r"   N)r   r   r   r   r   r   r   r  r6  r  r?  rB  rD  rF  rH  rJ  r%   r"   r    r$  r$    s         
* * *
* * *
' ' '* * *
* * *
* * *
- - -- - -+ + +- - -- - -- - - - -r"   r$  ),r   numpy.testingr   r   scipy.optimizer   rz   r   scipy.sparser   numpyr   r   numpy.linalgr	   r   r   test_minpackr   r   r   r   r   r   r   r{   rX   rr   r!   rZ   rq   rY   rf   r'   r-   r6   r9   rA   rM   rO   r   r   r   r$  r%   r"   r    <module>rQ     s    " ! ! ! ! !  2 2 2 2 2 2 2 2 " " " " " "                    * * * * * * ,!.#2)+ +  foF4HJ J	   	    
		 & 3"("79 9    "!!      
 H H H
 R	'-':)/)>&,&8: :	  "
	 LLL	 > > > 
"("7 & 3%13 3 "j # # # "("7 & 3%13 3  UD UD UD UD UD UD UD UDpIB IB IB IB IB IB IB IBXB8 B8 B8 B8 B8 B8 B8 B8J^G ^G ^G ^G ^G ^G ^G ^GBH- H- H- H- H- H- H- H- H- H-r"   