
    -iiW/                    0
   d Z ddlZddlZddlZddlZddlZddlZddlZddlZ	ddl
mZmZmZmZmZ ddlZddlmZ ddlZddlmZ ddlmZ ddlmZmZ ddlmZmZmZ dd	lmZ dd
lm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= egZ>d Z? G d d          Z@ G d de@          ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd  ZId! ZJd" ZK G d# d$eA          ZL G d% d&eA          ZM G d' d(eA          ZN G d) d*eA          ZO G d+ d,e@          ZPejQ        R                    d-g d.          d/             ZS G d0 d1          ZT G d2 d3          ZU G d4 d5          ZVd6 ZW G d7 d8          ZXd9 ZYd: ZZd; Z[d< Z\d= Z] G d> d?          Z^d@ Z_dA Z`dB ZadCdDgZbdEdFgZcdGZddH Ze G dI dJ          ZfdK ZgdL ZhdM ZidN Zj G dO dP          ZkejQ        l                    dQ          dR             Zm G dS dT          ZndU Zo G dV dW          Zpejq        dX             ZrdY ZsdZ Ztd[ Zud\ Zvd] Zw ew            ZxejQ        y                    d^          ejQ        z                     ej{        d_`          da         db         dc         ddk    d^e          ejQ        R                    d-exdf                   ejQ        R                    dgexdg                   ejQ        R                    dhexdi                   ejQ        R                    djexdj                   ejQ        R                    dkexdl                   dm                                                                                     Z|ejQ        R                    d-exdf                   dn             Z}do Z~dp Zdq ZejQ        R                    d-dr          ds             Zdt Z G du dv          Zdw Zdx Zdy ZejQ        R                    d-dzd{g          ejQ        R                    d|e2e3e4e5e6e7g          d}                         ZejQ        R                    d~ddFg          ejQ        R                    d-g d           G d d                                  Zej        dk     r	ddlmZ eZnddlZej        rej        ZdedefdZdedefdZdedefdZdeddfdZejQ                            ej        dk     de           G d d                      Zd ZdS )zx
Unit tests for optimization routines from optimize.py

Authors:
   Ed Schofield, Nov 2005
   Andrew Straw, April 2008

    N)assert_allcloseassert_equalassert_almost_equalassert_no_warningsassert_array_less)raises)assert_deallocated)optimize)BoundsNonlinearConstraint)MINIMIZE_METHODSMINIMIZE_METHODS_NEW_CBMINIMIZE_SCALAR_METHODS)LINPROG_METHODS)ROOT_METHODS)ROOT_SCALAR_METHODS)QUADRATIC_ASSIGNMENT_METHODS)ScalarFunction
FD_METHODS)
MemoizeJacshow_optionsOptimizeResult_minimize_bfgs)rosen	rosen_der
rosen_hess)
coo_matrix
csc_matrix
csr_matrix	coo_array	csr_array	csc_array)xp_assert_equal)make_xp_test_case)
MapWrapperc            
      v   d } d }t          j        dg          }t          j        | ||          }t	          |d           t          j        | ||dd          }t	          |d           t          j        | ||d	          }t	          |d           t          j        | ||ddd
          }t	          |d           t          t          j        | ||d	          dz
            }|dk    sJ t          t          j        | ||ddd
          dz
            }|dk    sJ d }d }t          j        ddd          }t          j        |||dd          }t	          |d           t          t          t          j        |||dd           t          j        t          t          t          dd          }|dk     sJ d S )Nc                 8    ddt          j        |            z   z  S N   npexpxs    h/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_optimize.pyexpitztest_check_grad.<locals>.expit7   s    Ar

N##    c                 d    t          j        |            dt          j        |            z   dz  z  S Nr)      r*   r-   s    r/   	der_expitz"test_check_grad.<locals>.der_expit:   s*    vqbzzQ^a///r1         ?r   random  )	directionseedư>)epsilon)r<   r9   rng皙?Hz>c                 T    | t          j        |           z                                  S N)r+   sinsumr-   s    r/   x_sinxztest_check_grad.<locals>.x_sinxS   s     "&))  """r1   c                 Z    t          j        |           | t          j        |           z  z   S rA   r+   rB   cosr-   s    r/   
der_x_sinxz#test_check_grad.<locals>.der_x_sinxV   s!    vayy1RVAYY;&&r1   r4   皙?)r9   r=   random_projectionallgƠ>)r+   arrayr
   
check_gradr   absarangeassert_raises
ValueErrorhimmelblau_gradhimmelblau_hesshimmelblau_x0)r0   r5   x0rrD   rH   s         r/   test_check_gradrW   3   s%   $ $ $0 0 0 
3%BE9b11A1E9b&.T	; 	; 	;A1E9b$???A1E9b$&.D	: 	: 	:A1 	Hy"dCCCaGHHAt8888Hy"d*2> > >@AB 	C 	CAt8888# # #' ' ' 
1a		BFJ&.D	: 	: 	:A1*h1*b/T; ; ; ;
 	O_m&+	7 	7 	7At888888r1   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )CheckOptimizez Base 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        g dg dg dg dg dg          | _        t          j        g d          | _        t          j        dt           j                  | _        t          j        g d          | _        d| _        t          j
                    | _        t          j
                    | _        t          j
                    | _        d S )	Nr)   r)   r)   )r)   r)   r   )r)   r   r)   )r)   r   r   )      ?333333?      ?   )        g\g)3?  )r+   rL   FKzerosfloat64startparamssolutionmaxiter	threadinglocal	funccalls	gradcallstraceselfs    r/   setup_methodzCheckOptimize.setup_methodo   s    999$99$99$99$99	& ' '
 ...))8Arz22!@!@!@AA"**"**_&&


r1   c                 j   t          | j        d          sd| j        _        t          | j        d          sd| j        _        | j        xj        dz  c_        | j        j        dk    rt	          d          t          j        | j        |          }t          j        t          t          j
        |                              }|t          j        | j        |          z
  }t          | j        d          sg | j        _        | j        j                            t          j        |                     |S )Ncr   r)   ip  z+too many iterations in optimization routinet)hasattrrk   rr   rl   RuntimeErrorr+   dotrb   logrC   r,   rc   rm   rs   appendcopy)ro   r.   log_pdotlogZfs        r/   funczCheckOptimize.func}   s   t~s++ 	! DNt~s++ 	! DNA>d""LMMM6$&!$$vc"&**++,,26$&!$$$tz3'' 	DJL
BGAJJ'''r1   c                    t          | j        d          sd| j        _        | j        xj        dz  c_        t          j        | j        |          }t          j        t          t          j        |                              }t          j        ||z
            }t          j        | j        	                                |          | j
        z
  S )Nrr   r   r)   )rt   rl   rr   r+   rv   rb   rw   rC   r,   	transposerc   ro   r.   rz   r{   ps        r/   gradzCheckOptimize.grad   s    t~s++ 	! DNA6$&!$$vc"&**++,,F8d?##vdf&&((!,,tv55r1   c                    t          j        | j        |          }t          j        t	          t          j        |                              }t          j        ||z
            }t          j        | j        j        t          j        t          j        |          | j        t          j        | j        j        |          z
                      S rA   )r+   rv   rb   rw   rC   r,   Tdiagr   s        r/   hesszCheckOptimize.hess   s    6$&!$$vc"&**++,,F8d?##vdfhfRWQZZ"&12E2E)EFFH H 	Hr1   c                 R    t          j        |                     |          |          S rA   )r+   rv   r   ro   r.   r   s      r/   hesspzCheckOptimize.hessp   s    vdiillA&&&r1   N)	__name__
__module____qualname____doc__rp   r}   r   r   r    r1   r/   rY   rY   i   sl         
' ' '  $6 6 6H H H' ' ' ' 'r1   rY   c                   x   e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d          d             Zd	 Zd
 Zd Ze	j
                            ddgddgddgddgg          d             Zd Ze	j
                            d          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 )$CheckOptimizeParameterizedc           
         | j         re| j        | j        dd}t          j        | j        | j        dd| j        |          }|d         |d         |d         |d	         |d
         f\  }}}}}n=t          j        | j        | j        | j        d| j        d| j        d          }|\  }}}}}t          |                     |          |                     | j
                  d           | j        j        dk    sJ | j        j                    | j        j        dk    sJ | j        j                    t          | j        j        dd         g dg dgdd           d S )NFrh   disp
return_allr   CG)argsmethodjacoptionsr.   funnfevnjevstatusT)rh   full_outputr   retallr;   atol	      r4      )r         r^   )r   g;ӱ.g)`$|;?+=r?   r   rtol)use_wrapperrh   r   r
   minimizer}   rf   r   fmin_cgr   rg   rk   rr   rl   rm   rs   )	ro   optsresparamsfopt
func_calls
grad_callswarnflagretvals	            r/   test_cgz"CheckOptimizeParameterized.test_cg   s    	F#|TY"') )D#DIt/?b+/TY,02 2 2C C#e*c&k3v;HM ;FD*j(( %di1A&*iT\26TY-24 4 4F @F<VT:z8		&))499T]+C+C!	# 	# 	# 	#
 ~1$$$dn&6$$$~1$$$dn&6$$$ 	
QqS)'===?"	/ 	/ 	/ 	/ 	/ 	/r1   c                     d }t          j        ddd          D ];}t          j        ||gd          }|j        sJ t          |j        dgd	           <d S )
Nc                 H    ddt          j        d| dz
  z            z
  dz  z  S )N      @r)         r^   r4   r*   )rV   s    r/   r|   z8CheckOptimizeParameterized.test_cg_cornercase.<locals>.f   s)    !bfT1s7^444q888r1   g      r_   G   r   r   r^   h㈵>r   )r+   linspacer
   r   successr   r.   )ro   r|   rU   sols       r/   test_cg_cornercasez-CheckOptimizeParameterized.test_cg_cornercase   s}    	9 	9 	9
 +eQ++ 	5 	5B#AtD999C;CEC5t44444	5 	5r1   c           
         | j         ru| j        | j        dd}t          j        | j        | j        | j        dd|          }|d         |d         |d         |d	         |d
         |d         |d         f\  }}}}}}}	n?t          j        | j        | j        | j        d| j        d| j        d          }
|
\  }}}}}}}	t          |                     |          |                     | j
                  d           | j        j        dk    sJ | j        j                    | j        j        dk    sJ | j        j                    t          | j        j        dd         g dg dgdd           d S )NFr   BFGSr   r   r   r   r   r.   r   r   hess_invr   r   r   Tr   rh   r   r   r   r;   r   
         )r   g&/LgB__E7?)r   g$g
|3?r   r?   r   )r   rh   r   r
   r   r}   rf   r   	fmin_bfgsr   rg   rk   rr   rl   rm   rs   )ro   r   r   r   r   goptHoptr   r   r   r   s              r/   	test_bfgsz$CheckOptimizeParameterized.test_bfgs   s    	8#|TY"') )D#DIt/?(,	&r,02 2 2C
 Hc%j#e*c*oKVc(mJ=FFD$j*hh '	43CTY-/48ty/46 6 6F
 28/VT4X		&))499T]+C+C!	# 	# 	# 	#
 ~2%%%t~'7%%%~1$$$dn&6$$$ 	
QqS)======?"	/ 	/ 	/ 	/ 	/ 	/r1   c                    t          j        t          d          5  t          j        g d          }| j        t          j        d           d}t          j        t          j	        |dd|           d d d            d S # 1 swxY w Y   d S )	N+'hess_inv0' matrix isn't positive definite.match?ffffff?皙?ffffff?333333?   r   	hess_inv0r   r   rU   r   r   r   )
pytestr   rQ   r+   rL   r   eyer
   r   r   )ro   rU   r   s      r/   test_bfgs_hess_inv0_negz2CheckOptimizeParameterized.test_bfgs_hess_inv0_neg   s     ]: .0 1 1 1 	, 	,33344B IRVAYYJ??DhnF&*, , , ,		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   AB  BBc                 &   t          j        t          d          5  t          j        g d          }t          j        d          }d|d<   | j        |d}t          j        t          j	        |dd	|
           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   r   r   r   r   )
r   r   rQ   r+   rL   r   r   r
   r   r   )ro   rU   r   r   s       r/   test_bfgs_hess_inv0_semiposz6CheckOptimizeParameterized.test_bfgs_hess_inv0_semipos   s     ]: .0 1 1 1 	, 	,33344Bq		IIdO II>>DhnF&*, , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   ABB
B
c                 2   t           j        }t          j        g d          }| j        dt          j        d          z  d}t          j        ||dd|          }t          j        ||ddd| j        i          }t          |j        |j        d	
           d S )Nr   {Gz?r   r   r   r   r   r   r;   r   )	r
   r   r+   rL   r   r   r   r   r   )ro   r   rU   r   r   res_trues         r/   test_bfgs_hess_inv0_sanityz5CheckOptimizeParameterized.test_bfgs_hess_inv0_sanity  s    nX///00	rvayy0@AA6(,. . .$SRR.4di-@B B BD999999r1   ignore::UserWarningc           	      V   d fd}dg}t          j        d          5  | j        r*d| j        i}t	          j        ||dd|	          d
         }nt	          j        ||| j                  }t          j         |                    rJ 	 d d d            d S # 1 swxY w Y   d S )Nc                 $    t           j        |  z   S rA   )r+   er-   s    r/   r}   z;CheckOptimizeParameterized.test_bfgs_infinite.<locals>.func  s    DaRL= r1   c                      |            S rA   r   )r.   r}   s    r/   fprimez=CheckOptimizeParameterized.test_bfgs_infinite.<locals>.fprime  s    DGG8Or1   r   ignore)overr   r   r   r   r.   r   )r+   errstater   r   r
   r   r   isfinite)ro   r   rU   r   r.   r}   s        @r/   test_bfgs_infinitez-CheckOptimizeParameterized.test_bfgs_infinite  s.   	! 	! 	!	 	 	 	 	S[h''' 	, 	, I	*%dBF6+-t= = ==@B &tRdiHHH{4477++++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   A.BB"%B"c                     g d}t          j        t           j        |dddi          }t          j        t           j        |dddi          }|j        |j        k    sJ d S )Nr   bfgsxrtolMbP?r   r   gtolr
   r   r   nit)ro   rU   r   refs       r/   test_bfgs_xrtolz*CheckOptimizeParameterized.test_bfgs_xrtol#  sz    &&& "6GT?L L L "6FD>K K Kw#'!!!!!!r1   c                     g d}t          j        t           j        |dddi          }t          j        t           j        |dddi          }|j        |j        k    sJ d S )Ng$@g333334@g%@r   333333r   c1:0yE>r   r>   )r
   r   r   r   )ro   rU   res_c1_small
res_c1_bigs       r/   test_bfgs_c1z'CheckOptimizeParameterized.test_bfgs_c1,  s     +**()+FT4LR R R&x~')&4,P P P
  :?222222r1   c                     g d}t          j        t           j        |dddi          }t          j        t           j        |dddi          }|j        |j        k    sJ d S )Nr   r   c2?r   r   r   )ro   rU   res_defaultres_mods       r/   test_bfgs_c2z'CheckOptimizeParameterized.test_bfgs_c27  s|     '&&'(*6D":O O O#HN$&vd|M M M,,,,,,r1   r   r  r^   r4   皙r>   rI   c           	          t          j        t          d          5  g d}t          j        t          j        |d||d           d d d            d S # 1 swxY w Y   d S )Nz'c1' and 'c2'r   r   cg)r   r  r   )r   r   rQ   r
   r   r   )ro   r   r  rU   s       r/   test_invalid_c1_c2z-CheckOptimizeParameterized.test_invalid_c1_c2A  s     ]:_=== 	< 	<...Bhnb-/r&:&:< < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   *AAAc           	         | j         rg| j        | j        dd}t          j        | j        | j        dd|          }|d         |d         |d         |d	         |d
         |d         f\  }}}}}}n8t          j        | j        | j        d| j        d| j        d          }	|	\  }}}}}}t          |                     |          |                     | j	                  d           t          |dd          | j	        dd          d           | j
        j        dk    sJ | j
        j                    | j        j        dk    sJ | j        j                    d S )NFr   r   Powellr   r   r   r.   r   direcr   r   r   Tr   r;   r   r)   h㈵>   r   )r   rh   r   r
   r   r}   rf   fmin_powellr   rg   rk   rr   rl   
ro   r   r   r   r   r  numiterr   r   r   s
             r/   test_powellz&CheckOptimizeParameterized.test_powellJ  s    	J#|TY"') )D#DIt/?b+3TC C CC Hc%j#g,E
KXB0>FD%*hh )$)T5E/14<6:168 8 8F DJ@VT5':x		&))499T]+C+C!	# 	# 	# 	# 	qrr
DM!""$5DAAAA ~8+++T^-=+++~1$$$dn&6$$$$$r1   zeThis part of test_powell fails on some platforms, but the solution returned by powell is still valid.reasonc           	         | j         rg| j        | j        dd}t          j        | j        | j        dd|          }|d         |d         |d         |d	         |d
         |d         f\  }}}}}}n8t          j        | j        | j        d| j        d| j        d          }	|	\  }}}}}}t          | j	        dd         g dg dg dg dg dgdd           d S )NFr   r   r  r  r.   r   r  r   r   r   Tr   "   '   )病~W?f"Bܿg%?)r  r  g:&?)gSϼW?gf"Bg{år?)r  r  {år?)gB?r  r  r   r?   r   )
r   rh   r   r
   r   r}   rf   r  r   rm   r  s
             r/   test_powell_gh14014z.CheckOptimizeParameterized.test_powell_gh14014l  sD     	J#|TY"') )D#DIt/?b+3TC C CC Hc%j#g,E
KXB0>FD%*hh )$)T5E/14<6:168 8 8F DJ@VT5':x 	
2b5)>>>>>>>>>>>>>>>	@
 #	/ 	/ 	/ 	/ 	/ 	/r1   c                    d | j         D             }| j        r| j        | j        dd}t	          j        | j        | j         d|d|          }|d         |d         }}|| j        j        k    sJ t          |                     |          |                     | j
                  d	d
           | j        j        dk    sJ | j        j        dk    sJ d S d S )Nc                 @    g | ]}t           j         t           j        fS r   )r+   pi).0_s     r/   
<listcomp>zBCheckOptimizeParameterized.test_powell_bounded.<locals>.<listcomp>  s"    <<<aBE625/<<<r1   Fr   r   r  )r   boundsr   r   r.   r   r;   r   r      r   )rf   r   rh   r   r
   r   r}   rk   rr   r   rg   rl   )ro   r&  r   r   r   r   s         r/   test_powell_boundedz.CheckOptimizeParameterized.test_powell_bounded  s    =<4+;<<< 	)#|TY"') )D#DIt/?b+1+3TC C CC #&c(CKJF!11111DIIf--tyy/G/G!%D2 2 2 2 >#x////>#q(((('	) 	)& )(r1   c           	         | j         r_| j        | j        dd}t          j        | j        | j        dd|          }|d         |d         |d         |d	         |d
         f\  }}}}}n7t          j        | j        | j        d| j        d| j        d          }|\  }}}}}t          |                     |          |                     | j	                  d           | j
        j        dk    sJ | j
        j                    | j        j        dk    sJ | j        j                    t          | j        j        dd         g dg dgdd           d S )NFr   r   Nelder-meadr  r.   r   r   r   r   Tr   r;   r      r   L   N   )g	dװ?g]fgt䝁?)gә ?g#=^goT?r   r?   r   )r   rh   r   r
   r   r}   rf   fminr   rg   rk   rr   rl   rm   rs   )	ro   r   r   r   r   r  r   r   r   s	            r/   test_neldermeadz*CheckOptimizeParameterized.test_neldermead  s    	C#|TY"') )D#DIt/?b+8$H H HC Hc%j#e*c&kM;#7FD':xx ]49d.>(*DL/3$)*/1 1 1F =C9VT7J		&))499T]+C+C!	# 	# 	# 	#
 ~3&&&(8&&&~1$$$dn&6$$$ 	
RU+===>>>@"	/ 	/ 	/ 	/ 	/ 	/r1   c           
      ^   t          j        d          }| j        |d<   t          d          D ]}||dz   |fxx         dz  cc<   | j        r}| j        dd|d}t          j        | j        | j        d	d
