+
    ,i$m                     x   ^ RI t^ RIt^ RIHt ^ RIHt ^ RIHtH	t	H
t
Ht ^ RIHtHtHtHtHtHtHt  ! R R4      t ! R R	4      t ! R
 R4      t ! R R4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R4      t ! R R4      t ! R R4      tR tR t R t!R t" ! R  R!4      t#R# )"    N)
block_diag)	csc_array)assert_array_almost_equalassert_array_lessassert_suppress_warnings)NonlinearConstraintLinearConstraintBoundsminimizeBFGSSR1rosenc                   P   a  ] tR t^t o RtR	R ltR tR tR t]	R 4       t
RtV tR# )
MaratosProblem 15.4 from Nocedal and Wright

The following optimization problem:
    minimize 2*(x[0]**2 + x[1]**2 - 1) - x[0]
    Subject to: x[0]**2 + x[1]**2 - 1 = 0
Nc                   V^,          \         P                  ,          p\         P                  ! V4      \         P                  ! V4      .V n        \         P
                  ! RR.4      V n        W n        W0n        RV n	        R#          ?        N
nppicossinx0arrayx_opt
constr_jacconstr_hessboundsselfdegreesr    r!   radss   &&&& P/usr/lib/python3/dist-packages/scipy/optimize/tests/test_minimize_constrained.py__init__Maratos.__init__   V    s{255 66$<.XXsCj)
$&    c                    ^V^ ,          ^,          V^,          ^,          ,           ^,
          ,          V^ ,          ,
          #     r$   xs   &&r'   funMaratos.fun!   s0    !A$'AaD!G#a'(1Q4//r+   c                x    \         P                  ! ^V^ ,          ,          ^,
          ^V^,          ,          .4      #    r   r   r0   s   &&r'   gradMaratos.grad$   s*    xx1Q41QqT6*++r+   c                <    ^\         P                  ! ^4      ,          # r5   r   eyer0   s   &&r'   hessMaratos.hess'       {r+   c                    R  pV P                   f   R pMV P                   pV P                  f   R pMV P                  p\        V^^W#4      # )c                 L    V ^ ,          ^,          V ^,          ^,          ,           # r   r/   r1   s   &r'   r2   Maratos.constr.<locals>.fun,       Q47QqT1W$$r+   c                 D    ^V ^ ,          ,          ^V ^,          ,          ..# r-   r/   rC   s   &r'   jacMaratos.constr.<locals>.jac0        1Q41Q4())r+   c                 X    ^V^ ,          ,          \         P                  ! ^4      ,          # r-   r;   r1   vs   &&r'   r=   Maratos.constr.<locals>.hess6       1vbffQi''r+   r    r!   r	   r$   r2   rG   r=   s   &   r'   constrMaratos.constr*   R    	% ??"* //C#( ##D"31c88r+   r"   r!   r    r   r   <   NN__name__
__module____qualname____firstlineno____doc__r(   r2   r8   r=   propertyrQ   __static_attributes____classdictcell____classdict__s   @r'   r   r      s2     0, 9 9r+   r   c                   V   a  ] tR t^>t o RtR
R ltR tR tR tR t	]
R 4       tR	tV tR# )MaratosTestArgsr   Nc                   V^,          \         P                  ,          p\         P                  ! V4      \         P                  ! V4      .V n        \         P
                  ! RR.4      V n        W@n        WPn        Wn	        W n
        RV n        R# r   )r   r   r   r   r   r   r   r    r!   abr"   )r$   re   rf   r%   r    r!   r&   s   &&&&&& r'   r(   MaratosTestArgs.__init__F   s`    s{255 66$<.XXsCj)
$&r+   c                ^    V P                   V8w  g   V P                  V8w  d   \        4       hR # N)re   rf   
ValueError)r$   re   rf   s   &&&r'   
_test_argsMaratosTestArgs._test_argsP   s$    66Q;$&&A+, &r+   c                    V P                  W#4       ^V^ ,          ^,          V^,          ^,          ,           ^,
          ,          V^ ,          ,
          # r-   )rk   r$   r1   re   rf   s   &&&&r'   r2   MaratosTestArgs.funT   s<    !A$'AaD!G#a'(1Q4//r+   c                    V P                  W#4       \        P                  ! ^V^ ,          ,          ^,
          ^V^,          ,          .4      # r5   )rk   r   r   rn   s   &&&&r'   r8   MaratosTestArgs.gradX   s6    xx1Q41QqT6*++r+   c                ^    V P                  W#4       ^\        P                  ! ^4      ,          # r5   )rk   r   r<   rn   s   &&&&r'   r=   MaratosTestArgs.hess\   s     {r+   c                    R  pV P                   f   R pMV P                   pV P                  f   R pMV P                  p\        V^^W#4      # )c                 L    V ^ ,          ^,          V ^,          ^,          ,           # rB   r/   rC   s   &r'   r2   #MaratosTestArgs.constr.<locals>.funb   rE   r+   c                 D    ^V ^ ,          ,          ^V ^,          ,          ..# r5   r/   rC   s   &r'   rG   #MaratosTestArgs.constr.<locals>.jacf   rI   r+   c                 X    ^V^ ,          ,          \         P                  ! ^4      ,          # r-   r;   rK   s   &&r'   r=   $MaratosTestArgs.constr.<locals>.hessl   rN   r+   rO   rP   s   &   r'   rQ   MaratosTestArgs.constr`   rS   r+   )re   rf   r"   r!   r    r   r   rU   )rX   rY   rZ   r[   r\   r(   rk   r2   r8   r=   r]   rQ   r^   r_   r`   s   @r'   rc   rc   >   s7     0, 9 9r+   rc   c                   Z   a  ] tR t^tt o RtR	R ltR t]R 4       tR t	]R 4       t
