
    biW/                    t	   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j                  j                  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j                  j                  dQ      dR        Zm G dS dT      ZndU Zo G dV dW      Zpej                  dX        ZrdY ZsdZ Ztd[ Zud\ Zvd] Zw ew       Zxej                  j                  d^      ej                  j                   ej                  d_`      da   db   dc   ddk(  d^e      ej                  j                  d-exdf         ej                  j                  dgexdg         ej                  j                  dhexdi         ej                  j                  djexdj         ej                  j                  dkexdl         dm                                                  Z|ej                  j                  d-exdf         dn        Z}do Z~dp Zdq Zej                  j                  d-dr      ds        Zdt Z G du dv      Zdw Zdx Zdy Zej                  j                  d-dzd{g      ej                  j                  d|e2e3e4e5e6e7g      d}               Zej                  j                  d~ddFg      ej                  j                  d-g d       G d d                    Zej                  dk  r	ddlmZ eZnddlZej                  rej                  ZdedefdZdedefdZdedefdZdeddfdZej                  j'                  ej                  dk  de       G d d             Zd Zy)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            
      B   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kD  sJ t        t        j                  | ||ddd
      dz
        }|dkD  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 y )Nc                 :    ddt        j                  |        z   z  S N   npexpxs    ]/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/optimize/tests/test_optimize.pyexpitztest_check_grad.<locals>.expit7   s    Ar
N##    c                 h    t        j                  |        dt        j                  |        z   dz  z  S Nr)      r*   r-   s    r/   	der_expitz"test_check_grad.<locals>.der_expit:   s*    vvqbzQ^a///r1         ?r   random  )	directionseedư>)epsilon)r<   r9   rng皙?Hz>c                 N    | t        j                  |       z  j                         S N)r+   sinsumr-   s    r/   x_sinxztest_check_grad.<locals>.x_sinxS   s    "&&)  ""r1   c                 ^    t        j                  |       | t        j                  |       z  z   S rA   r+   rB   cosr-   s    r/   
der_x_sinxz#test_check_grad.<locals>.der_x_sinxV   s!    vvay1RVVAY;&&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 
3%BE9b1A1E9b&.T	;A1E9b$?A1E9b$&.D	:A1 	Hy"dCaGHAt8O8Hy"d*2>@AB 	CAt8O8#' 
1a	BFJ&.D	:A1*h11*b/T;
 	O_m&+	7At8O8r1   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)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                         | _        y )	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    9$$$$	& '
 .)88Arzz2!@A"*"*__&
r1   c                    t        | j                  d      sd| j                  _        t        | j                  d      sd| j                  _        | j                  xj                  dz  c_        | j                  j                  dkD  rt	        d      t        j                  | j                  |      }t        j                  t        t        j                  |                  }|t        j                  | j                  |      z
  }t        | j                  d      sg | j                  _        | 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+ DNNt~~s+ DNNA>>d"LMM66$&&!$vvc"&&*+,266$&&!$$tzz3'DJJL

BGGAJ'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                         |      | 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+ DNNA66$&&!$vvc"&&*+,FF8d?#vvdff&&(!,tvv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    66$&&!$vvc"&&*+,FF8d?#vvdffhhffRWWQZ"&&12E)EFH 	Hr1   c                 L    t        j                  | j                  |      |      S rA   )r+   rv   r   ro   r.   r   s      r/   hesspzCheckOptimize.hessp   s    vvdiilA&&r1   N)	__name__
__module____qualname____doc__rp   r}   r   r   r    r1   r/   rY   rY   i   s!    
'$6H'r1   rY   c                   j   e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  d      d        Zd	 Zd
 Zd Ze	j                  j!                  ddgddgddgddgg      d        Zd Ze	j                  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y#)$CheckOptimizeParameterizedc           
      >   | j                   rp| j                  | j                  dd}t        j                  | j
                  | j                  dd| j                  |      }|d   |d   |d   |d	   |d
   f\  }}}}}nWt        j                  | j
                  | j                  | j                  d| j                  d| j                  d      }|\  }}}}}t        | j                  |      | j                  | 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       y )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   sp   #||TYY"')D##DIIt/?/?b+/TYY,02C C#e*c&k3v;HM ;FD*j( %%dii1A1A&*iiT\\26TYY-24F @F<VT:z8		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~1$6dnn&6&66$ 	

Qq)'=?"	/r1   c                     d }t        j                  ddd      D ]B  }t        j                  ||gd      }|j                  sJ t        |j                  dgd	       D y )
Nc                 J    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(    !bffT1s7^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   sY    	9
 ++eQ+ 	5B##AtD9C;;;CEEC5t4	5r1   c           
      V   | j                   rz| j                  | j                  dd}t        j                  | j
                  | j                  | j                  dd|      }|d   |d   |d   |d	   |d
   |d   |d   f\  }}}}}}}	nYt        j                  | j
                  | j                  | j                  d| j                  d| j                  d      }
|
\  }}}}}}}	t        | j                  |      | j                  | 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       y )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   #||TYY"')D##DIIt/?/?(,		&r,02C
 Hc%j#e*c*oKVc(mJ=FFD$j*h ''		43C3CTYY-/48tyy/46F
 28/VT4X		&)499T]]+C!	#
 ~~2%7t~~'7'77%~~1$6dnn&6&66$ 	

Qq)==?"	/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        y # 1 sw Y   y xY w)	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   sp     ]]: .0 1 	,34B IIRVVAYJ?DhnnF&*,		, 	, 	,s   A#BBc                 4   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        y # 1 sw Y   y xY w)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 	,34Bq	IIdO III>DhnnF&*,	, 	, 	,s   A)BBc                 `   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	
       y )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    nnXX/0		rvvay0@A6(,.$$SRR.4dii-@BD9r1   ignore::UserWarningc           	      f   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        y # 1 sw Y   y xY w)Nc                 ,    t         j                  |  z   S rA   )r+   er-   s    r/   r}   z;CheckOptimizeParameterized.test_bfgs_infinite.<locals>.func  s    DDaRL= r1   c                      |        S rA   r   )r.   r}   s    r/   fprimez=CheckOptimizeParameterized.test_bfgs_infinite.<locals>.fprime  s    G8Or1   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' 	,		*%%dBF6+-t==@B &&tRdiiH{{47++++	, 	, 	,s   A:B''B0c                     g d}t        j                  t         j                  |dddi      }t        j                  t         j                  |dddi      }|j                  |j                  k7  sJ y )Nr   bfgsxrtolMbP?r   r   gtolr
   r   r   nit)ro   rU   r   refs       r/   test_bfgs_xrtolz*CheckOptimizeParameterized.test_bfgs_xrtol#  sa    & "6GT?L "6FD>Kww#''!!!r1   c                     g d}t        j                  t         j                  |dddi      }t        j                  t         j                  |dddi      }|j                  |j                  kD  sJ y )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,  sg     +(()+FT4LR&&x~~')&4,P
   :??222r1   c                     g d}t        j                  t         j                  |dddi      }t        j                  t         j                  |dddi      }|j                  |j                  kD  sJ y )Nr   r   c2?r   r   r   )ro   rU   res_defaultres_mods       r/   test_bfgs_c2z'CheckOptimizeParameterized.test_bfgs_c27  sc     '''(*6D":O##HNN$&vd|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        y # 1 sw Y   y xY w)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  sL     ]]:_= 	<.Bhnnb-/r&:<	< 	< 	<s   /AAc           	         | j                   rj| j                  | j                  dd}t        j                  | j
                  | j                  dd|      }|d   |d   |d   |d	   |d
   |d   f\  }}}}}}nMt        j                  | j
                  | j                  d| j                  d| j                  d      }	|	\  }}}}}}t        | j                  |      | j                  | 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                         y )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  sd   #||TYY"')D##DIIt/?/?b+3TCC Hc%j#g,E
KXB0>FD%*h ))$))T5E5E/14<<6:168F DJ@VT5':x		&)499T]]+C!	# 	qr
DMM!"$5DA ~~8+=T^^-=-==+~~1$6dnn&6&66$r1   zeThis part of test_powell fails on some platforms, but the solution returned by powell is still valid.reasonc           	         | j                   rj| j                  | j                  dd}t        j                  | j
                  | j                  dd|      }|d   |d   |d   |d	   |d
   |d   f\  }}}}}}nMt        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       y )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  s    #||TYY"')D##DIIt/?/?b+3TCC Hc%j#g,E
KXB0>FD%*h ))$))T5E5E/14<<6:168F DJ@VT5':x 	

2b)>>>>>	@
 #	/r1   c                 N   | j                   D cg c]#  }t        j                   t        j                  f% }}| j                  r| j                  | j
                  dd}t        j                  | j                  | j                   d|d|      }|d   |d   }}|| j                  j                  k(  sJ t        | j                  |      | j                  | j                        dd	
       | j                  j                  dk  sJ | j                  j                  dk(  sJ y y c c}w )NFr   r   r  )r   boundsr   r   r.   r   r;   r   r      r   )rf   r+   pir   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    ,0+;+;<aBEE6255/<<#||TYY"')D##DIIt/?/?b+1+3TCC #&c(CKJF!1!1111DIIf-tyy/G!%D2 >>##x///>>##q((('  =s   (D"c           	         | j                   re| j                  | j                  dd}t        j                  | j
                  | j                  dd|      }|d   |d   |d   |d	   |d
   f\  }}}}}nLt        j                  | j
                  | j                  d| j                  d| j                  d      }|\  }}}}}t        | j                  |      | j                  | 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       y )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  sc   #||TYY"')D##DIIt/?/?b+8$HC Hc%j#e*c&kM;#7FD':x ]]499d.>.>(*DLL/3$))*/1F =C9VT7J		&)499T]]+C!	#
 ~~3&8(8(88&~~1$6dnn&6&66$ 	

R+=>@"	/r1   c           
         t        j                  d      }| j                  |d<   t        d      D ]  }||dz   |fxx   dz  cc<    | j                  rq| j
                  dd|d}t        j                  | j                  | j                  d	d
|      }|d   |d   |d   |d   |d   f\  }}}}}	t        |d   d   |d          nCt        j                  | j                  | j                  d	| j
                  ddd|      }