|          }|d         |d         |d         |d         |d         f\  }}}}}	t          |d         d         |d                    n3t          j
        | j        | j        d	| j        ddd|          }
|
\  }}}}}	t          |                     |          |                     | j                  d           | j        j        dk    sJ | j        j                    | j        j        dk    sJ | j        j                    t          | j        j        dd         g dg dgdd           d S )N)r   r_   .r_   r)   r>   FTrh   r   r   initial_simplexr   r*  r  r.   r   r   r   r   allvecsr   r   rh   r   r   r   r2  r;   r   d   2   4   )gIt?g?'ΛTgx8?)gҢ_׆?goMg囎|52?r   r?   r   )r+   rd   rf   ranger   rh   r
   r   r}   r   r.  rg   rk   rr   rl   rm   rs   )ro   simplexjr   r   r   r   r  r   r   r   s              r/   test_neldermead_initial_simplexz:CheckOptimizeParameterized.test_neldermead_initial_simplex  s   (6""'q 	# 	#AAaCFOOOs"OOOO 	C#|U"&7D DD#DIt/?b+8$H H HC;>s8;>u:;>u:;>v;;>x=	;J7FD':x
 C	N1-wqz::::]49d.>(*DL/3%3:< < <F
 =C9VT7J		&))499T]+C+C!	# 	# 	# 	#
 ~3&&&(8&&&~1$$$dn&6$$$ 	
RU+======?"	/ 	/ 	/ 	/ 	/ 	/r1   c                    g }t          j        d          }| j        d d         |d<   t          d          D ]}||dz   |fxx         dz  cc<   |                    |           t          j        d          }|                    |           |D ]|}| j        r<| j        dd|d}t          t          t          j
        | j        | j        d	d
|           Et          t          t          j        | j        | j        d	| j        ddd|
  
         }d S )N)r_   r4   r4   .r)   r>   )r_   r_   Fr1  r   r*  r  Tr4  )r+   rd   rf   r8  rx   r   rh   rP   rQ   r
   r   r}   r.  )ro   bad_simplicesr9  r:  r   s        r/   #test_neldermead_initial_simplex_badz>CheckOptimizeParameterized.test_neldermead_initial_simplex_bad  sL   (6""'+q 	# 	#AAaCFOOOs"OOOOW%%%(6""W%%%$ 	7 	7G 7#'<&+I Ij&/"i".#%%2&*, , , , , j(-"i)9#%t|*.U5.5	7 7 7 7 7	7 	7r1   c                     d }t          j        |dgdgd          }t          |j        dg           t          j        |ddgddgd          }t          |j        ddg           d S )	Nc                 0    t          j        | dz            S Nr4   r+   rC   r-   s    r/   quadz>CheckOptimizeParameterized.test_neldermead_x0_ub.<locals>.quad      6!Q$<<r1   r)   )r   r\   nelder-meadr&  r   r   r4   )r)         @r
   r   r   r.   )ro   rC  r   s      r/   test_neldermead_x0_ubz0CheckOptimizeParameterized.test_neldermead_x0_ub  s    	  	  	  C9 	
 
 
 	s###FW% 	
 
 
 	1v&&&&&r1   c                 z    ddi}t          j        | j        | j        d| j        d|          }|j        dk    sJ d S )Nrh   	Newton-CGr   r   r   r   r   r)   )r
   r   r}   rf   r   r   )ro   r   results      r/   test_ncg_negative_maxiterz4CheckOptimizeParameterized.test_ncg_negative_maxiter%  sR    2"49d.>*549(*D: : : }!!!!!!r1   c           	          d }d }dg}d}t          j        |||dt          |                    }|j        dk    sJ t	          |j        d         t          j                   d S )Nc                 6    t          j        | d                   S Nr   )r+   rG   r-   s    r/   cosinez=CheckOptimizeParameterized.test_ncg_zero_xtol.<locals>.cosine/  s    6!A$<<r1   c                 8    t          j        | d                    S rR  )r+   rB   r-   s    r/   r   z:CheckOptimizeParameterized.test_ncg_zero_xtol.<locals>.jac2  s    F1Q4LL= r1   r>   r   	newton-cg)xtol)rU   r   r   r   )r
   r   dictr   r   r.   r+   r"  )ro   rS  r   rU   rV  rN  s         r/   test_ncg_zero_xtolz-CheckOptimizeParameterized.test_ncg_zero_xtol-  s    	  	  	 	! 	! 	! U"6&('**5+/T???	< < <
 }!!!!FHQK/////r1   c           
      b   | j         r@| j        | j        dd}t          j        | j        | j        d| j        d|          d         }n5t          j        | j        | j        | j        d| j        d| j        d          }|}t          |                     |          |                     | j
                  d	           | j        j        d
k    sJ | j        j                    | j        j        dk    sJ | j        j                    t          | j        j        dd         g dg dgdd           d S )NFr   rL  r   rM  r.   r   r;   r   r      r_   r   (6-H=g?g4u3?r\  g_g/N3?r?   r   )r   rh   r   r
   r   r}   rf   r   fmin_ncgr   rg   rk   rr   rl   rm   rs   ro   r   r   r   s       r/   test_ncgz#CheckOptimizeParameterized.test_ncg?  si    
	5#|TY"') )D&ty$2B.9ty,.> > >>ACFF &ty$2BDI,.38ty.35 5 5F
 		&))499T]+C+C!	# 	# 	# 	#
 ~1$$$dn&6$$$~2%%%t~'7%%% 	
QqS)KKKKKKM!	. 	. 	. 	. 	. 	.r1   c                 z   | j         rF| j        | j        dd}t          j        | j        | j        d| j        | j        d|          d         }n;t          j	        | j        | j        | j        | j        d| j        d| j        d	  	        }|}t          |                     |          |                     | j                  d	           | j        j        d
k    sJ | j        j                    | j        j        dk    sJ | j        j                    t          | j        j        dd         g dg dgdd           d S )NFr   rL  r   )r   r   r   r   r   r.   )fhessr   rh   r   r   r   r;   r   r      r_   r   r[  r]  r?   r   )r   rh   r   r
   r   r}   rf   r   r   r^  r   rg   rk   rr   rl   rm   rs   r_  s       r/   test_ncg_hessz(CheckOptimizeParameterized.test_ncg_hess`  sv    	5#|TY"') )D&ty$2B.9ty,0I,.> > > ?BCFF
 &ty$2BDI-1Y,.38ty.3	5 5 5F 		&))499T]+C+C!	# 	# 	# 	#
 ~1$$$dn&6$$$~2%%%t~'7%%%
 	
QqS)KKKKKKM!	. 	. 	. 	. 	. 	.r1   c                 z   | j         rF| j        | j        dd}t          j        | j        | j        d| j        | j        d|          d         }n;t          j	        | j        | j        | j        | j        d| j        d| j        d	  	        }|}t          |                     |          |                     | j                  d	           | j        j        d
k    sJ | j        j                    | j        j        dk    sJ | j        j                    t          | j        j        dd         g dg dgdd           d S )NFr   rL  r   )r   r   r   r   r   r.   )fhess_pr   rh   r   r   r   r;   r   r   rc  r_   r   r[  r]  r?   r   )r   rh   r   r
   r   r}   rf   r   r   r^  r   rg   rk   rr   rl   rm   rs   r_  s       r/   test_ncg_hesspz)CheckOptimizeParameterized.test_ncg_hessp  sv    	5#|TY"') )D&ty$2B.9ty-1Z,.> > > ?BCFF
 &ty$2BDI/3z,.38ty.3	5 5 5F 		&))499T]+C+C!	# 	# 	# 	#
 ~1$$$dn&6$$$~2%%%t~'7%%%
 	
QqS)KKKKKKM!	. 	. 	. 	. 	. 	.r1   c                    | j         rt          j        | j        | j        d| j        | j        d          }t          |j        |                     | j	                  d           | j
        j        dk    sJ | j
        j                    d S d S )Ncobyqarh   r   r   r;   r   A   )r   r
   r   r}   rf   rh   r   r   r   rg   rk   rr   ro   r   s     r/   test_cobyqaz&CheckOptimizeParameterized.test_cobyqa  s     	A#	 $(L$)DD	  C CGTYYt}%=%=DIIII >#w...0@...	A 	A /.r1   N) r   r   r   r   r   r   r   r   r   r   markfilterwarningsr   r   r  r  parametrizer  r  xfailr  r(  r/  r;  r>  rI  rO  rX  r`  rd  rg  rm  r   r1   r/   r   r      s       / / />	5 	5 	5 /  /  /D, , ,
, 
, 
,	: 	: 	: [ 566, , 76, " " "	3 	3 	3- - - [dD\S!H-13K-0#J,8 9 9< <9 9< 7  7  7D [ & ' '/ /' '/@) ) )2/ / />&/ &/ &/P7 7 7>' ' '." " "0 0 0$. . .B .  .  .D .  .  .DA A A A Ar1   r   c            	          t           j                            d          fd} dD ]B}dD ]=}t          j        |                     d          |d|i          }|d         |k    sJ >Cd S )	Nl	   <vgRI*q4 c                 4                         d          dz  S Nr)   ra   r7   )r.   r=   s    r/   costztest_maxfev_test.<locals>.cost  s    zz!}}t##r1   )r)   r   r6  )r  Nelder-Meadr   maxfevr   r   )r+   r7   default_rngr
   r   )rv  imaxfevr   rN  r=   s       @r/   test_maxfev_testr{    s    
)

 G
H
HC$ $ $ $ $  - - 0 	- 	-F&tSZZ^^.408'/BD D DF &>W,,,,,		-	- -r1   c                     d } t           j                            | t          j        d          d          \  }}t          d          D ]0} |t          j        |                     |d         |dz   k    sJ 1d}t          t           j        j        |          5   |t          j        |                     d d d            n# 1 swxY w Y   t           j                            | t          j        d          d          \  }}d}t          t          |          5   |t          j	        ddg                     d d d            d S # 1 swxY w Y   d S )Nc                     | S rA   r   r-   s    r/   func_z8test_wrap_scalar_function_with_validation.<locals>.func_  s    r1   r)   r   r   zToo many function callsr   @The user-provided objective function must return a scalar value.)
r
   	_optimize'_wrap_scalar_function_maxfun_validationr+   asarrayr8  rP   _MaxFuncCallErrorrQ   rL   )r~  fcallsr}   imsgs        r/   )test_wrap_scalar_function_with_validationr    s      %//rz!}}aHH FD 1XX    RZ]]ayAaC
#C	x);3	G	G	G  RZ]]               %//rz!}}aHH FD MC	z	-	-	-  RXq!f                 s$   CC
C
 EEEc                      d} t          t          |           5  t          j        d t	          j        ddg          d           d d d            d S # 1 swxY w Y   d S )Nr  r   c                     | S rA   r   r-   s    r/   <lambda>z.test_obj_func_returns_scalar.<locals>.<lambda>  s    A r1   r)   r   r   )rP   rQ   r
   r   r+   rL   r   s    r/   test_obj_func_returns_scalarr    s    &E 
z	/	/	/ H H++rxA'7'7GGGGH H H H H H H H H H H H H H H H H Hs   -AAAc                      t          j        g d          } t          j                            t          j        | d          }|j        dk    sJ d S )Nr   r   )xatoliS  )r+   rL   r
   	_minimize_minimize_neldermeadr   r   )rU   r   s     r/   test_neldermead_iteration_numr    sQ    	+++	,	,B


1
1(."8< 2 > >C7c>>>>>>r1   c                      t          j        ddg                              t           j                  } d }t	          j        || d           d S )N      @      @c                 X    | j         t          j        k    sJ t          j        |           S rA   )dtyper+   float32r
   r   r-   s    r/   rosen_z*test_neldermead_respect_fp.<locals>.rosen_  s'    w"*$$$$~a   r1   rw  r   )r+   rL   astyper  r
   r   )rU   r  s     r/   test_neldermead_respect_fpr    sT    	3*			$	$RZ	0	0B! ! ! fb777777r1   c                  X    d } t           j                            | ddgddd           d S )Nc                 0    | d         dz  | d         dz  z   S Nr   r4   r)   r   r-   s    r/   r}   z)test_neldermead_xatol_fatol.<locals>.func  s    tqy1Q419$$r1   r)   r4   r   )rh   r  fatol)r
   r  r  )r}   s    r/   test_neldermead_xatol_fatolr    sQ    % % % ++D1a&!26d , D D D D Dr1   c                      d } g d}t          j        | |d          }t          |j        d           t          j        | |dddi          }t          |j        d           d S )	Nc                 0    t          j        | dz            S rA  rB  r-   s    r/   r}   z&test_neldermead_adaptive.<locals>.func      va1f~~r1   )gM@'?gOC?g~?g -?g?g#j?g ?g~^g?gܠr#?g^cǽ?g)i	?g'?g?g1?g[VΤ?rw  r   FadaptiveTr   )r
   r   r   r   )r}   p0r   s      r/   test_neldermead_adaptiver    s      
F 
F 
FB 
D"]
;
;
;Ce$$$

D"]%/$68 8 8Cd#####r1   c            	         d } d}g d}t          j        t          j                  5  t          j        | ||d          }d d d            n# 1 swxY w Y   t          |j        t          j        dgt          |          z            d           t          |j        d	           t          |j        d
           g dg dg dg}t          j        t          j                  5  t          j        | ||dd|i          }d d d            n# 1 swxY w Y   t          |j        t          j        g d          d           t          |j        d           t          |j        d           d S )Nc                 0    t          j        | dz            S rA  rB  r-   s    r/   r}   z/test_bounded_powell_outsidebounds.<locals>.func  r  r1   )rK  r)   r  r  )r^   gr  rF  r`   r;   r   Tr   r   r   r   )r   r)   r   )r   r   r)   r  )r&  r   r   )g      r   r   Fr   )r   warnsr
   OptimizeWarningr   r   r.   r+   rL   lenr   r   r   )r}   r&  rU   r   r  s        r/   !test_bounded_powell_outsideboundsr    s     &F	B 
h.	/	/ J JbIIIJ J J J J J J J J J J J J J JCE28RD3r77N33$????d###Q YY			999-E	h.	/	/ : :b'-h)0%(8: : :: : : : : : : : : : : : : : : CE28KKK00t<<<<e$$$Qs#   AAA%DDDc                  J   d } d}g d}ddd}t          j        | |d|          }t          |j        dd	
           t          |j        dd	
           t          j        | |||d          }t          j        g d          }t          |j        |d	
           t          |j         | |          d	
           dt
          j         dfdt
          j        fddf}t          j        | |||d          }t          j        g d          }t          |j        |d	
           t          |j         | |          d	
           d } dgdz  }g d}t          j        | |d          }t          j        | ||d          }t          |j        dd	
           t          |j        dd	
           t
          j         t
          j        fgdz  }t          j        | ||d          }t          |j        |j        d	
           t          |j        |j        d	
           t          |j        |j        d	
           g d}dgdz  }t          j
        t           j                  5  t          j        | ||d          }d d d            n# 1 swxY w Y   t          |j        dd	
           d S )Nc                 0    t          j        | dz            S rA  rB  r-   s    r/   r}   z+test_bounded_powell_vs_powell.<locals>.func:  r  r1   ))rK  )r	  )r)   gffffff"@)r  gffffff@g/)g gr   r   r  绽|=ftolrV  r  r   r`   r;   r   )r   r&  r   )rK  r	  r)   r   r  )NrK  r	  r)   )r  Nr  c                    t          j        | d                    t          j        | d                   z  t          j        | d          | d         z            z  t          j        | d                   z  }|t          j        t          j        | d         | d         z            t          j        | d                   z            z  }|dz  S Nr   r)   r4   rF   r.   rs   s     r/   r}   z+test_bounded_powell_vs_powell.<locals>.funcX  s    FAaD5MMBF1Q4LL(261Q4%!A$,+?+??"&1,,N	RVBF1Q4!A$;''"&1,,6777!tr1   )r  r   r_   )r   r   r   r   rF  g8:}?r   )gb4F@g:gW?@)r
   r   r   r.   r   r+   rL   infr   r   r  r  )r}   r&  rU   r   
res_powellres_bounded_powellr   s          r/   test_bounded_powell_vs_powellr  2  sz     DF	!	!	!Be,,G"4HgNNNJJL"40000JNBT2222!*4W282:< < < 	%%%&&A&(!$7777&*DDGG$???? 26'3!RVj+MF!*4W282:< < < 	%%%&&A&(!$7777&*DDGG$????
  
 Y]F			B"4H===J!*4282:< < < JN$8tDDDD&*AD9999
 w 1$F!*4282:< < < JN$6$:FFFFJO%7%<4HHHHJL"4"6TBBBB 