RtV tR# )
MaratosGradInFuncr   Nc                   V^,          \         P                  ,          p\         P                  ! V4      \         P                  ! V4      .V n        \         P
                  ! RR.4      V n        W n        W0n        RV n	        R# r   r   r#   s   &&&& r'   r(   MaratosGradInFunc.__init__|   r*   r+   c                    ^V^ ,          ^,          V^,          ^,          ,           ^,
          ,          V^ ,          ,
          \         P                  ! ^V^ ,          ,          ^,
          ^V^,          ,          .4      3# r-   r7   r0   s   &&r'   r2   MaratosGradInFunc.fun   s\    1Q47QqT1W$q()AaD0!AaD&(AadF+,. 	.r+   c                    R # )Tr/   r$   s   &r'   r8   MaratosGradInFunc.grad   s    r+   c                <    ^\         P                  ! ^4      ,          # r5   r;   r0   s   &&r'   r=   MaratosGradInFunc.hess   r?   r+   c                    R  pV P                   f   R pMV P                   pV P                  f   R pMV P                  p\        V^^W#4      # )c                 L    V ^ ,          ^,          V ^,          ^,          ,           # rB   r/   rC   s   &r'   r2   %MaratosGradInFunc.constr.<locals>.fun   rE   r+   c                 D    ^V ^ ,          ,          ^V ^,          ,          ..# r5   r/   rC   s   &r'   rG   %MaratosGradInFunc.constr.<locals>.jac   rI   r+   c                 X    ^V^ ,          ,          \         P                  ! ^4      ,          # r-   r;   rK   s   &&r'   r=   &MaratosGradInFunc.constr.<locals>.hess   rN   r+   rO   rP   s   &   r'   rQ   MaratosGradInFunc.constr   rS   r+   rT   rU   )rX   rY   rZ   r[   r\   r(   r2   r]   r8   r=   rQ   r^   r_   r`   s   @r'   r}   r}   t   sA     .   9 9r+   r}   c                   P   a  ] tR t^t o RtR	R ltR tR tR t]	R 4       t
RtV tR# )
HyperbolicIneqzProblem 15.1 from Nocedal and Wright

The following optimization problem:
    minimize 1/2*(x[0] - 2)**2 + 1/2*(x[1] - 1/2)**2
    Subject to: 1/(x[0] + 1) - x[1] >= 1/4
                               x[0] >= 0
                               x[1] >= 0
Nc                    ^ ^ .V n         RR.V n        Wn        W n        \	        ^ \
        P                  4      V n        R# )r   g~T>?g~1[?N)r   r   r    r!   r   r   infr"   )r$   r    r!   s   &&&r'   r(   HyperbolicIneq.__init__   s6    a&)
$&Q'r+   c                    RV^ ,          ^,
          ^,          ,          RV^,          R,
          ^,          ,          ,           # )         ?r/   r0   s   &&r'   r2   HyperbolicIneq.fun   s/    AaD1Hq= 3!s
Q#666r+   c                B    V^ ,          ^,
          V^,          R,
          .# )r   r   r/   r0   s   &&r'   r8   HyperbolicIneq.grad   s    !q!A$*%%r+   c                .    \         P                  ! ^4      # r-   r;   r0   s   &&r'   r=   HyperbolicIneq.hess   s    vvayr+   c                    R  pV P                   f   R pMV P                   pV P                  f   R pMV P                  p\        VR\        P                  W#4      # )c                 L    ^V ^ ,          ^,           ,          V ^,          ,
          # r   r/   rC   s   &r'   r2   "HyperbolicIneq.constr.<locals>.fun   s    adQh<!A$&&r+   c                 D    RV ^ ,          ^,           ^,          ,          R..# )r   r/   rC   s   &r'   rG   "HyperbolicIneq.constr.<locals>.jac   s!    QqTAXM)2.//r+   c                     ^V^ ,          ,          \         P                  ! ^V ^ ,          ^,           ^,          ,          ^ .^ ^ ..4      ,          # r-   r7   rK   s   &&r'   r=   #HyperbolicIneq.constr.<locals>.hess   sE    1vbhhAaD1Hq=!(<)*A(0 1 1 1r+   g      ?r    r!   r	   r   r   rP   s   &   r'   rQ   HyperbolicIneq.constr   sV    	' ??"0 //C#1 ##D"3bffc@@r+   rT   )NNrW   r`   s   @r'   r   r      s4     (7& A Ar+   r   c                   P   a  ] tR t^t o RtR	R ltR tR tR t]	R 4       t
RtV tR# )

RosenbrockzRosenbrock function.

The following optimization problem:
    minimize sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
c                    \         P                  P                  V4      pVP                  R^V4      V n        \         P
                  ! V4      V n        RV n        R# )r   Nr   )r   randomRandomStateuniformr   onesr   r"   )r$   nrandom_staterngs   &&& r'   r(   Rosenbrock.__init__   s@    ii##L1++b!Q'WWQZ
