
    ^MhH                        d Z ddlmZ ddlZddlm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)partial)_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/html/test/jupyter/venv/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.   :   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   r0   r   )r   r   r0   )r   r         @)r   arrayr   Abs      r!   F3r7   D   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   r5   s     r!   	F4_powellr:   P   sT    AadF1Q4K!ORVQqTE]]RVQqTE]]:a!A#gFGGr#   r0   )r   r   r   minres>   cgsgmrestfqmrr<   bicgstabc                 L    t          | dt          j        g d                    S )Nr*   )r   r   r   r   )r   r   r3   r'   s    r!   F5rB   `   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   r3   sinr9   linalgsolve)r   x1x2J0vs        r!   F6rN   o   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)rV   rW   rX   )SOLVERSJAC_KSP_BADxinr   r   absolutemax)selfr    funcrV   rT   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   rR   rS   r   rT   )ftolrW   dispjac_optionsrT   options)rb   rW   rc   )ROOT_JAC_KSP_BADr   r[   r   r   r\   funr]   )r^   r    rT   rV   
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.   r7   r:   rB   rN   rY   values	KNOWN_BAD	MUST_WORKro   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#   rT   )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   rS   r   )rT   rV   rW   rX   tol_norm)rx   nonlinnewton_krylovr"   r[   r   )r^   rT   ry   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.   r7   r:   rB   rN   rY   rr   rs   ro   rk   )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   )r[   rW   )pytestraisesscipyoptimizeNoConvergencer{   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`   rk   r   markxfailro   filterwarningsrt   parametrizer}   r   r   r&   r#   r!   rP   rP      s2        1 1 1 14 4 4 4" [   [ <==1 1 >=1 [ <==[X (; (; (; < <% %< < >=% [ <==* * >=*D D D D Dr#   rP   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)      ?rC   r2         @      @)rC   r2   r   r   r   )r2   r   r   r   rC   )r   r   r   rC   r2   )      "@r   r   r   r2   )r1   r   r   r   r2   )r   r         @r   r   )r   rC   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   allcloserI   )r^   jac_clsnpointsrn   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   r{   BroydenFirstr^   s    r!   test_broyden1zTestSecant.test_broyden1   s    6./////r#   c                 D    |                      t          j                   d S r%   )r   r{   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)r{   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   )r{   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   r{   Andersonr   s    r!   test_andersonzTestSecant.test_anderson!  s)    
 	6?aAqAAAAAr#   N)r   )r   r   r   r   r   r3   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	   r4   s    r!   r_   zTestLinear._check.<locals>.func7  s    q!99q= r#   ư>r   rW   rV   rU   rX   r   )
r   randomseedrandnr{   nonlin_solvezerosr   r   r	   )
r^   r   NrW   complexrn   r_   solr5   r6   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   r{   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   r{   r   r   s    r!   r   zTestLinear.test_broyden2C  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   r{   r   r   s    r!   r   zTestLinear.test_andersonH  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   r{   KrylovJacobianr   s    r!   test_krylovzTestLinear.test_krylovM  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   r4   s    r!   r_   z'TestLinear._check_autojac.<locals>.funcS  s    5588a<r#   c                     S r%   r&   )rM   r5   s    r!   r   z&TestLinear._check_autojac.<locals>.jacV  s    Hr#   r   r   r   r   r   )r{   r   r   r   shapetestingassert_allclose)r^   r5   r6   r_   r   r   s    ``   r!   _check_autojaczTestLinear._check_autojacR  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   r3   r   r^   r5   r6   s      r!   test_jac_sparsezTestLinear.test_jac_sparsea  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   r3   r   r   s      r!   test_jac_ndarrayzTestLinear.test_jac_ndarrayg  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                   p    e Zd ZdZddZddZd Zd Zd	 Zd
 Z	d Z
d Zej        j        d             ZdS )TestJacobianDotSolvezP
    Check that solve/dot methods in Jacobian approximations are consistent
    Nc                 >    |dz  dz
  t          j        ||          z   S )Nr   r   )r   r	   )r^   r   r5   s      r!   _funczTestJacobianDotSolve._funcs  s    !tax"&A,,&&r#   Fr   c                    t           j                            d          d}fd}fd} |||          }                    |          }	 |di |}