|
\  }}}}}	t        | j                  |      | j                  | 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       y )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   r/  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FOs"O	# #||U"&7DD##DIIt/?/?b+8$HC;>s8;>u:;>u:;>v;;>x=	;J7FD':x
 C	N1-wqz:]]499d.>.>(*DLL/3%3:<F
 =C9VT7J		&)499T]]+C!	#
 ~~3&8(8(88&~~1$6dnn&6&66$ 	

R+==?"	/r1   c                 L   g }t        j                  d      }| j                  d d |d<   t        d      D ]  }||dz   |fxx   dz  cc<    |j	                  |       t        j                  d      }|j	                  |       |D ]  }| j
                  rJ| j                  dd|d}t        t        t        j                  | j                  | j                  d	d
|       Yt        t        t        j                  | j                  | j                  d	| j                  ddd|
        y )N)r_   r4   r4   .r)   r>   )r_   r_   Fr.  r   r'  r  Tr1  )r+   rd   rf   r5  rx   r   rh   rP   rQ   r
   r   r}   r+  )ro   bad_simplicesr6  r7  r   s        r/   #test_neldermead_initial_simplex_badz>CheckOptimizeParameterized.test_neldermead_initial_simplex_bad  s   ((6"''+q 	#AAaCFOs"O	#W%((6"W%$ 	7G#'<<&+Ij&//"ii"..#%%2&*, j(--"ii)9)9#%t||*.U5.5	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       y )	Nc                 2    t        j                  | dz        S Nr4   r+   rC   r-   s    r/   quadz>CheckOptimizeParameterized.test_neldermead_x0_ub.<locals>.quad      66!Q$<r1   r)   )r   r\   nelder-meadr!  r   r   r4   )r)         @r
   r   r   r.   )ro   r@  r   s      r/   test_neldermead_x0_ubz0CheckOptimizeParameterized.test_neldermead_x0_ub  st    	  C9 	
 	s#FW% 	
 	1v&r1   c                     ddi}t        j                  | j                  | j                  d| j                  d|      }|j
                  dk(  sJ y )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%  sK    2""499d.>.>*5499(*D: }}!!!r1   c           	          d }d }dg}d}t        j                  |||dt        |            }|j                  dk(  sJ t	        |j
                  d   t        j                         y )Nc                 2    t        j                  | d         S Nr   )r+   rG   r-   s    r/   cosinez=CheckOptimizeParameterized.test_ncg_zero_xtol.<locals>.cosine/  s    66!A$<r1   c                 4    t        j                  | d          S rO  )r+   rB   r-   s    r/   r   z:CheckOptimizeParameterized.test_ncg_zero_xtol.<locals>.jac2  s    FF1Q4L= r1   r>   r   	newton-cg)xtol)rU   r   r   r   )r
   r   dictr   r   r.   r+   r#  )ro   rP  r   rU   rS  rK  s         r/   test_ncg_zero_xtolz-CheckOptimizeParameterized.test_ncg_zero_xtol-  sf    	 	! U""6&('**5+/T?	<
 }}!!!FHHQK/r1   c           
          | j                   rW| j                  | j                  dd}t        j                  | j
                  | j                  d| j                  d|      d   }nOt        j                  | j
                  | j                  | j                  d| j                  d| j                  d      }|}t        | j                  |      | j                  | 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       y )NFr   rI  r   rJ  r.   r   r;   r   r      r_   r   (6-H=g?g4u3?rY  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?  s:   #||TYY"')D&&tyy$2B2B.9tyy,.>>ACF &&tyy$2B2BDII,.38tyy.35F
 		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~2%7t~~'7'77% 	

Qq)KKM!	.r1   c                 ,   | j                   rb| j                  | j                  dd}t        j                  | j
                  | j                  d| j                  | j                  d|      d   }nZt        j                  | j
                  | j                  | j                  | j                  d| j                  d| j                  d	      }|}t        | j                  |      | j                  | 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       y )NFr   rI  r   )r   r   r   r   r   r.   )fhessr   rh   r   r   r   r;   r   r      r_   r   rX  rZ  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`  sK   #||TYY"')D&&tyy$2B2B.9tyy,0II,.> ?BCF
 &&tyy$2B2BDII-1YY,.38tyy.3	5F 		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~2%7t~~'7'77%
 	

Qq)KKM!	.r1   c                 ,   | j                   rb| j                  | j                  dd}t        j                  | j
                  | j                  d| j                  | j                  d|      d   }nZt        j                  | j
                  | j                  | j                  | j                  d| j                  d| j                  d	      }|}t        | j                  |      | j                  | 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       y )NFr   rI  r   )r   r   r   r   r   r.   )fhess_pr   rh   r   r   r   r;   r   r   r`  r_   r   rX  rZ  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  sK   #||TYY"')D&&tyy$2B2B.9tyy-1ZZ,.> ?BCF
 &&tyy$2B2BDII/3zz,.38tyy.3	5F 		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~2%7t~~'7'77%
 	

Qq)KKM!	.r1   c                 p   | j                   rt        j                  | j                  | j                  d| j
                  | j                  d      }t        |j                  | j                  | j                        d       | j                  j                  dk  sJ | j                  j                         y y )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    ##		  $(LL$))D	C CGGTYYt}}%=DI >>##w.@0@0@@. r1   N) r   r   r   r   r   r   r   r   r   r   markfilterwarningsr   r   r  r  parametrizer  r  xfailr  r%  r,  r8  r;  rF  rL  rU  r]  ra  rd  rj  r   r1   r/   r   r      s   />	5 /D,
,	: [[ 56, 7, "	3- [[dD\S!H-13K-0#J,8 9<9< 7D [[ & '/'/@)2/>&/P7>'."0$.B .D .DAr1   r   c            	          t         j                  j                  d      fd} dD ]=  }dD ]6  }t        j                  | j                  d      |d|i      }|d   |k(  r6J  ? y )	Nl	   <vgRI*q4 c                 ,    j                  d      dz  S Nr)   ra   r7   )r.   r=   s    r/   costztest_maxfev_test.<locals>.cost  s    zz!}t##r1   )r)   r   r3  )r  Nelder-Meadr   maxfevr   r   )r+   r7   default_rngr
   r   )rs  imaxfevr   rK  r=   s       @r/   test_maxfev_testrx    s{    
))

 G
HC$  - 0 	-F&&tSZZ^.408'/BDF &>W,,,		-	-r1   c                     d } t         j                  j                  | t        j                  d      d      \  }}t        d      D ]*  } |t        j                  |             |d   |dz   k(  r*J  d}t        t         j                  j                  |      5   |t        j                               d d d        t         j                  j                  | t        j                  d      d      \  }}d}t        t        |      5   |t        j                  ddg             d d d        y # 1 sw Y   zxY w# 1 sw Y   y xY w)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+   asarrayr5  rP   _MaxFuncCallErrorrQ   rL   )r{  fcallsr}   imsgs        r/   )test_wrap_scalar_function_with_validationr    s    %%//rzz!}aH FD 1X  RZZ]ayAaC  $C	x));;3	G RZZ] %%//rzz!}aH FD MC	z	- RXXq!f   s   D/D;/D8;Ec                      d} t        t        |       5  t        j                  d t	        j
                  ddg      d       d d d        y # 1 sw Y   y xY w)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    sM    &E 
z	/ H+rxxA'7GH H Hs   /AAc                      t        j                  g d      } t        j                  j	                  t        j
                  | d      }|j                  dk  sJ y )Nr   r   )xatoliS  )r+   rL   r
   	_minimize_minimize_neldermeadr   r   )rU   r   s     r/   test_neldermead_iteration_numr    sG    	+	,B



1
1(.."8< 2 >C77c>>r1   c                      t        j                  ddg      j                  t         j                        } d }t	        j
                  || d       y )N      @      @c                 j    | 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'    ww"**$$$~~a  r1   rt  r   )r+   rL   astyper  r
   r   )rU   r  s     r/   test_neldermead_respect_fpr    s<    	3*		$	$RZZ	0B! fb7r1   c                  V    d } t         j                  j                  | ddgddd       y )Nc                 $    | 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    s2    % ++D1a&!26d , Dr1   c                      d } g d}t        j                  | |d      }t        |j                  d       t        j                  | |dddi      }t        |j                  d       y )	Nc                 2    t        j                  | dz        S r>  r?  r-   s    r/   r}   z&test_neldermead_adaptive.<locals>.func      vva1f~r1   )gM@'?gOC?g~?g -?g?g#j?g ?g~^g?gܠr#?g^cǽ?g)i	?g'?g?g1?g[VΤ?rt  r   FadaptiveTr   )r
   r   r   r   )r}   p0r   s      r/   test_neldermead_adaptiver    s_    
FB 

D"]
;Ce$


D"]%/$68Cd#r1   c            	         d } d}g d}t        j                  t        j                        5  t        j                  | ||d      }d d d        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        t        |j                  t        j                  g d      d       t        |j                  d       t        |j                  d       y # 1 sw Y   xY w# 1 sw Y   pxY w)Nc                 2    t        j                  | dz        S r>  r?  r-   s    r/   r}   z/test_bounded_powell_outsidebounds.<locals>.func  r  r1   )rH  r)   r  r  )r^   gr  rC  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bIJCEE288RD3r7N3$?d#Q 	9-E	h..	/ :b'-h)0%(8:: CEE288K0t<e$Q%J J: :s   E !E- E*-E6c                     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        t        |j                  dd	
       y # 1 sw Y   "xY w)Nc                 2    t        j                  | dz        S r>  r?  r-   s    r/   r}   z+test_bounded_powell_vs_powell.<locals>.func:  r  r1   ))rH  )r	  )r)   gffffff"@)r  gffffff@g/)g gr   r   r  绽|=ftolrS  r  r   r`   r;   r   )r   r!  r   )rH  r	  r)   r   r  )NrH  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    FFAaD5MBFF1Q4L(2661Q4%!A$,+??"&&1,N	RVVBFF1Q4!A$;'"&&1,677!tr1   )r  r   r_   )r   r   r   r   rC  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  s   DF	!Be,G""4HgNJJLL"40JNNBT2!**4W282:< 	%&A&((!$7&**DG$? 266'3!RVVj+MF!**4W282:< 	%&A&((!$7&**DG$?

 Y]F	B""4H=J!**4282:< JNN$8tD&**AD9
 w 1$F!**4282:< JNN$6$:$:FJOO%7%<%<4HJLL"4"6"6TB 
2BY]F	h..	/ @%..tR6<6>@@ &**AD9	@ @s   KK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       y )Nr  g    .Ar_   r   r  )r   r!  r   r[   c                 .    t        j                  |        S rA   r?  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kD        rdz  S dz  S )Nr>   r   r)   rH  r+   rN   rC   rK   r-   s    r/   r|   z1test_onesided_bounded_powell_stability.<locals>.f  s<    rvvay!c**266!a%=aIIbIIr1   gwc                     t        j                  t        j                  |             dz   t        j                  | dkD        rdz  S dz  S )Nr   r   r)   rH  r  r-   s    r/   r|   z1test_onesided_bounded_powell_stability.<locals>.f  s<    rvvay!R''q1u1FF2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kD        rdz  }|S dz  }|S )Nr4   r   r>   r   r)   rH  r  r  s     r/   r|   z1test_onesided_bounded_powell_stability.<locals>.f  ss    VVBFF1Ra5M"a''"&&!"*?C*HH	266!a%=a) '))r1   g     @@r!  g 4&k\)r+   r  r
   r   r   r   )kwargsrU   r|   r   s       r/   &test_onesided_bounded_powell_stabilityr  ~  s    !66'3(1,"&57F 
B


Ar
,V
,CCGGT-J 

Ar
,V
,CCGG_-G 

Ar
,V
,CCGG\5
 &&#'!+F8