r+   c                    \         P                  ! V4      p\         P                  ! R VR,          VRR R,          ,
          R,          ,          ^VRR ,
          R,          ,           ^ R7      pV# )g      Y@:r   NNN       @axisr   )r   asarraysum)r$   r1   rs   && r'   r2   Rosenbrock.fun   sX    JJqMFF5AbEAcrFCK/#55QsVc8IIr+   c                   \         P                  ! V4      pV^R pVRR pVR,          p\         P                  ! V4      p^W#^,          ,
          ,          RWB^,          ,
          ,          V,          ,
          ^^V,
          ,          ,
          V^R% RV^ ,          ,          V^,          V^ ,          ^,          ,
          ,          ^^V^ ,          ,
          ,          ,
          V^ &   ^VR,          VR,          ^,          ,
          ,          VR&   V# )r   Nr.   NN  r   p)r   r   
zeros_like)r$   r1   xmxm_m1xm_p1ders   &&    r'   r8   Rosenbrock.grad   s    JJqMqW#2"mmABM*EEM*R/023q2v,?Ab	!!qtQw/!q1Q4x.@A22)*B
r+   c                *   \         P                  ! V4      p\         P                  ! RVRR ,          ^4      \         P                  ! R VRR ,          R4      ,
          p\         P                  ! \	        V4      VP
                  R7      pRV^ ,          ^,          ,          R V^,          ,          ,
          ^,           V^ &   ^VR&   ^RV^R ^,          ,          ,           R VR,          ,          ,
          V^R% V\         P                  ! V4      ,           pV# )r   N)dtypei  r   r   r   )r   
atleast_1ddiagzeroslenr   )r$   r1   Hdiagonals   &&  r'   r=   Rosenbrock.hess   s    MM!GGD1Sb6M1%afb(AA88CF!''2QqT1WnsQqTz1A5ta"gqj0032;>2!!r+   c                    R# )Nr/   r/   r   s   &r'   rQ   Rosenbrock.constr   s    	r+   r"   r   r   N)r.   r   rW   r`   s   @r'   r   r      s2     
  r+   r   c                   >   a  ] tR t^t o RtRR lt]R 4       tRtV t	R# )IneqRosenbrockzRosenbrock subject to inequality constraints.

The following optimization problem:
    minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
    subject to: x[0] + 2 x[1] <= 1

Taken from matlab ``fmincon`` documentation.
c                f    \         P                  V ^V4       RR.V n        RR.V n        RV n        R# )r.   gn?g$?Nr         ࿩r   r(   r   r   r"   r$   r   s   &&r'   r(   IneqRosenbrock.__init__  s2    D!\2t*f%
r+   c                H    ^^..p^p\        V\        P                  ) V4      # r   r
   r   r   )r$   Arf   s   &  r'   rQ   IneqRosenbrock.constr  s'    VHBFF7A..r+   r   NrB   
rX   rY   rZ   r[   r\   r(   r]   rQ   r^   r_   r`   s   @r'   r   r      s#      / /r+   r   c                   .   a  ] tR tRt o RtRR ltRtV tR# )BoundedRosenbrocki  a  Rosenbrock subject to inequality constraints.

The following optimization problem:
    minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
    subject to:  -2 <= x[0] <= 0
                  0 <= x[1] <= 2

Taken from matlab ``fmincon`` documentation.
c                ~    \         P                  V ^V4       RR.V n        RV n        \	        R^ .^ ^.4      V n        R# )r.   g?Ngɿr   )r   r(   r   r   r   r"   r   s   &&r'   r(   BoundedRosenbrock.__init__  s<    D!\2+
b!Wq!f-r+   r   NrB   )rX   rY   rZ   r[   r\   r(   r^   r_   r`   s   @r'   r   r     s     . .r+   r   c                   >   a  ] tR tRt o RtRR lt]R 4       tRtV t	R# )EqIneqRosenbrocki&  a  Rosenbrock subject to equality and inequality constraints.

The following optimization problem:
    minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
    subject to: x[0] + 2 x[1] <= 1
                2 x[0] + x[1] = 1

Taken from matlab ``fimincon`` documentation.
c                f    \         P                  V ^V4       RR.V n        RR.V n        RV n        R# )r.   gWs`?g|\*?Nr   r   r   r   s   &&r'   r(   EqIneqRosenbrock.__init__0  s2    D!\2t*w'
r+   c                n    ^^..p^p^^..p^p\        V\        P                  ) V4      \        W4V4      3# r   r   )r$   A_ineqb_ineqA_eqb_eqs   &    r'   rQ   EqIneqRosenbrock.constr6  sH    a&Ax "&&&9 T24 	4r+   r   NrB   r   r`   s   @r'   r   r   &  s#      4 4r+   r   c                   \   a  ] tR tRt o RtRR ltR tR tR tR t	R	 t
]R
 4       tRtV tR# )Eleci@  a  Distribution of electrons on a sphere.

Problem no 2 from COPS collection [2]_. Find
the equilibrium state distribution (of minimal
potential) of the electrons positioned on a
conducting sphere.

References
----------
.. [1] E. D. Dolan, J. J. Mor'{e}, and T. S. Munson,
       "Benchmarking optimization software with COPS 3.0.",
        Argonne National Lab., Argonne, IL (US), 2004.
Nc                   Wn         \        P                  P                  V4      V n        V P                  P                  ^ ^\        P                  ,          V P                   4      pV P                  P                  \        P                  ) \        P                  V P                   4      p\        P                  ! V4      \        P                  ! V4      ,          p\        P                  ! V4      \        P                  ! V4      ,          p\        P                  ! V4      p	\        P                  ! WxV	34      V n
        RV n        W0n        W@n        RV n        R# )r   N)n_electronsr   r   r   r   r   r   r   r   hstackr   r   r    r!   r"   )