|
                    |	|                     |	|          t          | 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   rE   c                  @     j         |  }r|d j         |  z  z   }|S )Nr   )rand)rm   qr   rngs     r!   r   z-TestJacobianDotSolve._check_dot.<locals>.rand{  s3    !A (838Q<'Hr#   c                     t          | |z
                                            }t          |                                          z  z   }||k    rt          | d|d          d S )Nz: err g)absr]   AssertionError)rm   r6   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#   )r5   r   	__array__rI   zsolve vs arrayrsolvezrsolve vs arraymatveczdot vs arrayrmatveczrmatvec vs arrayzdot vs solvezrmatvec vs rsolver&   )r   r   RandomStater   r   r   r   r   hasattrr3   rI   rH   r	  r   conjr
  r	   r  r   )r^   r   r   r  rn   r   r   r  r5   x0r   r   rM   JdGvGv2JvJv2r   r   s     ``               @r!   
_check_dotzTestJacobianDotSolve._check_dotv  s8   i##C((	 	 	 	 	 		: 	: 	: 	: 	: DAJJ XXa[[gmmmm		"djjQ''q)A)A)ABBB 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  r{   r   r   s    r!   r   z"TestJacobianDotSolve.test_broyden1  :    +U;;;+T:::::r#   c                     |                      t          j        d           |                      t          j        d           d S r  )r  r{   r   r   s    r!   r   z"TestJacobianDotSolve.test_broyden2  s:    ,e<<<,d;;;;;r#   c                     |                      t          j        d           |                      t          j        d           d S r  )r  r{   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  r{   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  r{   LinearMixingr   s    r!   test_linearmixingz&TestJacobianDotSolve.test_linearmixing  r  r#   c                     |                      t          j        d           |                      t          j        d           d S r  )r  r{   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  r{   r   r   s    r!   r   z TestJacobianDotSolve.test_krylov  s>    -u$GGG-tFFFFFr#   r%   )Fr   )r   r   r   r   r   r  r   r   r   r  r   r#  r   r   thread_unsafer   r&   r#   r!   r   r   n  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   &.>)r{   r   r"   r[   r   normr^   r   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)  )r{   r   r"   r[   r   r.  r/  s     r!   r   z TestNonlinOldTests.test_broyden2  r0  r#   c                     t          j        t          t          j        ddd          }t	          t          j        |          dk                d S )Nr*  Q?r+   )r,  r   r   Q?)r{   r   r"   r[   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>)r{   r   r"   r[   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㈵>)r{   r   r"   r[   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>)r{   r   r"   r[   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   nitrd   re   r-  r   r"   r[   r   r{   r.  r   rh   r^   rj   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?  re   r-  rA  rB  s     r!   test_root_broyden2z%TestNonlinOldTests.test_root_broyden2  rD  r#   c           	          t          t          t          j        dddddd          }t          t	          j        |j                  dk                d S )	Nr   r*  r3  r+   )r   r   r?  re   r4  )r   r"   r[   r   r{   r.  r   rB  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   r6  r   r   r?  re   r7  rA  rB  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?  re   r9  rA  rB  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   r<  r   r   r?  re   r=  rA  rB  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   r:  r  rC  rF  rH  rJ  rL  rN  r&   r#   r!   r'  r'    s         
* * *
* * *
' ' '* * *
* * *
* * *
- - -- - -+ + +- - -- - -- - - - -r#   r'  ).r   numpy.testingr   r   	functoolsr   scipy.optimizer   r{   r   scipy.sparser   numpyr   r	   numpy.linalgr
   r   r   test_minpackr   r   r   r   r   r   r   r|   rY   rs   r"   r[   rr   rZ   rg   r(   r.   r7   r:   rB   rN   rP   r   r   r   r'  r&   r#   r!   <module>rV     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DH- H- H- H- H- H- H- H- H- H-r#   