Ar
,V
,CCGG9Er1   c                       e Zd ZdZdZy)TestOptimizeWrapperDispTNr   r   r   r   r   r   r1   r/   r  r    s    KDr1   r  c                       e Zd ZdZdZy)TestOptimizeWrapperNoDispTFNr  r   r1   r/   r  r    s    KDr1   r  c                       e Zd ZdZdZy)TestOptimizeNoWrapperDispFTNr  r   r1   r/   r  r    s    KDr1   r  c                       e Zd ZdZdZy)TestOptimizeNoWrapperNoDispFNr  r   r1   r/   r  r    s    KDr1   r  c                   T   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,                  j/                  d      ej,                  j1                  d      ej,                  j1                  d      ej,                  j3                  dg dez         d                             Zej,                  j3                  dg d      d        Zd Zej,                  j3                  dg d      d        Zej,                  j3                  dg d      d        Zd  Z d! Z!d" Z"d# Z#ej,                  j3                  dg d$      d%        Z$ej,                  j3                  dg d&      d'        Z%ej,                  j1                  d      ej,                  j3                  de&      ej,                  j3                  d(g d)      d*                      Z'd+ Z(ej,                  j3                  dd,      d-        Z)ej,                  j3                  dg d.      d/        Z*y0)1TestOptimizeSimplec                     d }d }t         j                  g}t        j                  dd      5  t        j                  |||d      }t        j
                   ||            sJ 	 d d d        y # 1 sw Y   y xY w)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  sf    		#ffX[[h9 	%""4V%@A88DG$$$	% 	% 	%s   7A00A9c                    d }t        j                  d      5  t        j                  |d      }d d d        t        j                  d         sJ |d   du sJ d }d	 }t        j                  d      5  t        j                  |d|
      }d d d        t        j                  |d         sJ |d   du sJ y # 1 sw Y   xY w# 1 sw Y   9xY w)Nc                 "    t         j                  S rA   r+   r  r-   s    r/   r}   z5TestOptimizeSimple.test_bfgs_nan_return.<locals>.func      66Mr1   r   r  r   r   r   Fc                 0    | dk(  rdS t         j                  S rO  r  r-   s    r/   r}   z5TestOptimizeSimple.test_bfgs_nan_return.<locals>.func  s    Q1*BFF*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}   rK  r   s       r/   test_bfgs_nan_returnz'TestOptimizeSimple.test_bfgs_nan_return  s    	[[* 	0&&tQ/F	0 xxu&&&i E)))	+	#[[* 	<&&tQF;F	< xxu&&&i E)))	0 	0	< 	<s   B=8C	=C	Cc                    t         j                  j                  d      }t        j                  t        j                  d            |j                  t        | j                              z  }t        j                  | j                  | j                  |d| j                  d      }t        | j                  |      | j                  | j                        d       y )Nr8   r\   r   F)r<   r   rh   r   r;   r   )r+   r7   rv  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     ii##D)''"**R.)CJJs4==7I,JJ##DIIt/?/?,3",0LLuF 			&)499T]]+C!	#r1   c                 *   g d}g d}t        j                  ||      D ]r  \  }}t        j                  | j                  | j
                  ||      }t        | j	                  |j                        | j	                  | j                        d       t y )N)r   r   TNC2-point3-pointN)r   r   r;   r   )		itertoolsproductr
   r   r}   rf   r   r.   rg   )ro   methodsjacsr   r   rK  s         r/   test_finite_differences_jacz.TestOptimizeSimple.test_finite_differences_jac  sx    '+$,,Wd; 	'KFC&&tyy$2B2B.4#?FDIIfhh/4==1I!%'	'r1   c           	         g d}t         t        j                  fz   }t        j                  ||      D ]d  \  }}|t        j                  u r |       }t        j
                  | j                  | j                  || j                  |      }|j                  rdJ  g d}|D ]\  }t        j                  t              5  t        j
                  | j                  | j                  || j                  d        d d d        ^ y # 1 sw Y   ixY w)N)trust-constrrI  	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   rK  s         r/   test_finite_differences_hessz/TestOptimizeSimple.test_finite_differences_hess  s     Mx}}..%--gv> 	"LFDx}}$v&&tyy$2B2B.4$)),02F >>!>	" I 	-Fz* -!!$))T-=-=)/TYY'+-- -	-- -s   <9D  D		c                 Z    d }t        j                  |dgd      }t        |ddd       y )Nc                     | dk  ry| d| z  z   S )Nr   gBr\   r   r-   s    r/   r|   z/TestOptimizeSimple.test_bfgs_gh_2169.<locals>.f  s    1u&2a4xr1         $@Fr   r\   r  r   r   )r
   r   r   )ro   r|   xss      r/   test_bfgs_gh_2169z$TestOptimizeSimple.test_bfgs_gh_2169  s-    	 
 C5u5Cd6r1   c                 X    fd}t               t        j                  |dddd       y )Nc                 V    | d   }|vsJ 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  s9    1BT>!>HHRLad7BqD= r1   r   Tr?   )r   r   tol)setr
   r   )ro   r|   r  s     @r/   test_bfgs_double_evaluationsz/TestOptimizeSimple.test_bfgs_double_evaluations  s'    	! u!T&dEr1   c                 (   t        j                  | j                  | j                  | j                  d| j
                        }|\  }}}t        | j                  |      | j                  | 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       y )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    ''		43C3C(,		04> #q		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~1$6dnn&6&66$ 	

Qq)D68"	/r1   c                     t        j                  | j                  | j                  d| j                        }|\  }}}t        | j                  |      | j                  | j                        d       y )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;  s]    ''		43C3C4804> #q		&)499T]]+C!	#r1   c                       fd}t        j                  | j                   j                        }|\  }}}t	         j                  |       j                   j                        d       y )Nc                 H    j                  |       j                  |       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!	#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
       y )Nc                       e Zd Zd Zd Zy):TestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.Callbackc                 .    d| _         d | _        d | _        y rO  )r   r   r.   rn   s    r/   __init__zCTestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.Callback.__init__W  s    r1   c                 p    || _         t        j                  |      | _        | xj                  dz  c_        y 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  s    
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    		 		 JR)*YND 	SWWa CEE133'CGGQUU+SZZ#{{e###S[[B	Dr1   c                 ,   d| j                   i}t        j                  | j                  | j                  d| j
                  |      }t        | j                  |j                        | 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                        | j                  | j                        d       dx| j                  _
        | j                  _
        t        j                  | j                  | j                  dd|	      }| j                  j                  |j                  k(  sJ t        | j                  |j                        | j                  | j                        d       y )
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<<(dii)9)9%/TYY&*, 			!##		$--(@!	#~~166))).//4>>+tyy$*:*:&0$@ ~~277***		"$$4==)A!	# /0/4>>+tyy$*:*:	&0$@~~277***		"$$4==)A!	#r1   c                 @   d }dD ]  }| j                   |d}t        j                  | j                  | j                  d| j
                  |      }| j                  |j                        }||}n||k  sJ t        || j                  | j                        |        y )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#||S9D##DIIt/?/?+5499,02C 		#%% Az2vvAtyy7cB	Cr1   c                     t        j                  t         j                  t        j                  ddg      dt         j
                  ddi      }|j                  rJ y )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  sI    $0E'1x7I7I)0!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        ||
       y )Nr   ra   c                 :     |       }j                  |       |S rA   )rx   )r.   valuer|   valuess     r/   objfunzMTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption.<locals>.objfun  s    aDEMM% Lr1   )   r2  i,  )r   maxfunc              3   *   K   | ]  \  }}||f  y wrA   r   ).0r  ys      r/   	<genexpr>zPTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption.<locals>.<genexpr>  s     AdaAq6As   )
r
   r   r   r+   fullr	  max	enumerateminr   )ro   grU   r3  lowmediumhighr*  kr5  targetxminr+  r  r|   r2  s                 @@r/   *test_minimize_l_bfgs_b_maxfun_interruptionz=TestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption  s    NNWWQ	 )VTvr!DAAivw&@AA1! VDS\" ..q"QvNdA$'r1   c                     	 	 d	d}g d}t        j                  t         j                  ||t        d            }t	        |j
                  ddd       y )
Nc                    |} | |      }	d}
d}d}d}|r|s||k  rd}|dz  }t        t        j                  |            D ]a  }||   |z
  ||   |z   fD ]6  }t        j                  |      }|||<    | |g| }|
dz  }
||	k  s1|}	|}d}8 | ||       |Y|
|k\  s_d} n |r|s||k  rt	        j
                  |	|||
|dkD        S )Nr)   r   TFr   r.   r   r   r   )r5  r+   sizery   r
   r   )r   rU   r   ru  stepsizerh   r  r   bestxbestyfuncallsniterimprovedstopdimstestxtestys                     r/   custminz/TestOptimizeSimple.test_custom.<locals>.custmin  s   EGEHEHD4EGO 
 - C#Cj83U3Z(5JK , "%&c
 #E 1D 1 A 5=$)E$)E'+H,  + )h&.@# 4EGO& **u508519O Or1   )g?r  r   皙?r   皙?rJ  r   r\   r  r  r   Nr>   r2  N)r
   r   r   rT  r   r.   )ro   rU  rU   r   s       r/   test_customzTestOptimizeSimple.test_custom  sI    <?*.	O> (7(,d(;=sD9r1   c                 x    ddgdfd}ddg}t        j                  t         j                  ||       y )N)r  r4   )r   r_   constraintsc                 P    |d   u sJ |d   u sJ t        j                         S )Nr!  r\  r
   r   )r   rU   r   r!  r\  s      r/   rU  z0TestOptimizeSimple.test_gh10771.<locals>.custmin  s8    8$...=)[888**,,r1   r)   )r   r!  r\  )r
   r   r   )ro   rU  rU   r!  r\  s      @@r/   test_gh10771zTestOptimizeSimple.test_gh10771  sB     6"#	-
 V(.."W!'[	Br1   c           	      H   d }d }dD ]  }|dv rd }n|}t        j                  |ddg|d|      }t        j                  |ddg|d|      } ||j                         ||j                        k  rjJ | d	 ||j                         d
 ||j                                 y )Nc                 4    | \  }}|dz  |dz  z  |dz  z   dz   S )Nr4   r   r)   r   zr.   r8  s      r/   r}   z<TestOptimizeSimple.test_minimize_tol_parameter.<locals>.func  s+    DAqa419q!t#a''r1   c                 p    | \  }}t        j                  d|z  |dz  z  d|dz  z  z   d|dz  z  |z  g      S )Nr4   r   r_   r+   rL   rb  s      r/   dfuncz=TestOptimizeSimple.test_minimize_tol_parameter.<locals>.dfunc  sD    DAq88QqSAX!Q$.!Q$q9::r1   
rB  powellr  r   rR  r  tnccobylarf  slsqprB  rh  rj  rf  r4   r  )r   r  r   r\   : z vs. )r
   r   r.   )ro   r}   rf  r   r   sol1sol2s          r/   test_minimize_tol_parameterz.TestOptimizeSimple.test_minimize_tol_parameter  s    	(	;4 	BF FF$$TAq6s,24D$$TAq6s,24D<$tvv,. BXRTVV~U4<.AB.	Br1   r   r   ignore::RuntimeWarningr   )r+  r  r   r   r[  r	  fmin_tnc
fmin_slsqpc                   
 dv rd }n0t         j                  }t         j                  }t         j                  }t	        j
                  d      }i }j                  d      r6t        t               }dk(  rd|d<   nYdk(  rd	|d
<   nNdv rd|d<   nDd|d<   n>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kD  sJ t        d 
D              sJ t        j                  
d      }	t        d |	D              rJ y )N)rr  r	  c                 V    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+  rs  r   iterrr  r2  r5  )r+  r  i  rh   c                  8    |d<   t        j                  | i |S )Nr   r
   r   )akwr   s     r/   routinezGTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.routine+  s"    %8((!2r22r1   ri  r5  r   rj  r  )r[  r   )rR  r   r  r  r  r  r  r   c                     t        | t        j                        rJ j                  | t	        j
                  |       f       y rA   )
isinstancer
   r   rx   r+   ry   )r.   r   r  resultss      r/   r  zHTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.callbackB  s1    !!X%<%<===NNArwwqz?+r1   r  r4   c              3   R   K   | ]  \  }}t        j                  ||k(         ! y wrA   )r+   rK   r7  r.   r8  s      r/   r9  zITestOptimizeSimple.test_minimize_callback_copies_array.<locals>.<genexpr>K  s      6da266!q&>6s   %'c              3   Z   K   | ]#  \  }}t        j                  |d    |d           % yw)r   N)r+   may_share_memoryr  s      r/   r9  zITestOptimizeSimple.test_minimize_callback_copies_array.<locals>.<genexpr>M  s)     P41ar**1Q416Ps   )+)r
   r   r   r   r+   rd   