r$   r   r   r    r!   phithetar1   yzs
   &&&&&     r'   r(   Elec.__init__N  s    &99((6hhq!bee)T-=-=>  "%%0@0@AFF5MBFF3K'FF5MBFF3K'FF5M))Q1I&
$&r+   c                    VR V P                    pWP                   ^V P                   ,           pV^V P                   ,          R  pW#V3# ri   r   )r$   r1   x_coordy_coordz_coords   &&   r'   _get_cordinatesElec._get_cordinates^  sS    %T%%&$$Q)9)9%9:A((()*((r+   c                    V P                  V4      w  r#pVR,          V,
          pVR,          V,
          pVR,          V,
          pWVV3# )NNN)r   Nr   )r$   r1   r   r   r   dxdydzs   &&      r'   _compute_coordinate_deltasElec._compute_coordinate_deltasd  sN    $($8$8$;!'W'W'W'rzr+   c                d   V P                  V4      w  r#p\        P                  ! R R7      ;_uu_ 4        V^,          V^,          ,           V^,          ,           R,          pRRR4       ^ X\        P                  ! V4      &   R\        P                  ! V4      ,          #   + '       g   i     LF; i)ignoredivider   Nr   )r  r   errstatediag_indices_fromr   )r$   r1   r   r   r  dm1s   &&    r'   r2   Elec.funk  sz    44Q7
[[))q52q5=2q5(T1C *)*B  %&RVVC[   *)s   -BB/	c                   V P                  V4      w  r#p\        P                  ! R R7      ;_uu_ 4        V^,          V^,          ,           V^,          ,           R,          pRRR4       ^ X\        P                  ! V4      &   \        P                  ! W%,          ^R7      ) p\        P                  ! W5,          ^R7      ) p\        P                  ! WE,          ^R7      ) p\        P
                  ! WgV34      #   + '       g   i     L; i)r  r  Nr         )r  r   r  r	  r   r   )	r$   r1   r   r   r  dm3grad_xgrad_ygrad_zs	   &&       r'   r8   	Elec.gradr  s    44Q7
[[))q52q5=2q5(T1C *)*B  %&&&**&&**&&**yy&&122 *)s   -C77D	c           	        V P                  V4      w  r#pV^,          V^,          ,           V^,          ,           R,          p\        P                  ! RR7      ;_uu_ 4        VR,          pVR,          pRRR4       \        P                  ! V P                  4      p^ XW3&   ^ XW3&   V^V^,          ,          V,          ,
          p	\        P
                  ! V	^R7      ) WV3&   RV,          V,          V,          p
\        P
                  ! V
^R7      ) WV3&   RV,          V,          V,          p\        P
                  ! V^R7      ) WV3&   V^V^,          ,          V,          ,
          p\        P
                  ! V^R7      ) WV3&   RV,          V,          V,          p\        P
                  ! V^R7      ) WV3&   V^V^,          ,          V,          ,
          p\        P
                  ! V^R7      ) WV3&   \        P                  ! \        P                  ! WV34      \        P                  ! WV34      \        P                  ! WV34      34      pV#   + '       g   i     EL; i)r.   r   r  r  Nr   )r  r   r  aranger   r   vstackr   )r$   r1   r   r   r  dr  dm5iHxxHxyHxzHyyHyzHzzr   s   &&              r'   r=   	Elec.hess  s   44Q7
URU]RU"s*[[))r'Cr'C * IId&&'AD	AD	AAIO#VVCa((qD	2glS VVCa((qD	2glS VVCa((qD	AAIO#VVCa((qD	2glS VVCa((qD	AAIO#VVCa((qD	IIIIso&IIso&IIso&
  A *))s    II"	c                   a  V 3R  lpS P                   f   V 3R lpMS P                   pS P                  f   R pMS P                  p\        V\        P                  ) ^ W#4      # )c                    < SP                  V 4      w  rpV^,          V^,          ,           V^,          ,           ^,
          # r-   r   )r1   r   r   r   r$   s   &   r'   r2   Elec.constr.<locals>.fun  s9    (,(<(<Q(?%GgA:
*WaZ7!;;r+   c                   < SP                  V 4      w  rp^\        P                  ! V4      ,          p^\        P                  ! V4      ,          p^\        P                  ! V4      ,          p\        \        P                  ! WEV34      4      # r-   )r   r   r   r   r   )r1   r   r   r   JxJyJzr$   s   &      r'   rG   Elec.constr.<locals>.jac  si    ,0,@,@,C)')))))) BB<!899r+   c                 T    ^\         P                  ! V4      ,          p\        W"V4      # r-   )r   r   r   )r1   rL   Ds   && r'   r=   Elec.constr.<locals>.hess  s     
N!!**r+   r   rP   s   f   r'   rQ   Elec.constr  sY    	< ??": //C#+ ##D"3C>>r+   )r"   r!   r    r   r   r   r   )   r   NN)rX   rY   rZ   r[   r\   r(   r   r  r2   r8   r=   r]   rQ   r^   r_   r`   s   @r'   r   r   @  s=      )!3$L ? ?r+   r   c                     a  ] tR tRt o ]! 4       ]! RR7      ]! ]! 4       R7      ]! R]! 4       R7      ]! 4       ]! 4       ]! RR7      ]! ]! 4       R7      ]! R]! 4       R7      ]	! 4       ]
! 4       ]! 4       ]! 4       ]! ^R7      ]! ^RR7      ]! ^]! 4       R7      ]! ^R]! 4       R7      .t]P                   P"                  ]P                   P%                  R	]4      ]P                   P%                  R
R4      ]P                   P%                  RRR]! 4       ]! RR7      ]! RR7      34      R 4       4       4       4       tR tR tR tR tR tR tR tR tRtV tR# )TestTrustRegionConstri  2-point)r!   )r    r!   3-pointr   )r   r!   )r   r    r!   probr8   r=   	prob.hessdamp_update)exception_strategyskip_updatec                6   VR 8X  d   VP                   MTpVR8X  d   VP                  MTpVR9   d   VR9   d   \        P                  ! R4       VP                   RJ d   VR9   d   \        P                  ! R4       \	        V\
        4      ;'       d    VR8H  ;'       d    \	        V\        4      pV'       d   \        P                  ! R4       \        4       ;_uu_ 4       pVP                  \        R4       \        VP                  VP                  RW#VP                  VP                  R	7      pR