2	1	1BY]F	h.	/	/ @ @%.tR6<6>@ @ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ &*AD999999s   JJJc                     dt           j         dfgdz  dddd} g d}d }t          j        ||fi | }t	          |j        d	d
           d }t          j        ||fi | }t	          |j        d           d }t          j        ||fi | }t	          |j        dd           d }t           j         dfgdz  | d<   t          j        ||fi | }t	          |j        dd           d S )Nr  g    .Ar_   r   r  )r   r&  r   r[   c                 ,    t          j        |            S rA   rB  r-   s    r/   r|   z1test_onesided_bounded_powell_stability.<locals>.f  s    q		zr1   g    `F-C6?r   c                     t          j        t          j        |                     dz   t          j        | dk              rdndz  S )Nr>   r   r)   rK  r+   rN   rC   rK   r-   s    r/   r|   z1test_onesided_bounded_powell_stability.<locals>.f  s<    rvayy!!c**26!a%==.HaabIIr1   gwc                     t          j        t          j        |                     dz   t          j        | dk              rdndz  S )Nr   r   r)   rK  r  r-   s    r/   r|   z1test_onesided_bounded_powell_stability.<locals>.f  s<    rvayy!!R''q1u+E112FFr1   gB+Iar?   r   c                    t          j        t          j        | d d                             dz   t          j        t          j        | dd                              dz  z
  }|t          j        | dk              rdndz  }|S )Nr4   r   r>   r   r)   rK  r  r  s     r/   r|   z1test_onesided_bounded_powell_stability.<locals>.f  sq    VBF1RaR5MM""a''"&!""*?*?C*HH	26!a%==(aab)r1   g     @@r&  g 4&k\)r+   r  r
   r   r   r   )kwargsrU   r|   r   s       r/   &test_onesided_bounded_powell_stabilityr  ~  sd    !6'3(1,"&557 7F 
B  

Ar
,
,V
,
,CCGT----J J J 
Ar
,
,V
,
,CCG_---G G G 
Ar
,
,V
,
,CCG\5555  
 &#'!+F8

Ar
,
,V
,
,CCG9EEEEEEr1   c                       e Zd ZdZdZdS )TestOptimizeWrapperDispTNr   r   r   r   r   r   r1   r/   r  r    s        KDDDr1   r  c                       e Zd ZdZdZdS )TestOptimizeWrapperNoDispTFNr  r   r1   r/   r  r    s        KDDDr1   r  c                       e Zd ZdZdZdS )TestOptimizeNoWrapperDispFTNr  r   r1   r/   r  r    s        KDDDr1   r  c                       e Zd ZdZdZdS )TestOptimizeNoWrapperNoDispFNr  r   r1   r/   r  r    s        KDDDr1   r  c                      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 Zd Zd Zd Zd Zej                            d          ej                            d          ej                            d          ej                            dg dez             d                                                 Zej                            dg d          d             Zd Zej                            dg d          d             Zej                            dg d          d             Zd  Z d! Z!d" Z"d# Z#ej                            dg d$          d%             Z$ej                            dg d&          d'             Z%ej                            d          ej                            de&          ej                            d(g d)          d*                                     Z'd+ Z(ej                            dd,          d-             Z)ej                            dg d.          d/             Z*d0S )1TestOptimizeSimplec                     d }d }t           j        g}t          j        dd          5  t          j        |||d          }t          j         ||                    sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                     | S rA   r   r-   s    r/   r}   z.TestOptimizeSimple.test_bfgs_nan.<locals>.func  s    Hr1   c                 *    t          j        |           S rA   r+   	ones_liker-   s    r/   r   z0TestOptimizeSimple.test_bfgs_nan.<locals>.fprime      <??"r1   r   )r   invalidFr   )r+   nanr   r
   r   isnan)ro   r}   r   rU   r.   s        r/   test_bfgs_nanz TestOptimizeSimple.test_bfgs_nan  s    	 	 		# 	# 	#fX[h999 	% 	%"4V%@@@A8DDGG$$$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   8A00A47A4c                    d }t          j        d          5  t          j        |d          }d d d            n# 1 swxY w Y   t          j        |d                   sJ |d         du sJ d }d	 }t          j        d          5  t          j        |d|
          }d d d            n# 1 swxY w Y   t          j        |d                   sJ |d         du sJ d S )Nc                     t           j        S rA   r+   r  r-   s    r/   r}   z5TestOptimizeSimple.test_bfgs_nan_return.<locals>.func  	    6Mr1   r   r  r   r   r   Fc                 *    | dk    rdnt           j        S rR  r  r-   s    r/   r}   z5TestOptimizeSimple.test_bfgs_nan_return.<locals>.func  s    Q11BF*r1   c                 *    t          j        |           S rA   r  r-   s    r/   r   z7TestOptimizeSimple.test_bfgs_nan_return.<locals>.fprime  r  r1   )r   )r+   r   r
   r   r  )ro   r}   rN  r   s       r/   test_bfgs_nan_returnz'TestOptimizeSimple.test_bfgs_nan_return  s   	 	 	[*** 	0 	0&tQ//F	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 xu&&&&&i E))))	+ 	+ 	+	# 	# 	#[*** 	< 	<&tQF;;;F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< xu&&&&&i E))))))s   ;??	B--B14B1c                    t           j                            d          }t          j        t          j        d                    |                    t          | j                            z  }t          j        | j	        | j
        |d| j        d          }t          | 	                    |          | 	                    | j                  d           d S )Nr8   r\   r   F)r<   r   rh   r   r;   r   )r+   r7   ry  sqrtspacingr  rg   r
   r   r}   rf   rh   r   )ro   r=   r<   r   s       r/   test_bfgs_numerical_jacobianz/TestOptimizeSimple.test_bfgs_numerical_jacobian  s     i##D))'"*R..))CJJs4=7I7I,J,JJ#DIt/?,3",0LuF F F 			&))499T]+C+C!	# 	# 	# 	# 	# 	#r1   c                    g d}g d}t          j        ||          D ]i\  }}t          j        | j        | j        ||          }t          |                     |j                  |                     | j                  d           jd S )N)r   r   TNC2-point3-pointN)r   r   r;   r   )		itertoolsproductr
   r   r}   rf   r   r.   rg   )ro   methodsjacsr   r   rN  s         r/   test_finite_differences_jacz.TestOptimizeSimple.test_finite_differences_jac  s    '''+++$,Wd;; 	' 	'KFC&ty$2B.4#? ? ?FDIIfh//4=1I1I!%' ' ' ' '	' 	'r1   c           	         g d}t           t          j        fz   }t          j        ||          D ]N\  }}|t          j        u r
 |            }t          j        | j        | j        || j        |          }|j	        sJ Og d}|D ][}t          j        t                    5  t          j        | j        | j        || j        d            d d d            n# 1 swxY w Y   \d S )N)trust-constrrL  	trust-ncgtrust-krylovr   r   r   )r  r  doglegtrust-exact)r   r
   r   r  r  r   r}   rf   r   r   r   r   rQ   )ro   r  hessesr   r   rN  s         r/   test_finite_differences_hessz/TestOptimizeSimple.test_finite_differences_hess  sN    MLLx}..%-gv>> 	" 	"LFDx}$$tvv&ty$2B.4$),02 2 2F >!!!!
 IHH 	- 	-Fz** - -!$)T-=)/TY'+- - - -- - - - - - - - - - - - - - -	- 	-s   )CC	C	c                 b    d }t          j        |dgd          }t          |ddd           d S )Nc                 "    | dk     rdS | d| z  z   S )Nr   gBr\   r   r-   s    r/   r|   z/TestOptimizeSimple.test_bfgs_gh_2169.<locals>.f  s    1uu&2a4xr1         $@Fr   r\   r  r   r   )r
   r   r   )ro   r|   xss      r/   test_bfgs_gh_2169z$TestOptimizeSimple.test_bfgs_gh_2169  sI    	  	  	 
 C5u555Cd666666r1   c                 `    fd}t                      t          j        |dddd           d S )Nc                 d    | d         }|vsJ                      |           d| dz  z  d| z  fS )Nr   r   r4      )add)r.   xpseens     r/   r|   z:TestOptimizeSimple.test_bfgs_double_evaluations.<locals>.f  s>    1BT>>>>HHRLLLad7BqD= r1   r   Tr?   )r   r   tol)setr
   r   )ro   r|   r  s     @r/   test_bfgs_double_evaluationsz/TestOptimizeSimple.test_bfgs_double_evaluations  sI    	! 	! 	! 	! 	! uu!T&dEEEEEEr1   c                    t          j        | j        | j        | j        d| j                  }|\  }}}t          |                     |          |                     | j                  d           | j        j	        dk    sJ | j        j	                    | j
        j	        dk    sJ | j
        j	                    t          | j        j        dd         g dg d	gd
d           d S )Nr   )r   rh   r;   r   r   r   r_   )g><gwT볹gUuAX?)r`   gHg!mʲ3?r   r?   r   )r
   fmin_l_bfgs_br}   rf   r   rh   r   rg   rk   rr   rl   rm   rs   ro   r   r   r   ds        r/   test_l_bfgs_bz TestOptimizeSimple.test_l_bfgs_b$  s
   '	43C(,	04> > > #q		&))499T]+C+C!	# 	# 	# 	#
 ~1$$$dn&6$$$~1$$$dn&6$$$ 	
QqS)DDD6668"	/ 	/ 	/ 	/ 	/ 	/r1   c                     t          j        | j        | j        d| j                  }|\  }}}t          |                     |          |                     | j                  d           d S )NT)approx_gradrh   r;   r   )r
   r  r}   rf   rh   r   rg   r  s        r/   test_l_bfgs_b_numjacz'TestOptimizeSimple.test_l_bfgs_b_numjac;  sz    '	43C4804> > > #q		&))499T]+C+C!	# 	# 	# 	# 	# 	#r1   c                       fd}t          j        | j         j                  }|\  }}}t	                               |                                j                  d           d S )Nc                 X                         |                               |           fS rA   )r}   r   )r.   ro   s    r/   r   z4TestOptimizeSimple.test_l_bfgs_b_funjac.<locals>.funH  s"    99Q<<1--r1   rh   r;   r   )r
   r  rf   rh   r   r}   rg   )ro   r   r   r   r   r  s   `     r/   test_l_bfgs_b_funjacz'TestOptimizeSimple.test_l_bfgs_b_funjacF  s    	. 	. 	. 	. 	. 'T-=04> > > #q		&))499T]+C+C!	# 	# 	# 	# 	# 	#r1   c                 ~    G d d          } |            }t          j        t           j        ddgd|ddi          }t          |j        d           t          |j        |j                   t          |j        |j                   t          |j        d           |j	        d	u sJ t          |j
        d
           d S )Nc                       e Zd Zd Zd ZdS ):TestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.Callbackc                 0    d| _         d | _        d | _        d S rR  )r   r   r.   rn   s    r/   __init__zCTestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.Callback.__init__W  s    r1   c                 f    || _         t          j        |          | _        | xj        dz  c_        d S r(   )r.   r
   r   r   r   ro   r.   s     r/   __call__zCTestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.Callback.__call__\  s-    #>!,,Ar1   Nr   r   r   r  r  r   r1   r/   Callbackr  V  s2          
    r1   r   r`   l-bfgs-brh   r   )r   callbackr   r)   Fz+STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT)r
   r   r   r   r   r   r.   r   r   r   message)ro   r   rr   r   s       r/   test_l_bfgs_b_maxiterz(TestOptimizeSimple.test_l_bfgs_b_maxiterS  s    		 		 		 		 		 		 		 		 HJJR)*YND D D 	SWa   CE13'''CGQU+++SZ###{e####S[B	D 	D 	D 	D 	Dr1   c                 h   d| j         i}t          j        | j        | j        d| j        |          }t          |                     |j                  |                     | j                  d           | j	        j
        |j        k    sJ dx| j        _
        | j	        _
        t          j        | j        | j        d|          }| j        j
        |j        k    sJ t          |                     |j                  |                     | j                  d           dx| j        _
        | j	        _
        t          j        | j        | j        dd|	          }| j        j
        |j        k    sJ t          |                     |j                  |                     | j                  d           d S )
Nrh   L-BFGS-Br   r   r   r;   r   r   r   r  r   r   r   )rh   r
   r   r}   rf   r   r   r.   rg   rl   rr   r   rk   r   )ro   r   rV   ras       r/   test_minimize_l_bfgs_bz)TestOptimizeSimple.test_minimize_l_bfgs_bm  s   4<(di)9%/TY&*, , , 			!#		$-(@(@!	# 	# 	# 	#~16)))).//4>+ty$*:&0$@ @ @ ~27****		"$4=)A)A!	# 	# 	# 	# /0/4>+ty$*:	&0$@ @ @~27****		"$4=)A)A!	# 	# 	# 	# 	# 	#r1   c                    d }dD ]}| j         |d}t          j        | j        | j        d| j        |          }|                     |j                  }||}n||k     sJ t          ||                     | j                  |           d S )N)r>   r  r?   r  )rh   r  r&  r'  r   )	rh   r
   r   r}   rf   r   r.   r   rg   )ro   v0r  r   r   vs         r/   test_minimize_l_bfgs_b_ftolz.TestOptimizeSimple.test_minimize_l_bfgs_b_ftol  s    , 	C 	CC#|S99D#DIt/?+549,02 2 2C 		#%  Az2vvvvAtyy77cBBBBB	C 	Cr1   c                     t          j        t           j        t          j        ddg          dt           j        ddi          }|j        rJ d S )Nr   r\   r&  maxlsr)   r'  )r
   r   r   r+   rL   r   r   )ro   r   s     r/   test_minimize_l_bfgs_maxlsz-TestOptimizeSimple.test_minimize_l_bfgs_maxls  sR    $0E0E'1x7I)0!6 6 6 ;r1   c                    t           j        t           j        }g t          j        dd          }fd}d\  }}}t          j        ||||           t          d t          |d                    D                       \  }}||z   }	t          d |                   }
t          j        |||	          \  }}}t          ||
           d S )Nr   ra   c                 H     |           }                     |           |S rA   )rx   )r.   valuer|   valuess     r/   objfunzMTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption.<locals>.objfun  s'    AaDDEMM%   Lr1   )   r5  i,  )r   maxfunc              3   $   K   | ]\  }}||fV  d S rA   r   )r#  r  ys      r/   	<genexpr>zPTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption.<locals>.<genexpr>  s*      AAdaAq6AAAAAAr1   )
r
   r   r   r+   fullr  max	enumerateminr   )ro   grU   r6  lowmediumhighr-  kr8  targetxminr.  r  r|   r5  s                 @@r/   *test_minimize_l_bfgs_b_maxfun_interruptionz=TestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption  s    NWQ	 	 	 	 	 	 )VTvr!DAAAAAAivww&@&@AAAAA1! VDSD\"" .q"QvNNNdA$'''''r1   c                     	 	 dd}g d}t          j        t           j        ||t          d                    }t	          |j        d	d
d
           d S )Nr   r>   r5  c                    |} | |          }	d}
d}d}d}|r|s||k     rd}|dz  }t          t          j        |                    D ]g}||         |z
  ||         |z   fD ]5}t          j        |          }|||<    | |g|R  }|
dz  }
||	k     r|}	|}d}6| ||           |
|
|k    rd} nh|r|s||k     t	          j        |	|||
|dk              S )Nr)   r   TFr   r.   r   r   r   )r8  r+   sizery   r
   r   )r   rU   r   rx  stepsizerh   r"  r   bestxbestyfuncallsniterimprovedstopdimstestxtestys                     r/   custminz/TestOptimizeSimple.test_custom.<locals>.custmin  sW   ECGGEHEHD 4 EGOO 
 --  C#Cj83U3Z(5JK , , "%&c
 #E 1D 1 1 1 A 5==$)E$)E'+H+ )h&.@.@##  4 EGOO& *u508519O O O Or1   )g?r  r   皙?r   皙?rL  r   r\   r  r  r   Nr>   r5  N)r
   r   r   rW  r   r.   )ro   rW  rU   r   s       r/   test_customzTestOptimizeSimple.test_custom  sy    <?*.	O 	O 	O 	O> (''7(,d(;(;(;= = =sD999999r1   c                 p    ddgdfd}ddg}t          j        t           j        ||           d S )N)r  r4   )r   r_   constraintsc                 Z    |d         u sJ |d         u sJ t          j                    S )Nr&  r^  r
   r   )r   rU   r   r&  r^  s      r/   rW  z0TestOptimizeSimple.test_gh10771.<locals>.custmin  s>    8$....=)[8888*,,,r1   r)   )r   r&  r^  )r
   r   r   )ro   rW  rU   r&  r^  s      @@r/   test_gh10771zTestOptimizeSimple.test_gh10771  su     6"#	- 	- 	- 	- 	- 	-
 V(."W!'[	B 	B 	B 	B 	B 	Br1   c           	      :   d }d }dD ]}|dv rd }n|}t          j        |ddg|d|          }t          j        |ddg|d|          } ||j                   ||j                  k     s.J | d	 ||j                   d
 ||j                               d S )Nc                 4    | \  }}|dz  |dz  z  |dz  z   dz   S )Nr4   r   r)   r   zr.   r:  s      r/   r}   z<TestOptimizeSimple.test_minimize_tol_parameter.<locals>.func  s+    DAqa419q!t#a''r1   c                 n    | \  }}t          j        d|z  |dz  z  d|dz  z  z   d|dz  z  |z  g          S )Nr4   r   r_   r+   rL   rd  s      r/   dfuncz=TestOptimizeSimple.test_minimize_tol_parameter.<locals>.dfunc  sE    DAq8QqSAX!Q$.!Q$q9:::r1   
rE  powellr  r   rU  r!  tnccobylari  slsqprE  rj  rl  ri  r4   r  )r   r  r   r\   : z vs. )r
   r   r.   )ro   r}   rh  r   r   sol1sol2s          r/   test_minimize_tol_parameterz.TestOptimizeSimple.test_minimize_tol_parameter  s   	( 	( 	(	; 	; 	;4 	B 	BF FFF$TAq6s,24 4 4D$TAq6s,24 4 4D4<<$$tv,,...AATVAA44<<AA /...	B 	Br1   r   r   ignore::RuntimeWarningr   )r.  r  r   r   r^  r  fmin_tnc
fmin_slsqpc                   
 dv rd }n$t           j        }t           j        }t           j        }t	          j        d          }i }                    d          r=t          t                     }dk    rd|d<   nhdk    rd	|d
<   n\dv rd|d<   nRd|d<   nLfd}dk    rt          d	          |d<   n-dk    rt          d	          |d<   nt          d          |d<   dv r||d<   ndv r||d<   ndv r
||d<   ||d<   g 

fd} |||fd|i| t          
          dk    sJ t          d 
D                       sJ t          j        
d          }	t          d |	D                       rJ d S )N)rt  r  c                 R    t          j        |           t          j        |           fS rA   )r
   r   r   r-   s    r/   r}   zDTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.func  s"    ~a(((*<Q*?*???r1   r   r.  ru  r   iterrt  r5  r8  )r.  r  i  rh   c                  0    |d<   t          j        | i |S )Nr   r
   r   )akwr   s     r/   routinezGTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.routine+  s"    %8(!2r222r1   rk  r8  r   rl  r  )r^  r   )rU  r   r  r  r  r  r  r   c                     t          | t          j                  rJ                     | t	          j        |           f           d S rA   )
isinstancer
   r   rx   r+   ry   )r.   r   r  resultss      r/   r"  zHTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.callbackB  s@    !!X%<=====NNArwqzz?+++++r1   r"  r4   c              3   L   K   | ]\  }}t          j        ||k              V   d S rA   )r+   rK   r#  r.   r:  s      r/   r;  zITestOptimizeSimple.test_minimize_callback_copies_array.<locals>.<genexpr>K  s2      66da26!q&>>666666r1   c              3   ^   K   | ](\  }}t          j        |d          |d                    V  )dS )r   N)r+   may_share_memoryr  s      r/   r;  zITestOptimizeSimple.test_minimize_callback_copies_array.<locals>.<genexpr>M  s;      PP41ar*1Q4166PPPPPPr1   )r
   r   r   r   r+   rd   
startswithgetattrrW  r  rK   r  combinationsany)ro   r   r}   r   r   rU   r  r}  r"  r  r  s    `        @r/   #test_minimize_callback_copies_arrayz6TestOptimizeSimple.test_minimize_callback_copies_array	  sK    222@ @ @ @ >D$C&DXb\\ V$$ 	4h//G%%!"v:%%#&x  222$(y!!$%y!!3 3 3 3 3 $($4$4$4y!!8##$($5$5$5y!!$(OOOy!]"""F8~%%F5MM ( ( (F5M!F6N 	, 	, 	, 	, 	, 	b6686v666 7||a66g66666666 -gq99PP<PPPPPPPPPPr1   ri  c                    d }d }t          j        dg          } ||          }|}|dk    rt          d          nt          d          }|dv rd }t          j        |||||	          }t           ||j                  |j                   |d
k    rt          j	        d            ||j                  |k    sJ d S )Nc                     | dz
  dz  S r3   r   r-   s    r/   r}   z1TestOptimizeSimple.test_no_increase.<locals>.funcV      EA:r1   c                     d| dz
  z  dz  dz
  S )Nr4   r)   rK  r   r-   s    r/   bad_gradz5TestOptimizeSimple.test_no_increase.<locals>.bad_gradY  s     a!e9#a''r1          @rk  r  r~  r  rn  r(  rm  zSLSQP returns slightly worse)