startswithgetattrrT  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	  s    22@ >>D$$C&&DXXb\ V$h/G%!"v:%#&x 22$(y!$%y!3 $($4y!8#$($5y!$(Oy!]""F8~%F5M ( (F5M!F6N 	, 	b686v6 7|a6g6666 --gq9P<PPPPPr1   rg  c                 x   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 y )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)   rH  r   r-   s    r/   bad_gradz5TestOptimizeSimple.test_no_increase.<locals>.bad_gradY  s     a!e9#a''r1          @ri  r   r|  r  rl  r%  rk  zSLSQP returns slightly worse)
r+   rL   rT  r
   r   r   r.   r   r   rn  )	ro   r   r}   r  rU   f0r   r   r   s	            r/   test_no_increasez#TestOptimizeSimple.test_no_increaseO  s    		(
 XXse_"X%+u_$b/$r:JBBCbc&(/1T#%%[#''*WLL78CEE{b   r1   c                     d }d }t        j                  g d      }t        j                  ||dd|d      }t	        |j
                  t        j                  g d      d	z  d
       y )Nc                 N    t        | t        j                  g d      z
  dz        S )N)r\   r  rD  r  r4   )rC   r+   rL   r-   s    r/   r|   z7TestOptimizeSimple.test_slsqp_respect_bounds.<locals>.fn  s!    BHH%566:;;r1   c                     t        j                  g dg dg      }t        j                  t        j                  ||       t        j                  ddg      z   | g      S )N)rH  rH  rH  rH  )r  r  rH  r   r   )r+   rL   concatenaterv   r.   ry  s     r/   consz:TestOptimizeSimple.test_slsqp_respect_bounds.<locals>.consq  sG    *,<=>A>>266!Q<"((Ar72C#CQ"GHHr1   )r^   r\   r6   r  rk  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 XX()2g5;D,IKrxx6q8uEr1   )rt  r  r   r   rI  r#  SLSQPr  r  r  r  r  rf  c           	      v   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 y |dk(  r|j"                  dk(  sJ y y )Nr   r   r   r  r   )rI  r   r}  r   r   r  r   rf  r   )r+   rd   r   r
   r   r   r   rT  r   r   r   r   r   r   rt   r   ngevr   )ro   r   MAXITERrU   sfr  r   s          r/   test_respect_maxiterz'TestOptimizeSimple.test_respect_maxiterz  s&    XXb\HNNBH4F4F$//t= #tG/DE^#GGF5M ( (GGF5MWWF6N5f5ww'!!!xx277"""388rww&&& W::?"?x::?"?  r1   )rt  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  |j                  d      r%t        t        |      } ||j                  |fi | n#t        j                  |j                  |||	       d d d        y # 1 sw Y   y xY w)
Nr   r   r)   Trg  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     XXb\HNNBH4F4F$//t=.\\. ?A 	N  (!(F3.g.!!"&&"VWM	N 	N 	Ns   1A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 y )	Nr   c                 ^    t        j                  d| d   z  d| d   z  z
  d| d   z  z
  g      S )NrI   r   皙?r)   Q?r4   re  r-   s    r/   r   zRTestOptimizeSimple.test_respect_maxiter_trust_constr_ineq_constraints.<locals>.fun  s6    88S1Q4Z#!*4tad{BCDDr1   r  r  r   r  r  )r\  r   r   r   r   )	r
   r   r   r   r+   rd   r   rT  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     NN  ""	E  XXb\24St'5(,W(=? ww'!!!r1   c                 n   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                  rJ  t        |j                  dd       t        |j                  dd       t        |j                  dd       t        |j                  dd       t        |j                  dd       y )Nc                     | dz  S r>  r   r-   s    r/   r|   z6TestOptimizeSimple.test_minimize_automethod.<locals>.f      a4Kr1   c                     | dz
  S r>  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-   		 XXse_!!!R(!!!Rv>B7D 6E F!!!R	:!!!R8>t/L.M*14 !!!R8>t/L.M*14 5%6 	C;;;	.....r1   c                     d }dd}t        j                  g d      }t         j                  j                  d      }|j	                  t        |            }t        j                  ||||d       y )Nc                 8    t        j                  | |z
  dz        S r>  r?  r.   rr   s     r/   Yz=TestOptimizeSimple.test_minimize_coerce_args_param.<locals>.Y  s    661Q3(##r1   c                     d| |z
  z  S r>  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   rv  standard_normalr  r
   r   )ro   r  r  rr   r=   xinits         r/   test_minimize_coerce_args_paramz2TestOptimizeSimple.test_minimize_coerce_args_param  s[    	$	 HH67ii##D)##CF+!UQ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.d
gd g	t        j                  ||||      }| d
 d	 d| }|j
                  sJ |       t        |j                  dg|       |j                  dk  sJ |       
dkD  r.|dv rt        	d   d|       	d   dkD  r		d   dk  rJ |        y )N)gJz5r)   gd~QJ)r   r   r#  rI  c                     d   "| d   d   k7  rt        | d   d   z
        d<   t        |       j                         dkD  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  sl    q!)adbem%(11%6"1vzz|c!$%EFF!A$(Q&&r1   c                 B    t        j                  | d   dz
  z  g      S Nr   r)   re  )r.   r  s    r/   r>  z7TestOptimizeSimple.test_initial_step_scaling.<locals>.g  s"    88UAaD1H-.//r1   )r   r   r   )r   r  )r#  rI        r%   rm  r\   err_msgr_   r   )\(?r^   )	r  r  rT  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  s6    "9	'	0 '..vw? 	ME6'E$J/&u}+D!DB#fO##Arq,35C  %?*;2cUCG;;'';CEEC5':77a<((<u}^+#OA$6gN +1-38JQ8NWPWWN ?	r1   )rB  rh  r  r   rR  r  ri  rf  rk  r  r  r  r  r  c                     t         j                  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 ]:  \  }}}dgt        j                  ||||||      }t        |j                   d       < 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ni r   c                 "    t         j                  S rA   r  r-   s    r/   r}   z0TestOptimizeSimple.test_nan_values.<locals>.func)  r  r1   c                 n    dxx   dz  cc<   d   dkD  rt         j                  S j                         S r  )r+   r  r7   )r.   countr=   s    r/   func2z1TestOptimizeSimple.test_nan_values.<locals>.func2,  s0    !HMHQx!|vvzz|#r1   c                 .    t        j                  dg      S Nr\   re  r-   s    r/   r   z0TestOptimizeSimple.test_nan_values.<locals>.grad3  s    88SE?"r1   c                 0    t        j                  dgg      S r  re  r-   s    r/   r   z0TestOptimizeSimple.test_nan_values.<locals>.hess6  s    88cUG$$r1   r\   rR  r  r  r  r  r  r  r  r  ri  r   r|  r  r   r  delta_grad == 0.*.*does not use Hessian.*.*does not use gradient.*r   r   r   r   F)r+   r7   rv  rL   rT  r   warningscatch_warningsrl  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|    ii##F+		$	#	% XXse_  7 7
  * *
 u$4,$4,%+u_$b/$r:J[[* 	1H,C,C,E 	1##H.A;O##4nF##5~G %,,UE5A 11a''211V079S[[%0	1	1 	1 	1 	1 	1 	1s%   E40B&E(E4(E1	-E44E=)rB  r  r   r  ri  rj  rf  rk  r  r  r  r  r  c           	         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        d d d        t        dt        | j                  j                              D ]W  }t        j                   | j                  j                  |dz
     | j                  j                  |         sKt#        d|        y # 1 sw Y   xY w# 1 sw Y   xY w)	Nr  r  r   r  r  r  r)   zDuplicate evaluations made by )r   r   r+   r   r  r  rl  r  r
   r   r}   rf   r5  r  rm   rs   array_equalru   )ro   r   r   r   r  s        r/   test_duplicate_evaluationsz-TestOptimizeSimple.test_duplicate_evaluationsR  s!    d - -))C    99D[[* 	AH,C,C,E 	A##H.A;Odii)9)9%+4A	A 	A q#djjll+, 	?A~~djjll1q514::<<?C"4VH=? ?	?	A 	A 	A 	As$   D:A
D.D:.D7	3D::E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(  r?t        j                  di |ddii}	|j                  |	j                  cxk(  rk(  sJ  J |dk(  r{t        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 y t        j                  di |ddii}	|j                  j                  d      sJ |j                  |	j                  cxk(  rk(  sJ  J |dk7  r;|j                  |	j                  k(  sJ t        |j                  |	j                         |dv r|j                  dk(  sJ 	 |dk7  r|j                  rJ y y ) 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                 V    | j                    | j                        k(  sJ          y rA   r   r.   )intermediate_resultr  r|   s    r/   callback_interfacezJTestOptimizeSimple.test_callback_stopiteration.<locals>.callback_interface  s(    *..!4G4I4I2JJJJ
r1   r4   c                        e Zd Zdef fdZy)@TestOptimizeSimple.test_callback_stopiteration.<locals>.Callbackr  c                 V    |j                    |j                        k(  sJ          y rA   r  )ro   r  r  r|   s     r/   r  zITestOptimizeSimple.test_callback_stopiteration.<locals>.Callback.__call__  s(    .22a8K8M8M6NNNNJr1   N)r   r   r   r   r  )r  r|   s   r/   r  r    s     r1   r  c                              y rA   r   )xkr   r  s     r/   r  zJTestOptimizeSimple.test_callback_stopiteration.<locals>.callback_interface  s    
r1   c                  ~     xj                   dz  c_         d _         j                   k(  rd _        t               y )Nr)   FT)r  r  StopIteration)r  rh   s   r/   r  z@TestOptimizeSimple.test_callback_stopiteration.<locals>.callback  s7    JJ!OJ!HMzzW$ $#o% %r1   r   rV  )rU   r   r   r   r   r  rB  rf  r   ru  rj  rU   rh   r4  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`rk  >   rf  r  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  sS   	% 	)	* q  "  "*	& 
a61a1 F&F3EF]"kGX##JfJx6IJC88sxx2722222x '3vd|#4Q#67G##KfKy'6JKC::###;; $; < < <::?"?;; $F G G G ##KfKy'6JKC;;))*MNNN77cgg000000W 77cgg%%%&"(,F"FszzQNNBX{{"?{ r1   c                     d}t        t        |      5  t        j                  d t	        j
                  d             d d d        y # 1 sw Y   y xY w)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 	<k2776?;	< 	< 	<s   +AA)rB  r  ri  rh  rj  rf  r  c                 ~   d }t        ddgddg      }d}t        j                  t        |      5  t	        j
                  |g d||	       d d d        t        g d
g d      }d}t        j                  t        |      5  t	        j
                  |g d||	       d d d        y # 1 sw Y   [xY w# 1 sw Y   y xY w)Nc                 2    t        j                  | dz        S r>  r?  r-   s    r/   r|   z:TestOptimizeSimple.test_minimize_invalid_bounds.<locals>.f  rA  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 	MaIfVL	M 	9-J]]:S1 	MaIfVL	M 	M	M 	M
	M 	Ms   B'B3'B03B<)r   r  rR  rh  c                 L   |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        d|d<   t        j                  d d	d	gf||d
| y # 1 sw Y   ,xY w)Nrh  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 r1   r   r   Fr   c                 ,    t        j                  |       S rA   r  r-   s    r/   r  zBTestOptimizeSimple.test_minimize_warnings_gh1953.<locals>.<lambda>  s    HNN1$5 r1   )r
   r   r  r  r   r  r   )ro   r   r  warning_typer   s        r/   test_minimize_warnings_gh1953z0TestOptimizeSimple.test_minimize_warnings_gh1953  s     x'eX5G5G-H*0(*:%55 	  B/\\,.>? 	H9Aq6 H%+WH@FH	H  51v 	D!'	D<B	D	H 	Hs   BB#N)+r   r   r   r  r  r  r  r  r  r  r  r  r  r!  r'  r+  r.  rE  rZ  r_  rp  r   rk  	fail_slowrl  rm  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	F/.	##D4#8C"(4$:LBB2 [[2[[ 56[[ 89[[X,.>?@=Q	@ : 7 =Q~ [[X (L M!M!4F [[X (2 3
#3
#@ [[X (? @N@N"(/4H0d [[X (G H
01H
01d [[X (G H
?H
?* [[ 89[[X'>?[[/;O# < @ :O#b<
 [[X (8 9M9M [[X'LMD NDr1   r  r   )r  ri  r  rt  rf  c                     d }t        j                  |ddg|       }|j                  sJ t        |j                  dgd       y )Nc                 2    t        j                  | dz        S r>  r?  r-   s    r/   r|   z$test_minimize_with_scalar.<locals>.f  r  r1      )r  r2  rC  r`   r   r   )r
   r   r   r   r.   )r   r|   r   s      r/   test_minimize_with_scalarr    s?     

Ar;-
GC;;;CEEC5t,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                  j                  dd	d
gd
d	gd	d	gg      d        Zd Zy)TestLBFGSBBoundsc                      d| _         d| _        y )N))r)   NNN)r)   r   )r!  rg   rn   s    r/   rp   zTestLBFGSBBounds.setup_method  s    /r1   c                 0    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                 J    | j                  ||      | j                  ||      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       y )Nr   rH  )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  s_    ((Ar70404=1a }!,1V9,!4==t4r1   c                     t        j                  | j                  ddgd| j                        \  }}}|d   dk(  s
J |d          t	        || j
                  d       y )	Nr   rH  r  )r   r!  r   r  r;   r   )r
   r	  r  r!  r   rg   r  s       r/   r  z%TestLBFGSBBounds.test_l_bfgs_b_funjac  sX    ((1b'04=1a}!,1V9,!4==t4r1   c                     t        j                  | j                  ddgd| j                  | j                        }|d   s
J |d          t        |j                  | j                  d       y )	Nr   rH  r#  r   r   r!  r   r   r;   r   )r
   r   r   r   r!  r   r.   rg   ri  s     r/   test_minimize_l_bfgs_b_boundsz.TestLBFGSBBounds.test_minimize_l_bfgs_b_bounds  sW    1b'*$(HHT[[B9~-s9~-~t}}48r1   r!  )r   r)   r  c                     t        j                  t        d      5  t        j                  | j
                  ddgd| j                  |       d d d        y # 1 sw Y   y xY w)Nz	.*bound.*r   r   rH  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  sL     ]]:[9 	;dhhB
"&((6;	; 	; 	;s   1AAc                    g d}ddg}t        j                  ||      D ]j  \  }}t        j                  | j                  ddg|d|| j
                  dd i      }|d	   s
J |d
          t        |j                  | j                  d       l y )Nr  r"  r   r   rH  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 	=IC##DHHq"gD+5(+DKK-CT,JLC y>13y>1>CEE4==t<	=r1   Nr"  )r   r   r   rp   r   r   r  r   r  r%  r   rk  rm  r'  r+  r   r1   r/   r  r    sl    -.559 [[X
7	
7	
7	( 
;
;
=r1   r  c                   :   e Zd Zd Zd dZd Zej                  j                  d      d        Z	d Z
d Zd Zd	 Zd
 Zd Zej                  j!                  dg d      d        Zej                  j!                  dg d      d        Zej                  j                  d      ej                  j!                  dg d      d               Zd Zd Zej                  j!                  dddg      d        Zej                  j                  d      ej                  j!                  de      ej                  j!                  dddg      ej                  j!                  dg d      d                             Zej                  j!                  dg d      d        Zy)!TestOptimizeScalarc                     d| _         y )Nr6   )rg   rn   s    r/   rp   zTestOptimizeScalar.setup_method4  s	    r1   c                     ||z
  dz  dz
  S )zObjective functionr4   r   r   )ro   r.   ry  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        d}t        j                  t        |
      5  t        j                  | j                  d       d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nr;   r   r  r  brackTr   r   irH     /\(f\(xb\) < f\(xa\)\) and \(f\(xb\) < f\(xc\)\)r   rH  r   r)   \(xa < xb\) and \(xb < xc\)r   rH  r)   )r
   brentr   r   rg   r   r   rQ   )ro   r.   r   s      r/   
test_brentzTestOptimizeScalar.test_brent;  s   NN488$4==t4NN488844==t4NN4886!dmm$7NN488=94==t4D]]:W5 	7NN488:6	7 1]]:W5 	7NN488:6	7 	7		7 	7	7 	7s   "E5
"F5E>F
r   c                 X   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
  |       a d}t        j                  t        |      5  t        j                  | j                  d       d d d        d}t        j                  t        |      5  t        j                  | j                  d       d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nr;   r   r1  r2  Tr4  r   r5  r  )r   r)   r   )rh   r   r4   r7  r   r8  r9  r:  )	r
   goldenr   r   rg   r   r   r   rQ   )ro   r.   maxiter_test_casesrh   rU   nfev0r   r   s           r/   test_goldenzTestOptimizeScalar.test_goldenP  s   OODHH%4==t4OODHHH54==t4OODHH$7!dmm$7OODHHM:4==t4OODHH!,4==)&) 	0G1$GB'tLAQ%14Ew/		0 E]]:W5 	8OODHHJ7	8 1]]:W5 	8OODHHJ7	8 	8		8 	8	8 	8s   ""H)"H H H)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       y )Nr   r)   r  r   r   r;   )	r
   	fminboundr   r   rg   r+   rL   rP   rQ   r  s     r/   test_fminboundz!TestOptimizeScalar.test_fminboundp  s    txxA.14(txxA.4==t4txx1#!F4==t4j("4"4dhh1Er1   c                 d   t        j                  t        d      5  t        j                  | j
                  t        j                  d      d       d d d        t        j                  | j
                  dt        j                  d            }t        || j                  d       y # 1 sw Y   VxY w)Nz.*must be finite scalars.*r   r)   r4   r)   r   r;   r   )r   r   rQ   r
   rD  r   r+   rd   rL   r   rg   r  s     r/   test_fminbound_scalarz(TestOptimizeScalar.test_fminbound_scalar{  sw    ]]:-IJ 	>txx&)91=	> txxBHHQK84==t4		> 	>s   5B&&B/c                 8    d }t        j                  |dd       y )Nc                     | dz  S r>  r   r-   s    r/   r   z,TestOptimizeScalar.test_gh11207.<locals>.fun  r  r1   r   )r
   rD  )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       y )Nr;   r   Brentr   r_   r  r   r1  r6   )bracketr   r   )r   r   r5  r?  )r   r)   Bounded)r!  r   r   r)   r  )r)   r   boundedr   r6   )r   r)   r!  r   r   r4   rC  )r
   minimize_scalarr   r.   r   rg   r   rT  r+   rL   rP   rQ   rd   r  s     r/   test_minimize_scalarz'TestOptimizeScalar.test_minimize_scalar  s   $$TXX.004==t4$$TXXg>yyy$$TXXg-1!_>99}$$TXXx*1'CCD1 	
4==t4$$TXXg*0223! 	
4==t4$$TXX}*1'CCD1 	
4==t4$$TXXx*1(DDEA 	
4==t4$$TXXh*0223! 	
4==t4$$TXX}*1(DDEA 	
4==t4$$TXXf6,5778q 	
14($$TXXf7,5778q 	
4==t4$$TXXrxx}79xx}7F+-88SE?*=,57 89q 	
 	4==t4j(":":DHH#IG	E 	j(":":DHH hhqk1-ig	O $$TXXq"((1+6F,5778q 	
4==t4r1   c                     	 	 dd}t        j                  | j                  d|t        d            }t	        |j
                  | j                  d       y )	Nc                 &   |d   |d   z   dz  } | |      }	d}
d}d}d}|rU|sS||k  rNd}|dz  }||z
  ||z   fD ]  } | |g| }|
dz  }
||	k  s|}	|}d} | ||       ||
|k\  rd}n
|r|s||k  rNt        j                  |	|||
|dkD        S )Nr)   r   r  TFrH  r^  )r   rO  r   ru  rJ  rh   r  r   rK  rL  rM  rN  rO  rP  rS  rT  s                   r/   rU  z?TestOptimizeScalar.test_minimize_scalar_custom.<locals>.custmin  s    QZ'!*,3EJEHEHD4EGO 
#h.0@A (E--EMHu} % %#'( 'UO%(f*<D 4EGO  **u508519O Or1   )r   r   rW  rX  )rO  r   r   r;   r   rY  )r
   rS  r   rT  r   r.   rg   )ro   rU  r   s      r/   test_minimize_scalar_customz.TestOptimizeScalar.test_minimize_scalar_custom  sJ    AD*.	O8 &&txx.5/3T/BD 	t}}48r1   c                 F    t        j                  | j                  d       y )Nr6   r   r
   rS  r   rn   s    r/   &test_minimize_scalar_coerce_args_paramz9TestOptimizeScalar.test_minimize_scalar_coerce_args_param  s      4r1   r   )r;  rQ  r?  c                 X    dD ]%  }t        j                  | j                  d|i       ' y )N)r   r)   r4   r_   r   )r   rZ  )ro   r   r   s      r/   	test_dispzTestOptimizeScalar.test_disp  s-     ! 	GD$$TXX~F	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 y )NrQ  r!  r  r   r   r.   r   r   r   r   r   )r
   rS  r   rt   )ro   r   r  rK  s       r/   test_result_attributesz)TestOptimizeScalar.test_result_attributes  s    *0I*=(S"I&2))$((L6LV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        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   c                     dxx   dz  cc<   d   dkD  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  s?    !HMHQx!|vv!tcBFF1Io--r1   r8  r  r   r  r  r  r  rQ  r!  rO  r   r  r   F)r+   r   r  r  rl  r  r  r
   rS  rT  r   r   )ro   r   r}   rO  r!  r  r   r  s          @r/   r  z"TestOptimizeScalar.test_nan_values  s    
 	. [[* 	-H,C,C,E 	-##H.A;O##4nF##5~G CE+1Y+>h'BF**4 E E-3E<B373CEC e,	- 	- 	- 	- 	- 	-s#   C3BC'C3'C0	,C33C<c                     d }t        j                  |      }t        |j                  dd       t        j                  |dddi      }t        |j                  d	       y )
Nc                     | dz  S r>  r   r-   s    r/   r|   zCTestOptimizeScalar.test_minimize_scalar_defaults_gh10911.<locals>.f  r  r1   r   r   r   )r)   r2  r  r  )r!  r   r)   )r
   rS  r   r.   )ro   r|   r   s      r/   %test_minimize_scalar_defaults_gh10911z8TestOptimizeScalar.test_minimize_scalar_defaults_gh10911  sT    	 &&q)qt,&&q07/?Aq!r1   c                    d}t        j                  t        |      5  t        j                  t
        j                  dt
        j                  f       d d d        t        j                  t        |      5  t        j                  t
        j                  t
        j                  df       d d d        y # 1 sw Y   cxY w# 1 sw Y   y xY w)Nz+Optimization bounds must be finite scalars.r   r)   r  )	r   r   rQ   r
   rS  r+   rB   r  r  r  s     r/   'test_minimize_non_finite_bounds_gh10911z:TestOptimizeScalar.test_minimize_non_finite_bounds_gh10911(  s     <]]:S1 	A$$RVVQK@	A]]:S1 	A$$RVVRVVQK@	A 	A	A 	A	A 	As   6B676C6B?Cr;  r?  c                     d}t        j                  t        |      5  t        j                  t
        j                  |d       d d d        y # 1 sw Y   y xY w)Nz'Use of `bounds` is incompatible with...r   rG  r   r!  )r   r   rQ   r
   rS  r+   rB   )ro   r   r  s      r/   2test_minimize_unbounded_method_with_bounds_gh10911zETestOptimizeScalar.test_minimize_unbounded_method_with_bounds_gh109111  sF     8]]:S1 	K$$RVVF6J	K 	K 	Ks   'AArq  r  r)   r;   fshape)r   r)   r)   r)   c                 p   fd}d\  }}|dk7  rt        ||f      nt        ||f      }|j                  t        ||             t        j                  |fi |}|j                  j
                  |j                  j
                  cxk(  r& ||j                        j
                  cxk(  rk(  sJ  J y )Nc                 R    t        j                  | dz        j                        S Nr   )r+   rL   reshape)r.   rj  s    r/   r|   zITestOptimizeScalar.test_minimize_scalar_dimensionality_gh16196.<locals>.fA  s     88AqD>))&11r1   )r	  rI   rQ  )rO  r  )r   r  )rT  updater
   rS  r.   shaper   )	ro   r   r  rj  r|   ry  br  r   s	      `     r/   +test_minimize_scalar_dimensionality_gh16196z>TestOptimizeScalar.test_minimize_scalar_dimensionality_gh161969  s    	2 1*0I*=$1v&Aq6* 	d&c23&&q3F3uu{{cggmmGqx~~GGGGGGr1   )rQ  r;  r?  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        d|d<   t        j                  |f||d| y # 1 sw Y   (xY w)Nc                     | dz
  dz  S r3   r   r-   s    r/   r|   zBTestOptimizeScalar.test_minimize_scalar_warnings_gh1953.<locals>.fP  r  r1   rQ  r!  rO  r  r   Tr_   r  r	  r   r   Fr   )r   r  r
   r  rS  )ro   r   r|   r  kwdr   s         r/   $test_minimize_scalar_warnings_gh1953z7TestOptimizeScalar.test_minimize_scalar_warnings_gh1953L  s    	  I-h92hsA.\\(22:JK 	/$$Q /vw /'-/	/    M67MfM	/ 	/s    BB
NrN  )r   r   r   rp   r   r<  r   rk  rl  rB  rE  rH  rK  rT  rW  r[  rm  r]  r_  r  rd  rf  ri  r   rt  rx  r   r1   r/   r-  r-  3  s    7* [[ 568 78>	F5&
:5x!9F5 [[X'EFG GG
 [[X'EF& G& [[ 56[[X'EF- G 7-<"A [[X':;K <K [[ 89[[X'>?[[UQI.[[X'9:H ; / @ :H [[X'EFN GNr1   r-  c                       e Zd Zej                  j                  d      d        Zej                  j                  dd      d        Zy)TestBracketrq  c                     d }d}t        j                  t        |      5  t        j                  |dd       d d d        t        j                  t        |      5  t        j                  |dt
        j                         d d d        t        j                  t        |      5  t        j                  |d       d d d        t        j                  t        |      5  t        j                  |d       d d d        d }d	}t        j                  t        |      5  t        j                  |d
dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)Nc                 &    d| k  | dk  z  r| dz  S dS NrH  r)   r4   g      Y@r   r-   s    r/   r|   z3TestBracket.test_errors_and_status_false.<locals>.fe       !VA.1a4:U:r1   9The algorithm terminated without finding a valid bracket.r   rH  r)   r  r2  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
   rO  r+   r  r;  r?  )ro   r|   r   s      r/   test_errors_and_status_falsez(TestBracket.test_errors_and_status_falseb  s)   	; N]]<w7 	'QA&	']]<w7 	,QBFF+	,]]<w7 	-NN1G,	-]]<w7 	.OOAW-	.	L M]]<w7 	7Qc26	7 	7	' 	'	, 	,	- 	-	. 	.	7 	7s;   E&E%E E( E4EEE%(E14E=r   )r;  r?  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 y )Nc                 &    d| k  | dk  z  r| dz  S dS r}  r   r-   s    r/   r|   z9TestBracket.test_minimize_scalar_success_false.<locals>.f|  r~  r1   r  r  )rO  r   r_   r   r2  )r
   rS  r   r   r   r   r   )ro   r   r|   r   r   s        r/   "test_minimize_scalar_success_falsez.TestBracket.test_minimize_scalar_success_falsey  sq    	; N&&q'&I;;#++%%%xx1}}ww!||ww#~~r1   N)	r   r   r   r   rk  rl  r  rm  r  r   r1   r/   rz  rz  `  sJ    [[ 897 :7, [[X':; <r1   rz  c                  b    t        t        t        j                  t        j
                  d       y )Ng{Gzr>  )rP   rQ   r
   r;  r+   rG   r   r1   r/   test_brent_negative_tolerancer    s    *hnnbff$?r1   c                   $    e Zd Zd Zd Zd Zd Zy)TestNewtonCgc                 P   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       y 	Nr   r\   r   rI  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  sx    XXtSk"$,$6$6%-%8%8$('2	4
 {{'CKK'{rxx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       y )NrI  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  sh    XXm$
 "$3%4'2$(* {{'CKK'{T:d;r1   c                 4   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	       y )
Nr   r\   r  r   rI  r  r)   r  r   )
r+   rL   r
   r   r   r   r   r   r   r.   r  s      r/   test_finite_differencez#TestNewtonCg.test_finite_difference  sr    XXtSk"$,$6$6%.$('2	4
 {{'CKK'{rxxA/d;r1   c                 X   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       y r  )r+   rL   r
   r   r   r   r   r   r   r   r.   r  s      r/   test_hessian_update_strategyz)TestNewtonCg.test_hessian_update_strategy  sx    XXtSk"$,$6$6%-]]_$('2	4
 {{'CKK'{rxxA/d;r1   N)r   r   r   r  r  r  r  r   r1   r/   r  r    s    <
<<<r1   r  c                     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 ]1  \  }}}}	 | ||||      \  }
}t        |
|d       t        ||	d       3 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 ]1  \  }}}}	 | ||||      \  }
}t        |
|d       t        ||	d       3 y )N)333333rH  r   r  )r   r)   ffffff@r_   r`   r   r   r   )r`   r4   r  r   r\   r   r   r   r  r   r`   r)   r   r   rH  r)   r`   r   r)   r   r   r  r`   r   r   r)   r  r_   )r\   r)   r   r   )r\   r   rH  r4   r6   )r  r   rH  r4   gffffff?g333333@)r\   r   rH  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    sr   
 ((99O ((/0K((+,K 
-	 B	.	!B 
RXXm$dC0	RXXm$b!,	RXXm$dC0	RXXm$b!,	RXXm$b!,	RXXn%tS1	RXXn%tT2	RXXm$dC0	RXXm$b"-	RXXm$c3/	RXXm$b!,	RXXm$b"-	RXXn%tT2I  !* -5$ E;DBDt,Dt,- ((RVVGR"&&"56K((BFFAsBFF34K 
RXXm$rvvgrvv6	RXXm$b!,	RXXm$rvvgs3	RXXm$b"&&1	RXXm$b!,	RXXn%tRVV4	RXXm$rvvgrvv6	RXXm$b"-	RXXm$rvvgs3	RXXm$b"&&1	RXXm$b"-	RXXn%tRVV4I !* -5$ E;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        y )Nc                 b    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  %    vvq288$:;;ABBr1   r  r   r  rH  r  r4   r  r6   r  r  r  r   r)   r         ?r`   r   r)   r)   皙?r  r   rH  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    s    **==C	-	 B8D((RVVG9q=)K((BFF8a<(K 
-	 "%	-	 !$	-	 #&	-	 #&	.	!4(	-	 #&	.	!4(I  6A+D"b154A1i4B<d31r6-	1r65+D"bd8C8C1571i 	4B<d31r6-	1r65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 ]Q  \  }} | |||d|||      \  }	}
}t        |	 |||z        d       t        |
||z  d       t        |||z  d       S t        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 ]Q  \  }} | |||d|||      \  }	}
}t        |	 |||z        d       t        |
||z  d       t        |||z  d       S t        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 ]W  \  }} | |||d|||      \  }	}
}t        |	 ||||z  z         d       t        |
|||z  z   d       t        |||z  d       Y t        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 ]Q  \  }} | |||d|||      \  }	}
}t        |	 |||z        d       t        |
||z  d       t        |||z  d       S t        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 ]W  \  }} | |||d|||      \  }	}
}t        |	 ||||z  z         d       t        |
|||z  z   d       t        |||z  d       Y y )!Nc                 b    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  rH  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  	  sh    **==C	-	 B8D ((C57#K((B46"K 
-	 "%	-	 !$	-	 #&	-	 #&	.	!4(	-	 #&	.	!4(I  6A+D"bd8C8C1571i 	4B<d31r6-	1r656 ((C57bT>*K((C57bT>*K 
-	 #&	-	 #&	-	 #&	-	 #&	.	!2&	-	 #&	.	!4(I  6A+D"bd8C8C1571i 	4B<d31r6-	1r656 
.	!B8D 
-	 "%	-	 #&	-	 #&	-	 $'	I  6A+D"bd8C8C1571i 	4QV,482B;T2	1r656 
-	 B8D ((C"&&266'267K((BFFC45K 
-	 #&	-	 #&	-	 #&	-	 #&	.	!2&	-	 #&	.	!4(I  6A+D"bd8C8C1571i 	4B<d31r6-	1r656 
.	!B8D 
-	 "%	-	 #&	-	 #&	-	 $'	I  6A+D"bd8C8C1571i 	4QV,482B;T2	1r65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       y )Nr   333333?r   c                     | \  }}| j                   k\  j                         r| j                  k  j                         sJ |dz  |dz  z   S r>  )lbrK   ub)r.   ry  rs  r!  s      r/   r   ztest_powell_limits.<locals>.fun	  sK    1VYY##%1		>*>*>*@@@AvQr1   r  r  r)   T)r  r  keep_feasiblec                 D    | dk\  r| dk  sJ t        j                  |       S r  r*   r-   s    r/   r}   z test_powell_limits.<locals>.func	  s#    Av!q&  vvayr1   r^   rh  )r   rU   r   r!  )r
   r   r   )r   r}   r!  s     @r/   test_powell_limitsr  	  sq    __aVc2Y/F
 csBiH __!dWEF $C5&Ir1   c                      t         d d g} | D ]=  }t        j                  |ddgd      }t        j                  |j
                        r=J  y )Nc                 >    t        j                  t        |             S rA   r+   rL   r   r-   s    r/   r  z$test_powell_output.<locals>.<lambda>	  s    RXXeAh/ r1   c                 @    t        j                  t        |       g      S rA   r  r-   s    r/   r  z$test_powell_output.<locals>.<lambda>	  s    288U1XJ;O r1   r  r   r  )rU   r   )r   r
   r   r+   isscalarr   )funsr   r   s      r/   test_powell_outputr  	  sM    /1OPD $b	(C{{377###$r1   c                       e Zd Z eej
                        d        Z eej                        d        Z eej                  ej                        d        Zy)	TestRosenc                     |j                  g d      }t        t        j                  |      |j                  d             y )Nr[   r`   )r  r#   r
   r   ro   r  r.   s      r/   
test_rosenzTestRosen.test_rosen	  s0     JJy!q)

2	(r1   c           	          |j                  g d      }t        t        j                  |      |j	                  ||j                  d      j
                               y )N)r)   r)   r)   r)   r\   )r  )r  r#   r
   r   
zeros_liker  r  s      r/   test_rosen_derzTestRosen.test_rosen_der	  sD    JJ|$**1-arzz"~/C/CD	Fr1   c                    |j                  d      }|j                  g d      }|j                  g d      }t        j                  ||      }|j                  ||j                        }t        j
                  |      |z  }t        ||       y )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	  sr    jjn JJy!JJy!%%a+IIa###A&*E"r1   N)r   r   r   r$   r
   r   r  r   r  r   r  r  r   r1   r/   r  r  	  sf    x~~&( '( x))*F +F
 x**H,D,DE	# F	#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.   r8  ry  rs  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         rW  re  r   r.   r8  s      r/   rR   rR   	  s    DAq88Qq!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  re  r  s      r/   rS   rS   	  sr    DAq88bAg!mb(!A#!)4cAaCi1r!Q$w!346 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       y )Nc                 d    t        j                  dd| d   z  z
  d| d   z  z
  d| d   z  z
  g      S )N   rI   r   r  r)   r  r4   re  r-   s    r/   r}   z0test_minimize_multiple_constraints.<locals>.func	  s:    xxcAaDj31:5qtCDEEr1   c                 4    t        j                  | d   g      S r(   re  r-   s    r/   func1z1test_minimize_multiple_constraints.<locals>.func1	      xx1r1   c                 4    t        j                  | d   g      S r>  re  r-   s    r/   r  z1test_minimize_multiple_constraints.<locals>.func2	  r  r1   r  r  c                 *    d| d   | d   z   | d   z   z  S )NrH  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   rE  )r}   r  r  r  r|   r   s         r/   "test_minimize_multiple_constraintsr  	  s`    F   D)E*E*,D) 

Ayd
KCCEE;U3r1   c                   T    e Zd Zd Zej
                  j                  d      d        Zy)TestOptimizeResultAttributesc                     ddg| _         t        j                  | _        t        j                  | _        t        j                  | _        t        j                  | _	        ddg| _
        y )Nr   )r`   r  )rU   r
   r   r}   r   r   r   r   r  r   r!  rn   s    r/   rp   z)TestOptimizeResultAttributes.setup_method
  sK    a&NN	%%''	--
 ),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        |D ]+  }||v r|||   v rt        |      sJ |t        |      v r+J  t        j                  t               rJ  y # 1 sw Y   XxY w)N)r   r   r.   r   r   r   r   rj  r   r   z7Method .+ does not use (gradient|Hessian.*) information)r   r   r   r   )r   r  r  rl  r  r
   r   r}   rU   r   r   r   rt   dirr  r   str)ro   
attributesskipr   r   	attributes         r/   test_attributes_presentz4TestOptimizeResultAttributes.test_attributes_present
  s    !
5'"& 	0F((* :''+-;= ''		4776,0HH499.2jj:	: ( -	T>i4<&?sI... CH,,,- ckk3///!	0: :s   A)C''C0	N)r   r   r   rp   r   rk  r  r  r   r1   r/   r  r  
  s*    - [[10 0r1   r  c                 ~    | \  }}|\  }}}}}}	}
}}}}}}||dz  z  ||z  |z  z   ||dz  z  z   ||z  z   ||z  z   |	z   S r>  r   rc  r   r.   r8  ry  rs  rr   r  r   r|   r>  r  r  r7  rB  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 r>  r*   r  s                    r/   f2r   -
  ^    DAq06-Aq!Q1aAq!QBrvv1qAaC!8+,u4556r1   c                     | \  }}|\  }}}}}}	}
}}}}}}| t        j                  ||z
  dz  ||z
  dz  z    |z        z  S r>  r*   r  s                    r/   f3r  3
  r  r1   c                 N    t        | g| t        | g| z   t        | g| z   S rA   )r  r   r  )rc  r   s     r/   
brute_funcr  9
  s*    a>&>BqN6N*R^F^;;r1   c                   r    e Zd Zd Zd Zd Zd Zej                  j                  d      d        Z
d Zd Zy	)
	TestBrutec                     d| _         t        ddd      t        ddd      f| _        t        j                  ddg      | _        y )Nr4   r_   r   r   r   r   ,   rH  r4   r  r)   r  r^   r  r         ?g_}gi?)r   slicerrangesr+   rL   rg   rn   s    r/   rp   zTestBrute.setup_method?
  s<    Db!T*E"a,>?+z!:;r1   c                     t        |g| S rA   )r  )ro   rc  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                   d       t        j                  t        | j                  | j                  dt         j                        }t        |d   | j                  d       t        |d   t        | j                  g| j                   d       t        j                  | j                  | j                  | j                  dt         j                        }t        |d   | j                  d       y )NTr   r   finishr   r   r   r)   )	r
   bruter  r  r   r+  r   rg   r   )ro   resbrutes     r/   
test_brutezTestBrute.test_bruteH
  s
   >>*dll.28==JT]]>Z%L%L!	# >>*dll.2)1):):< 	T]]>Z%L%L!	#
 >>$//4<<'+{{)1):):< 	T]]>r1   c                 >    d }t        j                  |dgdd        y )Nc                 h    t        | j                        dk(  sJ | j                  d   dk(  sJ | dz  S )Nr)   r   r4   )r  rr  r-   s    r/   r|   zTestBrute.test_1D.<locals>.fb
  s5    qww<1$$$771:?"?6Mr1   r  r_   )Nsr  )r
   r  )ro   r|   s     r/   test_1DzTestBrute.test_1D_
  s    	
 	q7)$7r1   r   c                    t        j                  t        | j                  | j                  dd       }t        j                  t        | j                  | j                  dd d      }t        |d   |d          t        |d   |d          y )NTr  r4   )r   r   r  workersrH  r   )r
   r  r  r  r   r   )ro   r  	resbrute1s      r/   test_workerszTestBrute.test_workersi
  sr     >>*dll.24A NN:t||$++/3D!M	 		"x|4	!hqk2r1   c                    t         j                  j                  d      fd}d}t        j                  t
        |      5  t        j                  || j                  | j                  d       d d d        y # 1 sw Y   y xY w)Nr8   c                 ,    j                  d      dz  S rq  rr  )rc  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   rv  r   r  r  r
   r  r  r   )ro   capsysr}   r  r=   s       @r/   r  zTestBrute.test_runtime_warningu
  se    ii##D)	( W\\.4 	LNN4DKKdK	L 	L 	Ls   .A::Bc                 j    d }t        j                  |t        ddd      fd      }t        |d       y )Nc                     | |d   z  S rO  r   )r.   r   s     r/   r|   z+TestBrute.test_coerce_args_param.<locals>.f
  s    Q<r1   r  r   r  r4   rY  r   )r
   r  r  r   )ro   r|   r  s      r/   test_coerce_args_paramz TestBrute.test_coerce_args_param
  s1    	  >>!eB3&7%9B!$r1   N)r   r   r   rp   r  r  r  r   rk  r  r  r  r"  r   r1   r/   r  r  =
  sD    <
&?.8 [[2	3 	3L%r1   r  r   c                  ^  	 dd l } dd l		fd	fddfd}fd}| j                  j                         5 }g }|j	                  |j                  |             |j	                  |j                  |             |D ]  }|j                           	 d d d        y # 1 sw Y   y xY w)Nr   c                 6    j                  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                  6    t        j                  dg       S Nr`   r   rx  )
min_methodr)  s   r/   
minimizer1z*test_cobyla_threadsafe.<locals>.minimizer1
         '*e-79 	9r1   c                  6    t        j                  dg       S r.  rx  )r/  r+  s   r/   
minimizer2z*test_cobyla_threadsafe.<locals>.minimizer2
  r1  r1   )concurrent.futuresr(  futuresThreadPoolExecutorrx   submitrK  )

concurrentr0  r3  pooltasksrs   r/  r)  r+  r(  s
         @@@@r/   test_cobyla_threadsafer;  
  s    
  J9
9
 
			.	.	0 DT[[,-T[[,- 	AHHJ		  s   AB##B,c                   f    e Zd Zd Zd Zej                  j                  d      d        Zd Z	d Z
y)TestIterationLimitsc                 6    t        j                         | _        y rA   )ri   rj   rM  rn   s    r/   rp   z TestIterationLimits.setup_method
  s    !)r1   c                 P   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   rM  rr   r+   r  arctan2rB   )ro   r*  rV   rs   s       r/   	slow_funczTestIterationLimits.slow_func
  s    t}}c*DMMO1wwqtQwqtQw'AaD!A$)?1vvadQh#%%r1   r   c                 (    | j                  dd       y )Nrt     check_limitsrn   s    r/   test_neldermead_limitz)TestIterationLimits.test_neldermead_limit
  s    --r1   c                 (    | j                  dd       y )Nrh  ra   rD  rn   s    r/   test_powell_limitz%TestIterationLimits.test_powell_limit
  s    (D)r1   c           
      Z   ddgddgddgfD ]  }dD ]p  }d| j                   _        t        j                  | j                  ||d|i      }| j                   j                  |d   k(  sJ |d	   r|d   |k  reJ |d   |k\  rpJ  dD ]A  }t        j                  | j                  ||d
|i      }|d	   r|d   |k  r6J |d   |k\  rAJ  d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  rqJ |d   |k\  r||d   |k\  r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  rnJ |d   |dz  k  r|J |d   |dz  k\  r|d   |dz  k\  rJ   y )Nr>   r)   r4   )r3  i    r   ru  r   r   r   rh   r   r3  rJ  )rh   ru  )rM  rr   r
   r   rA  r+   r  )ro   r   default_itersstart_vmfevr   mits          r/   rE  z TestIterationLimits.check_limits
  s   c
QFQF3 ,	>G' 	/"#''/51940@B }}#f+555y>v;---v;$...	/ ' -''/51:C0@B y>u:,,,u:,,,-  "2httRVVnE 
D	c"#''/5<?;?1AB }}#f+555y>v;-#e*2CCCv;$.#e*2CCC
D  "vvtntRVVn= >	c"#''/5<?;?1AB }}#f+555y>|"6{]1_<<<"5z]1_<<<K=?:"5z]1_<> =>=,	>r1   N)r   r   r   rp   rA  r   rk  r  rF  rH  rE  r   r1   r/   r=  r=  
  s9    *& [[2. .*->r1   r=  c                  b   d } d }d }g d}|D ]I  }t        j                  | t        j                  dg      |      }|j                  j
                  dk(  rIJ  g d}|D ]K  }t        j                  | t        j                  dg      |||	      }|j                  j
                  dk(  rKJ  y )
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                 0    t        j                  dgg      S rR  re  r-   s    r/   r   z3test_result_x_shape_when_len_x_is_one.<locals>.hess
  s    xx"r1   )	rt  r  r   r   r#  r  r,  COBYQAr  r>   r   rk  )r  r  r  r  r  rI  r  )r
   r   r+   rL   r.   rr  )r   r   r   r  r   r   s         r/   %test_result_x_shape_when_len_x_is_onerU  
  s     ,G #RXXse_VDuu{{d"""#
