§
    µ³Ùg&m  ã                   óÀ  — d dl Zd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZ  G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Zd„ Z d„ Z!d„ Z" G d „ d!¦  «        Z#dS )"é    N)Ú
block_diag)Ú
csc_matrix)Úassert_array_almost_equalÚassert_array_lessÚassert_Úsuppress_warnings)ÚNonlinearConstraintÚLinearConstraintÚBoundsÚminimizeÚBFGSÚSR1Úrosenc                   óB   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zed„ ¦   «         Z	dS )
ÚMaratosú²Problem 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                 óä   — |dz  t           j        z  }t          j        |¦  «        t          j        |¦  «        g| _        t          j        ddg¦  «        | _        || _        || _        d | _	        d S ©Né´   ç      ð?ç        ©
ÚnpÚpiÚcosÚsinÚx0ÚarrayÚx_optÚ
constr_jacÚconstr_hessÚbounds©ÚselfÚdegreesr!   r"   Úradss        úd/granary/edev/quantum/lib/python3.11/site-packages/scipy/optimize/tests/test_minimize_constrained.pyÚ__init__zMaratos.__init__   ó]   € Ø�s‰{�2œ5Ñ ˆÝ”6˜$‘<”<¥¤¨¡¤Ð.ˆŒÝ”X˜s C˜jÑ)Ô)ˆŒ
Ø$ˆŒØ&ˆÔØˆŒˆˆó    c                 óN   — d|d         dz  |d         dz  z   dz
  z  |d         z
  S ©Né   r   é   © ©r%   Úxs     r(   ÚfunzMaratos.fun!   s0   € Ø�!�A”$˜‘'˜A˜aœD !™GÑ# aÑ'Ñ(¨1¨Q¬4Ñ/Ð/r+   c                 óX   — t          j        d|d         z  dz
  d|d         z  g¦  «        S ©Né   r   r/   ©r   r   r1   s     r(   ÚgradzMaratos.grad$   s+   € ÝŒx˜˜1˜Qœ4™ ™ 1 Q q¤T¡6Ð*Ñ+Ô+Ð+r+   c                 ó0   — dt          j        d¦  «        z  S ©Nr6   r.   ©r   Úeyer1   s     r(   ÚhesszMaratos.hess'   ó   € Ø•”˜‘”‰{Ðr+   c                 óv   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dd||¦  «        S )Nc                 ó0   — | d         dz  | d         dz  z   S ©Nr   r.   r/   r0   ©r2   s    r(   r3   zMaratos.constr.<locals>.fun,   ó   € Ø�Q”4˜‘7˜Q˜qœT 1™WÑ$Ð$r+   c                 ó0   — d| d         z  d| d         z  ggS r-   r0   rB   s    r(   ÚjaczMaratos.constr.<locals>.jac0   ó    € Ø˜1˜Qœ4™  1 Q¤4¡Ð(Ð)Ð)r+   c                 óB   — d|d         z  t          j        d¦  «        z  S ©Nr.   r   r;   ©r2   Úvs     r(   r=   zMaratos.constr.<locals>.hess6   ó   € Ø˜˜1œ‘v�bœf Q™iœiÑ'Ð'r+   r/   ©r!   r"   r	   ©r%   r3   rE   r=   s       r(   ÚconstrzMaratos.constr*   óu   € ð	%ð 	%ð 	%ð Œ?Ð"ð*ð *ð *ð *ð ”/ˆCàÔÐ#ð(ð (ð (ð (ð Ô#ˆDå" 3¨¨1¨c°4Ñ8Ô8Ð8r+   ©r   NN©
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   r3   r8   r=   ÚpropertyrN   r0   r+   r(   r   r      sz   € € € € € ðð ðð ð ð ð0ð 0ð 0ð,ð ,ð ,ðð ð ð ð9ð 9ñ „Xð9ð 9ð 9r+   r   c                   óH   — e Zd ZdZd
d„Zd„ Zd„ Zd„ Zd„ Ze	d	„ ¦   «         Z
dS )ÚMaratosTestArgsr   r   Nc                 ó   — |dz  t           j        z  }t          j        |¦  «        t          j        |¦  «        g| _        t          j        ddg¦  «        | _        || _        || _        || _	        || _
        d | _        d S r   )r   r   r   r   r   r   r    r!   r"   ÚaÚbr#   )r%   rZ   r[   r&   r!   r"   r'   s          r(   r)   zMaratosTestArgs.__init__F   sk   € Ø�s‰{�2œ5Ñ ˆÝ”6˜$‘<”<¥¤¨¡¤Ð.ˆŒÝ”X˜s C˜jÑ)Ô)ˆŒ
Ø$ˆŒØ&ˆÔØˆŒØˆŒØˆŒˆˆr+   c                 óN   — | j         |k    s| j        |k    rt          ¦   «         ‚d S ©N)rZ   r[   Ú
ValueError)r%   rZ   r[   s      r(   Ú
_test_argszMaratosTestArgs._test_argsP   s(   € ØŒ6�QŠ;ˆ;˜$œ& Aš+˜+Ý‘,”,Ðð &˜+r+   c                 óz   — |                       ||¦  «         d|d         dz  |d         dz  z   dz
  z  |d         z
  S r-   )r_   ©r%   r2   rZ   r[   s       r(   r3   zMaratosTestArgs.funT   sD   € Ø�Š˜˜1ÑÔÐØ�!�A”$˜‘'˜A˜aœD !™GÑ# aÑ'Ñ(¨1¨Q¬4Ñ/Ð/r+   c                 ó„   — |                       ||¦  «         t          j        d|d         z  dz
  d|d         z  g¦  «        S r5   )r_   r   r   ra   s       r(   r8   zMaratosTestArgs.gradX   s?   € Ø�Š˜˜1ÑÔÐÝŒx˜˜1˜Qœ4™ ™ 1 Q q¤T¡6Ð*Ñ+Ô+Ð+r+   c                 ó\   — |                       ||¦  «         dt          j        d¦  «        z  S r:   )r_   r   r<   ra   s       r(   r=   zMaratosTestArgs.hess\   s(   € Ø�Š˜˜1ÑÔÐØ•”˜‘”‰{Ðr+   c                 óv   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dd||¦  «        S )Nc                 ó0   — | d         dz  | d         dz  z   S rA   r0   rB   s    r(   r3   z#MaratosTestArgs.constr.<locals>.funb   rC   r+   c                 ó0   — d| d         z  d| d         z  ggS r5   r0   rB   s    r(   rE   z#MaratosTestArgs.constr.<locals>.jacf   rF   r+   c                 óB   — d|d         z  t          j        d¦  «        z  S rH   r;   rI   s     r(   r=   z$MaratosTestArgs.constr.<locals>.hessl   rK   r+   r/   rL   rM   s       r(   rN   zMaratosTestArgs.constr`   rO   r+   rP   )rR   rS   rT   rU   r)   r_   r3   r8   r=   rV   rN   r0   r+   r(   rX   rX   >   s‰   € € € € € ðð ðð ð ð ðð ð ð0ð 0ð 0ð,ð ,ð ,ðð ð ð ð9ð 9ñ „Xð9ð 9ð 9r+   rX   c                   óR   — e Zd ZdZd	d„Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Z	dS )
ÚMaratosGradInFuncr   r   Nc                 óä   — |dz  t           j        z  }t          j        |¦  «        t          j        |¦  «        g| _        t          j        ddg¦  «        | _        || _        || _        d | _	        d S r   r   r$   s        r(   r)   zMaratosGradInFunc.__init__|   r*   r+   c                 ó¤   — d|d         dz  |d         dz  z   dz
  z  |d         z
  t          j        d|d         z  dz
  d|d         z  g¦  «        fS )Nr.   r   r/   r6   r7   r1   s     r(   r3   zMaratosGradInFunc.fun„   s]   € Ø�1�Q”4˜‘7˜Q˜qœT 1™WÑ$ qÑ(Ñ)¨A¨a¬DÑ0Ý”˜!˜A˜aœD™& ™( A a¨¤d¡FÐ+Ñ,Ô,ð.ð 	.r+   c                 ó   — dS )NTr0   ©r%   s    r(   r8   zMaratosGradInFunc.gradˆ   s   € àˆtr+   c                 ó0   — dt          j        d¦  «        z  S r:   r;   r1   s     r(   r=   zMaratosGradInFunc.hessŒ   r>   r+   c                 óv   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dd||¦  «        S )Nc                 ó0   — | d         dz  | d         dz  z   S rA   r0   rB   s    r(   r3   z%MaratosGradInFunc.constr.<locals>.fun‘   rC   r+   c                 ó0   — d| d         z  d| d         z  ggS r5   r0   rB   s    r(   rE   z%MaratosGradInFunc.constr.<locals>.jac•   rF   r+   c                 óB   — d|d         z  t          j        d¦  «        z  S rH   r;   rI   s     r(   r=   z&MaratosGradInFunc.constr.<locals>.hess›   rK   r+   r/   rL   rM   s       r(   rN   zMaratosGradInFunc.constr�   rO   r+   rP   )
rR   rS   rT   rU   r)   r3   rV   r8   r=   rN   r0   r+   r(   ri   ri   t   s†   € € € € € ðð ðð ð ð ð.ð .ð .ð ðð ñ „Xððð ð ð ð9ð 9ñ „Xð9ð 9ð 9r+   ri   c                   óB   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zed„ ¦   «         Z	dS )	ÚHyperbolicIneqa  Problem 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                 ó„   — ddg| _         ddg| _        || _        || _        t	          dt
          j        ¦  «        | _        d S )Nr   g–~TÃ>ÿ?gþ~1[²¶?)r   r    r!   r"   r   r   Úinfr#   )r%   r!   r"   s      r(   r)   zHyperbolicIneq.__init__¬   s?   € Ø�a�&ˆŒØ Ð)ˆŒ
Ø$ˆŒØ&ˆÔÝ˜Q¥¤Ñ'Ô'ˆŒˆˆr+   c                 óH   — d|d         dz
  dz  z  d|d         dz
  dz  z  z   S )Nç      à?r   r.   r/   r0   r1   s     r(   r3   zHyperbolicIneq.fun³   s/   € Ø�A�a”D˜1‘H˜q‘=Ñ  3¨¨!¬¨s©
°Q¡Ñ#6Ñ6Ð6r+   c                 ó.   — |d         dz
  |d         dz
  gS )Nr   r.   r/   rx   r0   r1   s     r(   r8   zHyperbolicIneq.grad¶   s   € Ø�!”�q‘˜!˜Aœ$ ™*Ð%Ð%r+   c                 ó*   — t          j        d¦  «        S ©Nr.   r;   r1   s     r(   r=   zHyperbolicIneq.hess¹   s   € ÝŒv�a‰yŒyÐr+   c                 óŠ   — d„ }| j         €d„ }n| j         }| j        €d„ }n| j        }t          |dt          j        ||¦  «        S )Nc                 ó0   — d| d         dz   z  | d         z
  S )Nr/   r   r0   rB   s    r(   r3   z"HyperbolicIneq.constr.<locals>.fun¾   s   € Ø�a˜”d˜Q‘h‘< ! A¤$Ñ&Ð&r+   c                 ó*   — d| d         dz   dz  z  dggS )Néÿÿÿÿr   r/   r.   r0   rB   s    r(   rE   z"HyperbolicIneq.constr.<locals>.jacÂ   s!   € Ø˜Q˜qœT A™X¨™MÑ)¨2Ð.Ð/Ð/r+   c                 ól   — d|d         z  t          j        d| d         dz   dz  z  dgddgg¦  «        z  S )Nr.   r   r/   é   r7   rI   s     r(   r=   z#HyperbolicIneq.constr.<locals>.hessÈ   sH   € Ø˜˜1œ‘v�bœh¨¨A¨a¬D°1©H°q©=©¸!Ð(<Ø)*¨A¨ð(0ñ 1ô 1ñ 1ð 1r+   g      Ð?©r!   r"   r	   r   rv   rM   s       r(   rN   zHyperbolicIneq.constr¼   sw   € ð	'ð 	'ð 	'ð Œ?Ð"ð0ð 0ð 0ð 0ð ”/ˆCàÔÐ#ð1ð 1ð 1ð 1ð Ô#ˆDå" 3¨­b¬f°c¸4Ñ@Ô@Ð@r+   )NNrQ   r0   r+   r(   rt   rt   £   s   € € € € € ðð ð(ð (ð (ð (ð7ð 7ð 7ð&ð &ð &ðð ð ð ðAð Añ „XðAð Að Ar+   rt   c                   óB   — e Zd ZdZd
d„Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d	S )Ú
Rosenbrockz�Rosenbrock function.

    The following optimization problem:
        minimize sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
    r.   r   c                 ó¼   — t           j                             |¦  «        }|                     dd|¦  «        | _        t          j        |¦  «        | _        d | _        d S )Nr   r/   )r   ÚrandomÚRandomStateÚuniformr   Úonesr    r#   )r%   ÚnÚrandom_stateÚrngs       r(   r)   zRosenbrock.__init__Ø   sH   € ÝŒi×#Ò# LÑ1Ô1ˆØ—+’+˜b ! QÑ'Ô'ˆŒÝ”W˜Q‘Z”ZˆŒ