r+   rL   rW  r
   r   r   r.   r   r   rq  )	ro   r   r}   r  rU   f0r   r   r   s	            r/   test_no_increasez#TestOptimizeSimple.test_no_increaseO  s    	 	 		( 	( 	(
 Xse__T"XX%+u__$b////$r:J:J:JBBBCbc&(/1 1 1TT#%[[#'***WL7888tCE{{b      r1   c                     d }d }t          j        g d          }t          j        ||dd|d          }t	          |j        t          j        g d          d	z  d
           d S )Nc                 T    t          | t          j        g d          z
  dz            S )N)r\   r  rG  r  r4   )rC   r+   rL   r-   s    r/   r|   z7TestOptimizeSimple.test_slsqp_respect_bounds.<locals>.fn  s+    BH%5%5%5666:;;;r1   c                     t          j        g dg dg          }t          j        t          j        ||           t          j        ddg          z   | g          S )N)rK  rK  rK  rK  )r  r  rK  r   r   )r+   rL   concatenaterv   r.   r{  s     r/   consz:TestOptimizeSimple.test_slsqp_respect_bounds.<locals>.consq  sV    ***,<,<,<=>>A>26!Q<<"(Ar72C2C#CQ"GHHHr1   )r^   r\   r6   r  rm  ineqtyper   r   r^  )r`   r4   r   r   r_   g-q=r   )r+   rL   r
   r   r   r.   )ro   r|   r  rU   r   s        r/   test_slsqp_respect_boundsz,TestOptimizeSimple.test_slsqp_respect_boundsl  s    	< 	< 	<	I 	I 	I X((())2g5;D,I,IK K Krx66q8uEEEEEEr1   )rw  r  r   r   rL  r&  SLSQPr  r  r  r  r  ri  c           	         d}t          j        d          }t          t          j        |dt          j        t          j        d d           }|t          |          d}|dv r|j        |d<   n|dv r|j        |d<   |j	        |d	<   t          j
        |j        |fi |}|j        |k    sJ |j        |j        k    sJ t          |d
          r|j        |j        k    sJ |dk    r|j        dk    sJ d S |dk    r|j        dk    sJ d S d S )Nr   r   r   r  r   )rL  r   r  r   r   r  r   ri  r   )r+   rd   r   r
   r   r   r   rW  r   r   r   r   r   r   rt   r   ngevr   )ro   r   MAXITERrU   sfr  r   s          r/   test_respect_maxiterz'TestOptimizeSimple.test_respect_maxiterz  sH    Xb\\HNBH4F$/t= = #tG/D/D/DEE^##GF5MM ( ( (GF5MWF6N55f55w'!!!!x27""""3 	'8rw&&&& W:??????x:????  "?r1   )rw  r  r.  r  c           	         t          j        d          }t          t          j        |dt          j        t          j        d d           }ddd}t          j        t          d          5  |
                    d          r%t          t          |          } ||j        |fi | nt          j        |j        |||	           d d d            d S # 1 swxY w Y   d S )
Nr   r   r)   Trj  zMaximum number of iterationsr   r.  r   )r+   rd   r   r
   r   r   r   r   r  RuntimeWarningr  r  r   r   )ro   r   rU   r  r   r}  s         r/   test_runtime_warningz'TestOptimizeSimple.test_runtime_warning  s<    Xb\\HNBH4F$/t= =..\. ?A A A 	N 	N  (( N!(F33..g....!"&"VWMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   (ACCCc                     d}t           j        }t           j        }t           j        }d }d|df}t	          j        d          }t          j        |||||dt          |                    }|j        |k    sJ d S )	Nr   c                 n    t          j        d| d         z  d| d         z  z
  d| d         z  z
  g          S )NrI   r   皙?r)   Q?r4   rg  r-   s    r/   r   zRTestOptimizeSimple.test_respect_maxiter_trust_constr_ineq_constraints.<locals>.fun  s7    8S1Q4Z#!*4tad{BCDDDr1   r  r  r   r  r  )r^  r   r   r   r   )	r
   r   r   r   r+   rd   r   rW  r   )	ro   r  r|   r   r   r   r  rU   r   s	            r/   2test_respect_maxiter_trust_constr_ineq_constraintszETestOptimizeSimple.test_respect_maxiter_trust_constr_ineq_constraints  s     N "	E 	E 	E   Xb\\24St'5(,W(=(=(=? ? ? w'!!!!!!r1   c                 L   d }d }t          j        dg          }t          j        ||          }t          j        ||d|dg          }t          j        ||dg          }t          j        ||d|dgdg	          }t          j        ||d|dgd
g	          }|||||fD ]}	|	j        sJ t          |j        dd           t          |j        dd           t          |j        dd           t          |j        dd           t          |j        dd           d S )Nc                     | dz  S rA  r   r-   s    r/   r|   z6TestOptimizeSimple.test_minimize_automethod.<locals>.f      a4Kr1   c                     | dz
  S rA  r   r-   s    r/   r  z9TestOptimizeSimple.test_minimize_automethod.<locals>.cons  s    q5Lr1   r  r  r  )r^  )r   r   r&  )r^  r&  r)   r   r   r?   r   r4   r   )r+   rL   r
   r   r   r   r.   )
ro   r|   r  rU   sol_0sol_1sol_2sol_3sol_4r   s
             r/   test_minimize_automethodz+TestOptimizeSimple.test_minimize_automethod  s   	 	 		 	 	 Xse__!!R((!!Rv>B7D 7D 6E F F F!!R	:::!!R8>t/L/L.M*14 4 4 !!R8>t/L/L.M*14 4 4 5%6 	 	C;......................r1   c                     d }dd}t          j        g d          }t           j                            d          }|                    t          |                    }t          j        ||||d           d S )Nc                 6    t          j        | |z
  dz            S rA  rB  r.   rr   s     r/   Yz=TestOptimizeSimple.test_minimize_coerce_args_param.<locals>.Y  s    61Q3(###r1   c                     d| |z
  z  S rA  r   r  s     r/   dY_dxzATestOptimizeSimple.test_minimize_coerce_args_param.<locals>.dY_dx  s    ac7Nr1   )r_   r)   r   r)   r   r   r4   r   r   r_   r   r8   r   )r   r   r   rA   )r+   rL   r7   ry  standard_normalr  r
   r   )ro   r  r  rr   r=   xinits         r/   test_minimize_coerce_args_paramz2TestOptimizeSimple.test_minimize_coerce_args_param  s    	$ 	$ 	$	 	 	 	 H66677i##D))##CFF++!UQGGGGGGr1   c                 ,  	
 g d}g d}	
fd}
fd}t          j        ||          D ]\  
}|dv rt          
dz            }nt                      }
dk     r|d	v r6d
gd g	t          j        ||||          }| d
 d	 d| }|j        s
J |            t          |j        dg|           |j        dk    s
J |            
dk    r@|dv rt          	d         d|           É	d         dk    r	d         dk     s
J |            d S )N)gJz5r)   gd~QJ)r   r   r&  rL  c                    d         3| d         d         k    r!t          | d         d         z
            d<   t          |                                           dk    rt          d          | d         dz
  dz  z  S )Nr   g     @zOptimization stepped far away!r)   r4   )rN   r=  AssertionError)r.   first_step_sizescalerU   s    r/   r|   z7TestOptimizeSimple.test_initial_step_scaling.<locals>.f  s{    q!)adbemm%(11%6%6"1vvzz||c!!$%EFFF!A$(Q&&r1   c                 F    t          j        | d         dz
  z  g          S Nr   r)   rg  )r.   r  s    r/   r@  z7TestOptimizeSimple.test_initial_step_scaling.<locals>.g  s#    8UAaD1H-.///r1   )r   r   r   )r   r  )r&  rL        r(   ro  r\   err_msgr_   r   )\(?r^   )	r  r  rW  r
   r   r   r   r.   r   )ro   scalesr  r|   r@  r   r   r   r  r  r  rU   s            @@@r/   test_initial_step_scalingz,TestOptimizeSimple.test_initial_step_scaling  s    "!!999	' 	' 	' 	' 	' 	' 	'	0 	0 	0 	0 	0 '.vw?? 	 	ME6''E$J///&&u}}+D!D!DB#fO#Arq,35 5 5C  CC%CC?CCcCCG;'''''CEC5'::::7a<<<<<<u}}^++#OA$6gNNNNN +1-338JQ8N8N8NPW8N8N8N8N ?	 	r1   )rE  rj  r  r   rU  r!  rk  ri  rm  r  r  r  r  r  c                    t           j                            d          dgd }fd}d }d }t          j        dg          }|dv }|d	v }||g}	|r|gn|d g}
|r|gn|d g}|d
k    rt	          d          nt	          d          }t          j        d          5  t          j                    5  t          j        ddt                     t          j        ddt                     t          j        ddt                     t          j        |	|
|          D ]8\  }}}dgt          j        ||||||          }t          |j        d           9	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ni r   c                     t           j        S rA   r  r-   s    r/   r}   z0TestOptimizeSimple.test_nan_values.<locals>.func)  r  r1   c                 |    dxx         dz  cc<   d         dk    rt           j        S                                 S r  )r+   r  r7   )r.   countr=   s    r/   func2z1TestOptimizeSimple.test_nan_values.<locals>.func2,  s:    !HHHMHHHQx!||vzz||#r1   c                 ,    t          j        dg          S Nr\   rg  r-   s    r/   r   z0TestOptimizeSimple.test_nan_values.<locals>.grad3  s    8SE??"r1   c                 .    t          j        dgg          S r  rg  r-   s    r/   r   z0TestOptimizeSimple.test_nan_values.<locals>.hess6  s    8cUG$$$r1   r\   rU  r  r  r  r  r  r  r  r  rk  r  r~  r  r   r  delta_grad == 0.*.*does not use Hessian.*.*does not use gradient.*r   r   r   r   F)r+   r7   ry  rL   rW  r   warningscatch_warningsro  UserWarningr  r  r  r
   r   r   r   )ro   r   r}   r  r   r   rU   
needs_grad
needs_hessfuncsgradshesssr   r|   r@  hr   r  r=   s                    @@r/   test_nan_valuesz"TestOptimizeSimple.test_nan_values  s    i##F++	 	 		$ 	$ 	$ 	$ 	$ 	$	# 	# 	#	% 	% 	% Xse__  7 7
  * *
 u$64,$64,%+u__$b////$r:J:J:J[*** 	1 	1H,C,E,E 	1 	1#H.A;OOO#4nF F F#5~G G G %,UE5AA 1 11a'211V079 9 9S[%0000	1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s7   "E<6B!E$E<$E(	(E<+E(	,E<<F F )rE  r  r   r!  rk  rl  ri  rm  r  r  r  r  r  c           	      N   d x}}|dv r| j         }|dv r| j        }t          j        d          5  t	          j                    5  t	          j        ddt                     t          j	        | j
        | j        |||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          dt          | j        j                            D ]L}t          j        | j        j        |dz
           | j        j        |                   rt#          d|           Md S )	Nr  r  r   r  r  r  r)   zDuplicate evaluations made by )r   r   r+   r   r  r  ro  r  r
   r   r}   rf   r8  r  rm   rs   array_equalru   )ro   r   r   r   r  s        r/   test_duplicate_evaluationsz-TestOptimizeSimple.test_duplicate_evaluationsR  s    d - - -)C      9D[*** 	A 	AH,C,E,E 	A 	A#H.A;OOOdi)9%+4A A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A q#djl++,, 	? 	?A~djl1q514:<?CC ?"=V==? ? ??	? 	?s5   B&?BB&B	B&B	B&&B*-B*new_cb_interface)r   r)   r4   c                   
 fdd_         fd}fd}d|dk    r
fd}n&|dk    r G 
fd	d
          } |            }n
fd}
fd
d
_        d
_         dgdz  |||d}t          j        d i |d|i}|dk    rdz   |dk    r3t          j        d i |ddii}	|j        |	j        cxk    rk    sn J n|dk    rst          t          |d                   dz             t          j        d i |ddii}	|j        dk    sJ |j        dk    sJ |	j        dk    sJ |	j        dk    sJ d S t          j        d i |ddii}	|j        	                    d          sJ |j
        |	j
        cxk    rk    sn J |dk    r,|j        |	j        k    sJ t          |j        |	j                   |dv r|j        dk    snnJ |dk    r	|j        rJ d S d S )!Nc                 :    d_         t          j        |           S NF)flagr
   r   r.   r|   s    r/   r|   z9TestOptimizeSimple.test_callback_stopiteration.<locals>.fs  s    AF>!$$$r1   Fc                 :    d_         t          j        |           S r  )r  r
   r   r  s    r/   r@  z9TestOptimizeSimple.test_callback_stopiteration.<locals>.gx  s    AF%a(((r1   c                 :    d_         t          j        |           S r  )r  r
   r   r  s    r/   r  z9TestOptimizeSimple.test_callback_stopiteration.<locals>.h|  s    AF&q)))r1   r   r)   c                 R    | j          | j                  k    sJ               d S rA   r   r.   )intermediate_resultr"  r|   s    r/   callback_interfacezJTestOptimizeSimple.test_callback_stopiteration.<locals>.callback_interface  s4    *.!!4G4I2J2JJJJJ




r1   r4   c                   "    e Zd Zdef fdZdS )@TestOptimizeSimple.test_callback_stopiteration.<locals>.Callbackr  c                 R    |j          |j                  k    sJ               d S rA   r  )ro   r  r"  r|   s     r/   r  zITestOptimizeSimple.test_callback_stopiteration.<locals>.Callback.__call__  s4    .2aa8K8M6N6NNNNNHJJJJJr1   N)r   r   r   r   r  )r"  r|   s   r/   r   r    s?                 r1   r   c                                   d S rA   r   )xkr   r"  s     r/   r  zJTestOptimizeSimple.test_callback_stopiteration.<locals>.callback_interface  s    




r1   c                  v     xj         dz  c_         d _         j         k    rd _        t                      d S )Nr)   FT)r  r  StopIteration)r"  rh   s   r/   r"  z@TestOptimizeSimple.test_callback_stopiteration.<locals>.callback  s?    JJ!OJJ!HMzW$$ $#oo% %$r1   r   rX  )rU   r   r   r   r   r"  rE  ri  r   rx  rl  rU   rh   r7  zFReturn from COBYLA because the callback function requested terminationr_   zRReturn from COBYLA because the objective function has been evaluated MAXFUN times.z!`callback` raised `StopIteration`rm  >   ri  r  c   r   )r  r  r
   r   r   r=  r  r   r#  r  r   r   r   r.   r   )ro   r   r  r@  r  r  r   r  r   r   r"  r|   rh   s             @@@r/   test_callback_stopiterationz.TestOptimizeSimple.test_callback_stopiterationl  s   	% 	% 	% 	% 	% 	) 	) 	) 	) 	)	* 	* 	* 	* 	* q         ""           "*    	& 	& 	& 	& 	& 	& 
a61a1 1 FF&FF3EFFF]""kGX#JJfJJx6IJJJC8sx222272222222x '3vd|#4#4Q#677G#KKfKKy'6JKKKC:####; $; < < < <:????; $F G G G G F#KKfKKy'6JKKKC;))*MNNNNN7cg0000000000W 7cg%%%%&&&"(,F"F"FszQX{""" ""r1   c                     d}t          t          |          5  t          j        d t	          j        d                     d d d            d S # 1 swxY w Y   d S )Nz"'x0' must only have one dimension.r   c                     | S rA   r   r-   s    r/   r  z4TestOptimizeSimple.test_ndim_error.<locals>.<lambda>  s     r1   )r4   r)   )rP   rQ   r
   r   r+   onesro   r  s     r/   test_ndim_errorz"TestOptimizeSimple.test_ndim_error  s    2:S111 	< 	<kk276??;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   )AAA)rE  r!  rk  rj  rl  ri  r  c                    d }t          ddgddg          }d}t          j        t          |          5  t	          j        |g d||	           d d d            n# 1 swxY w Y   t          g d
g d          }d}t          j        t          |          5  t	          j        |g d||	           d d d            d S # 1 swxY w Y   d S )Nc                 0    t          j        | dz            S rA  rB  r-   s    r/   r|   z:TestOptimizeSimple.test_minimize_invalid_bounds.<locals>.f  rD  r1   r)   r4   r_   r   z?The number of bounds is not compatible with the length of `x0`.r   )r)   r4   r_   rU   r   r&  )r)   r   r)   )r_   r   r4   z:An upper bound is less than the corresponding lower bound.)r   r   r   rQ   r
   r   )ro   r   r|   r&  r  s        r/   test_minimize_invalid_boundsz/TestOptimizeSimple.test_minimize_invalid_bounds  s   	  	  	  AA''O]:S111 	M 	MaIIIfVLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 			999--J]:S111 	M 	MaIIIfVLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms#   AA #A C  CC)r   r  rU  rj  c                 8   |dk    ri ndt           j        i}|dk    rt          nt           j        }ddd}t	          j        |d          5  t          j        d d	d	gf||d
| d d d            n# 1 swxY w Y   d|d<   t          j        d d	d	gf||d
| d S )Nrj  r   Tr   r   rh   Maximum numberr   c                 *    t          j        |           S rA   r
   r   r-   s    r/   r  zBTestOptimizeSimple.test_minimize_warnings_gh1953.<locals>.<lambda>  s    q(9(9 r1   r   r   Fr   c                 *    t          j        |           S rA   r  r-   s    r/   r  zBTestOptimizeSimple.test_minimize_warnings_gh1953.<locals>.<lambda>  s    HN1$5$5 r1   )r
   r   r  r  r   r  r   )ro   r   r  warning_typer   s        r/   test_minimize_warnings_gh1953z0TestOptimizeSimple.test_minimize_warnings_gh1953  sW    x''eX5G-H*0(*:*:%5 	  B//\,.>??? 	H 	H99Aq6 H%+WH H@FH H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H  551v 	D!'	D 	D<B	D 	D 	D 	D 	Ds   A11A58A5N)+r   r   r   r  r  r  r  r  r   r
  r  r  r  r$  r*  r.  r1  rG  r\  ra  rr  r   rn  	fail_slowro  rp  r   r  r  r  r  r  r  r  r  r  r  r  r   r   r  r	  r  r   r1   r/   r  r    s       	% 	% 	%* * *.# # #' ' '- - -47 7 7	F 	F 	F/ / /.	# 	# 	## # #D D D4# # #8C C C"  ( ( (4$: $: $:LB B BB B B2 [2[ 566[ 899[X, , ,.>?@ @=Q =Q	@ @ :9 76 =Q~ [X (L (L (L M M! !M M!4F F F [X (2 (2 (2 3 3
# #3 3
#@ [X (? (? (? @ @N N@ @N" " "(/ / /4H H H0 0 0d [X (G (G (G H H
01 01H H
01d [X (G (G (G H H
? ?H H
?* [ 899[X'>??[/;;O# O# <; @? :9O#b< < <
 [X (8 9 9M M9 9M [X'L'L'LMMD D NMD D Dr1   r  r   )r!  rk  r  rw  ri  c                     d }t          j        |ddg|           }|j        sJ t          |j        dgd           d S )Nc                 0    t          j        | dz            S rA  rB  r-   s    r/   r|   z$test_minimize_with_scalar.<locals>.f  r  r1      )r  r5  rF  r`   r   r   )r
   r   r   r   r.   )r   r|   r   s      r/   test_minimize_with_scalarr    s[       
Ar;-
G
G
GC;CEC5t,,,,,,r1   c                       e Zd Zd ZddZddZddZd Zd Zd Z	e
j                            d	d
dgdd
gd
d
gg          d             Zd ZdS )TestLBFGSBBoundsc                 "    d| _         d| _        d S )N))r)   NNN)r)   r   )r&  rg   rn   s    r/   rp   zTestLBFGSBBounds.setup_method  s    /r1   r  c                 <    d|z  |d         |z  |d         |z  z   z  S )Nr\   r   r)   r   r   s      r/   r   zTestLBFGSBBounds.fun  s&    Qw!A$'AaD!G+,,r1   c                     ||dz
  z  S r(   r   r   s      r/   r   zTestLBFGSBBounds.jac  s    1q5zr1   c                 Z    |                      ||          |                     ||          fS rA   r   r   r   s      r/   fjzTestLBFGSBBounds.fj  s%    xx1~~txx1~~--r1   c                     t          j        | j        ddg| j        | j                  \  }}}|d         dk    sJ |d                     t          || j        d           d S )Nr   rK  )r   r&  r   taskr;   r   )r
   r  r   r   r&  r   rg   ro   r.   r|   r  s       r/   test_l_bfgs_b_boundsz%TestLBFGSBBounds.test_l_bfgs_b_bounds  ss    (Ar70404= = =1a }!!!1V9!!!4=t444444r1   c                     t          j        | j        ddgd| j                  \  }}}|d         dk    sJ |d                     t	          || j        d           d S )	Nr   rK  r  )r   r&  r   r!  r;   r   )r
   r  r  r&  r   rg   r"  s       r/   r  z%TestLBFGSBBounds.test_l_bfgs_b_funjac  sn    (1b'04= = =1a}!!!1V9!!!4=t444444r1   c                     t          j        | j        ddgd| j        | j                  }|d         sJ |d                     t          |j        | j        d           d S )	Nr   rK  r&  r   r   r&  r   r#  r;   r   )r
   r   r   r   r&  r   r.   rg   rl  s     r/   test_minimize_l_bfgs_b_boundsz.TestLBFGSBBounds.test_minimize_l_bfgs_b_bounds  sl    1b'*$(HT[B B B9~--s9~---t}4888888r1   r&  )r   r)   r  c                     t          j        t          d          5  t          j        | j        ddgd| j        |           d d d            d S # 1 swxY w Y   d S )Nz	.*bound.*r   r   rK  r&  r'  )r   r   rQ   r
   r   r   r   )ro   r&  s     r/   'test_minimize_l_bfgs_b_incorrect_boundsz8TestLBFGSBBounds.test_minimize_l_bfgs_b_incorrect_bounds  s     ]:[999 	; 	;dhB