,G #RXXse_V%)+uu{{d"""#r1   c                       e Zd Zd Zd Zy)FunctionWithGradientc                 6    t        j                         | _        y rA   )ri   rj   number_of_callsrn   s    r/   r  zFunctionWithGradient.__init__  s    (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   rY  rr   r+   rC   r  s     r/   r  zFunctionWithGradient.__call__  sR    t++S1%&D  "!#vvad|QU""r1   Nr  r   r1   r/   rW  rW  
  s    1#r1   rW  c                      t               S rA   )rW  r   r1   r/   function_with_gradientr\    s    !!r1   c                    t        |       }t        j                  ddg      }t         ||      d       | j                  j
                  dk(  sJ t        |j                  |      d|z         | j                  j
                  dk(  sJ d       t         |d|z        dd	       | j                  j
                  dk(  sJ d       y )
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   rY  rr   
derivativer\  memoized_functionrU   s      r/   )test_memoize_jac_function_before_gradientrb    s    "#9:	3*	B%b)3/!1133q888%004a"f=!1133q8 8	888 !b&!4:< "1133q8 3238r1   c                    t        |       }t        j                  ddg      }t        |j	                  |      d|z         | j
                  j                  dk(  sJ t         ||      d       | j
                  j                  dk(  sJ d       t        |j	                  d|z        d|z  d	       | j
                  j                  dk(  sJ d       y )
Nr\   r  r4   r)   r  zHfunction is not recomputed if function value is requested after gradientr   r^  r  )r   r+   rL   r   r_  rY  rr   r`  s      r/   )test_memoize_jac_gradient_before_functionrd  -  s    "#9:	3*	B%004a"f=!1133q888%b)3/!1133q8 8	888 $$QV,a"f:< "1133q8 3238r1   c           	         t        |       }|j                  }t        j                         }t	        j
                  ddg      }t        ||d||dd      }| j                  j                  dk(  sJ |j                  |dz          | j                  j                  dk(  sJ |j                  |dz          | j                  j                  d	k(  sJ y)
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   r_  r
   r   r+   rL   r   rY  rr   r   )r\  ra  r   r   rU   scalar_functions         r/   test_memoize_jac_with_bfgsrg  @  s    
 ##9:

&
&C==?D	3*	B$2r3dD:O!1133q888S!!1133q888S!!1133q888r1   c                      t               5  t        j                  d t        j                   t        j                  d       d d d        y # 1 sw Y   y xY w)Nc                 4    t        j                  | dz  g      S r>  re  r-   s    r/   r  ztest_gh12696.<locals>.<lambda>Y  s    bhh1v& r1   Fr   )r   r
   rD  r+   r#  r   r1   r/   test_gh12696rj  U  sC    		 C&E	CC C Cs   8AAc                     t         j                  j                  d      } | j                  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   rH  r  )r_   r4   r4   r  Tc                 V    |r| j                   dk(  sJ |rt        |              y y ro  )rI  r   )r.   
check_sizecheck_valuesi_ebr  s      r/   check_xz(setup_test_equal_bounds.<locals>.check_xf  s0    66Q;;AdGRX. r1   c                 >     |        t        j                  |       S rA   r  r.   rp  s    r/   r}   z%setup_test_equal_bounds.<locals>.funcl  s    
~~a  r1   c                 >     |        t        j                  |       S rA   )r
   r   rr  s    r/   r   z%setup_test_equal_bounds.<locals>.gradp  s    
!!!$$r1   c                      |        y rA   r   )r.   r   rp  s     r/   r  z)setup_test_equal_bounds.<locals>.callbackt  s
    
r1   c                 N    t        | t              sJ  | j                         y rA   )r  r   r.   )r  rp  s    r/   	callback2z*setup_test_equal_bounds.<locals>.callback2w  s#    -~>>>#%%&r1   c                 (     | d       | dd dz
  S )NFrn  r   r)   r   rr  s    r/   constraint1z,setup_test_equal_bounds.<locals>.constraint1{  s    &1vzr1   c                 P     | d       t        j                  |       }d|d<   |S )NFrx  r)   r   r+   r  r.   dcrp  s     r/   	jacobian1z*setup_test_equal_bounds.<locals>.jacobian1  )    &]]11	r1   c                 (     | d       | dd dz
  S )NFrx  r4   r_   r^   r   rr  s    r/   constraint2z,setup_test_equal_bounds.<locals>.constraint2  s    &1v|r1   c                 P     | d       t        j                  |       }d|d<   |S )NFrx  r)   r4   r{  r|  s     r/   	jacobian2z*setup_test_equal_bounds.<locals>.jacobian2  r  r1   r   )r#  r  r  Fr  c                 $     |        |       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 r1   r  )	r  kwdsbound_typesr\  	callbacksr  r  rU   ro  )TT)r+   r7   rv  rL   r   r  r   )r=   rU   r  r  rv  ry  r~  r  r  c1ac1bc2ac2br  r  r  r\  r  datarp  r}   r   ro  r  s                      @@@@@r/   setup_test_equal_boundsr  ^  s   
))


&C	AB	"	#B	/	"B"HD/!%' kBFF7A
6C
kBFF7Ay
AC
kBFF7A
6C
kBFF7Ay
AC +G '&1D 4K  "b:SzEC5>SEC5>#Jc
+#Jc
+#Jc
+-K x+I[&YBb$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 rLt        |      rAt        j                  |      }dt        |j                        v rt        j                  d       |	|
k7  } |||      }|j                  || ||	|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              sod }t        j                  ||ddg   | |ddd         }t!        |j"                  |j"                         t!        |j$                  ddg   |j$                  d       yyyy)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   ro  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   rH  r   )r+   rL   r  r
   r   )r.   new_xs     r/   r   ztest_equal_bounds.<locals>.fun  s=    HHbffa45EE1a&M>>%((r1   r4   rh  g>r   )platformmachiner   r  eb_datacallableinspect	signaturer  
parametersrq  r
   r   r   r   r   r   r   r.   r+   r  r   rr  r  r   )r   r  r  r\  r  r  r  rU   ro  test_constraintsreference_constraintssig	fd_neededr!  r   expectedr   fd_ress                     r/   test_equal_boundsr    s?     	i'FeOUu$)=23T]GDMBt}gfoB.9++' 1?@!!hx&8) C$77KKFG "%::IBFKKrVv 0hH I



#d
#C  F%-%7%7-BDH
 ;;;CGGX\\7CEE8::D1DK5(VVT77==q   CGGDM8<<#5DAK+z&&/I	)
 ""3#%q!f:*0*01+7 	, 	q!fvxxd;% 0J+Kr1   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             | j                         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                  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                  j                  |      sJ y y )Nr)   c                 F    t         j                  j                  |       |z   S rA   )r+   linalgnorm)r.   p1s     r/   r|   z test_all_bounds_equal.<locals>.f  s    yy~~a 2%%r1   rl  )r4   r4   )r\   rD  rC  r\   r  z/All independent variables were fixed by bounds.)r4   rR  r4   r  c                 ,    t        j                  |       S rA   r?  r-   s    r/   conz"test_all_bounds_equal.<locals>.con  s    66!9r1   r`   )r!  r   r\  Fz3All independent variables were fixed by bounds, butr   Tz8All independent variables were fixed by bounds at valuesrk  )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    s   & fF	B