ØˆŒˆˆr+   c                 ó´   — t          j        |¦  «        }t          j        d|dd …         |d d…         dz  z
  dz  z  d|d d…         z
  dz  z   d¬¦  «        }|S )Ng      Y@r/   r   ç       @r   ©Úaxis)r   ÚasarrayÚsum)r%   r2   Úrs      r(   r3   zRosenbrock.funÞ   sh   € ÝŒJ�q‰MŒMˆÝŒF�5˜A˜a˜b˜bœE A c r c¤F¨C¡KÑ/°#Ñ5Ñ5¸¸Q¸sÀ¸s¼V¹ÀcÑ8IÑIØðñ ô ˆàˆr+   c                 óz  — t          j        |¦  «        }|dd…         }|d d…         }|dd …         }t          j        |¦  «        }d||dz  z
  z  d||dz  z
  z  |z  z
  dd|z
  z  z
  |dd…<   d|d         z  |d         |d         dz  z
  z  dd|d         z
  z  z
  |d<   d|d         |d         dz  z
  z  |d<   |S )	Nr/   r   éþÿÿÿr.   éÈ   é�  épþÿÿr   )r   r‘   Ú
zeros_like)r%   r2   ÚxmÚxm_m1Úxm_p1Úders         r(   r8   zRosenbrock.gradä   sä   € ÝŒJ�q‰MŒMˆØˆq�ˆtŒWˆØ�#�2�#”ˆØ�!�"�"”ˆÝŒm˜AÑÔˆØ˜B ¨¡™MÑ*Ø˜E B¨¡E™MÑ*¨RÑ/ñ0Ø23°q¸2±v±,ñ?ˆˆAˆbˆD‰	à˜˜!œ‘  !¤ q¨¤t¨Q¡w¡Ñ/°!°q¸1¸Q¼4±x±.Ñ@ˆˆA‰Ø˜˜2œ  2¤¨¡Ñ)Ñ*ˆˆB‰Øˆ
r+   c                 óÄ  — t          j        |¦  «        }t          j        d|d d…         z  d¦  «        t          j        d|d d…         z  d¦  «        z
  }t          j        t	          |¦  «        |j        ¬¦  «        }d|d         dz  z  d|d         z  z
  dz   |d<   d	|d<   d
d|dd…         dz  z  z   d|dd …         z  z
  |dd…<   |t          j        |¦  «        z   }|S )Nr˜   r   r/   r—   )Údtypei°  r   r.   r–   éÊ   )r   Ú