"&(6; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   &AAAc                    g d}ddg}t          j        ||          D ]b\  }}t          j        | j        ddg|d|| j        dd i          }|d	         sJ |d
                     t          |j        | j        d           cd S )Nr  r%  r   r   rK  r&  finite_diff_rel_step)r   r   r   r&  r   r   r#  r;   r   )	r  r  r
   r   r   r&  r   r.   rg   )ro   r  argssr   r   r   s         r/    test_minimize_l_bfgs_b_bounds_FDz1TestLBFGSBBounds.test_minimize_l_bfgs_b_bounds_FD#  s    
 ,++"*477 	= 	=IC#DHq"gD+5(+DK-CT,JL L LC y>113y>111CE4=t<<<<<	= 	=r1   Nr%  )r   r   r   rp   r   r   r  r#  r  r(  r   rn  rp  r*  r.  r   r1   r/   r  r    s          - - - -   . . . .5 5 55 5 59 9 9 [X
7	
7	
7	(  
; ; 
;
= = = = =r1   r  c                   h   e Zd Zd Zd!dZd Zej                            d          d             Z	d Z
d Zd	 Zd
 Zd Zd Zej                            dg d          d             Zej                            dg d          d             Zej                            d          ej                            dg d          d                         Zd Zd Zej                            dddg          d             Zej                            d          ej                            de          ej                            dddg          ej                            dg d          d                                                 Zej                            dg d          d             Zd S )"TestOptimizeScalarc                     d| _         d S )Nr6   )rg   rn   s    r/   rp   zTestOptimizeScalar.setup_method4  s    r1   r6   c                     ||z
  dz  dz
  S )zObjective functionr4   r   r   )ro   r.   r{  s      r/   r   zTestOptimizeScalar.fun7  s    AzCr1   c                    t          j        | j                  }t          || j        d           t          j        | j        d          }t          || j        d           t          j        | j        d          }t          |d         | j        d           t          j        | j        d          }t          || j        d           d	}t          j        t          |
          5  t          j        | j        d           d d d            n# 1 swxY w Y   d}t          j        t          |
          5  t          j        | j        d           d d d            d S # 1 swxY w Y   d S )Nr;   r   r  r  brackTr   r   irK     /\(f\(xb\) < f\(xa\)\) and \(f\(xb\) < f\(xc\)\)r   rK  r   r)   \(xa < xb\) and \(xb < xc\)r   rK  r)   )r
   brentr   r   rg   r   r   rQ   )ro   r.   r#  s      r/   
test_brentzTestOptimizeScalar.test_brent;  s   N48$$4=t4444N4884444=t4444N48666!dm$7777N48=9994=t4444D]:W555 	7 	7N48:6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 1]:W555 	7 	7N48:6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s$   *DDD:E##E'*E'r   c                    t          j        | j                  }t          || j        d           t          j        | j        d          }t          || j        d           t          j        | j        d          }t          |d         | j        d           t          j        | j        d          }t          || j        d           t          j        | j        d	          }t          || j                   g d
}|D ]]}t          j        | j        dd          }t          j        | j        |d          }|d         |d         }}t          ||z
  |           ^d}t          j        t          |          5  t          j        | j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        | j        d           d d d            d S # 1 swxY w Y   d S )Nr;   r   r4  r5  Tr7  r   r8  r  )r   r)   r   )rh   r   r4   r:  r   r;  r<  r=  )	r
   goldenr   r   rg   r   r   r   rQ   )ro   r.   maxiter_test_casesrh   rU   nfev0r   r#  s           r/   test_goldenzTestOptimizeScalar.test_goldenP  sk   ODH%%4=t4444ODHH5554=t4444ODH$777!dm$7777ODHM:::4=t4444ODH!,,,4=)))&YY) 	0 	0G1$GGGB'tLLLAQ%14Ew////D]:W555 	8 	8ODHJ7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 1]:W555 	8 	8ODHJ7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s$   >F&&F*-F*G77G;>G;c                    t          j        | j        dd          }t          |dd           t          j        | j        dd          }t          || j        d           t          j        | j        t          j        dg          t          j        dg                    }t          || j        d           t          t          t           j        | j        dd           d S )Nr   r)   r  r   r   r;   )	r
   	fminboundr   r   rg   r+   rL   rP   rQ   r  s     r/   test_fminboundz!TestOptimizeScalar.test_fminboundp  s    txA..14((((txA..4=t4444tx1#!FF4=t4444j("4dh1EEEEEr1   c                 N   t          j        t          d          5  t          j        | j        t          j        d          d           d d d            n# 1 swxY w Y   t          j        | j        dt          j        d                    }t          || j
        d           d S )Nz.*must be finite scalars.*r   r)   r4   r)   r   r;   r   )r   r   rQ   r
   rG  r   r+   rd   rL   r   rg   r  s     r/   test_fminbound_scalarz(TestOptimizeScalar.test_fminbound_scalar{  s    ]:-IJJJ 	> 	>tx&)9)91===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> txBHQKK884=t444444s   .AAAc                 8    d }t          j        |dd           d S )Nc                     | dz  S rA  r   r-   s    r/   r   z,TestOptimizeScalar.test_gh11207.<locals>.fun  r  r1   r   )r
   rG  )ro   r   s     r/   test_gh11207zTestOptimizeScalar.test_gh11207  s,    	 	 	31%%%%%r1   c                    t          j        | j                  j        }t	          || j        d           t          j        | j        d          }|j        sJ t          j        | j        dt          d                    }|j        rJ t          j        | j        dd	d
          j        }t	          || j        d           t          j        | j        dd	          j        }t	          || j        d           t          j        | j        dd	d
          j        }t	          || j        d           t          j        | j        dd	d
          j        }t	          || j        d           t          j        | j        dd	          j        }t	          || j        d           t          j        | j        dd	d
          j        }t	          || j        d           t          j        | j        dd	d          j        }t	          |dd           t          j        | j        dd	d          j        }t	          || j        d           t          j        | j        t          j	        dg          t          j	        dg          ft          j	        dg          fd          j        }t	          || j        d           t          t          t           j        | j        ddd	           t          t          t           j        | j        t          j        d          dfdd	           t          j        | j        dt          j	        d          fd          j        }t	          || j        d           d S )Nr;   r   Brentr   r_   r  r   r4  r6   )bracketr   r   )r   r   r8  rB  )r   r)   Bounded)r&  r   r   r)   r  )r)   r   boundedr   r6   )r   r)   r&  r   r   r4   rF  )r
   minimize_scalarr   r.   r   rg   r   rW  r+   rL   rP   rQ   rd   r  s     r/   test_minimize_scalarz'TestOptimizeScalar.test_minimize_scalar  s   $TX..04=t4444$TXg>>>y$TXg-1!___> > >9$TXx*1'C C CCD 	
4=t4444$TXg*02 2 223 	
4=t4444$TX}*1'C C CCD 	
4=t4444$TXx*1(D D DDE 	
4=t4444$TXh*02 2 223 	
4=t4444$TX}*1(D D DDE 	
4=t4444$TXf6,57 7 778 	
14(((($TXf7,57 7 778 	
4=t4444$TXrx}}79x}}7F+-8SE??*=,57 7 7 89 	
 	4=t4444j(":DH#IG	E 	E 	E 	E 	j(":DH hqkk1-ig	O 	O 	O 	O $TXq"(1++6F,57 7 778 	
4=t444444r1   c                     	 	 dd}t          j        | j        d|t          d                    }t	          |j        | j        d	
           d S )Nr   r>   r5  c                 >   |d         |d         z   dz  } | |          }	d}
d}d}d}|rX|sV||k     rPd}|dz  }||z
  ||z   fD ]} | |g|R  }|
dz  }
||	k     r|}	|}d}| ||           |	|
|k    rd}n
|r|s||k     Pt          j        |	|||
|dk              S )Nr)   r   r  TFrJ  r`  )r   rR  r   rx  rL  rh   r"  r   rM  rN  rO  rP  rQ  rR  rU  rV  s                   r/   rW  z?TestOptimizeScalar.test_minimize_scalar_custom.<locals>.custmin  s)   QZ'!*,3ECJJEHEHD 4 EGOO 
#h.0@A ( (EC----EMHu}} % %#''HUOOO%(f*<*<D  4 EGOO  *u508519O O O Or1   )r   r   rY  rZ  )rR  r   r   r;   r   r[  )r
   rV  r   rW  r   r.   rg   )ro   rW  r   s      r/   test_minimize_scalar_customz.TestOptimizeScalar.test_minimize_scalar_custom  st    AD*.	O 	O 	O 	O8 &tx.5/3T/B/B/BD D D 	t}4888888r1   c                 <    t          j        | j        d           d S )Nr6   r   r
   rV  r   rn   s    r/   &test_minimize_scalar_coerce_args_paramz9TestOptimizeScalar.test_minimize_scalar_coerce_args_param  s      444444r1   r   )r>  rT  rB  c                 J    dD ]}t          j        | j        d|i            d S )N)r   r)   r4   r_   r   )r   r]  )ro   r   r   s      r/   	test_dispzTestOptimizeScalar.test_disp  s@     ! 	G 	GD$TX~FFFFF	G 	Gr1   c                 ,   |dk    rdddgini }t          j        | j        fd|i|}t          |d          sJ t          |d          sJ t          |d          sJ t          |d	          sJ t          |d
          sJ t          |d          sJ d S )NrT  r&  r  r   r   r.   r   r#  r   r   r   )r
   rV  r   rt   )ro   r   r  rN  s       r/   test_result_attributesz)TestOptimizeScalar.test_result_attributes  s    *0I*=*=(S"I&&2)$(LL6LVLLvs#####vy)))))vy)))))vu%%%%%vv&&&&&vu%%%%%%%r1   c           
      
   dgfd}d}d}t          j        d          5  t          j                    5  t          j        ddt
                     t          j        ddt                     t          j        dd	t                     dg|d
k    rd|ini }t          j        |fd|i||t          d          d}t          |j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   c                     dxx         dz  cc<   d         dk    rt           j        S | dz  dt          j        |           z  z   S )Nr   r)   r   r4   r>   )r+   r  rB   )r.   r  s    r/   r}   z0TestOptimizeScalar.test_nan_values.<locals>.func  sG    !HHHMHHHQx!||v!tcBF1IIo--r1   r;  r  r   r  r  r  r  rT  r&  rR  r  r  r   F)r+   r   r  r  ro  r  r  r
   rV  rW  r   r   )ro   r   r}   rR  r&  r  r   r  s          @r/   r  z"TestOptimizeScalar.test_nan_values  s   
 	. 	. 	. 	. 	. [*** 	- 	-H,C,E,E 	- 	-#H.A;OOO#4nF F F#5~G G G CE+1Y+>+>h''BF*4 E E E-3E<B373C3C3CE E E EC e,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s5   C8BC C8 C$	$C8'C$	(C88C<?C<c                     d }t          j        |          }t          |j        dd           t          j        |dddi          }t          |j        d	           d S )
Nc                     | dz  S rA  r   r-   s    r/   r|   zCTestOptimizeScalar.test_minimize_scalar_defaults_gh10911.<locals>.f  r  r1   r   r   r   )r)   r5  r  r  )r&  r   r)   )r
   rV  r   r.   )ro   r|   r   s      r/   %test_minimize_scalar_defaults_gh10911z8TestOptimizeScalar.test_minimize_scalar_defaults_gh10911  sx    	 	 	 &q))qt,,,,&q07/?A A Aq!!!!!r1   c                    d}t          j        t          |          5  t          j        t
          j        dt
          j        f           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        t
          j        t
          j        df           d d d            d S # 1 swxY w Y   d S )Nz+Optimization bounds must be finite scalars.r   r)   r  )	r   r   rQ   r
   rV  r+   rB   r  r  r  s     r/   'test_minimize_non_finite_bounds_gh10911z:TestOptimizeScalar.test_minimize_non_finite_bounds_gh10911(  sM    <]:S111 	A 	A$RVQK@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A]:S111 	A 	A$RVRVQK@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As#   -AAA=-B77B;>B;r>  rB  c                     d}t          j        t          |          5  t          j        t
          j        |d           d d d            d S # 1 swxY w Y   d S )Nz'Use of `bounds` is incompatible with...r   rJ  r   r&  )r   r   rQ   r
   rV  r+   rB   )ro   r   r  s      r/   2test_minimize_unbounded_method_with_bounds_gh10911zETestOptimizeScalar.test_minimize_unbounded_method_with_bounds_gh109111  s     8]:S111 	K 	K$RVF6JJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   "AAArs  r  r)   r;   fshape)r   r)   r)   r)   c                 Z   fd}d\  }}|dk    rt          ||f          nt          ||f          }|                    t          ||                     t          j        |fi |}|j        j        |j        j        cxk    r  ||j                  j        cxk    rk    sn J d S )Nc                 X    t          j        | dz                                          S Nr   )r+   rL   reshape)r.   rm  s    r/   r|   zITestOptimizeScalar.test_minimize_scalar_dimensionality_gh16196.<locals>.fA  s#    8AqD>>))&111r1   )r	  rI   rT  )rR  r  )r   r  )rW  updater
   rV  r.   shaper   )	ro   r   r  rm  r|   r{  br  r   s	      `     r/   +test_minimize_scalar_dimensionality_gh16196z>TestOptimizeScalar.test_minimize_scalar_dimensionality_gh161969  s    	2 	2 	2 	2 	2 1*0I*=*=$1v&&&&Aq6*** 	d&c222333&q33F33u{cgmGGGGqqxx~GGGGGGGGGGGGr1   )rT  r>  rB  c                 
   d }i }|dk    rdnd}ddg||<   ddd	}t          j        t          j        d
          5  t          j        |f||d| d d d            n# 1 swxY w Y   d|d<   t          j        |f||d| d S )Nc                     | dz
  dz  S r3   r   r-   s    r/   r|   zBTestOptimizeScalar.test_minimize_scalar_warnings_gh1953.<locals>.fP  r  r1   rT  r&  rR  r  r   Tr_   r  r  r   r   Fr   )r   r  r
   r  rV  )ro   r   r|   r  kwdr   s         r/   $test_minimize_scalar_warnings_gh1953z7TestOptimizeScalar.test_minimize_scalar_warnings_gh1953L  s   	 	 	  I--hh92hsA..\(2:JKKK 	/ 	/$Q /vw / /'-/ / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/   M67MMfMMMMMs   AA"%A"NrQ  )r   r   r   rp   r   r?  r   rn  ro  rE  rH  rK  rN  rW  rZ  r^  rp  r`  rb  r  rg  ri  rl  r   rw  r{  r   r1   r/   r0  r0  3  s                7 7 7* [ 5668 8 768>	F 	F 	F5 5 5& & &
:5 :5 :5x!9 !9 !9F5 5 5 [X'E'E'EFFG G GFG
 [X'E'E'EFF& & GF& [ 566[X'E'E'EFF- - GF 76-<" " "A A A [X':;;K K <;K [ 899[X'>??[UQI..[X'9'9'9::H H ;: /. @? :9H [X'E'E'EFFN N GFN N Nr1   r0  c                       e Zd Zej                            d          d             Zej                            dd          d             ZdS )TestBracketrs  c                    d }d}t          j        t          |          5  t          j        |dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        |dt
          j                   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        |d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        |d           d d d            n# 1 swxY w Y   d }d	}t          j        t          |          5  t          j        |d
dd           d d d            d S # 1 swxY w Y   d S )Nc                 *    d| k     | dk     z  r| dz  ndS NrK  r)   r4   g      Y@r   r-   s    r/   r|   z3TestBracket.test_errors_and_status_false.<locals>.fe  "    !VA.:1a44U:r1   9The algorithm terminated without finding a valid bracket.r   rK  r)   r  r5  c                 Z    d| dz  z  d| dz  z  z   d| dz  z  z
  d| dz  z  z   d| z  z
  dz   S )	Nr  r   r      r_      r4   r)   r   r-   s    r/   r|   z3TestBracket.test_errors_and_status_false.<locals>.fr  sE    19q1a4x'"q!t)3b1a4i?!a%G!KKr1   z8No valid bracket was found before the iteration limit...r   r^   r   r  )	r   r   ru   r
   rR  r+   r  r>  rB  )ro   r|   r#  s      r/   test_errors_and_status_falsez(TestBracket.test_errors_and_status_falseb  s   	; 	; 	; N]<w777 	' 	'QA&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']<w777 	, 	,QBF+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]<w777 	- 	-N1G,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]<w777 	. 	.OAW----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.	L 	L 	L M]<w777 	7 	7Qc26666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sY   AAA*!BBB=C  C$'C$D))D-0D-E::E>E>r   )r>  rB  c                     d }d}t          j        |d|          }|j        rJ ||j        v sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nc                 *    d| k     | dk     z  r| dz  ndS r  r   r-   s    r/   r|   z9TestBracket.test_minimize_scalar_success_false.<locals>.f|  r  r1   r  r  )rR  r   r_   r   r5  )r
   rV  r   r#  r   r   r   )ro   r   r|   r#  r   s        r/   "test_minimize_scalar_success_falsez.TestBracket.test_minimize_scalar_success_falsey  s    	; 	; 	; N&q'&III;#+%%%%x1}}}}w!||||w#~~~~~~r1   N)	r   r   r   r   rn  ro  r  rp  r  r   r1   r/   r}  r}  `  sn        [ 8997 7 :97, [X':;;  <;  r1   r}  c                  ^    t          t          t          j        t          j        d           d S )Ng{GzrA  )rP   rQ   r
   r>  r+   rG   r   r1   r/   test_brent_negative_tolerancer    s#    *hnbf$??????r1   c                   &    e Zd Zd Zd Zd Zd ZdS )TestNewtonCgc                 $   t          j        ddg          }t          j        t          j        |t          j        t          j        dd          }|j        sJ |j                    t          |j
        t          j        ddg          d           d S 	Nr   r\   r   rL  r   r   r  r   r)   r  r   )r+   rL   r
   r   r   r   r   r   r#  r   r.   ro   rU   r   s      r/   test_rosenbrockzTestNewtonCg.test_rosenbrock  s    XtSk""$,$6%-%8$('2	4 4 4
 {''CK'''rxA//d;;;;;;r1   c                 &   t          j        t                    }t          j        t
          |t          t          dd          }|j        sJ |j	                    t          |j        t          d           t          |j        t          d           d S )NrL  r;   )r   r   r   r  r  r   r   )r+   rL   rT   r
   r   
himmelblaurR   rS   r   r#  r   r.   himmelblau_xoptr   himmelblau_minr  s      r/   test_himmelblauzTestNewtonCg.test_himmelblau  s    Xm$$
 "$3%4'2$(* * * {''CK'''T::::d;;;;;;r1   c                    t          j        ddg          }t          j        t          j        |t          j        ddd          }|j        sJ |j                    t          |j	        t          j        ddg          d	           d S )