R
R
4       VP                   eJ   \#        XP$                  VP                   ^R7       VP&                  ^8X  d   \)        VP*                  R4       XP&                  ^8X  d>   \)        VP,                  R4       VP.                  R8X  d   \)        VP0                  R4       RVP&                   R2pVP&                  R9  g   Q V4       hR
#   + '       g   i     L; i)	prob.gradr4  r2  z+Numerical Hessian needs analytical gradientTz6prob.grad incompatible with grad in {'3-point', False}z3Seems sensitive to initial conditions w/ Acceleratedelta_grad == 0.0trust-constrmethodrG   r=   r"   constraintsNdecimal:0yE>tr_interior_pointzInvalid termination condition: .>   Fcsr1  r2  >   rD  r1  r2  >   Fr2  >   r      )r8   r=   pytestskip
isinstancer   r   xfailr   filterUserWarningr   r2   r   r"   rQ   r   r   r1   statusr   
optimality	tr_radiusr=  barrier_parameter)r$   r3  r8   r=   	sensitivesupresultmessages   &&&&    r'   test_list_of_problems+TestTrustRegionConstr.test_list_of_problems  s    !K/tyyT K/tyyT7744KKEF99);!;KKPQ&78 0 0TY=N 0 0#D$/ 	LLNO  CJJ{$78dhh%3"&%)[[*.++	7F ! ::!%fhh

./1 }}!!&"3"3T:==Af..5}} 33!&":":DA 4FMM?!D}}F*3G3*/ ! s   !AHH	c                b    R  pR.p\        VR.VRR7      p\        VP                  ^^R7       R# )c                 "    V ^,
          ^,          # r   r/   rC   s   &r'   r2   <TestTrustRegionConstr.test_default_jac_and_hess.<locals>.fun      Ea<r+   r;  )r   r"   r=  r?  Nr   r.   r  r   r   r1   r$   r2   r"   ress   &   r'   test_default_jac_and_hess/TestTrustRegionConstr.test_default_jac_and_hess  s0    	 svf^L!#%%A6r+   c                d    R  pR.p\        VR.VRRR7      p\        VP                  ^^R7       R# )c                 "    V ^,
          ^,          # r   r/   rC   s   &r'   r2   4TestTrustRegionConstr.test_default_hess.<locals>.fun	  rY  r+   r;  r1  )r   r"   r=  rG   r?  NrZ  r  r[  r\  s   &   r'   test_default_hess'TestTrustRegionConstr.test_default_hess  s5    	 svf^$&!#%%A6r+   c                   \        4       p\        VP                  VP                  R VP                  VP
                  R7      p\        VP                  VP                  RRR7      p\        VP                  VP                  RRR7      p\        VP                  VP                  ^R7       \        VP                  VP                  ^R7       \        VP                  VP                  ^R7       R# )r;  )r=  rG   r=   zL-BFGS-Br1  )r=  rG   r2  r?  N)	r   r   r2   r   r8   r=   r   r1   r   )r$   r3  rR  result1result2s   &    r'   test_no_constraints)TestTrustRegionConstr.test_no_constraints  s    |$((DGG!/"iidii9 488TWW",(* 488TWW",(* 	"&((DJJB!'))TZZC!'))TZZCr+   c           
     2  a \        4       oV3R  lp\        SP                  SP                  RSP                  VSP
                  SP                  R7      pSP                  e#   \        VP                  SP                  ^R7       VP                  ^8X  d   \        VP                  R4       VP                  ^8X  d>   \        VP                  R4       VP                  R8X  d   \        VP                  R4       VP                  R9   d   \!        R4      hR# )	c                 H   < SP                  V 4      pVP                  V4      # ri   )r=   dot)r1   pr   r3  s   && r'   hessp/TestTrustRegionConstr.test_hessp.<locals>.hessp#  s    		!A558Or+   r;  )r=  rG   rn  r"   r>  Nr?  rA  rB  Invalid termination condition.r   rE  )r   r   r2   r   r8   r"   rQ   r   r   r1   rL  r   rM  rN  r=  rO  RuntimeError)r$   rn  rR  r3  s   &  @r'   