atleast_1dÚdiagÚzerosÚlenrŸ   )r%   r2   ÚHÚdiagonals       r(   r=   zRosenbrock.hessð   sä   € ÝŒM˜!ÑÔˆÝŒG�D˜1˜S˜b˜Sœ6‘M 1Ñ%Ô%­¬°°a¸¸¸´f±¸bÑ(AÔ(AÑAˆÝ”8�C ™FœF¨!¬'Ð2Ñ2Ô2ˆØ˜Q˜qœT 1™W‘n s¨Q¨q¬T¡zÑ1°AÑ5ˆ�‰Øˆ�‰Ø˜t a¨¨"¨¤g¨q¡jÑ0Ñ0°3¸¸1¸2¸2¼±;Ñ>ˆ��2�‰Ø•”˜Ñ!Ô!Ñ!ˆØˆr+   c                 ó   — dS )Nr0   r0   rm   s    r(   rN   zRosenbrock.constrú   s   € àˆrr+   N)r.   r   rQ   r0   r+   r(   r„   r„   Ñ   sz   € € € € € ðð ðð ð ð ðð ð ð
ð 
ð 
ðð ð ð ðð ñ „Xðð ð r+   r„   c                   ó0   — e Zd ZdZdd„Zed„ ¦   «         ZdS )ÚIneqRosenbrockzö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: x[0] + 2 x[1] <= 1

    Taken from matlab ``fmincon`` documentation.
    r   c                 óp   — t                                | d|¦  «         ddg| _        ddg| _        d | _        d S )Nr.   r   ç      à¿gn£¼à?g$¹ü‡ôÛÏ?©r„   r)   r   r    r#   ©r%   r‹   s     r(   r)   zIneqRosenbrock.__init__  s<   € Ý×Ò˜D ! \Ñ2Ô2Ð2Ø�t�*ˆŒØ˜fÐ%ˆŒ
ØˆŒˆˆr+   c                 óH   — ddgg}d}t          |t          j         |¦  «        S ©Nr/   r.   ©r
   r   rv   )r%   ÚAr[   s      r(   rN   zIneqRosenbrock.constr  s(   € à�ˆVˆHˆØˆÝ ¥B¤F 7¨AÑ.Ô.Ð.r+   N©r   ©rR   rS   rT   rU   r)   rV   rN   r0   r+   r(   r©   r©   ÿ   sM   € € € € € ðð ðð ð ð ð ð/ð /ñ „Xð/ð /ð /r+   r©   c                   ó   — e Zd ZdZdd„ZdS )ÚBoundedRosenbrocka  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.
    r   c                 ó�   — t                                | d|¦  «         ddg| _        d | _        t	          ddgddg¦  «        | _        d S )Nr.   gš™™™™™É¿gš™™™™™É?r•   r   )r„   r)   r   r    r   r#   r­   s     r(   r)   zBoundedRosenbrock.__init__  sI   € Ý×Ò˜D ! \Ñ2Ô2Ð2Ø˜�+ˆŒØˆŒ
Ý˜b !˜W q¨! fÑ-Ô-ˆŒˆˆr+   Nr²   )rR   rS   rT   rU   r)   r0   r+   r(   rµ   rµ     s2   € € € € € ðð ð.ð .ð .ð .ð .ð .r+   rµ   c                   ó0   — e Zd ZdZdd„Zed„ ¦   «         ZdS )ÚEqIneqRosenbrocka*  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.
    r   c                 óp   — t                                | d|¦  «         ddg| _        ddg| _        d | _        d S )Nr.   r   r«   gæWs€`ŽÚ?gÙ|\*ÆÅ?r¬   r­   s     r(   r)   zEqIneqRosenbrock.__init__0  s<   € Ý×Ò˜D ! \Ñ2Ô2Ð2Ø�t�*ˆŒØ˜wÐ'ˆŒ
ØˆŒˆˆr+   c                 óx   — ddgg}d}ddgg}d}t          |t          j         |¦  «        t          |||¦  «        fS r¯   r°   )r%   ÚA_ineqÚb_ineqÚA_eqÚb_eqs        r(   rN   zEqIneqRosenbrock.constr6  sN   € à�a�&�ˆØˆØ�A�ˆxˆØˆÝ  ­"¬&¨°&Ñ9Ô9Ý   t¨TÑ2Ô2ð4ð 	4r+   Nr²   r³   r0   r+   r(   r¸   r¸   &  sM   € € € € € ðð ðð ð ð ð ð4ð 4ñ „Xð4ð 4ð 4r+   r¸   c                   óR   — e Zd ZdZ	 	 dd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Z	e
d„ ¦   «         ZdS )ÚElecaª  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.
    r–   r   Nc                 ó`  — || _         t          j                             |¦  «        | _        | j                             ddt          j        z  | j         ¦  «        }| j                             t          j         t          j        | j         ¦  «        }t          j        |¦  «        t          j        |¦  «        z  }t          j        |¦  «        t          j        |¦  «        z  }t          j        |¦  «        }	t          j	        |||	f¦  «        | _
        d | _        || _        || _        d | _        d S )Nr   r.   )Ún_electronsr   r†   r‡   rŒ   rˆ   r   r   r   Úhstackr   r    r!   r"   r#   )
r%   rÂ   r‹   r!   r"   ÚphiÚthetar2   ÚyÚzs
             r(   r)   zElec.__init__N  sÞ   € à&ˆÔÝ”9×(Ò(¨Ñ6Ô6ˆŒàŒh×Ò˜q !¥b¤e¡)¨TÔ-=Ñ>Ô>ˆØ”× Ò ¥"¤% ­¬°Ô0@ÑAÔAˆÝŒF�5‰MŒM�BœF 3™KœKÑ'ˆÝŒF�5‰MŒM�BœF 3™KœKÑ'ˆÝŒF�5‰MŒMˆÝ”)˜Q  1˜IÑ&Ô&ˆŒØˆŒ
Ø$ˆŒØ&ˆÔØˆŒˆˆr+   c                 ó|   — |d | j         …         }|| j         d| j         z  …         }|d| j         z  d …         }|||fS r{   ©rÂ   )r%   r2   Úx_coordÚy_coordÚz_coords        r(   Ú_get_cordinateszElec._get_cordinates^  sT   € ØÐ%�TÔ%Ð%Ô&ˆØ�DÔ$ Q¨Ô)9Ñ%9Ð9Ô:ˆØ�A˜Ô(Ñ(Ð)Ð)Ô*ˆØ˜ Ð(Ð(r+   c                 ó˜   — |                       |¦  «        \  }}}|d d …d f         |z
  }|d d …d f         |z
  }|d d …d f         |z
  }|||fS r]   ©rÍ   )r%   r2   rÊ   rË   rÌ   ÚdxÚdyÚdzs           r(   Ú_compute_coordinate_deltaszElec._compute_coordinate_deltasd  sm   € Ø$(×$8Ò$8¸Ñ$;Ô$;Ñ!ˆ�˜'Ø�Q�Q�Q˜�WÔ Ñ'ˆØ�Q�Q�Q˜�WÔ Ñ'ˆØ�Q�Q�Q˜�WÔ Ñ'ˆØ�2�rˆzÐr+   c                 ó  — |                       |¦  «        \  }}}t          j        d¬¦  «        5  |dz  |dz  z   |dz  z   dz  }d d d ¦  «         n# 1 swxY w Y   d|t          j        |¦  «        <   dt          j        |¦  «        z  S )NÚignore©Údivider.   r«   r   rx   )rÓ   r   ÚerrstateÚdiag_indices_fromr’   )r%   r2   rÐ   rÑ   rÒ   Údm1s         r(   r3   zElec.funk  sÊ   € Ø×4Ò4°QÑ7Ô7‰