Nr   r\   r  r   rL  r  r)   r  r   )
r+   rL   r
   r   r   r   r   r#  r   r.   r  s      r/   test_finite_differencez#TestNewtonCg.test_finite_difference  s    XtSk""$,$6%.$('2	4 4 4
 {''CK'''rxA//d;;;;;;r1   c                 2   t          j        ddg          }t          j        t          j        |t          j        t          j                    dd          }|j        sJ |j                    t          |j
        t          j        ddg          d           d S r  )r+   rL   r
   r   r   r   r   r   r#  r   r.   r  s      r/   test_hessian_update_strategyz)TestNewtonCg.test_hessian_update_strategy  s    XtSk""$,$6%-]__$('2	4 4 4
 {''CK'''rxA//d;;;;;;r1   N)r   r   r   r  r  r  r  r   r1   r/   r  r    sP        < < <
< 
< 
<< < << < < < <r1   r  c                  B   t           j        j        } t          j        g d          }t          j        g d          }t          j        g d          }t          j        g d          }|t          j        g d          ddf|t          j        g d          d	d
f|t          j        g d          ddf|t          j        g d          ddf|t          j        g d          d	d
f|t          j        g d          ddf|t          j        g d          ddf|t          j        g d          ddf|t          j        g d          dd	f|t          j        g d          ddf|t          j        g d          ddf|t          j        g d          dd	f|t          j        g d          ddff}|D ]<\  }}}}	 | ||||          \  }
}t          |
|d           t          ||	d           =t          j        t          j         d	t          j         dg          }t          j        t          j        d
dt          j        g          }|t          j        g d          t          j         t          j        f|t          j        g d          d	d
f|t          j        g d          t          j         df|t          j        g d          dt          j        f|t          j        g d          d	d
f|t          j        g d          dt          j        f|t          j        g d          t          j         t          j        f|t          j        g d          dd	f|t          j        g d          t          j         df|t          j        g d          dt          j        f|t          j        g d          dd	f|t          j        g d          dt          j        ff}|D ]<\  }}}}	 | ||||          \  }
}t          |
|d           t          ||	d           =d S )N)333333rK  r   r  )r   r)   ffffff@r_   r`   r   r   r   )r`   r4   r  r   r\   r   r   r   r  r   r`   r)   r   r   rK  r)   r`   r   r)   r   r   r  r`   r   r   r)   r  r_   )r\   r)   r   r   )r\   r   rK  r4   r6   )r  r   rK  r4   gffffff?g333333@)r\   r   rK  r   r;   r   g333333)r
   r  _line_for_searchr+   rL   r   r  )line_for_searchlower_boundupper_boundrU   x1	all_testsr.   alphalminlmaxmimas               r/   test_line_for_searchr    s%   
 (9O (///00K(+++,,K 
---	 	 B	...	!	!B 
RXmmm$$dC0	RXmmm$$b!,	RXmmm$$dC0	RXmmm$$b!,	RXmmm$$b!,	RXnnn%%tS1	RXnnn%%tT2	RXmmm$$dC0	RXmmm$$b"-	RXmmm$$c3/	RXmmm$$b!,	RXmmm$$b"-	RXnnn%%tT2I  !* - -5$ E;DDBDt,,,,Dt,,,,, (RVGR"&"566K(BFAsBF344K 
RXmmm$$rvgrv6	RXmmm$$b!,	RXmmm$$rvgs3	RXmmm$$b"&1	RXmmm$$b!,	RXnnn%%tRV4	RXmmm$$rvgrv6	RXmmm$$b"-	RXmmm$$rvgs3	RXmmm$$b"&1	RXmmm$$b"-	RXnnn%%tRV4I !* - -5$ E;DDBDt,,,,Dt,,,,,- -r1   c            
         t           j        j        } d }t          j        g d          } ||          }t          j        t          j         gdz            }t          j        t          j        gdz            }t          j        g d          dft          j        g d          dft          j        g d          d	ft          j        g d
          dft          j        g d          dft          j        g d          dft          j        g d          dff}|D ]\  }} | ||||d          \  }	}
}t          |	 |||z            d           t          |
||z  d           t          |||z  d            | |||d|||          \  }	}
}t          |	 |||z            d           t          |
||z  d           t          |||z  d           d S )Nc                 ^    t          j        | t          j        g d          z
  dz            S N)r  r  r6   皙ٿr4   r+   rC   rL   r-   s    r/   r}   z$test_linesearch_powell.<locals>.func  -    vq28$:$:$:;;;ABBBr1   r  r   r  rK  r  r4   r  r6   r  r  r  r   r)   r         ?r`   r   r)   r)   皙?r  r   rK  r)   r   )fvalr  r;   r   r  r  r  r  )r
   r  _linesearch_powellr+   rL   r  r   linesearch_powellr}   r  r  r  r  r  xilr|   r   r9   s               r/   test_linesearch_powellr    s6    *=C C C	---	 	 B488D(RVG9q=))K(BF8a<((K 
---	 	 "%	---	 	 !$	---	 	 #&	---	 	 #&	...	!	!4(	---	 	 #&	...	!	!4(I  6 6A++D"b154A A A1i44B<<d33331r6----	1r65555++D"bd8C8C157 7 71i 	44B<<d33331r6----	1r6555556 6r1   c            
         t           j        j        } d }t          j        g d          } ||          }t          j        dgdz            }t          j        dgdz            }t          j        g d          dft          j        g d          d	ft          j        g d
          dft          j        g d          dft          j        g d          dft          j        g d          dft          j        g d          dff}|D ]c\  }} | |||d|||          \  }	}
}t          |	 |||z            d           t          |
||z  d           t          |||z  d           dt          j        dgdz  dgz             }t          j        dgdz  dgz             }t          j        g d          dft          j        g d          dft          j        g d
          dft          j        g d          dft          j        g d          dft          j        g d          dft          j        g d          dff}|D ]c\  }} | |||d|||          \  }	}
}t          |	 |||z            d           t          |
||z  d           t          |||z  d           dt          j        g d          } ||          }t          j        g d          dft          j        g d          dft          j        g d
          dft          j        g d          d ff}|D ]i\  }} | |||d|||          \  }	}
}t          |	 ||||z  z             d           t          |
|||z  z   d           t          |||z  d           jt          j        g d          } ||          }t          j        dt          j         t          j         dg          }t          j        t          j        dt          j        dg          }t          j        g d          dft          j        g d          dft          j        g d
          dft          j        g d          dft          j        g d          dft          j        g d          dft          j        g d          dff}|D ]c\  }} | |||d|||          \  }	}
}t          |	 |||z            d           t          |
||z  d           t          |||z  d           dt          j        g d          } ||          }t          j        g d          dft          j        g d          dft          j        g d
          dft          j        g d          d ff}|D ]i\  }} | |||d|||          \  }	}
}t          |	 ||||z  z             d           t          |
|||z  z   d           t          |||z  d           jd S )!Nc                 ^    t          j        | t          j        g d          z
  dz            S r  r  r-   s    r/   r}   z,test_linesearch_powell_bounded.<locals>.func#	  r  r1   r  g       r   r  r  rK  r  r4   r  r6   r  r  r  r  r  r  r  r  r   r  r;   r   g333333ӿr_   g?r  r]   g333333ÿ)r  r   r   r4   r   g333333)r
   r  r  r+   rL   r   r  r  s               r/   test_linesearch_powell_boundedr  	  s    *=C C C	---	 	 B488D (C57##K(B46""K 
---	 	 "%	---	 	 !$	---	 	 #&	---	 	 #&	...	!	!4(	---	 	 #&	...	!	!4(I  6 6A++D"bd8C8C157 7 71i 	44B<<d33331r6----	1r655555 (C57bT>**K(C57bT>**K 
---	 	 #&	---	 	 #&	---	 	 #&	---	 	 #&	...	!	!2&	---	 	 #&	...	!	!4(I  6 6A++D"bd8C8C157 7 71i 	44B<<d33331r6----	1r655555 
...	!	!B488D 
---	 	 "%	---	 	 #&	---	 	 #&	---	 	 $'	I  6 6A++D"bd8C8C157 7 71i 	44QV,,488882B;T2222	1r655555 
---	 	 B488D (C"&26'2677K(BFC455K 
---	 	 #&	---	 	 #&	---	 	 #&	---	 	 #&	...	!	!2&	---	 	 #&	...	!	!4(I  6 6A++D"bd8C8C157 7 71i 	44B<<d33331r6----	1r655555 
...	!	!B488D 
---	 	 "%	---	 	 #&	---	 	 #&	---	 	 $'	I  6 6A++D"bd8C8C157 7 71i 	44QV,,488882B;T2222	1r6555556 6r1   c                      t          j        ddgddg          fd} t          j        | ddgd           t          j        dgdgdg	          d
 }t          j        |dgd           d S )Nr   333333?r  c                     | \  }}| j         k                                    r| j        k                                    sJ |dz  |dz  z   S rA  )lbrK   ub)r.   r{  rv  r&  s      r/   r   ztest_powell_limits.<locals>.fun	  sS    1VY##%%@1	>*>*>*@*@@@@AvQr1   r  r  r)   T)r  r  keep_feasiblec                 F    | dk    r| dk    sJ t          j        |           S r  r*   r-   s    r/   r}   z test_powell_limits.<locals>.func	  s%    Avv!q&&&&vayyr1   r^   rj  )r   rU   r   r&  )r
   r   r   )r   r}   r&  s     @r/   test_powell_limitsr  	  s    _aVc2Y//F    
 csBiHHHH _!dWEEEF   $C5&IIIIIIr1   c                      t           d d g} | D ]6}t          j        |ddgd          }t          j        |j                  sJ 7d S )Nc                 D    t          j        t          |                     S rA   r+   rL   r   r-   s    r/   r  z$test_powell_output.<locals>.<lambda>	  s    RXeAhh// r1   c                 F    t          j        t          |           g          S rA   r  r-   s    r/   r  z$test_powell_output.<locals>.<lambda>	  s    28U1XXJ;O;O r1   r  r  r  )rU   r   )r   r
   r   r+   isscalarr   )funsr   r   s      r/   test_powell_outputr  	  se    //1O1OPD $ $b	(CCC{37######$ $r1   c                       e Zd Z eej                  d             Z eej                  d             Z eej	        ej
                  d             ZdS )	TestRosenc                     |                     g d          }t          t          j        |          |                     d                     d S )Nr[   r`   )r  r#   r
   r   ro   r  r.   s      r/   
test_rosenzTestRosen.test_rosen	  sN     JJyyy!!q))

2	( 	( 	( 	( 	(r1   c           	          |                     g d          }t          t          j        |          |                    ||                     d          j                             d S )N)r)   r)   r)   r)   r\   )r  )r  r#   r
   r   
zeros_liker  r  s      r/   test_rosen_derzTestRosen.test_rosen_der	  se    JJ|||$$*1--arzz"~~/CDD	F 	F 	F 	F 	Fr1   c                 :   |                     d          }|                     g d          }|                     g d          }t          j        ||          }|                    ||j                  }t          j        |          |z  }t          ||           d S )Nr\   )r_   r   r   )r4   r4   r4   )r  r
   rosen_hess_prodr  r  r   r#   )ro   r  oner.   r   hpdothps          r/   test_hess_prodzTestRosen.test_hess_prod	  s    jjnn JJyyy!!JJyyy!!%a++IIa###A&&*E"""""r1   N)r   r   r   r$   r
   r   r  r   r  r   r  r  r   r1   r/   r  r  	  s        x~&&( ( '&( x)**F F +*F
 x*H,DEE	# 	# FE	# 	# 	#r1   r  c                 N    | \  }}||z  |z   dz
  }|||z  z   dz
  }||z  ||z  z   S )zx
    R^2 -> R^1 test function for optimization. The function has four local
    minima where himmelblau(xopt) == 0.
    r  r   r   )r   r.   r:  r{  rv  s        r/   r  r  	  sA    
 DAq	!a"A	AaC!AQ319r1   c                     | \  }}t          j        d|dz  z  d|z  |z  z   d|z  z
  d|dz  z  z   dz
  d|dz  z  d|z  |z  z   d|dz  z  z   d|z  z
  dz
  g          S )Nr   r_   *   r4         rZ  rg  r   r.   r:  s      r/   rR   rR   	  s    DAq8Qq!tVac!e^bd*Qq!tV3b8q!tVac!e^a1f,r!t3b8: ; ; ;r1   c                     | \  }}t          j        d|dz  z  d|z  z   dz
  d|z  d|z  z   gd|z  d|z  z   d|z  d|dz  z  z   dz
  gg          S )Nr  r4   r   r  r  rg  r  s      r/   rS   rS   	  su    DAq8bAg!mb(!A#!)4cAaCi1r!Q$w!346 7 7 7r1   gHzGѿgr_   r4   r`   c                      d } d }d }d| dd|dd|df}d }t          j        |g dd|	          }t          |j        g d
d           d S )Nc                 t    t          j        dd| d         z  z
  d| d         z  z
  d| d         z  z
  g          S )N   rI   r   r  r)   r  r4   rg  r-   s    r/   r}   z0test_minimize_multiple_constraints.<locals>.func	  s;    xcAaDj31:5qtCDEEEr1   c                 8    t          j        | d         g          S r(   rg  r-   s    r/   func1z1test_minimize_multiple_constraints.<locals>.func1	      x1r1   c                 8    t          j        | d         g          S rA  rg  r-   s    r/   r  z1test_minimize_multiple_constraints.<locals>.func2	  r  r1   r  r  c                 <    d| d         | d         z   | d         z   z  S )NrK  r   r)   r4   r   r-   s    r/   r|   z-test_minimize_multiple_constraints.<locals>.f	  s"    QqTAaD[1Q4'((r1   r  r  r  )}   r   r   r  r   rH  )r}   r  r  r  r|   r   s         r/   "test_minimize_multiple_constraintsr  	  s    F F F           D))E**E**,D) ) ) 
Ayyyd
K
K
KCCE;;;U333333r1   c                   Z    e Zd Zd Zej                            d          d             ZdS )TestOptimizeResultAttributesc                     ddg| _         t          j        | _        t          j        | _        t          j        | _        t          j        | _	        ddg| _
        d S )Nr   )r`   r  )rU   r
   r   r}   r   r   r   r   r  r   r&  rn   s    r/   rp   z)TestOptimizeResultAttributes.setup_method
  sD    a&N	%'	-
 ),r1   r4   c           
         g d}ddgi}t           D ]}t          j                    5  t          j        ddt                     t          j        | j        | j        || j	        | j
        | j                  }d d d            n# 1 swxY w Y   |D ]6}||v r|||         v rt          ||          sJ |t          |          v sJ 7t          |j        t                     sJ d S )N)r   r   r.   r   r   r   r#  rl  r   r   z7Method .+ does not use (gradient|Hessian.*) information)r   r   r   r   )r   r  r  ro  r  r
   r   r}   rU   r   r   r   rt   dirr  r#  str)ro   
attributesskipr   r   	attributes         r/   test_attributes_presentz4TestOptimizeResultAttributes.test_attributes_present
  sd   ! ! !
5'"& 	0 	0F(** : :'+-;= = = '	476,0H49.2j: : :	: : : : : : : : : : : : : : : ( - -	T>>i4<&?&?sI..... CHH,,,,, ck3//////!	0 	0s   ABB	B	N)r   r   r   rp   r   rn  r  r  r   r1   r/   r  r  
  sO        - - - [10 0 0 0 0r1   r  c                 ~    | \  }}|\  }}}}}}	}
}}}}}}||dz  z  ||z  |z  z   ||dz  z  z   ||z  z   ||z  z   |	z   S rA  r   re  r   r.   r:  r{  rv  rr   r  r   r|   r@  r  r  r:  rD  r  r  s                    r/   f1r  '
  sj    DAq06-Aq!Q1aAq!Q1Hq1uqy 1q!t8+ac1AaC7!;<r1   c                     | \  }}|\  }}}}}}	}
}}}}}}|
 t          j        ||z
  dz  ||z
  dz  z    |z            z  S rA  r*   r   s                    r/   f2r  -
  _    DAq06-Aq!Q1aAq!QBrv1qAaC!8+,u45556r1   c                     | \  }}|\  }}}}}}	}
}}}}}}| t          j        ||z
  dz  ||z
  dz  z    |z            z  S rA  r*   r   s                    r/   f3r  3
  r  r1   c                 T    t          | g|R  t          | g|R  z   t          | g|R  z   S rA   )r  r  r  )re  r   s     r/   
brute_funcr  9
  s6    a>&>>>BqN6NNN*R^F^^^;;r1   c                   x    e Zd Zd Zd Zd Zd Zej        	                    d          d             Z
d Zd Zd	S )
	TestBrutec                     d| _         t          ddd          t          ddd          f| _        t          j        ddg          | _        d S )Nr4   r_   r   r   r   r   ,   rK  r4   r  r)   r  r^   r  r         ?g_}gi?)r   slicerrangesr+   rL   rg   rn   s    r/   rp   zTestBrute.setup_method?
  sG    Db!T**E"a,>,>?+z!:;;r1   c                     t          |g|R  S rA   )r  )ro   re  r   s      r/   r  zTestBrute.brute_funcD
  s    !%f%%%%r1   c                    t          j        t          | j        | j        dt           j                  }t          |d         | j        d           t          |d         t          | j        g| j        R  d           t          j        t          | j        | j        dt           j                  }t          |d         | j        d           t          |d         t          | j        g| j        R  d           t          j        | j        | j        | j        dt           j                  }t          |d         | j        d           d S )NTr   r   finishr   r   r   r)   )	r
   bruter  r  r   r.  r   rg   r   )ro   resbrutes     r/   
test_brutezTestBrute.test_bruteH
  sK   >*dl.28=J J JT]>>>>Z%L%L%L%L!	# 	# 	# 	# >*dl.2)1):< < < 	T]>>>>Z%L%L%L%L!	# 	# 	# 	#
 >$/4<'+{)1):< < < 	T]>>>>>>r1   c                 >    d }t          j        |dgdd            d S )Nc                 f    t          | j                  dk    sJ | j        d         dk    sJ | dz  S )Nr)   r   r4   )r  ru  r-   s    r/   r|   zTestBrute.test_1D.<locals>.fb
  s7    qw<<1$$$$71:????6Mr1   r  r_   )Nsr  )r
   r  )ro   r|   s     r/   test_1DzTestBrute.test_1D_
  s4    	 	 	
 	q7)$777777r1   r   c                    t          j        t          | j        | j        dd           }t          j        t          | j        | j        dd d          }t          |d         |d                    t          |d         |d                    d S )NTr  r4   )r   r   r  workersrK  r   )r
   r  r  r  r   r   )ro   r  	resbrute1s      r/   test_workerszTestBrute.test_workersi
  s     >*dl.24A A A N:t|$+/3D!M M M	 		"x|444	!hqk22222r1   c                     t           j                            d          fd}d}t          j        t
          |          5  t          j        || j        | j	        d           d d d            d S # 1 swxY w Y   d S )Nr8   c                 4                         d          dz  S rt  ru  )re  r   r=   s     r/   r}   z,TestBrute.test_runtime_warning.<locals>.funcx
  s    ::a==4''r1   zFfinal optimization did not succeed.*|Maximum number of function eval.*r   T)r   r   )
r+   r7   ry  r   r  r  r
   r  r  r   )ro   capsysr}   r  r=   s       @r/   r  zTestBrute.test_runtime_warningu
  s    i##D))	( 	( 	( 	( 	( W\.444 	L 	LN4DKdKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   #A33A7:A7c                 z    d }t          j        |t          ddd          fd          }t          |d           d S )Nc                     | |d         z  S rR  r   )r.   r   s     r/   r|   z+TestBrute.test_coerce_args_param.<locals>.f
  s    Q<r1   r  r   r  r4   r\  r   )r
   r  r  r   )ro   r|   r  s      r/   test_coerce_args_paramz TestBrute.test_coerce_args_param
  sN    	  	  	  >!eB3&7&7%9BBB!$$$$$r1   N)r   r   r   rp   r  r  r  r   rn  r  r  r  r%  r   r1   r/   r
  r
  =
  s        < < <
& & &? ? ?.8 8 8 [2	3 	3 	3L L L% % % % %r1   r
  r  c                    	 dd l } dd l		fd	fddfd}fd}| j                                        5 }g }|                    |                    |                     |                    |                    |                     |D ]}|                                 	 d d d            d S # 1 swxY w Y   d S )Nr   c                 D                         d           | d         dz  S )Nr>   r   r4   sleepr.   times    r/   
objective1z*test_cobyla_threadsafe.<locals>.objective1
  s    

3tQwr1   c                 J                         d           | d         dz
  dz  S )Nr>   r   r)   r4   r(  r*  s    r/   
objective2z*test_cobyla_threadsafe.<locals>.objective2
  s$    

3!Q{r1   COBYLAc                  4    t          j        dg           S Nr`   r   rz  )
min_methodr,  s   r/   
minimizer1z*test_cobyla_threadsafe.<locals>.minimizer1
  '     '*e-79 9 9 	9r1   c                  4    t          j        dg           S r1  rz  )r2  r.  s   r/   