Ar&
@C;;;CGGQSz]+88q==;;KKKKD


Ar&d
KC;;;CGGQSz1-.||~ 	!#w4r&cU
 {{e###C:/xx1}}G{{%%g...!#w2r&cU
 {{d"""C:/xx1}}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 y )Nc                 <    | 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                 6    | 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   rx  )r|   r  r\  r!  s       r/   test_eb_constraintsr  3  se    -. #401KY]FF1I	 q>% D(((r1   c                     t         t        t        t        t        t
        d} | j                         D ]  \  }}|D ]  }t        ||         dddd}|j                         D ]  \  }}t        t        t        ||        y )N)r   rS  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 ) 	)F(	)) !
 0557 @j,?@r1   c                      t        j                  ddgddg      } t        j                  t         j                  t	        j
                  ddg      d|        y )Nr  r  r  r   r  r  )r
   r   r   r   r+   rL   r  s    r/   test_bounds_with_listr  b  sB    __Rc3Z8F288QF+HVr1   )rk  r  rf  rh  rB  r   r  r  c                 p    t        j                  g d      }t        j                  t        || ddi       y )Nr   rh   gfffffY@r   )r+   rL   r
   r   r   )r   rU   s     r/    test_minimize_maxiter_nonintegerr  j  s,    
 
+	,BeRE8JKr1   c            	      <   d } d }d }g d}g d}t        j                  d      dz  }t        D ]j  }d }d }||v r|}||v r|}t        j                  | ||||      }	t        |	j                  t        j                  t        j                  |            d	
       l y )Nc                     t        j                  t        j                  |             }| |z  } | | z  } t        j                  |       S rA   )r+   rO   rI  rC   r  s     r/   fquadz/test_x_overwritten_user_function.<locals>.fquadw  s8    IIbggaj!	Q	Qvvayr1   c                 p    t        j                  t        j                  |             }| dz  } | d|z  z  } | S r>  )r+   rO   rI  r  s     r/   	fquad_jacz3test_x_overwritten_user_function.<locals>.fquad_jac}  s3    IIbggaj!	Q	QU
r1   c                 X    t        j                  t        j                  |             dz  S rR  )r+   r   rI  r-   s    r/   
fquad_hessz4test_x_overwritten_user_function.<locals>.fquad_hess  s    vvbggaj!C''r1   )rR  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   rI  )
r  r  r  meth_jac	meth_hessrU   methr   r   r   s
             r/    test_x_overwritten_user_functionr  s  s    (HI 
c	B  B8C9Dr$CdKryy5DABr1   c                       e Zd Zd Zy)TestGlobalOptimizationc                    d }t        j                  |d      t        j                  |dg      t        j                  |dg      t        j                  |dg      t        j
                  |dg      g}|D ]r  }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
      rrJ  y )Nc                     | dz  S r>  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  rK  s       r/   test_optimize_result_attributesz6TestGlobalOptimization.test_optimize_result_attributes  s    	 ((!4224'C==y1**4';??4'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       y )Nr  r   )r
   approx_fprimerT   r  r   rR   rS   )r>  r  s     r/   test_approx_fprimer    sJ     	}j9AA}5DA}o>AA}5DAr1   c                  ~   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                         y )Nc                 *    | 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&&
ICrxxc
+"b0BCF


A&&
ICCGGSWW%CEE355!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 y )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(  r4  r  g~@sϡ*J@WE@砇}Q4q%@?.XG? }#: @pr*@ݦg	oB@TY"_2#?/)S)r  r  r  r  r)  r5  r  r@  gBw[E@<ۤbs@W#y4uֲ>Иe);M>''@Ѐz3jXD@!xtJ>ICı=฿crZ?)r  r   r  r  r*  r6  r   rA  rK  gR,@珉f`bB<tk3mIE۶T@ۄ{e6r@ǫ#u!qs =磴?)r  r  r  r  r+  r7  r  rB  rL  rU  g6mkS@[z4Ud@罹l25ם<9
x>HO$d@瓊_l@瀛o{폽@)r  r  r  r  r,  r8  r  rC  rM  rV  r^  gI~w@u'|rfF>ɋ[餭 '@}@+LcEV!@)r  r  r  r   r-  r9  r  rD  rN  rW  r_  rf  gR3Z?A	#?jG@7VeeG|83緭v,?/yng)r  r  r  r!  r.  r:  r  rE  rO  rX  r`  rg  rm  gGb:@G>_R@`)Y禀\ɍ^?9o2)r  r  r  r"  r/  r;  r  rF  rP  rY  ra  rh  rn  rs  g6x"m@oe%JnqvyN?~+)r  r  r  r#  r0  r<  r  rG  rQ  rZ  rb  ri  ro  rt  rx  gbS?RBU>@WUKܿsliq?)r  r  r  r$  r1  r=  r  rH  rR  r[  rc  rj  rp  ru  ry  r|  g<8bM@Q;*ʔ K6@)r  r  r  r%  r2  r>  r  rI  rS  r\  rd  rk  rq  rv  rz  r}  r  g&Ad?aBI)r  r	  r  r&  r3  r?  r	  rJ  rT  r]  re  rl  rr  rw  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 r>  r+   rv   r.   HJs    r/   r   z9test_gh12513_trustregion_exact_infinite_loop.<locals>.fun:  s2    vvbffQlA&*RVVAq\99r1   c                 6    t        j                  |       z   S rA   r  r  s    r/   r   z9test_gh12513_trustregion_exact_infinite_loop.<locals>.jac=  s    vva|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

<

9

<

:

9

;

;

8

8

;

:

:

:

8

;

9u^	:`	AB 	  	A:  
"B



R8C ;;;s355z?T!!!r1   rI  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 y )Nc                 &     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!!%F&/jBI IMM:>>2IKK.>>Z__,,,>>Z__,,,>>Z__,,,r1   r  )	r  r   rk  r  rI  r   ri  r  r  c                       e Zd Zd Zd Zd Zy)TestWorkersc                 <    t        j                  g d      | _        y )N)r\   r  rD  )r+   rL   rU   rn   s    r/   rp   zTestWorkers.setup_methody  s    ((?+r1   c                    |xs t         }d d d}|dv rt        |d<   d|d<   t        |      5 }t        j                  t
        | j                  fd|i|d|}d d d        t        j                  t
        | j                  fd|i|}t        j                  |j                         t        |j                  |j                         y # 1 sw Y   qxY w)	N)r   r   )rI  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##tww)22vIMC	 ''477
#)
-1
 	SUUKMM*SXX{//0	 	s   +CCc                 R   |xs t         }|dvrt        j                  | d       t        g dg d      }t	        |      5 }t        j                  t        | j                  |d|i|      }d d d        j                  sJ t        |j                  d   d       y # 1 sw Y   1xY w)	N)r  rk  r  ri  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KK6("456o6  	B##twwv	2vC	 {{{a#&	 	s   +BB&N)r   r   r   rp   r  r  r   r1   r/   r  r  k  s    ,1('r1   r  )r_   r  )Anyr.   returnc                     t        |       dz   S r(   )r   r-   s    r/   rosen_annotatedr    s    8a<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                      y rA   r   )r  s    r/   callable_annotatedr    s    r1   z'Requires PEP 649/749 from Python 3.14+.c                   r    e Zd Zd Zej
                  j                  dg d      d        Zd Zd Z	d Z
d Zy	)
TestAnnotationsc                 J    t        j                  ddg      | _        d| _        y )Nr\   r  r	  )r+   rL   rU   brute_paramsrn   s    r/   rp   zTestAnnotations.setup_method  s    ((C;'Jr1   r   )rt  r  r   r   rI  r  ri  r,  rk  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| y )N)r   r   r  )r   r   rI  r#  r  r  r  r  r  r  r  r   )rI  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  s_    $ T7IJ R R .DK 6 6/DL/477J6JTJr1   c                     ddg}t        j                  t        |dt              }|j                  sJ d|j
                          y )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  sC    7#--ovA7IK{{>0>>{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                          y )Nr.   ry  r  c                 @    |t        j                  | | z        z  |z   S rA   r*   r.   ry  rs  rr   s       r/   
model_funcz>TestAnnotations.test_curve_fit_annotations.<locals>.model_func  s     rvvqb1f~%))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  sW    88rAvQ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((UEy59;!Aa|#H(:3;;-&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
                  |       y )Nrc  r   r  c                 ~    | \  }}|\  }}}}}}	}
}}}}}}||dz  z  ||z  |z  z   ||dz  z  z   ||z  z   ||z  z   |	z   S r>  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                 6    t        j                  | |g|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  su    	E+ 	E 	E% 	E
	@[ 	@k 	@/:	@ Q%uRD'9:r7):):>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                          y )Nf_newx_newf_oldx_oldr  c                      y)NTr   )r  r  r  r  s       r/   acceptable_testzFTestAnnotations.test_basinhopping_annotations.<locals>.acceptable_test  s    r1   r4   r)   )rN  r:   accept_testr  )	r  r  boolr
   r  r  rU   r   r   )ro   r  r   s      r/   test_basinhopping_annotationsz-TestAnnotations.test_basinhopping_annotations  sn    	5 	 	-2	:E	JN	 ##OTWWAA0?A {{>0>>{r1   N)r   r   r   rp   r   rk  rm  r  r  r  r  r  r   r1   r/   r  r    sJ    K [[X ( "	K#"	K?I&S?r1   r  c                      t        j                  ddg      } t        t        j                  d      5 }|5 }t        t        | |j                         d d d        ~~d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r4   )r  )r+   rL   r	   multiprocessingPoolr   r   r  )rU   pool_objr   s      r/   .test_multiprocessing_too_many_open_files_23080r    sp    	3*	B	O00!	4  	55"aee4	5	 	5 	5 s"   A1A%
A1%A.	*A11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   rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rk  rm  r  r  r-  rz  r  r  r  r  r  r  r  r  r  rR   rS   rT   r  r  r  r  r  r   r  r  r  r  r;  r=  rU  rW  fixturer\  rb  rd  rg  rj  r  r  xfail_on_32bitrn  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  @? ? 4 - ; < O  8 70 0 7 3 '*3l7' 7'tRA RAj-"0H8D$ >I:X'FT8 
 : 
 : 
"< 
iD iDX :-	-:= :=zjN jNZ	& &R@)< )<X<-~#6Lz6zJ*$# #6;7 a&4, 0  0F=77<H% H%V r   FB> B>J#2# # " "3&3&9*CUp "
# NO$5$$'2;?	J6R L  N 79#561w}'=>(>?W[%9:A< ; @ ? 2 7N PA<H 79#56(/ 7(/V).@0  $ LL%BP* *0B" A"H K#@AZ)2Iy)J K-K B-. T1I.
$' $'
 /$'P gKjj{ u ; ; K K 	K 	D 	 C$$w.D  FS? S?FS?lr1   