ˆˆB�ÝŒ[ Ð)Ñ)Ô)ð 	2ð 	2Ø�q‘5˜2˜q™5‘= 2 q¡5Ñ(¨TÑ1ˆCð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2à)*ˆ�BÔ  Ñ%Ô%Ñ&Ø•R”V˜C‘[”[Ñ Ð ó   ¯AÁAÁAc                 ó®  — |                       |¦  «        \  }}}t          j        d¬¦  «        5  |dz  |dz  z   |dz  z   dz  }d d d ¦  «         n# 1 swxY w Y   d|t          j        |¦  «        <   t          j        ||z  d¬¦  «         }t          j        ||z  d¬¦  «         }t          j        ||z  d¬¦  «         }t          j        |||f¦  «        S )NrÕ   rÖ   r.   ç      ø¿r   r/   r�   )rÓ   r   rØ   rÙ   r’   rÃ   )	r%   r2   rÐ   rÑ   rÒ   Údm3Úgrad_xÚgrad_yÚgrad_zs	            r(   r8   z	Elec.gradr  s  € Ø×4Ò4°QÑ7Ô7‰
ˆˆB�åŒ[ Ð)Ñ)Ô)ð 	2ð 	2Ø�q‘5˜2˜q™5‘= 2 q¡5Ñ(¨TÑ1ˆCð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2à)*ˆ�BÔ  Ñ%Ô%Ñ&å”&˜˜c™¨Ð*Ñ*Ô*Ð*ˆÝ”&˜˜c™¨Ð*Ñ*Ô*Ð*ˆÝ”&˜˜c™¨Ð*Ñ*Ô*Ð*ˆåŒy˜& &¨&Ð1Ñ2Ô2Ð2rÛ   c           	      ó®  — |                       |¦  «        \  }}}|dz  |dz  z   |dz  z   dz  }t          j        d¬¦  «        5  |dz  }|dz  }d d d ¦  «         n# 1 swxY w Y   t          j        | j        ¦  «        }d|||f<   d|||f<   |d|dz  z  |z  z
  }	t          j        |	d	¬
¦  «         |	||f<   d|z  |z  |z  }
t          j        |
d	¬
¦  «         |
||f<   d|z  |z  |z  }t          j        |d	¬
¦  «         |||f<   |d|dz  z  |z  z
  }t          j        |d	¬
¦  «         |||f<   d|z  |z  |z  }t          j        |d	¬
¦  «         |||f<   |d|dz  z  |z  z
  }t          j        |d	¬
¦  «         |||f<   t          j        t          j        |	|
|f¦  «        t          j        |
||f¦  «        t          j        |||f¦  «        f¦  «        }|S )Nr.   rx   rÕ   rÖ   éýÿÿÿéûÿÿÿr   r�   r/   r�   )rÓ   r   rØ   ÚarangerÂ   r’   ÚvstackrÃ   )r%   r2   rÐ   rÑ   rÒ   ÚdrÞ   Údm5ÚiÚHxxÚHxyÚHxzÚHyyÚHyzÚHzzr¥   s                   r(   r=   z	Elec.hess  sj  € Ø×4Ò4°QÑ7Ô7‰
ˆˆB�Ø�‰U�R˜‘U‰]˜R ™UÑ" sÑ*ˆåŒ[ Ð)Ñ)Ô)ð 	ð 	Ø�r‘'ˆCØ�r‘'ˆCð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ŒI�dÔ&Ñ'Ô'ˆØˆˆAˆqˆD‰	ØˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�2‰g˜‰l˜SÑ ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	à�A˜˜A™‘I ‘OÑ#ˆÝ”V˜C aÐ(Ñ(Ô(Ð(ˆˆAˆqˆD‰	åŒIÝŒI�s˜C �oÑ&Ô&ÝŒI�s˜C �oÑ&Ô&ÝŒI�s˜C �oÑ&Ô&ð
ñ ô ˆð ˆs   ÁAÁAÁ!Ac                 ó–   ‡ — ˆ fd„}‰ j         €ˆ fd„}n‰ j         }‰ j        €d„ }n‰ j        }t          |t          j         d||¦  «        S )Nc                 ó^   •— ‰                      | ¦  «        \  }}}|dz  |dz  z   |dz  z   dz
  S )Nr.   r/   rÏ   )r2   rÊ   rË   rÌ   r%   s       €r(   r3   zElec.constr.<locals>.fun§  s>   ø€ Ø(,×(<Ò(<¸QÑ(?Ô(?Ñ%ˆG�W˜gØ˜A‘: ¨¡
Ñ*¨W°a©ZÑ7¸!Ñ;Ð;r+   c                 ó  •— ‰                      | ¦  «        \  }}}dt          j        |¦  «        z  }dt          j        |¦  «        z  }dt          j        |¦  «        z  }t          t          j        |||f¦  «        ¦  «        S r{   )rÍ   r   r¢   r   rÃ   )r2   rÊ   rË   rÌ   ÚJxÚJyÚJzr%   s          €r(   rE   zElec.constr.<locals>.jac¬  sw   ø€ Ø,0×,@Ò,@ÀÑ,CÔ,CÑ)�˜ 'Ø�œ Ñ)Ô)Ñ)�Ø�œ Ñ)Ô)Ñ)�Ø�œ Ñ)Ô)Ñ)�Ý!¥"¤)¨R°°R¨LÑ"9Ô"9Ñ:Ô:Ð:r+   c                 óR   — dt          j        |¦  «        z  }t          |||¦  «        S r{   )r   r¢   r   )r2   rJ   ÚDs      r(   r=   zElec.constr.<locals>.hess¶  s%   € Ø�œ ™
œ
‘N�Ý! ! Q¨Ñ*Ô*Ð*r+   r   r‚   rM   s   `   r(   rN   zElec.constr¥  sŽ   ø€ ð	<ð 	<ð 	<ð 	<ð 	<ð Œ?Ð"ð;ð ;ð ;ð ;ð ;ð ;ð ”/ˆCàÔÐ#ð+ð +ð +ð +ð Ô#ˆDå" 3­¬¨°°C¸Ñ>Ô>Ð>r+   )r–   r   NN)rR   rS   rT   rU   r)   rÍ   rÓ   r3   r8   r=   rV   rN   r0   r+   r(   rÀ   rÀ   @  s¡   € € € € € ðð ð 67Ø.2ðð ð ð ð )ð )ð )ðð ð ð!ð !ð !ð3ð 3ð 3ð$ð $ð $ðL ð?ð ?ñ „Xð?ð ?ð ?r+   rÀ   c                   ó:  — e Zd Z e¦   «          ed¬¦  «         e e¦   «         ¬¦  «         ed e¦   «         ¬¦  «         e¦   «          e¦   «          ed¬¦  «         e e¦   «         ¬¦  «         ed e¦   «         ¬¦  «         e¦   «          e	¦   «          e
¦   «          e¦   «          ed¬¦  «         edd¬¦  «         ed e¦   «         ¬¦  «         edd e¦   «         ¬¦  «        gZej        j        ej                             d	e¦  «        ej                             d
d¦  «        ej                             ddd e¦   «          ed¬¦  «         ed¬¦  «        f¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestTrustRegionConstrú2-point)r"   )r!   r"   ú3-pointr.   rÉ   )rÂ   r"   )rÂ   r!   r"   Úprobr8   )ú	prob.gradrû   Fr=   ú	prob.hessÚdamp_update)Úexception_strategyÚskip_updatec           
      ó`  — |dk    r|j         n|}|dk    r|j        n|}|dv r|dv rt          j        d¦  «         |j         du r|dv rt          j        d¦  «         t	          |t
          ¦  «        o|d	k    ot	          |t          ¦  «        }|rt          j        d