minimizer2z*test_cobyla_threadsafe.<locals>.minimizer2
  r4  r1   )concurrent.futuresr+  futuresThreadPoolExecutorrx   submitrN  )

concurrentr3  r6  pooltasksrs   r2  r,  r.  r+  s
         @@@@r/   test_cobyla_threadsafer>  
  sn   
 KKK         J9 9 9 9 9 9
9 9 9 9 9 9
 
		.	.	0	0 DT[[,,---T[[,,--- 	 	AHHJJJJ		                 s   A,B88B<?B<c                   l    e Zd Zd Zd Zej                            d          d             Zd Z	d Z
dS )TestIterationLimitsc                 6    t          j                    | _        d S rA   )ri   rj   rO  rn   s    r/   rp   z TestIterationLimits.setup_method
  s    !))r1   c                 B   t          | j        d          sd| j        _        | j        xj        dz  c_        t          j        |d         dz  |d         dz  z             t          j        |d         |d                   }}t          j        |dz  |z             |dz  z   S )Nrr   r   r)   r4   r  r^   )rt   rO  rr   r+   r  arctan2rB   )ro   r-  rV   rs   s       r/   	slow_funczTestIterationLimits.slow_func
  s    t}c** 	 DMO1wqtQwqtQw''AaD!A$)?)?1vadQh#%%r1   r   c                 2    |                      dd           d S )Nrw     check_limitsrn   s    r/   test_neldermead_limitz)TestIterationLimits.test_neldermead_limit
  s    ------r1   c                 2    |                      dd           d S )Nrj  ra   rG  rn   s    r/   test_powell_limitz%TestIterationLimits.test_powell_limit
  s    (D)))))r1   c           
      2   ddgddgddgfD ]	}dD ]j}d| j         _        t          j        | j        ||d|i          }| j         j        |d         k    sJ |d	         r|d         |k     sJ \|d         |k    sJ kdD ]F}t          j        | j        ||d
|i          }|d	         r|d         |k    sJ 8|d         |k    sJ Gddgddgdt
          j        gfD ]\  }}d| j         _        t          j        | j        ||||d          }| j         j        |d         k    sJ |d	         r|d         |k     r|d         |k    sJ l|d         |k    s|d         |k    sJ t
          j        d gd t
          j        gfD ]\  }}d| j         _        t          j        | j        ||||d          }| j         j        |d         k    sJ |d	         r&||d         |dz  k     sJ e|d         |dz  k    sJ w|d         |dz  k    s|d         |dz  k    sJ d S )Nr>   r)   r4   )r6  i    r   rx  r   r   r   rh   r   r6  rM  )rh   rx  )rO  rr   r
   r   rD  r+   r  )ro   r   default_itersstart_vmfevr   mits          r/   rH  z TestIterationLimits.check_limits
  s   c
QFQF3 ,	> ,	>G' 	/ 	/"#'/51940@B B B }#f+5555y> /v;-----v;$.....& - -'/51:C0@B B B y> -u:,,,,,u:,,,,,!2httRVnE 
D 
D	c"#'/5<?;?1A 1AB B B }#f+5555y> Dv;--#e*2C2C2C2C2Cv;$..#e*2C2C2C2C!vtntRVn= > >	c"#'/5<?;?1A 1AB B B }#f+5555y> >|"6{]1_<<<<<"5z]1_<<<<<K=?::"5z]1_<<<<>=,	> ,	>r1   N)r   r   r   rp   rD  r   rn  r  rI  rK  rH  r   r1   r/   r@  r@  
  s|        * * *& & & [2. . .* * *-> -> -> -> ->r1   r@  c                  0   d } d }d }g d}|D ]>}t          j        | t          j        dg          |          }|j        j        dk    sJ ?g d}|D ]@}t          j        | t          j        dg          |||	          }|j        j        dk    sJ Ad S )
Nc                     | | z  S rA   r   r-   s    r/   r   z2test_result_x_shape_when_len_x_is_one.<locals>.fun
  s    1ur1   c                     d| z  S Nr  r   r-   s    r/   r   z2test_result_x_shape_when_len_x_is_one.<locals>.jac
  s    Avr1   c                 .    t          j        dgg          S rU  rg  r-   s    r/   r   z3test_result_x_shape_when_len_x_is_one.<locals>.hess
  s    x"r1   )	rw  r  r   r   r&  r  r/  COBYQAr  r>   r   rn  )r  r  r  r  r  rL  r  )r
   r   r+   rL   r.   ru  )r   r   r   r  r   r   s         r/   %test_result_x_shape_when_len_x_is_onerX  
  s             , , ,G # #RXse__VDDDu{d""""", , ,G # #RXse__V%)+ + +u{d"""""# #r1   c                       e Zd Zd Zd ZdS )FunctionWithGradientc                 6    t          j                    | _        d S rA   )ri   rj   number_of_callsrn   s    r/   r  zFunctionWithGradient.__init__  s    (00r1   c                     t          | j        d          sd| j        _        | j        xj        dz  c_        t          j        |dz            d|z  fS )Nrr   r   r)   r4   )rt   r\  rr   r+   rC   r  s     r/   r  zFunctionWithGradient.__call__  sT    t+S11 	'%&D "!#vad||QU""r1   Nr  r   r1   r/   rZ  rZ  
  s2        1 1 1# # # # #r1   rZ  c                      t                      S rA   )rZ  r   r1   r/   function_with_gradientr_    s    !!!r1   c                    t          |           }t          j        ddg          }t           ||          d           | j        j        dk    sJ t          |                    |          d|z             | j        j        dk    s
J d            t           |d|z            dd	           | j        j        dk    s
J d            d S )
Nr\   r  r  r)   r4   zHfunction is not recomputed if gradient is requested after function valueg      4@(different input triggers new computationr  )r   r+   rL   r   r\  rr   
derivativer_  memoized_functionrU   s      r/   )test_memoize_jac_function_before_gradientre    s    "#9::	3*		B%%b))3///!13q8888%0044a"f===!13q888	8 988 !b&!!4:< < < < "13q8882 98888r1   c                    t          |           }t          j        ddg          }t          |                    |          d|z             | j        j        dk    sJ t           ||          d           | j        j        dk    s
J d            t          |                    d|z            d|z  d	           | j        j        dk    s
J d            d S )
Nr\   r  r4   r)   r  zHfunction is not recomputed if function value is requested after gradientr   ra  r  )r   r+   rL   r   rb  r\  rr   rc  s      r/   )test_memoize_jac_gradient_before_functionrg  -  s    "#9::	3*		B%0044a"f===!13q8888%%b))3///!13q888	8 988 $$QV,,a"f:< < < < "13q8882 98888r1   c           	      z   t          |           }|j        }t          j                    }t	          j        ddg          }t          ||d||dd          }| j        j        dk    sJ |	                    |dz              | j        j        dk    sJ |	                    |dz              | j        j        d	k    sJ dS )
z Tests that using MemoizedJac in combination with ScalarFunction
        and BFGS does not lead to repeated function evaluations.
        Tests changes made in response to GH11868.
    r\   r^   r   Nr)   r>   r4   rI   r_   )
r   rb  r
   r   r+   rL   r   r\  rr   r   )r_  rd  r   r   rU   scalar_functions         r/   test_memoize_jac_with_bfgsrj  @  s    
 ##9::

&C=??D	3*		B$2r3dD: :O!13q8888S!!!!13q8888S!!!!13q888888r1   c                      t                      5  t          j        d t          j         t          j        d           d d d            d S # 1 swxY w Y   d S )Nc                 2    t          j        | dz  g          S rA  rg  r-   s    r/   r  ztest_gh12696.<locals>.<lambda>Y  s    bh1v&& r1   Fr   )r   r
   rG  r+   r"  r   r1   r/   test_gh12696rm  U  s    			 C C&&E	C 	C 	C 	CC C C C C C C C C C C C C C C C C Cs   /AAAc                     t           j                            d          } |                     d          }t          j        g d          t          j        g d          }|k    dfd	fdfdfd	}fd
}fd}fd}fd}fd}t	          |t           j         d          }	t	          |t           j         d|          }
t	          |t           j         d          }t	          |t           j         d|          }d}dddfdddf}d t          f}dg g f|	|
f||f|
g|
gf|g|gf|	|g|
|gf|	|g|
|gf|
|g|
|gff	}d ||f}|||||||d	}|S )Ni/  r   )r   r4   rK  r  )r_   r4   r4   r  Tc                 f    |r| j         dk    sJ |rt          |                              d S d S rr  )rK  r   )r.   
check_sizecheck_valuesi_ebr  s      r/   check_xz(setup_test_equal_bounds.<locals>.check_xf  sJ     	6Q;;;; 	/AdGRX.....	/ 	/r1   c                 B     |            t          j        |           S rA   r  r.   rs  s    r/   r}   z%setup_test_equal_bounds.<locals>.funcl  s     


~a   r1   c                 B     |            t          j        |           S rA   )r
   r   ru  s    r/   r   z%setup_test_equal_bounds.<locals>.gradp  s!    


!!$$$r1   c                      |            d S rA   r   )r.   r   rs  s     r/   r"  z)setup_test_equal_bounds.<locals>.callbackt  s    




r1   c                 V    t          | t                    sJ  | j                   d S rA   )r  r   r.   )r  rs  s    r/   	callback2z*setup_test_equal_bounds.<locals>.callback2w  s4    -~>>>>>#%&&&&&r1   c                 8     | d           | dd         dz
  S )NFrq  r   r)   r   ru  s    r/   constraint1z,setup_test_equal_bounds.<locals>.constraint1{  s*    &&&&1vzr1   c                 T     | d           t          j        |           }d|d<   |S )NFr{  r)   r   r+   r  r.   dcrs  s     r/   	jacobian1z*setup_test_equal_bounds.<locals>.jacobian1  5    &&&&]11	r1   c                 8     | d           | dd         dz
  S )NFr{  r4   r_   r^   r   ru  s    r/   constraint2z,setup_test_equal_bounds.<locals>.constraint2  s*    &&&&1v|r1   c                 T     | d           t          j        |           }d|d<   |S )NFr{  r)   r4   r~  r  s     r/   	jacobian2z*setup_test_equal_bounds.<locals>.jacobian2  r  r1   r   )r&  r  r  Fr  c                 0     |            |           fS rA   r   )r.   r}   r   s    r/   r  z)setup_test_equal_bounds.<locals>.<lambda>  s    Qa1 r1   c                 <    t          t          | |                    S rA   )listzipr  r  s     r/   r  z)setup_test_equal_bounds.<locals>.<lambda>  s    $s2r{{"3"3 r1   r  )	r  kwdsbound_typesr^  	callbacksr  r  rU   rr  )TT)r+   r7   ry  rL   r   r  r   )r=   rU   r  r"  ry  r|  r  r  r  c1ac1bc2ac2br  r  r  r^  r  datars  r}   r   rr  r  s                      @@@@@r/   setup_test_equal_boundsr  ^  s   
)


&
&C	AB	"""	#	#B	///	"	"B"HD/ / / / / / /! ! ! ! !% % % % %    ' ' ' ' '                 kBF7A
6
6C
kBF7Ay
A
AC
kBF7A
6
6C
kBF7Ay
A
AC +G ''&&11111 D 43K  "b:SzEC5>SEC5>#Jc
+#Jc
+#Jc
+-K x+I[&YBb$8 8D Kr1   z0Failures due to floating point issues, not logicdicts)mode	Compilersfortrannamez
intel-llvmr  r  r  
bound_typer  r^  r"  r  c           	         t          j                    dk    r&| dk    r |d         du r|t          j        d           t          d         t          d         }}t          d	         t          d
         }}|\  }	}
|	r| dk    st          j        d           | dv rMt          |          r>t          j        |          }dt          |j	                  v rt          j        d           |	|
k    } |||          }|
                    || ||	|d           t          j        di |}t          j        t          j        || t          j        ||
          }|j        sJ t!          |j        |j        d           t!          |j        |j        d           |s
|d         du rt&          j        |j        |<   |j        j        d         dk    sJ t!          |j        |         |j        |         d           |d         s|	st/          |t0                    spd }t          j        ||ddg         | |ddd                   }t!          |j        |j                   t!          |j        ddg         |j        d           dS dS dS dS )z
    Tests that minimizers still work if (bounds.lb == bounds.ub).any()
    gh12502 - Divide by zero in Jacobian numerical differentiation when
    equality bounds constraints are used
    aarch64r  r   FNzTolerance violation on aarchr  r  rU   rr  r  z)Only SLSQP supports nonlinear constraints)r  r  r  z,SLSQP, TNC don't support intermediate_result)rU   r   r&  r^  r"  )r   r   r&  r^  r  r   gMb@?r   r   r;   c                     t          j        t           j        dt           j        dg          }| |ddg<   t          j        |          S )Nr4   rK  r   )r+   rL   r  r
   r   )r.   new_xs     r/   r   ztest_equal_bounds.<locals>.fun  s;    Hbfa455EE1a&M>%(((r1   r4   rk  g>r   )platformmachiner   r  eb_datacallableinspect	signaturer	  
parametersrt  r
   r   r   r   r   r   r   r.   r+   r  r   ru  r  r   )r   r  r  r^  r"  r  r  rU   rr  test_constraintsreference_constraintssig	fd_neededr&  r   expectedr   fd_ress                     r/   test_equal_boundsr    s     	i''FeOOUu$$)=2333T]GDMBt}gfoB.9++ A' 1 1?@@@!!!hx&8&8!)) C$7$777KFGGG "%::IZBFKKrVv 0hH H I I I


#
#d
#
#C F%-%7-BD D DH
 ;CGX\7777CE8:D1111 $DK5((VT7=q    CGDM8<#5DAAAAK <+ <z&&/I/I <	) 	) 	)
 "3#%q!f:*0*01+7 7 7 	,,, 	q!fvxd;;;;;;%< < < < < <r1   c                    dd}ddg}d}t          j        ||||           }|j        sJ t          |j         |ddg                     |j        dk    sJ |j        d	k    sJ d
}t          j        |||| |          }|j        sJ t          |j         |ddgd                     |                                 dk    rd }t          |t          j
         d          }t          j        |||| |g          }|j        du sJ t          |j         |ddg                     |j        dk    sJ d}|j                            |          sJ t          |t          j
         d          }t          j        |||| |g          }|j        du sJ t          |j         |ddg                     |j        dk    sJ d}|j                            |          sJ d S d S )Nr)   c                 F    t           j                            |           |z   S rA   )r+   linalgnorm)r.   p1s     r/   r|   z test_all_bounds_equal.<locals>.f  s    y~~a  2%%r1   ro  )r4   r4   )r\   rG  rF  r\   r  z/All independent variables were fixed by bounds.)r4   rU  r4   r  c                 *    t          j        |           S rA   rB  r-   s    r/   conz"test_all_bounds_equal.<locals>.con  s    6!99r1   r`   )r&  r   r^  Fz3All independent variables were fixed by bounds, butr   Tz8All independent variables were fixed by bounds at valuesrn  )r
   r   r   r   r   r   r#  upperr   r+   r  r  )	r   r|   r&  rU   r   r   r  nlcr#  s	            r/   test_all_bounds_equalr    sI   & & & & fF	B

Ar&
@
@
@C;CGQQSz]]+++8q====;KKKKKD

Ar&d
K
K
KC;CGQQSz1--...||~~  	 	 	!#w44r&cU
 
 
 {e####C:///x1}}}}G{%%g.....!#w22r&cU
 
 
 {d""""C:///x1}}}}L{%%g.....+ ! * 	/.r1   c                      d } d }d|dg}dgdz  }d|d<   t          j        | g d	d
||           |d         d         |k    sJ d S )Nc                 T    | d         dz  | d         dz  z   | d         | d         z  z   S )Nr   r_   r)   r4   r   r-   s    r/   r|   ztest_eb_constraints.<locals>.f6  s.    tQw1q 1Q4!9,,r1   c                 N    | d         | d         z   | d         z   | d         z   dz
  S )Nr   r)   r4   r_   (   r   r-   s    r/   cfunz!test_eb_constraints.<locals>.cfun9  s+    tad{QqT!AaD(2--r1   r  r  )r   r  r   )r   r   r)   r)   r4   r_   r   r  )rU   r   r&  r^  r   r   rz  )r|   r  r^  r&  s       r/   test_eb_constraintsr  3  s    - - -. . . #4001KY]FF1I	<<    q>% D((((((r1   c                  *   t           t          t          t          t          t
          d} |                                 D ]\  }}|D ]}t          ||           dddd}|                                D ]!\  }}t          t          t          ||           "d S )N)r   rV  rootroot_scalarlinprogquadratic_assignmentekkir  )r   maximizemaximize_scalar)