test_hessp TestTrustRegionConstr.test_hessp   s    y	 $((DGG!/"iiu!%&*kk	3 ::!%fhh

AF ==Af//6==Af..5}} 33!&":":DA==F"?@@ #r+   c                >   \        R ^4      p\        VP                  VP                  RRVP                  VP
                  VP                  VP                  R7      pVP                  e#   \        VP                  VP                  ^R7       VP                  ^8X  d   \        VP                  R4       VP                  ^8X  d>   \        VP                  R4       VP                  R8X  d   \        VP                   R4       VP                  R	9   d   \#        R4      hR# )
re   r;  r<  Nr?  rA  rB  rp  )re      rq  )rc   r   r2   r   r8   r=   r"   rQ   r   r   r1   rL  r   rM  rN  r=  rO  rr  )r$   r3  rR  s   &  r'   	test_argsTestTrustRegionConstr.test_args=  s    sC($((DGGZ!/"iidii!%&*kk	3 ::!%fhh

AF ==Af//6==Af..5}} 33!&":":DA==F"?@@ #r+   c                    \        4       pR p\        P                  ! \        VR7      ;_uu_ 4        \	        VP
                  VP                  RRRVP                  R7       RRR4       R#   + '       g   i     R# ; i)z9Whenever the gradient is estimated via finite-differencesmatchr;  r1  )r=  rG   r=   r>  N)r   rF  raisesrj   r   r2   r   rQ   )r$   r3  rS  s   &  r'   test_raise_exception*TestTrustRegionConstr.test_raise_exceptionU  sO    yM]]:W55TXXtww~9#> 6555s   0A++A<	c           	         R  p\        R ^ .R R VRR7      p\        VP                  R4      4       \        VP                  RR
4      ^8H  4       \        VP                  RR
4      ^8H  4       R	# )c                 >    \        R V9   4       \        RV9   4       R# )nitniterN)r   )r1   infos   &&r'   callback7TestTrustRegionConstr.test_issue_9044.<locals>.callbacka  s    ETM"GtO$r+   c                     V ^,          # r-   r/   rC   s   &r'   <lambda>7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>e  s    AqDr+   c                     ^V ,          # r-   r/   rC   s   &r'   r  r  e  s    QqSr+   c                     ^# r-   r/   rC   s   &r'   r  r  f  s    r+   r;  )rG   r=   r  r=  successr  r  Nr   )r   r   get)r$   r  rR  s   &  r'   test_issue_9044%TestTrustRegionConstr.test_issue_9044\  sh    
	% .1#=*X!/1 	

9%&

5"%*+ 	

7B'1,-r+   c           	     x   \         P                  ! R R.4      pR p\        \         P                  ! R R .4      \         P                  ! RR.4      RR7      p\        4       ;_uu_ 4       pVP	                  \
        R4       \        RVVVR7      pR	R	R	4       XR
,          '       g   Q hR	#   + '       g   i     L#; i)r   r   c                 T    V ^ ,          pV ^,          pV^,          V^,          ,           # rB   r/   )r1   x1x2s   &  r'   obj3TestTrustRegionConstr.test_issue_15093.<locals>.objw  s'    1B1B7R1W$$r+   r   T)keep_feasibler:  r;  )r=  r2   r   r"   Nr  )r   r   r   r   rJ  rK  r   )r$   r   r  r"   rQ  rR  s   &     r'   test_issue_15093&TestTrustRegionConstr.test_issue_15093o  s     XXr3i 	%
 "b*BHHb"X,>&*,   CJJ{$78%	F ! i     ! s   (&B))B9	r/   N)r9  r2  F)rX   rY   rZ   r[   r   r   r}   r   r   r   r   r   r   r   list_of_problemsrF  markthread_unsafeparametrizerT  r^  rc  rh  rs  rw  r}  r  r  r^   r_   r`   s   @r'   r0  r0    s`    	I6CE29#%H)+&(&9=&46:&)376;"&((*)++	B>y),0#1( [[[[V%56[[V%DE[[Vk9ce&*m&L&*m&L&N O$4O F 7 $4N77D A:A0>.&! !r+   r0  c                   *   a  ] tR tRt o RtR tRtV tR# )TestEmptyConstrainti  a  
Here we minimize x^2+y^2 subject to x^2-y^2>1.
The actual minimum is at (0, 0) which fails the constraint.
Therefore we will find a minimum on the boundary at (+/-1, 0).

When minimizing on the boundary, optimize uses a set of
constraints that removes the constraint that sets that
boundary.  In our case, there's only one constraint, so
the result is an empty constraint.

This tests that the empty constraint works.
c           
        R  pR pR pR pR pR p\        VR\        P                  WV4      pRR.p\        \        P                  ) \        P                  ) .\        P                  \        P                  .4      p\	        VVRVVV.VR	7      p	\        \        V	P                  4      \        P                  ! ^^ .4      ^R
7       R# )c                 L    V ^ ,          ^,          V ^,          ^,          ,           # rB   r/   rC   s   &r'   function;TestEmptyConstraint.test_empty_constraint.<locals>.function  rE   r+   c                 j    \         P                  ! R V ^ ,          ,          R V ^,          ,          .4      # r   r7   rC   s   &r'   functionjacobianCTestEmptyConstraint.test_empty_constraint.<locals>.functionjacobian  s&    88R!Wb1g.//r+   c                     R V,          # r  r/   rK   s   &&r'   functionhvp>TestEmptyConstraint.test_empty_constraint.<locals>.functionhvp  s    a4Kr+   c                 v    \         P                  ! V ^ ,          ^,          V ^,          ^,          ,
          .4      # rB   r7   rC   s   &r'   
