
    YhO                        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 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minres   )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       r/var/www/tools.fuzzalab.pt/emblema-extractor/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*   0       Hr%   )r   r   r            )r   r   c                     | S r'   r(   r)   s    r#   F2_luckyr0   ;   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   r2   r   )r   r   r2   )r   r         @)r   arrayr   Abs      r#   F3r9   E   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   r7   s     r#   	F4_powellr<   Q   sT    AadF1Q4K!ORVQqTE]]RVQqTE]]:a!A#gFGGr%   r2   )r   r   r   r   >   cgsgmrestfqmrr   bicgstabc                 L    t          | dt          j        g d                    S )Nr,   )r   r   r   r   )r   r   r5   r)   s    r#   F5rC   a   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   r5   sinr;   linalgsolve)r   x1x2J0vs        r#   F6rO   p   s    FB	FD>z*, 
- 
-B
26b!eai(3.&bfRjj1,--/ 	0 	0AIOOB""""r%   g      gffffff?c                   v   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 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?   rA   r>   r   r@      r   )methodline_searchf_tolmaxiterverbose)rW   rX   rY   )SOLVERSJAC_KSP_BADxinr   r   absolutemax)selfr"   funcrW   rU   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   rS   rT   r   rU   )ftolrX   dispjac_optionsrU   options)rc   rX   rd   )ROOT_JAC_KSP_BADr   r\   r   r   r]   funr^   )r_   r"   rU   rW   
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*   r0   r9   r<   rC   rO   rZ   values	KNOWN_BAD	MUST_WORKrp   ra   )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%   rU   )lgmresr?   rA   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   rT   r   )rU   rW   rX   rY   tol_norm)ry   nonlinnewton_krylovr$   r\   r   )r_   rU   rz   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*   r0   r9   r<   rC   rO   rZ   rs   rt   rp   rl   )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\   rX   )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c                 ^   t          j        t          d          5  t          j        t
          t
          j        dd           ddd           n# 1 swxY w Y   t          j        t
          t
          j        ddd 	           d
 }t          j        t
          t
          j        |           dS )a  
        Test for ENH #21986, for behavior of `nonlin.newton_krylov`
        Test the following scenarios:
        1. Raise warning for invalid inner param
        2. No warning for valid inner param
        3. No warning for user-provided callable method
        z'Please check inner method documentationmatchr   h㈵>)rU   
inner_atolNd   c                     dS )N.r(   )_s    r#   <lambda>z>TestNonlin.test_warnings_invalid_inner_param.<locals>.<lambda>   s     r%   )rU   inner_maxiterinner_callbackc                     t          | |fi |S )z2A dummy user-provided callable method for testing.r   )oprhskwargss      r#   'user_provided_callable_method_enh_21986z]TestNonlin.test_warnings_invalid_inner_param.<locals>.user_provided_callable_method_enh_21986   s     "c,,V,,,r%   )rU   )r   warnsUserWarningr|   r}   r$   r\   )r_   r   s     r#   !test_warnings_invalid_inner_paramz,TestNonlin.test_warnings_invalid_inner_param   s    \+ IK K K 	M 	M AE(tLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Qhc-;^	= 	= 	= 	=	- 	- 	-
 	Q$K	M 	M 	M 	M 	M 	Ms   (AAAc                     t          j        t          d          5  t          j        t
          t
          j        dd           d d d            d S # 1 swxY w Y   d S )NzUnknown parameterr   r   r   )rU   invalid_param)r   r   
ValueErrorr|   r}   r$   r\   r_   s    r#   test_non_inner_prefixz TestNonlin.test_non_inner_prefix   s    ]:!4   	P 	P  AE($OOOO		P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   (AAAN)r   )__name__
__module____qualname____doc__ra   rl   r   markxfailrp   filterwarningsru   parametrizer~   r   r   r   r   r(   r%   r#   rQ   rQ      sV        1 1 1 14 4 4 4" [   [ <==1 1 >=1 [ <==[X (; (; (; < <% %< < >=% [ <==* * >=*D D DM M M8P P P P Pr%   rQ   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)      ?rD   r4         @      @)rD   r4   r   r   r   )r4   r   r   r   rD   )r   r   r   rD   r4   )      "@r   r   r   r4   )r3   r   r   r   r4   )r   r         @r   r   )r   rD   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   allcloserJ   )r_   jac_clsnpointsro   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|   BroydenFirstr   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_update7  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_andersonE  s)    
 	6?aAqAAAAAr%   N)r   )r   r   r   r   r   r5   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	   r6   s    r#   r`   zTestLinear._check.<locals>.func[  s    q!99q= r%   ư>r   rX   rW   rV   rY   r   )
r   randomseedrandnr|   nonlin_solvezerosr   r   r	   )
r_   r   NrX   complexro   r`   solr7   r8   s
           @@r#   _checkzTestLinear._checkQ  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_broyden1b  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_broyden2g  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_andersonl  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_krylovq  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   r6   s    r#   r`   z'TestLinear._check_autojac.<locals>.funcw  s    5588a<r%   c                     S r'   r(   )rN   r7   s    r#   r   z&TestLinear._check_autojac.<locals>.jacz  s    Hr%   r   r   r   r   r   )r|   r   r   r   shapetestingassert_allclose)r_   r7   r8   r`   r   r   s    ``   r#   _check_autojaczTestLinear._check_autojacv  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   r5   r	  r_   r7   r8   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   r5   r	  r  s      r#   test_jac_ndarrayzTestLinear.test_jac_ndarray  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   M  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   r7   s      r#   _funczTestJacobianDotSolve._func  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   rF   c                  @     j         |  }r|d j         |  z  z   }|S )Nr   )rand)rn   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)rn   r8   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%   )r7   r   	__array__rJ   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   hasattrr5   rJ   rI   r!  r   conjr"  r	   r#  r   )r_   r   r   r  ro   r   r  r  r7   x0r   r   rN   JdGvGv2JvJv2r   r  s     ``               @r#   
_check_dotzTestJacobianDotSolve._check_dot  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  r0  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   r5  r8  r;  r   r   thread_unsafer  r(   r%   r#   r  r    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 rA  )r|   r   r$   r\   r   rF  rG  s     r#   r   z TestNonlinOldTests.test_broyden2  rH  r%   c                     t          j        t          t          j        ddd          }t	          t          j        |          dk                d S )NrB  Q?r-   )rD  r   r   Q?)r|   r   r$   r\   r   rF  rG  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   rC  Hz>)r|   r   r$   r\   r   rF  rG  s     r#   r8  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   rC  r   )r|   r   r$   r\   r   rF  rG  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   rC  :0yE>)r|   r   r$   r\   r   rF  rG  s     r#   r5  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   rB  r   r   nitre   rf   rE  r   r$   r\   r   r|   rF  r   ri   r_   rk   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   rB  r   r   rV  rf   rE  rX  rY  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   rB  rK  r-   )r   r   rV  rf   rL  )r   r$   r\   r   r|   rF  r   rY  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   rN  r   r   rV  rf   rO  rX  rY  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   rV  rf   r   rX  rY  s     r#   test_root_excitingmixingz+TestNonlinOldTests.test_root_excitingmixing0  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   rS  r   r   rV  rf   rT  rX  rY  s     r#   test_root_diagbroydenz(TestNonlinOldTests.test_root_diagbroyden7  sx    1aeM#%,3Q<9 9: : : 	CE""T)***CG$$t+,,,,,r%   N)r   r   r   r   r   r   r   r8  rQ  r5  rZ  r]  r_  ra  rc  re  r(   r%   r#   r?  r?    s         
* * *
* * *
' ' '* * *
* * *
* * *
- - -- - -+ + +- - -- - -- - - - -r%   r?  )0r   numpy.testingr   r   	functoolsr   scipy.optimizer   r|   r   scipy.sparser   numpyr   r	   numpy.linalgr
   r   r   scipy.sparse.linalgr   test_minpackr   r   r   r   r   r   r   r}   rZ   rt   r$   r\   rs   r[   rh   r*   r0   r9   r<   rC   rO   rQ   r   r   r  r?  r(   r%   r#   <module>rn     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  xP xP xP xP xP xP xP xPv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%   