r   r   r   r   r   r   itemsr   rP   rQ   )solver_methodssolverr  r   unknown_solver_methods        r/   test_show_optionsr  J  s    $2*" < N *//11 ) ) 	) 	)F((((	)
 ! 
 05577 @ @j,????@ @r1   c                      t          j        ddgddg          } t          j        t           j        t	          j        ddg          d|            d S )Nr  r  r  r   r  r  )r
   r   r   r   r+   rL   r  s    r/   test_bounds_with_listr  b  s[    _Rc3Z888F28QF++HV     r1   )rm  r  ri  rj  rE  r   r!  r  c                 p    t          j        g d          }t          j        t          || ddi           d S )Nr   rh   gfffffY@r   )r+   rL   r
   r   r   )r   rU   s     r/    test_minimize_maxiter_nonintegerr  j  s?    
 
+++	,	,BeRE8JKKKKKKr1   c            	      2   d } d }d }g d}g d}t          j        d          dz  }t          D ]f}d }d }||v r|}||v r|}t          j        | ||||          }	t          |	j        t          j        t          j        |                    d	
           gd S )Nc                     t          j        t          j        |                     }| |z  } | | z  } t          j        |           S rA   )r+   rO   rK  rC   r  s     r/   fquadz/test_x_overwritten_user_function.<locals>.fquadw  s9    Ibgajj!!	Q	Qvayyr1   c                 l    t          j        t          j        |                     }| dz  } | d|z  z  } | S rA  )r+   rO   rK  r  s     r/   	fquad_jacz3test_x_overwritten_user_function.<locals>.fquad_jac}  s4    Ibgajj!!	Q	QU
r1   c                 T    t          j        t          j        |                     dz  S rU  )r+   r   rK  r-   s    r/   
fquad_hessz4test_x_overwritten_user_function.<locals>.fquad_hess  s    vbgajj!!C''r1   )rU  r  r  r  r  r  )r  r  r  r  r  r   r6   r  g-C6*?r   )	r+   r  r   r
   r   r   r.   rO   rK  )
r  r  r  meth_jac	meth_hessrU   methr   r   r   s
             r/    test_x_overwritten_user_functionr  s  s        ( ( (  H  I 
c	B  B B8C9Dr$CdKKKry55DAAAAAB Br1   c                       e Zd Zd ZdS )TestGlobalOptimizationc                    d }t          j        |d          t          j        |dg          t          j        |dg          t          j        |dg          t          j        |dg          g}|D ]}t          |t           j                  sJ t          |d          sJ t          |d          sJ t          |d          sJ t          |d          sJ t          |d	          sJ t          |d
          sJ d S )Nc                     | dz  S rA  r   r-   s    r/   r}   zDTestGlobalOptimization.test_optimize_result_attributes.<locals>.func  s    6Mr1   r)   )rU   )r  r   r.   r   r#  r   r   r   )	r
   basinhoppingdifferential_evolutionshgodual_annealingdirectr  r   rt   )ro   r}   r  rN  s       r/   test_optimize_result_attributesz6TestGlobalOptimization.test_optimize_result_attributes  s.   	 	 	 (!44424'CC=y11*4';;?4'33	  	* 	*Ffh&=>>>>>63'''''69-----69-----65)))))66*****65))))))	* 	*r1   N)r   r   r   r  r   r1   r/   r  r    s#        * * * * *r1   r  c                     t          j        t          t                    } t	          | t          t                    d           t          j        t          t
                    }t	          |t          t                    d           d S )Nr  r   )r
   approx_fprimerT   r  r   rR   rS   )r@  r  s     r/   test_approx_fprimer    sh     	}j99AA}55DAAAA}o>>AA}55DAAAAAAr1   c                  p   d } t          ddgddg          }t          j        | dd|          }t          t          j        ddg          t          j        ddg                    }t          j        | dd|          }t          |j        |j                   t          |j        |j                   d S )Nc                 6    | d         dz  | d         dz
  dz  z   S r  r   r-   s    r/   r|   ztest_gh12594.<locals>.f  s!    tQw!A$(Q&&r1   r  r   r  r   r  r  )r   r
   r   r+   rL   r   r   r.   )r|   r&  r   r   s       r/   test_gh12594r    s    
' ' ' Szr2h///F

A&&
I
I
ICrxc
++"b0B0BCCCF

A&&
I
I
ICCGSW%%%CE35!!!!!r1   c                     t          j        g dg dg dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg          t          j        g d          fd} fd}fd}t          j        d          }t          j        | |||dddd          }|j        sJ t           | |j                            dk     sJ d S )N)g`]B@nضo}crs'@9bS.Q- 8w r  8T`w^ѿ-U\v\?炾_j@R^ݸiT[ʢ]LX?篍>'@,:Y,>7*3?)r  "J@XWmх?%6@x(,@r  yֱ@ַ#@&8L0@皇lB|sɂ(h0s?	@Fyb@{P(CfR?爏c)r  r  gϠrm@G)ܿP{ۍ`t<r  8$p&
>Jwy>b*P gc\@K@畑E1@!a"*%DS	5Vh	@k	ؒ@)r  r  r  gOhj?L ?Z"'?r  \,8Q?ZϪޡy?Mؤh?B?NR?HOAK9%?琒O$V?>fB?OZ?ϗ@dA )r  r  r  r  g3333@J_@r  r`J@"<5@|DL$d@JZRU]Ջ)T@~?@l%H@祿U"翀^sw7 [Z@ 8)&)r  r   r  r  r*  g<A?r   x극B@sd^[?烙b?睶c~7%7F8Qt?Bd?7`ƭ?Vu]ܿ{jfu?BE)r  r  r  r  r+  r7  r  g~@sϡ*J@WE@砇}Q4q%@?.XG? }#: @pr*@ݦg	oB@TY"_2#?/)S)r  r  r  r  r,  r8  r  rC  gBw[E@<ۤbs@W#y4uֲ>Иe);M>''@Ѐz3jXD@!xtJ>ICı=฿crZ?)r  r  r  r   r-  r9  r  rD  rN  gR,@珉f`bB<tk3mIE۶T@ۄ{e6r@ǫ#u!qs =磴?)r  r  r  r!  r.  r:  r  rE  rO  rX  g6mkS@[z4Ud@罹l25ם<9
x>HO$d@瓊_l@瀛o{폽@)r  r  r  r"  r/  r;  r  rF  rP  rY  ra  gI~w@u'|rfF>ɋ[餭 '@}@+LcEV!@)r  r  r  r#  r0  r<  r  rG  rQ  rZ  rb  ri  gR3Z?A	#?jG@7VeeG|83緭v,?/yng)r  r  r  r$  r1  r=  r  rH  rR  r[  rc  rj  rp  gGb:@G>_R@`)Y禀\ɍ^?9o2)r  r  r  r%  r2  r>  r  rI  rS  r\  rd  rk  rq  rv  g6x"m@oe%JnqvyN?~+)r  r	  r  r&  r3  r?  r	  rJ  rT  r]  re  rl  rr  rw  r{  gbS?RBU>@WUKܿsliq?)r  r
  r  r'  r4  r@  r
  rK  rU  r^  rf  rm  rs  rx  r|  r  g<8bM@Q;*ʔ K6@)r  r  r  r(  r5  rA  r  rL  rV  r_  rg  rn  rt  ry  r}  r  r  g&Ad?aBI)r  r  r  r)  r6  rB  r  rM  rW  r`  rh  ro  ru  rz  r~  r  r  r  gC	f@)gqՠgbk>g6ߓR>gI눑gXF;>g)	@AnN>g\>ghM>gV֕gH4>Sg͜>gsCa!T>g'sdg6KJg~|WRg,Nh>g		>gZ|O>g+ݱf>c                     t          j        t          j        |           |           dz  t          j        |           z   S rA  r+   rv   r.   HJs    r/   r   z9test_gh12513_trustregion_exact_infinite_loop.<locals>.fun:  s3    vbfQllA&&*RVAq\\99r1   c                 4    t          j        |           z   S rA   r  r  s    r/   r   z9test_gh12513_trustregion_exact_infinite_loop.<locals>.jac=  s    va||ar1   c                     S rA   r   )r.   r  s    r/   r   z:test_gh12513_trustregion_exact_infinite_loop.<locals>.hess@  s    r1      r  r;   r   )r   subproblem_maxiterr  r   )r+   rL   rd   r
   r   r   rN   r.   )r   r   r   rU   r   r  r  s        @@r/   ,test_gh12513_trustregion_exact_infinite_loopr    s,    	
: 
: 
:

: 
: 
:

8 
8 
8

< 
< 
<

9 
9 
9

< 
< 
<

: 
: 
:

9 
9 
9

; 
; 
;

; 
; 
;

8 
8 
8

8 
8 
8

; 
; 
;

: 
: 
:

: 
: 
:

: 
: 
:

8 
8 
8

; 
; 
;

9 
9 
9u^	:`	 `	AB 	    	 	A: : : : : :                
"B


R88  C ;ss35zz??T!!!!!!r1   rL  r  sparse_typec                    fd}ddg}t          j        t          || t          |          }t          j        t          || t          t                    }t          |j        |j                   t          |j        |j                   |j        |j        k    sJ |j	        |j	        k    sJ |j
        |j
        k    sJ d S )Nc                 4     t          |                     S rA   r   )r.   r  s    r/   sparse_rosen_hessz.test_sparse_hessian.<locals>.sparse_rosen_hessZ  s    {:a==)))r1   r  r  )r
   r   r   r   r   r   r   r.   r   r   nhev)r   r  r  rU   
res_sparse	res_denses    `    r/   test_sparse_hessianr  Q  s    * * * * * bB"5"V'07HJ J JJ!%F&/jB B BI IM:>222IK...>Z_,,,,>Z_,,,,>Z_,,,,,,r1   r  )	r!  r   rm  r  rL  r   rk  r  r  c                        e Zd Zd Zd Zd ZdS )TestWorkersc                 <    t          j        g d          | _        d S )N)r\   r  rG  )r+   rL   rU   rn   s    r/   rp   zTestWorkers.setup_methody  s    (???++r1   c                    |pt           }d d d}|dv rt          |d<   d|d<   t          |          5 }t          j        t
          | j        fd|i|d|}d d d            n# 1 swxY w Y   t          j        t
          | j        fd|i|}t          |j        |j                   t          |j	        |j	                   d S )	N)r   r   )rL  r  r  r   r  r   r  )r   r   r   )
mapr   r%   r
   r   r   rU   r   r.   r   )ro   r  r   r  mfr   r  s          r/   
test_smokezTestWorkers.test_smoke|  s+   .ST**???#DK$DL   	B#tw)22v IM C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 '47
 
#)
-1
 
 	SUKM***SX{/00000s   #A  A$'A$c                 V   |pt           }|dvrt          j        | d           t          g dg d          }t	          |          5 }t          j        t          | j        |d|i|          }d d d            n# 1 swxY w Y   |j	        sJ t          |j        d         d           d S )	N)r!  rm  r  rk  z cannot use bounds)r   r  r`   )r  r  r  r  )r&  r   r   r)   r  )r  r   r  r   r%   r
   r   r   rU   r   r   r.   )ro   r  r   r&  r  r   s         r/   r  zTestWorkers.test_equal_bounds  s    .SEEEK6555666ooo66   	B#twv	2v  C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 {a#&&&&&s   &A::A>A>N)r   r   r   rp   r  r  r   r1   r/   r  r  k  sA        , , ,1 1 1(' ' ' ' 'r1   r  )r_   r  )Anyr.   returnc                 &    t          |           dz   S r(   )r   r-   s    r/   rosen_annotatedr    s    88a<r1   c                      t          |           S rA   )r   r-   s    r/   rosen_der_annotatedr    s    Q<<r1   c                      t          |           S rA   r  r-   s    r/   rosen_hess_annotatedr    s    a==r1   r  c                     d S rA   r   )r  s    r/   callable_annotatedr    s    Dr1   z'Requires PEP 649/749 from Python 3.14+.c                   x    e Zd Zd Zej                            dg d          d             Zd Zd Z	d Z
d Zd	S )
TestAnnotationsc                 J    t          j        ddg          | _        d| _        d S )Nr\   r  r  )r+   rL   rU   brute_paramsrn   s    r/   rp   zTestAnnotations.setup_method  s%    (C;''Jr1   r   )rw  r  r   r   rL  r!  rk  r/  rm  r  r  r  r  r  c                     d d t           d}|dv r
t          |d<   |dv r
t          |d<   t          j        t
          | j        fd|i| d S )N)r   r   r"  )r   r   rL  r&  r  r  r  r  r  r  r  r   )rL  r  r  r  r  r  r   r   )r  r  r  r
   r   r  rU   )ro   r   r  s      r/   test_callable_annotationsz)TestAnnotations.test_callable_annotations  sw    $ T7IJJ R R R .DK 6 6 6/DL/47JJ6JTJJJJJr1   c                     ddg}t          j        t          |dt                    }|j        sJ d|j                     d S )N)r  r   r)   )r:   r"  Unexpected error: )r
   r  r  r  r   r#  )ro   r&  r   s      r/   'test_differential_evolution_annotationsz7TestAnnotations.test_differential_evolution_annotations  sV    7#-ovA7IK K K{>>>>>>>>>>r1   c                    dt           dt          dt           fd}dt           dt          dt           fd}t          j        ddd          } ||d	d
d          }t	          j        ||||d          \  }}}}}|dv sJ d|j                     d S )Nr.   r{  r  c                 >    |t          j        | | z            z  |z   S rA   r*   r.   r{  rv  rr   s       r/   
model_funcz>TestAnnotations.test_curve_fit_annotations.<locals>.model_func  s     rvqb1f~~%))r1   c                     t          j        t          j        | | z            | | z  t          j        | | z            z  t          j        |           g          j        S rA   )r+   rL   r,   r  r   r  s       r/   	model_jacz=TestAnnotations.test_curve_fit_annotations.<locals>.model_jac  sX    8rAvQQ'Q   	r1   r   r   r   r   r   r^   T)r   r   r  r  )_DUMMY_TYPEfloatr+   r   r
   	curve_fitr#  )ro   r  r  xdataydatar$  r   s          r/   test_curve_fit_annotationsz*TestAnnotations.test_curve_fit_annotations  s    	*+ 	*% 	*+ 	* 	* 	* 	*	 	 	 	 	 	 	 Aq"%%
5#sC00(UEy59; ; ;!Aa|###&H3;&H&H#####r1   c                     dt           dt          dt          fd}dt           dt           dt           fd}t          dd	d
          t          dd	d
          f}t          j        ||| j        |           d S )Nre  r   r  c                 ~    | \  }}|\  }}}}}}	}
}}}}}}||dz  z  ||z  |z  z   ||dz  z  z   ||z  z   ||z  z   |	z   S rA  r   r   s                    r/   r  z2TestAnnotations.test_brute_annotations.<locals>.f1  sj    DAq8>5Aq!Q1aAq!Q1Hq1uqy(1q!t83ac9AaC?!CDr1   r  rU   c                 .    t          j        | |g|R i |S rA   )r
   r.  )r  rU   r   r  s       r/   annotated_fminz>TestAnnotations.test_brute_annotations.<locals>.annotated_fmin  s$    =2???????r1   r  r   r  )r   r  )r  r  r  r
   r  r  )ro   r  r  r  s       r/   test_brute_annotationsz&TestAnnotations.test_brute_annotations  s    	E+ 	E 	E% 	E 	E 	E 	E
	@[ 	@k 	@/:	@ 	@ 	@ 	@ Q%%uRD'9'9:r7):>RRRRRRr1   c           
          dt           dt          dt           dt          dt          f
d}t          j        t
          | j        dd|	          }|j        sJ d
|j                     d S )Nf_newx_newf_oldx_oldr  c                     dS )NTr   )r  r  r  r  s       r/   acceptable_testzFTestAnnotations.test_basinhopping_annotations.<locals>.acceptable_test  s    4r1   r4   r)   )rP  r:   accept_testr  )	r  r  boolr
   r  r  rU   r   r#  )ro   r  r   s      r/   test_basinhopping_annotationsz-TestAnnotations.test_basinhopping_annotations  s    	5 	 	-2	:E	JN	 	 	 	 #OTWAA0?A A A {>>>>>>>>>>r1   N)r   r   r   rp   r   rn  rp  r  r  r  r  r  r   r1   r/   r  r    s        K K K [X ( ( (  "	K 	K# "	K? ? ?I I I&S S S? ? ? ? ?r1   r  c                     t          j        ddg          } t          t          j        d          5 }|5 }t          t          | |j                   d d d            n# 1 swxY w Y   ~~d d d            d S # 1 swxY w Y   d S )Nr  r4   )r  )r+   rL   r	   multiprocessingPoolr   r   r  )rU   pool_objr   s      r/   .test_multiprocessing_too_many_open_files_23080r    s    	3*		B	O0!	4	4  	55"ae4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5	                 s4   A7AA7A!	!A7$A!	%A77A;>A;)r   sysr  r  r  ri   r  r  numpyr+   numpy.testingr   r   r   r   r   r   r   rP   scipyscipy._lib._gcutilsr	   r
   scipy.optimize._minimizer   r   r   r   r   scipy.optimize._linprogr   scipy.optimize._rootr   scipy.optimize._root_scalarr   scipy.optimize._qapr   (scipy.optimize._differentiable_functionsr   r   scipy.optimize._optimizer   r   r   r   scipy.optimizer   r   r   scipy.sparser   r   r   r    r!   r"   scipy._lib._array_api_no_0dr#   scipy._lib._array_apir$   scipy._lib._utilr%   lazy_xp_modulesrW   rY   r   r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rn  rp  r  r  r0  r}  r  r  r  r  r  r  r  r  r  rR   rS   rT   r  r  r  r  r  r  r  r  r
  r  r>  r@  rX  rZ  fixturer_  re  rg  rj  rm  r  r  xfail_on_32bitrq  show_configr  r  r  r  r  r  r  r  r  r  r  r  r  version_infotypingr  r  TYPE_CHECKINGr  r  r  r  r  skipifr  r  r   r1   r/   <module>r     s|    


                   . . . . . . . . . . . . . .  * * * * * *  2 2 2 2 2 2       @ @ @ @ @ @ @ @? ? ? ? ? ? ? ? ? ? 4 3 3 3 3 3 - - - - - - ; ; ; ; ; ; < < < < < < O O O O O O O O            8 7 7 7 7 7 7 7 7 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 7 7 7 7 3 3 3 3 3 3 ' ' ' ' ' '*3 3 3l7' 7' 7' 7' 7' 7' 7' 7'tRA RA RA RA RA RA RA RAj- - -"  0H H H  8 8 8D D D$ $ $     >I: I: I:X'F 'F 'FT    8   
     :   
     :   
    "<   
iD iD iD iD iD iD iD iDX ::: - -	 -:= := := := := := := :=zjN jN jN jN jN jN jN jNZ	& & & & & & & &R@ @ @)< )< )< )< )< )< )< )<X<- <- <-~#6 #6 #6Lz6 z6 z6zJ J J*$ $ $# # # # # # # #6  ; ; ;7 7 7 a&4 4 4, 0  0  0  0  0  0  0  0F= = =7 7 77 7 7< < <H% H% H% H% H% H% H% H%V r     FB> B> B> B> B> B> B> B>J# # #2# # # # # # # # " " "3 3 3&3 3 3&9 9 9*C C CU U Up "
!
#
# NOO$5$'222;?	J6R L  N N 79#56611w}'=>>(>??W[%9::A< A< ;: @? ?> 21 76N N POA<H 79#566(/ (/ 76(/V) ) ).@ @ @0    $  L L L%B %B %BP* * * * * * * *0B B B" " " A" A" A"H K#@AAZ)2Iy)J K K- -K K BA-. T1I..  
 
$' $' $' $' $' $' $'
 
 /.$'P gKKMMM !j{ u    ; ;    K K    	K 	D 	 	 	 	 C$w.D  F FS? S? S? S? S? S? S?F FS?l    r1   