constraint=TestEmptyConstraint.test_empty_constraint.<locals>.constraint  s)    88QqT1WqtQw./00r+   c                 l    \         P                  ! ^V ^ ,          ,          RV ^,          ,          ..4      # )r.   r   r7   rC   s   &r'   constraintjacobianETestEmptyConstraint.test_empty_constraint.<locals>.constraintjacobian  s)    88a!fb1g./00r+   c                 V    \         P                  ! R R.RR..4      V^ ,          ,          # )r   r   g       r7   rK   s   &&r'   constraintlcohATestEmptyConstraint.test_empty_constraint.<locals>.constraintlcoh  s'    88b"XCy12QqT99r+   r   r   r;  )r=  rG   rn  r>  r"   r?  N)	r	   r   r   r   r   r   absr1   r   )
r$   r  r  r  r  r  r  
startpointr"   rR  s
   &         r'   test_empty_constraint)TestEmptyConstraint.test_empty_constraint  s    	%	0		1	1	: )R);M
 "X
"&&266'*RVVRVV,<=

!l
 	"#fhh-1a&1A1Mr+   r/   N)rX   rY   rZ   r[   r\   r  r^   r_   r`   s   @r'   r  r    s     %N %Nr+   r  c                  t   R  p \         P                  P                  4       ;_uu_ 4       pVP                  \        4       \         P
                  ! \         P                  ! ^^.4      4      pRRR4       \        XR\         P                  4      p\        V ^^.,          VR7       R#   + '       g   i     LC; i)c                 L    V ^ ,          ^,          V ^,          ^,          ,           # rB   r/   rC   s   &r'   opttest_bug_11886.<locals>.opt  s    tQwqtQwr+   N)r>  r   )
r   testingr   rJ  PendingDeprecationWarningmatrixr   r
   r   r   )r  rQ  r   lin_conss       r'   test_bug_11886r    sy     
	%	%	'	'3

,-IIbggq!fo& 
(  2rvv.HS!QC%x0 
(	's   AB''B7	c                    aa \        RR.^^.RR7      oV3R loV3R lp V3R lpR pV3R lp\        P                  ! R4      p\        VR\        P                  4      \        V^^VR7      .p\        WR	SVR
7      pS! VP                  4       V^ ,          P                  V^ ,          P                  VP                  4      u;8  d   V^ ,          P                  8  g   Q h Q hR# )r   T)lbubr  c                    < \         P                  ! V SP                  8  4      '       g   Q h\         P                  ! V SP                  8*  4      '       g   Q hR # ri   )r   allr  r  )r1   bndss   &r'   assert_inbounds%test_gh11649.<locals>.assert_inbounds  s=    vva477l####vva477l####r+   c                 <  < S! V 4       \         P                  ! V ^ ,          4      ^V ^ ,          ^,          ,          ^V ^,          ^,          ,          ,           ^V ^ ,          ,          V ^,          ,          ,           ^V ^,          ,          ,           ^,           ,          # rB   )r   expr1   r  s   &r'   r  test_gh11649.<locals>.obj  sf    vvad|QqtQwY1Q472QqtVAaD[@1QqT6IAMNNr+   c                 P   < S! V 4       V ^ ,          ^,          V ^,          ,           # rB   r/   r  s   &r'   ncetest_gh11649.<locals>.nce  s!    tQw1~r+   c                 N    \         P                  ! ^V ^ ,          ,          ^.4      # r-   r7   rC   s   &r'   nce_jactest_gh11649.<locals>.nce_jac  s    xx1Q4$$r+   c                 B   < S! V 4       V ^ ,          V ^,          ,          # rB   r/   r  s   &r'   ncitest_gh11649.<locals>.nci  s    tAaDyr+   )rG   r;  )r2   r   r=  r"   r>  Nr   )gGz?gGz)
r   r   r   r	   r   r   r1   r  r2   r  )	r  r  r  r  r   nlcsr]  r  r  s	          @@r'   test_gh11649r    s     b"X1a&=D$O% 
-	 BS"&&1Qw79D s.D2CCEE7::QCEE*7T!WZZ77777r+   c            
      X  a R p \         P                  ! \        V R7      ;_uu_ 4        \        P                  ! R
4      p\        P
                  ! ^4      P                  R4      \        P                  ! R4      uop\        V3R lW"R7      p\        \        VRV.R7       RRR4       \        P                  P                  4       ;_uu_ 4       pVP                  \        4       \        \        XRX.RR/R	7       RRR4       R#   + '       g   i     Lm; i  + '       g   i     R# ; i)z:...more equality constraints than independent variables...rz  c                    < SV ,          # ri   r/   )r1   r   s   &r'   r  3test_gh20665_too_many_constraints.<locals>.<lambda>  s	    4!8r+   )r  r  r;  r=  r>  Nfactorization_methodSVDFactorization)r=  r>  optionsr-   )rE  r.   )rE  )rF  r|  rj   r   r   r  reshaper	   r   r   r  r   rJ  rK  )rS  r   r   grQ  r   s        @r'   !test_gh20665_too_many_constraintsr    s     KG	z	1	1WWT]YYq\))&12774=
d 3F>sC	 
2 
	%	%	'	'3