¦  «         t          ¦   «         5 }| 	                    t          d¦  «         t          |j        |j        d|||j        |j        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |j        �<t#          |j        |j        d¬¦  «         |j        dk    rt)          |j        d¦  «         |j        dk    r5t)          |j        d¦  «         |j        dk    rt)          |j        d¦  «         d|j        › d�}|j        dvs
J |¦   «         ‚d S )Nrý   rþ   >   FÚcsrú   rû   >   r  rú   rû   z+Numerical Hessian needs analytical gradientT>   Frû   z6prob.grad incompatible with grad in {'3-point', False}rû   z3Seems sensitive to initial conditions w/ Accelerateúdelta_grad == 0.0útrust-constr©ÚmethodrE   r=   r#   Úconstraintsé   ©Údecimalr/   ç:Œ0âŽyE>r.   Útr_interior_pointzInvalid termination condition: ú.>   r   r�   )r8   r=   ÚpytestÚskipÚ
isinstancerµ   r   Úxfailr   ÚfilterÚUserWarningr   r3   r   r#   rN   r    r   r2   Ústatusr   Ú
optimalityÚ	tr_radiusr  Úbarrier_parameter)r%   rü   r8   r=   Ú	sensitiveÚsupÚresultÚmessages           r(   Útest_list_of_problemsz+TestTrustRegionConstr.test_list_of_problemsÔ  s1  € ð ! KÒ/Ð/ˆtŒyˆy°TˆØ  KÒ/Ð/ˆtŒyˆy°TˆàÐ7Ð7Ð7ØÐ4Ð4Ð4ÝŒKÐEÑFÔFÐFØŒ9˜ÐÐ Ð);Ð!;Ð!;ÝŒKÐPÑQÔQÐQÝ Õ&7Ñ8Ô8ð 0¸TÀYÒ=Nð 0Ý# D­$Ñ/Ô/ð 	àð 	PÝŒLÐNÑOÔOÐOÝÑ Ô ð 	7 CØ�JŠJ•{Ð$7Ñ8Ô8Ð8Ý˜dœh¨¬Ø%3Ø"&¨TØ%)¤[Ø*.¬+ð	7ñ 7ô 7ˆFð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð Œ:Ð!Ý% f¤h°´
Ø./ð1ñ 1ô 1ð 1ð Œ} Ò!Ð!Ý! &Ô"3°TÑ:Ô:Ð:àŒ=˜AÒÐÝ˜fÔ.°Ñ5Ô5Ð5àŒ}Ð 3Ò3Ð3Ý! &Ô":¸DÑAÔAÐAð E°F´MÐDÐDÐDˆØŒ} FÐ*Ð*Ð*¨GÑ*Ô*Ð*Ð*Ð*s   Â0ADÄDÄ	Dc                 óh   — d„ }dg}t          |dg|d¬¦  «        }t          |j        dd¬¦  «         d S )	Nc                 ó   — | dz
  dz  S r¯   r0   rB   s    r(   r3   z<TestTrustRegionConstr.test_default_jac_and_hess.<locals>.fun  ó   € Ø˜‘E˜a‘<Ðr+   ©r•   r.   rÝ   r  )r   r#   r  r/   r	  r
  ©r   r   r2   ©r%   r3   r#   Úress       r(   Útest_default_jac_and_hessz/TestTrustRegionConstr.test_default_jac_and_hess  sM   € ð	 ð 	 ð 	 à�ˆÝ�s ˜v¨f¸^ÐLÑLÔLˆÝ! #¤%¨°AÐ6Ñ6Ô6Ð6Ð6Ð6r+   c                 ój   — d„ }dg}t          |dg|dd¬¦  «        }t          |j        dd¬	¦  «         d S )
Nc                 ó   — | dz
  dz  S r¯   r0   rB   s    r(   r3   z4TestTrustRegionConstr.test_default_hess.<locals>.fun	  r   r+   r!  rÝ   r  rú   )r   r#   r  rE   r/   r	  r
  r"  r#  s       r(   Útest_default_hessz'TestTrustRegionConstr.test_default_hess  sV   € ð	 ð 	 ð 	 à�ˆÝ�s ˜v¨f¸^Ø$ð&ñ &ô &ˆå! #¤%¨°AÐ6Ñ6Ô6Ð6Ð6Ð6r+   c                 óŽ  — t          ¦   «         }t          |j        |j        d|j        |j        ¬¦  «        }t          |j        |j        dd¬¦  «        }t          |j        |j        dd¬¦  «        }t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         d S )	Nr  )r  rE   r=   zL-BFGS-Brú   )r  rE   rû   r	  r
  )	r„   r   r3   r   r8   r=   r   r2   r    )r%   rü   r  Úresult1Úresult2s        r(   Útest_no_constraintsz)TestTrustRegionConstr.test_no_constraints  sÎ   € Ý‰|Œ|ˆÝ˜$œ( D¤GØ!/Ø"œi¨d¬ið9ñ 9ô 9ˆõ ˜4œ8 T¤WØ",Ø(ð*ñ *ô *ˆõ ˜4œ8 T¤WØ",Ø(ð*ñ *ô *ˆõ 	" &¤(¨D¬JÀÐBÑBÔBÐBÝ! '¤)¨T¬ZÀÐCÑCÔCÐCÝ! '¤)¨T¬ZÀÐCÑCÔCÐCÐCÐCr+   c           	      óÂ  ‡— t          ¦   «         Šˆfd„}t          ‰j        ‰j        d‰j        |‰j        ‰j        ¬¦  «        }‰j        �t          |j	        ‰j        d¬¦  «         |j
        dk    rt          |j        d¦  «         |j
        dk    r5t          |j        d¦  «         |j        dk    rt          |j        d¦  «         |j
        d	v rt!          d
¦  «        ‚d S )Nc                 óX   •— ‰                      | ¦  «        }|                     |¦  «        S r]   )r=   Údot)r2   Úpr¥   rü   s      €r(   Úhesspz/TestTrustRegionConstr.test_hessp.<locals>.hessp#  s!   ø€ Ø—	’	˜!‘”ˆAØ—5’5˜‘8”8ˆOr+   r  )r  rE   r1  r#   r  r.   r
  r/   r  r  ©r   r�   úInvalid termination condition.)r   r   r3   r   r8   r#   rN   r    r   r2   r  r   r  r  r  r  ÚRuntimeError)r%   r1  r  rü   s      @r(   Ú
test_hesspz TestTrustRegionConstr.test_hessp   s  ø€ Ý‰yŒyˆð	ð 	ð 	ð 	ð 	õ ˜$œ( D¤GØ!/Ø"œi¨uØ!%¤Ø&*¤kð	3ñ 3ô 3ˆð Œ:Ð!Ý% f¤h°´
ÀAÐFÑFÔFÐFð Œ=˜AÒÐÝ˜fÔ/°Ñ6Ô6Ð6àŒ=˜AÒÐÝ˜fÔ.°Ñ5Ô5Ð5àŒ}Ð 3Ò3Ð3Ý! &Ô":¸DÑAÔAÐAàŒ=˜FÐ"Ð"ÝÐ?Ñ@Ô@Ð@ð #Ð"r+   c           
      óÆ  — t          dd¦  «        }t          |j        |j        dd|j        |j        |j        |j        ¬¦  «        }|j        �t          |j
        |j        d¬¦  «         |j        dk    rt          |j        d	¦  «         |j        dk    r5t          |j        d	¦  «         |j        d
k    rt          |j        d	¦  «         |j        dv rt#          d¦  «        ‚d S )NrZ   éê   )rZ   r7  r  r  r.   r
  r/   r  r  r2  r3  )rX   r   r3   r   r8   r=   r#   rN   r    r   r2   r  r   r  r  r  r  r4  )r%   rü   r  s      r(   Ú	test_argszTestTrustRegionConstr.test_args=  sï   € Ý˜s CÑ(Ô(ˆå˜$œ( D¤G¨ZØ!/Ø"œi¨d¬iØ!%¤Ø&*¤kð	3ñ 3ô 3ˆð Œ:Ð!Ý% f¤h°´