;>s02DE	G 
(	' 
2	1 
(	'	's   A8D-DD	D)	c                  H   R  p R p\        4       ;_uu_ 4       pVP                  \        R4       VP                  \        R4       \        VRR.R\	        V ^ ^ 4      R7      pRRR4       XP
                  '       g   VP                  R8  g   Q hR#   + '       g   i     L7; i)	c                     V w  rR R.w  r4RV^,          V^,          ,          ,           V^,          V^,          ,          ,
          # )      @      @r   r/   )uu1u2re   rf   s   &    r'   lsftest_issue_18882.<locals>.lsf  s<    SzRUQT\!BEAqDL00r+   c                 <    \         P                  ! V ^,          4      # r-   )r   r   )r  s   &r'   oftest_issue_18882.<locals>.of  s    vvad|r+   r:  zSingular Jacobian matrix.r   r;  r  NrA  )r   rJ  rK  r   r	   r  constr_violation)r  r  rQ  r]  s       r'   test_issue_18882r    s    1
 
		

; 34

; ;<#J!+CA6	
 
 #"6"6"=>>"= 
	s   A	BB!	c                     a  ] tR tRt o ]P
                  P                  R]! ]P                  ) ]P                  4      ]
! 4       P                  3]! ]P                  ) R4      RR.3]! R]P                  4      RR.3]! RR.RR.4      RR.3.4      R 4       tR	 tR
 tR t]P
                  P!                  RR7      R 4       tRtV tR# )TestBoundedNelderMeadi  zbounds, x_optr  g      "@r   r        @c           	        \        4       p\        4       ;_uu_ 4       pVP                  \        R 4       \	        VP
                  RR.RVR7      p\        P                  ! VP                  VP                  4      P                  4       '       g   Q h\        P                  ! VP                  VP                  4      P                  4       '       g   Q h\        P                  ! VP                  VP                  4      VP
                  4      '       g   Q h\        P                  ! VP                  VRR7      '       g   Q h RRR4       R#   + '       g   i     R# ; i)0Initial guess is not within the specified boundsNelder-Meadr=  r"   gMbP?)atolNr  )r   r   rJ  rK  r   r2   r   
less_equalr  r1   r  r  allclose)r$   r"   r   r3  rQ  rR  s   &&&   r'   test_rosen_brock_with_bounds2TestBoundedNelderMead.test_rosen_brock_with_bounds  s     |  CJJ{ %; <dhhc
%2%+-F ==FHH599;;;;==699599;;;;;;txx16::>>>>;;vxxU;;;; !   s   B1E	AE	*E	<E		E	c           	     R   \        4       p\        R R.R R.4      p\        4       ;_uu_ 4       pVP                  \        R4       \        VP                  R^.RVR7      p\        P                  ! VP                  R R.4      '       g   Q h RRR4       R#   + '       g   i     R# ; i)r  r  r  r  r  Nr  
r   r   r   rJ  rK  r   r2   r   r  r1   r$   r3  r"   rQ  rR  s   &    r'   test_equal_all_bounds+TestBoundedNelderMead.test_equal_all_bounds%  s    |c
S#J/  CJJ{ %; <dhha%2%+-F ;;vxx#s4444 !      ABB&	c           	     R   \        4       p\        R R.R R.4      p\        4       ;_uu_ 4       pVP                  \        R4       \        VP                  R^.RVR7      p\        P                  ! VP                  R R.4      '       g   Q h RRR4       R#   + '       g   i     R# ; i)	r  r  g      4@r  r  r  g      0@Nr  r  r  s   &    r'   test_equal_one_bounds+TestBoundedNelderMead.test_equal_one_bounds0  s    |c
S$K0  CJJ{ %; <dhha%2%+-F ;;vxx#t5555 !   r   c           	        \        4       pR p\        P                  ! \        VR7      ;_uu_ 4        \	        \
        P                  ) R.RR.4      p\        VP                  R^.RVR7       RRR4       R#   + '       g   i     R# ; i)	z:An upper bound is less than the corresponding lower bound.rz  r   r  r  r  Ng      r  )	r   rF  r|  rj   r   r   r   r   r2   r$   r3  rS  r"   s   &   r'   test_invalid_bounds)TestBoundedNelderMead.test_invalid_bounds;  sb    |N]]:W55bffWcNS$K8FTXXQx)"$ 6555   ;A66B	z5Failing on Azure Linux and macOS builds, see gh-13846)reasonc           	        \        4       pR p\        P                  ! \        VR7      ;_uu_ 4        \	        \
        P                  ) R.RR.4      p\        VP                  R^.RVR7       RRR4       R#   + '       g   i     R# ; i)	r  rz  r   r  r  r  r  Nr  )	r   rF  warnsrK  r   r   r   r   r2   r  s   &   r'   test_outside_bounds_warning1TestBoundedNelderMead.test_outside_bounds_warningD  sd     |D\\+W55bffWcNS#J7FTXXQx)"$ 6555r  r/   Ng)rX   rY   rZ   r[   rF  r  r  r   r   r   r   r   r  r  r  r  rI  r  r^   r_   r`   s   @r'   r  r    s     [[_%rvvgrvv6
8J8JK%rvvgt4tTlC%c2662S#J?%sCj3*=BxH !<!<	5	6$ [[ - .$.$r+   r  )$numpyr   rF  scipy.linalgr   scipy.sparser   numpy.testingr   r   r   r   scipy.optimizer	   r
   r   r   r   r   r   r   rc   r}   r   r   r   r   r   r   r0  r  r  r  r  r  r  r/   r+   r'   <module>r     s      # ". .# # #*9 *9Z39 39l,9 ,9^+A +A\+ +\/Z /,.
 ."4z 44|? |?~H! H!T2N 2Nj	1 8FG?(=$ =$r+   