ÀAÐFÑFÔFÐFð Œ=˜AÒÐÝ˜fÔ/°Ñ6Ô6Ð6àŒ=˜AÒÐÝ˜fÔ.°Ñ5Ô5Ð5ØŒ}Ð 3Ò3Ð3Ý! &Ô":¸DÑAÔAÐAàŒ=˜FÐ"Ð"ÝÐ?Ñ@Ô@Ð@ð #Ð"r+   c           	      óÖ   — t          ¦   «         }d}t          j        t          |¬¦  «        5  t	          |j        |j        ddd|j        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz9Whenever the gradient is estimated via finite-differences©Úmatchr  rú   )r  rE   r=   r  )r   r  Úraisesr^   r   r3   r   rN   )r%   rü   r  s      r(   Útest_raise_exceptionz*TestTrustRegionConstr.test_raise_exceptionU  s³   € Ý‰yŒyˆØMˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	>ð 	>Ý�T”X˜tœw¨~À9Ø#°´ð>ñ >ô >ð >ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s   ¬%AÁA"Á%A"c                 ó  — d„ }t          d„ dgd„ d„ |d¬¦  «        }t          |                     d¦  «        ¦  «         t          |                     d	d
¦  «        dk    ¦  «         t          |                     dd
¦  «        dk    ¦  «         d S )Nc                 óJ   — t          d|v ¦  «         t          d|v ¦  «         d S )NÚnitÚniter)r   )r2   Úinfos     r(   Úcallbackz7TestTrustRegionConstr.test_issue_9044.<locals>.callbacka  s,   € Ý�E˜T�MÑ"Ô"Ð"Ý�G˜t�OÑ$Ô$Ð$Ð$Ð$r+   c                 ó   — | dz  S r{   r0   rB   s    r(   ú<lambda>z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>e  s
   €  A q¡D€ r+   r   c                 ó   — d| z  S r{   r0   rB   s    r(   rE  z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>e  s
   € ¸Q¸q¹S€ r+   c                 ó   — dS r{   r0   rB   s    r(   rE  z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>f  s   € ¨€ r+   r  )rE   r=   rC  r  Úsuccessr@  r   r/   rA  )r   r   Úget)r%   rC  r  s      r(   Útest_issue_9044z%TestTrustRegionConstr.test_issue_9044\  s£   € ð
	%ð 	%ð 	%õ ˜.˜.¨1¨#°=°=Ø*˜{°XØ!/ð1ñ 1ô 1ˆõ 	�—
’
˜9Ñ%Ô%Ñ&Ô&Ð&Ý�—
’
˜5 "Ñ%Ô%¨Ò*Ñ+Ô+Ð+õ 	�—
’
˜7 BÑ'Ô'¨1Ò,Ñ-Ô-Ð-Ð-Ð-r+   c                 óh  — t          j        ddg¦  «        }d„ }t          t          j        ddg¦  «        t          j        ddg¦  «        d¬¦  «        }t          ¦   «         5 }|                     t
          d¦  «         t          d|||¬	¦  «        }d d d ¦  «         n# 1 swxY w Y   |d
         sJ ‚d S )Nr   rx   c                 ó8   — | d         }| d         }|dz  |dz  z   S )Nr   r/   r.   r0   )r2   Úx1Úx2s      r(   Úobjz3TestTrustRegionConstr.test_issue_15093.<locals>.objw  s'   € Ø�1”ˆBØ�1”ˆBØ˜‘7˜R 1™WÑ$Ð$r+   r   T)Úkeep_feasibler  r  )r  r3   r   r#   rH  )r   r   r   r   r  r  r   )r%   r   rO  r#   r  r  s         r(   Útest_issue_15093z&TestTrustRegionConstr.test_issue_15093o  s  € õ ŒX�r˜3�iÑ Ô ˆð	%ð 	%ð 	%õ
 �œ " b Ñ*Ô*­B¬H°b¸"°XÑ,>Ô,>Ø&*ð,ñ ,ô ,ˆõ Ñ Ô ð 	 CØ�JŠJ•{Ð$7Ñ8Ô8Ð8ÝØ%ØØØð	ñ ô ˆFð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �iÔ Ð Ð Ð Ð Ð s   Á"/BÂB!Â$B!N)rR   rS   rT   r   r   ri   rt   r   r„   r©   r¸   rµ   rÀ   Úlist_of_problemsr  ÚmarkÚthread_unsafeÚparametrizer  r%  r(  r,  r5  r8  r=  rJ  rQ  r0   r+   r(   rù   rù   ¿  s}  € € € € € Ø˜™	œ	Ø˜¨IÐ6Ñ6Ô6Ø˜¨C¨C©E¬EÐ2Ñ2Ô2Ø˜¨9À#À#Á%Ä%ÐHÑHÔHØ)Ð)Ñ+Ô+Ø&˜Ñ(Ô(Ø&˜°9Ð=Ñ=Ô=Ø&˜°4°4±6´6Ð:Ñ:Ô:Ø&˜°)Ø37°4±6´6ð;ñ ;ô ;à"˜
™œØ&˜Ñ(Ô(Ø(Ð(Ñ*Ô*Ø)Ð)Ñ+Ô+Ø˜¨Ð+Ñ+Ô+Ø˜¨¸	ÐBÑBÔBØ˜¨¸¸¹¼Ð>Ñ>Ô>Ø˜¨°yØ),¨©¬ð0ñ 0ô 0ð#1Ðð( „[ÔØ„[×Ò˜VÐ%5Ñ6Ô6Ø„[×Ò˜VÐ%DÑEÔEØ„[×Ò˜V k°9¸c¸c¹e¼eØ&* d¸mÐ&LÑ&LÔ&LØ&* d¸mÐ&LÑ&LÔ&Lð&Nñ Oô Oð$4ð $4ñOô Oñ FÔEñ 7Ô6ñ Ôð$4ðN7ð 7ð 7ð7ð 7ð 7ðDð Dð Dð Að Að Að:Að Að Að0>ð >ð >ð.ð .ð .ð&!ð !ð !ð !ð !r+   rù   c                   ó   — e Zd ZdZd„ ZdS )ÚTestEmptyConstraintaÇ  
    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           	      ó†  — d„ }d„ }d„ }d„ }d„ }d„ }t          |dt          j        ||¦  «        }ddg}t          t          j         t          j         gt          j        t          j        g¦  «        }t	          ||d	|||g|¬
¦  «        }	t          t          |	j        ¦  «        t          j        ddg¦  «        d¬¦  «         d S )Nc                 ó0   — | d         dz  | d         dz  z   S rA   r0   rB   s    r(   Úfunctionz;TestEmptyConstraint.test_empty_constraint.<locals>.function˜  rC   r+   c                 óR   — t          j        d| d         z  d| d         z  g¦  «        S )NrŽ   r   r/   r7   rB   s    r(   ÚfunctionjacobianzCTestEmptyConstraint.test_empty_constraint.<locals>.functionjacobian›  s'   € Ý”8˜R  !¤™W b¨¨1¬¡gÐ.Ñ/Ô/Ð/r+   c                 ó   — d|z  S )NrŽ   r0   rI   s     r(   Úfunctionhvpz>TestEmptyConstraint.test_empty_constraint.<locals>.functionhvpž  s   € Ø�a‘4ˆKr+   c                 óV   — t          j        | d         dz  | d         dz  z
  g¦  «        S rA   r7   rB   s    r(   Ú
constraintz=TestEmptyConstraint.test_empty_constraint.<locals>.constraint¡  s*   € Ý”8˜Q˜qœT 1™W q¨¤t¨Q¡wÑ.Ð/Ñ0Ô0Ð0r+   c                 óT   — t          j        d| d         z  d| d         z  gg¦  «        S )Nr.   r   r•   r/   r7   rB   s    r(   ÚconstraintjacobianzETestEmptyConstraint.test_empty_constraint.<locals>.constraintjacobian¤  s*   € Ý”8˜a  !¤™f b¨¨1¬¡gÐ.Ð/Ñ0Ô0Ð0r+   c                 óH   — t          j        ddgddgg¦  «        |d         z  S )NrŽ   r   g       Àr   r7   rI   s     r(   ÚconstraintlcohzATestEmptyConstraint.test_empty_constraint.<locals>.constraintlcoh§  s(   € Ý”8˜b "˜X¨¨C yÐ1Ñ2Ô2°Q°q´TÑ9Ð9r+   r   rŽ   r  )r  rE   r1  r  r#   r/   r   r6   r
  )	r	   r   rv   r   r   r   Úabsr2   r   )
r%   rZ  r\  r^  r`  rb  rd  Ú
startpointr#   r  s
             r(   Útest_empty_constraintz)TestEmptyConstraint.test_empty_constraint–  s
  € ð	%ð 	%ð 	%ð	0ð 	0ð 	0ð	ð 	ð 	ð	1ð 	1ð 	1ð	1ð 	1ð 	1ð	:ð 	:ð 	:õ )¨°R½¼Ø);¸^ñMô Mˆ
ð ˜"�Xˆ
å�"œ&˜¥2¤6 'Ð*­R¬VµR´VÐ,<Ñ=Ô=ˆåØ
Ø
ØØØØ!�lØð
ñ 
ô 
ˆõ 	"¥# f¤h¡-¤-µ´¸1¸a¸&Ñ1AÔ1AÈ1ÐMÑMÔMÐMÐMÐMr+   N)rR   rS   rT   rU   rg  r0   r+   r(   rW  rW  ‰  s2   € € € € € ðð ð%Nð %Nð %Nð %Nð %Nr+   rW  c                  ó^  — d„ } t           j                             ¦   «         5 }|                     t          ¦  «         t          j        t          j        ddg¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |dt           j        ¦  «        }t          | ddgz  |¬¦  «         d S )Nc                 ó0   — | d         dz  | d         dz  z   S rA   r0   rB   s    r(   Úoptztest_bug_11886.<locals>.opt¿  s   € Ø�Œt�Q‰w�q˜”t˜Q‘w‰Ðr+   r/   r   r.   )r  )
r   Útestingr   r  ÚPendingDeprecationWarningÚmatrixr¢   r
   rv   r   )rj  r  r±   Úlin_conss       r(   Útest_bug_11886ro  ¾  sÝ   € ðð ð õ 
Œ×	%Ò	%Ñ	'Ô	'ð '¨3Ø�
Š
Õ,Ñ-Ô-Ð-ÝŒI•b”g˜q !˜f‘o”oÑ&Ô&ˆð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ    2¥r¤vÑ.Ô.€HåˆS�!�Q�C‘% xÐ0Ñ0Ô0Ð0Ð0Ð0s   ¢AA1Á1A5Á8A5c                  óº  ‡‡— t          ddgddgd¬¦  «        Šˆfd„Šˆfd„} ˆfd„}d„ }ˆfd	„}t          j        d
¦  «        }t          |dt          j        ¦  «        t          |dd|¬¦  «        g}t          | |d‰|¬¦  «        } ‰|j        ¦  «         |d         j        |d                              |j        ¦  «        cxk     r|d         j	        k     sn J ‚d S )Nr   r/   T)ÚlbÚubrP  c                 ó„   •— t          j        | ‰j        k    ¦  «        sJ ‚t          j        | ‰j        k    ¦  «        sJ ‚d S r]   )r   Úallrq  rr  )r2   Úbndss    €r(   Úassert_inboundsz%test_gh11649.<locals>.assert_inboundsÐ  sA   ø€ ÝŒv�a˜4œ7’lÑ#Ô#Ð#Ð#Ð#ÝŒv�a˜4œ7’lÑ#Ô#Ð#Ð#Ð#Ð#Ð#r+   c                 óÒ   •—  ‰| ¦  «         t          j        | d         ¦  «        d| d         dz  z  d| d         dz  z  z   d| d         z  | d         z  z   d| d         z  z   dz   z  S )Nr   r6   r.   r/   )r   Úexp©r2   rv  s    €r(   rO  ztest_gh11649.<locals>.objÔ  sn   ø€ Øˆ˜ÑÔÐÝŒv�a˜”d‰|Œ|˜Q˜q œt Q™w™Y¨¨1¨Q¬4°©7©Ñ2°Q°q¸´t±V¸A¸a¼D±[Ñ@À1ÀQÀqÄTÁ6ÑIÈAÑMÑNÐNr+   c                 óB   •—  ‰| ¦  «         | d         dz  | d         z   S rA   r0   ry  s    €r(   Únceztest_gh11649.<locals>.nceØ  s)   ø€ Øˆ˜ÑÔÐØ�Œt�Q‰w˜˜1œ‰~Ðr+   c                 ó@   — t          j        d| d         z  dg¦  «        S r-   r7   rB   s    r(   Únce_jacztest_gh11649.<locals>.nce_jacÜ  s   € ÝŒx˜˜1˜Qœ4™ ˜Ñ$Ô$Ð$r+   c                 ó<   •—  ‰| ¦  «         | d         | d         z  S )Nr   r/   r0   ry  s    €r(   Únciztest_gh11649.<locals>.nciß  s%   ø€ Øˆ˜ÑÔÐØ�Œt�A�a”D‰yÐr+   )g®Gáz®ï?g®Gáz®ï¿éöÿÿÿ)rE   r  )r3   r   r  r#   r  r   )
r   r   r   r	   rv   r   r2   rq  r3   rr  )	rO  r{  r}  r  r   Únlcsr$  rv  ru  s	          @@r(   Útest_gh11649r‚  Ê  sS  øø€ õ �b˜"�X 1 a &¸Ð=Ñ=Ô=€Dð$ð $ð $ð $ð $ðOð Oð Oð Oð Oðð ð ð ð ð%ð %ð %ðð ð ð ð õ 
Œ�-Ñ	 Ô	 €BÝ  S­"¬&Ñ1Ô1Ý  Q¨¨wÐ7Ñ7Ô7ð9€Dõ �s˜r¨.Ø¨Dð2ñ 2ô 2€Cà€O�C”EÑÔÐØ�Œ7Œ:˜˜QœŸš C¤EÑ*Ô*Ð7Ð7Ò7Ð7¨T°!¬W¬ZÒ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r+   c            	      óH  ‡— d} t          j        t          | ¬¦  «        5  t          j        d¦  «        }t          j        d¦  «                             d¦  «        t          j        d¦  «        cŠ}t          ˆfd„||¬¦  «        }t          t          |d	|g¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          j
                             ¦   «         5 }|                     t          ¦  «         t          t          |d	|gddi¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz:...more equality constraints than independent variables...r:  )r.   é   )r�   r.   )r�   c                 ó   •— ‰| z  S r]   r0   )r2   r½   s    €r(   rE  z3test_gh20665_too_many_constraints.<locals>.<lambda>ô  s   ø€ ¨4°!©8€ r+   )rq  rr  r  ©r  r  Úfactorization_methodÚSVDFactorization)r  r  Úoptions)r  r<  r^   r   r‰   rå   Úreshaper	   r   r   rk  r   r  r  )r  r   r¾   Úgr  r½   s        @r(   Ú!test_gh20665_too_many_constraintsrŒ  í  s½  ø€ ð K€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð Dð DÝŒW�T‰]Œ]ˆÝ”Y˜q‘\”\×)Ò)¨&Ñ1Ô1µ2´7¸4±=´=ˆ
ˆˆdÝÐ 3Ð 3Ð 3Ð 3¸ÀÐFÑFÔFˆÝ•˜ >À¸sÐCÑCÔCÐCð	Dð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dõ 
Œ×	%Ò	%Ñ	'Ô	'ð G¨3Ø�
Š
•;ÑÔÐÝ•˜ >À¸sØ0Ð2DÐEð	Gñ 	Gô 	Gð 	GðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs$   ŸA?B*Â*B.Â1B.Ã7DÄDÄDc                  ó:  — d„ } d„ }t          ¦   «         5 }|                     t          d¦  «         |                     t          d¦  «         t          |ddgdt	          | dd¦  «        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |j        s|j        d	k    sJ ‚d S )
Nc                 óN   — | \  }}ddg\  }}d|dz  |dz  z  z   |dz  |dz  z  z
  S )Nç      @ç      @r   r.   r0   )ÚuÚu1Úu2rZ   r[   s        r(   Úlsfztest_issue_18882.<locals>.lsfý  s@   € Ø‰ˆˆBØ�Sˆz‰ˆˆ1Ø�R˜‘U˜Q ™T‘\Ñ! B¨¡E¨A¨q©D¡LÑ0Ð0r+   c                 ó0   — t          j        | dz  ¦  «        S r{   )r   r’   )r‘  s    r(   Úofztest_issue_18882.<locals>.of  s   € ÝŒv�a˜‘d‰|Œ|Ðr+   r  zSingular Jacobian matrix.r   r  r   r†  r  )r   r  r  r   r	   rH  Úconstr_violation)r”  r–  r  r$  s       r(   Útest_issue_18882r˜  ü  sý   € ð1ð 1ð 1ð
ð ð õ 
Ñ	Ô	ð 
 Ø�
Š
•;Ð 3Ñ4Ô4Ð4Ø�
Š
•;Ð ;Ñ<Ô<Ð<ÝØØ�#ˆJØ!Ý+¨C°°AÑ6Ô6ð	
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ”Ð> #Ô"6¸Ò"=Ð"=Ð"=Ð"=Ð"=Ð"=s   •AA<Á<B ÂB c                   ór  — e Zd Zej                             d eej         ej        ¦  «         e	¦   «         j
        f eej         d¦  «        ddgf edej        ¦  «        ddgf eddgddg¦  «        ddgfg¦  «        d„ ¦   «         Zd	„ Zd
„ Zd„ Zej                             d¬¦  «        d„ ¦   «         ZdS )ÚTestBoundedNelderMeadzbounds, x_optgš™™™™™é¿r�  g      "@r   r�  ç      @c                 óL  — t          ¦   «         }t          ¦   «         5 }|                     t          d¦  «         t	          |j        ddgd|¬¦  «        }t          j        |j        |j	        ¦  «         
                    ¦   «         sJ ‚t          j        |j	        |j        ¦  «         
                    ¦   «         sJ ‚t          j        |                     |j	        ¦  «        |j        ¦  «        sJ ‚t          j        |j	        |d¬¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nú0Initial guess is not within the specified boundsr€  úNelder-Mead©r  r#   gü©ñÒMbP?)Úatol)r„   r   r  r  r   r3   r   Ú
less_equalrq  r2   rt  rr  Úallclose)r%   r#   r    rü   r  r  s         r(   Útest_rosen_brock_with_boundsz2TestBoundedNelderMead.test_rosen_brock_with_bounds  sW  € õ ‰|Œ|ˆÝÑ Ô ð 		< CØ�JŠJ•{ð %;ñ <ô <ð <å˜dœh¨¨c¨
Ø%2Ø%+ð-ñ -ô -ˆFõ ”= ¤¨F¬HÑ5Ô5×9Ò9Ñ;Ô;Ð;Ð;Ð;Ý”= ¤¨6¬9Ñ5Ô5×9Ò9Ñ;Ô;Ð;Ð;Ð;Ý”;˜tŸxšx¨¬Ñ1Ô1°6´:Ñ>Ô>Ð>Ð>Ð>Ý”;˜vœx¨°UÐ;Ñ;Ô;Ð;Ð;Ð;Ð;ð		<ð 		<ð 		<ñ 		<ô 		<ð 		<ð 		<ð 		<ð 		<ð 		<ð 		<ð 		<øøøð 		<ð 		<ð 		<ð 		<ð 		<ð 		<s   �C.DÄDÄ Dc                 ó@  — t          ¦   «         }t          ddgddg¦  «        }t          ¦   «         5 }|                     t          d¦  «         t          |j        ddgd|¬¦  «        }t          j        |j	        ddg¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr�  r›  r�  r€  é   rž  rŸ  ©
r„   r   r   r  r  r   r3   r   r¢  r2   ©r%   rü   r#   r  r  s        r(   Útest_equal_all_boundsz+TestBoundedNelderMead.test_equal_all_bounds%  só   € Ý‰|Œ|ˆÝ˜˜c˜
 S¨# JÑ/Ô/ˆÝÑ Ô ð 	5 CØ�JŠJ•{ð %;ñ <ô <ð <å˜dœh¨¨a¨Ø%2Ø%+ð-ñ -ô -ˆFõ ”;˜vœx¨#¨s¨Ñ4Ô4Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ó   ±ABÂBÂBc                 ó@  — t          ¦   «         }t          ddgddg¦  «        }t          ¦   «         5 }|                     t          d¦  «         t          |j        ddgd|¬¦  «        }t          j        |j	        dd	g¦  «        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )
Nr�  r›  g      4@r�  r€  r¥  rž  rŸ  g      0@r¦  r§  s        r(   Útest_equal_one_boundsz+TestBoundedNelderMead.test_equal_one_bounds0  só   € Ý‰|Œ|ˆÝ˜˜c˜
 S¨$ KÑ0Ô0ˆÝÑ Ô ð 	6 CØ�JŠJ•{ð %;ñ <ô <ð <å˜dœh¨¨a¨Ø%2Ø%+ð-ñ -ô -ˆFõ ”;˜vœx¨#¨t¨Ñ5Ô5Ð5Ð5Ð5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6r©  c                 ó   — t          ¦   «         }d}t          j        t          |¬¦  «        5  t	          t
          j         dgddg¦  «        }t          |j        ddgd|¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nz:An upper bound is less than the corresponding lower bound.r:  r   r�  g      Àr€  r�   rž  rŸ  )	r„   r  r<  r^   r   r   rv   r   r3   ©r%   rü   r  r#   s       r(   Útest_invalid_boundsz)TestBoundedNelderMead.test_invalid_bounds;  sË   € Ý‰|Œ|ˆØNˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	$ð 	$Ý�bœf˜W c˜N¨S°$¨KÑ8Ô8ˆFÝ�T”X  Q˜xØ)Ø"ð$ñ $ô $ð $ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ó   ¬:A3Á3A7Á:A7z5Failing on Azure Linux and macOS builds, see gh-13846)Úreasonc                 ó   — t          ¦   «         }d}t          j        t          |¬¦  «        5  t	          t
          j         dgddg¦  «        }t          |j        ddgd|¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr�  r:  r   r�  r›  r€  r¥  rž  rŸ  )	r„   r  Úwarnsr  r   r   rv   r   r3   r­  s       r(   Útest_outside_bounds_warningz1TestBoundedNelderMead.test_outside_bounds_warningD  sÍ   € õ ‰|Œ|ˆØDˆÝŒ\�+¨WÐ5Ñ5Ô5ð 	$ð 	$Ý�bœf˜W c˜N¨S°#¨JÑ7Ô7ˆFÝ�T”X  Q˜xØ)Ø"ð$ñ $ô $ð $ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$r¯  N)rR   rS   rT   r  rS  rU  r   r   rv   r„   r    r£  r¨  r«  r®  r  r³  r0   r+   r(   rš  rš    s'  € € € € € à„[×Ò˜_Ø%˜v r¤v g¨r¬vÑ6Ô6¸
¸
¹¼Ô8JÐKØ%˜v r¤v g¨tÑ4Ô4°t¸T°lÐCØ%˜v c¨2¬6Ñ2Ô2°S¸#°JÐ?Ø%˜v s¨C j°3¸°*Ñ=Ô=ÀÀB¸xÐHð ñ!ô !ð<ð <ñ!ô !ð<ð	5ð 	5ð 	5ð	6ð 	6ð 	6ð$ð $ð $ð „[×Òð -Ðñ .ô .ð$ð $ñ.ô .ð$ð $ð $r+   rš  )$Únumpyr   r  Úscipy.linalgr   Úscipy.sparser   Únumpy.testingr   r   r   r   Úscipy.optimizer	   r
   r   r   r   r   r   r   rX   ri   rt   r„   r©   rµ   r¸   rÀ   rù   rW  ro  r‚  rŒ  r˜  rš  r0   r+   r(   ú<module>r¹     s,  ðØ Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #ð.ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð*9ð *9ð *9ð *9ð *9ñ *9ô *9ð *9ðZ39ð 39ð 39ð 39ð 39ñ 39ô 39ð 39ðl,9ð ,9ð ,9ð ,9ð ,9ñ ,9ô ,9ð ,9ð^+Að +Að +Að +Að +Añ +Aô +Að +Að\+ð +ð +ð +ð +ñ +ô +ð +ð\/ð /ð /ð /ð /�Zñ /ô /ð /ð,.ð .ð .ð .ð .˜
ñ .ô .ð .ð"4ð 4ð 4ð 4ð 4�zñ 4ô 4ð 4ð4|?ð |?ð |?ð |?ð |?ñ |?ô |?ð |?ð~H!ð H!ð H!ð H!ð H!ñ H!ô H!ð H!ðT2Nð 2Nð 2Nð 2Nð 2Nñ 2Nô 2Nð 2Nðj	1ð 	1ð 	1ð 8ð  8ð  8ðFGð Gð Gð?ð ?ð ?ð(=$ð =$ð =$ð =$ð =$ñ =$ô =$ð =$ð =$ð =$r+   