§
    fŠtjÈ±  ã                   ó²   — d dl Z d dlZd dlmZ ddlmZ  ej        e¦  «        j	        Z
 ej        e¦  «        j        Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ ZdS )é    N)Úqré   )Úget_arrays_tolc                 ó‚  — |�r7t          | t          j        ¦  «        r| j        dk    sJ ‚t	          j        |¦  «                             | ¦  «        sJ ‚t          |t          j        ¦  «        r|j        | j        k    sJ ‚t          |t          j        ¦  «        r|j        | j        k    sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          ||¦  «        }t          j        ||k    ¦  «        sJ ‚t          j        || k    ¦  «        sJ ‚t          j        |¦  «        r|dk    sJ ‚t          j        |d¦  «        }t          j        |d¦  «        }| j        }t          j        | ¦  «        } t          j        | ¦  «        }	|dk     | dk     z  |dk    | dk    z  z  }
t          j        | ¦  «        }t          j        |¦  «        }| |
          ||
<   d}d}d}|t          j        |
¦  «        k     �r©| |z  }|dt&          z  |z  t)          dt          j                             | ¦  «        ¦  «        z  k    r�nc	 t/          |||¦  «        }n# t0          $ r Y �nCw xY w| |z  d|z  k    r�n0 ||¦  «        }||z  }|t2          t5          |¦  «        z  k    rt)          | |z  d¦  «        }nt          j        }t9          ||¦  «        }| |d|z  |z  z   z  d|z  k    r�n¼|t          j         k    |t2           t          j        ||z
  ¦  «        z  k     z  }|t          j        k     |t2          t          j        ||z
  ¦  «        z  k    z  }t          j        |t          j        ¦  «        }t          j        |t          j        ¦  «        }t          j        ||         ||         z
  ||         z  d¦  «        ||<   t          j        ||         ||         z
  ||         z  d¦  «        ||<   t          j        |¦  «        }t          j        |¦  «        }t9          ||¦  «        }t9          ||¦  «        }|dk    rPt          j        ||
         |||
         z  z   ||
         ||
         ¦  «        ||
<   | ||z  z  } |||d|z  |z  z   z  z  }|t9          ||¦  «        k     r7| |
         ||
         z  |z  }|||
         z  | |
         z
  ||
<   d||
 <   |dz  }n²||k     r_||k    r t          j        |¦  «        }||         ||<   nt          j        |¦  «        }||         ||<   d|
|<   | |
          ||
<   d||
 <   d}nM||k    rtA          |¦  «        }||         ||<   d|
|<   ||k    rtA          |¦  «        }||         ||<   d|
|<   d	}n|t          j        |
¦  «        k     �°©| !                    d
d	¦  «        �rŸ|�rœt          j        |¦  «        }|	|z  d|z   ||¦  «        z  z   } t          j        |
¦  «        dk    �r;||
         ||
         z  }!| |
         | |
         z  }"| |
         ||
         z  }#t          j"        t)          |!|"z  |#dz  z
  d¦  «        ¦  «         }|#||
         z  |!| |
         z  z
  ||
<   d||
 <   |d|z  k    s9t          j#        |t2           t          j        ||
         ¦  «        z  k    ¦  «        r�nx||
xx         | z  cc<   t          j$        |¦  «        }$t          j$        |¦  «        }%||
         dz  ||
         dz  z   ||
         dz  z
  |$|
<   ||
         dz  ||
         dz  z   ||
         dz  z
  |%|
<   t          j"        |$|$dk             ¦  «        ||$dk             z
  |$|$dk    <   t          j"        |%|%dk             ¦  «        ||%dk             z   |%|%dk    <   t          j        ||z
  d¦  «        }&t          j        ||z
  d¦  «        }'|$t2          |&z  k    }|%t2          |'z  k    }t          j%        |¦  «        }(t          j%        |¦  «        })t          j        |(|         |&|         |$|         z  ¦  «        |(|<   t          j        |)|         |'|         |%|         z  ¦  «        |)|<   t          j        |(¦  «        }*t          j        |)¦  «        }+t9          |*|+¦  «        }, ||¦  «        }- ||¦  «        }||-z  }.||z  }||z  }/d}0tM          |0dz
  |,z  dz   ¦  «        }0t          j'        |,|0z  |,|0¦  «        }1d|1z  d|1dz  z   z  }2|2|#|1z  |z
  |1|.z  z
  |2|1|/z  d||.z
  z  z
  z  z   z  }3t          j        |3dk    ¦  «        rnçt          j(        |3¦  «        }4d|1|4         dz  z
  d|1|4         dz  z   z  }5|5||
         z  |2|4         ||
         z  z   ||
<   | |5dz
  |-z  |2|4         |z  z   z  } ||3|4         z  }|,dk     rT|4|0dz
  k    rK|*|,k    rtA          |(¦  «        }||         ||<   d|
|<   |+|,k    rtA          |)¦  «        }||         ||<   d|
|<   nnt          j        |
¦  «        dk    �°;|	|z  d|z   ||¦  «        z  z   | k    r|}|r\t          j        ||k    ¦  «        sJ ‚t          j        ||k    ¦  «        sJ ‚t          j                             |¦  «        d|z  k     sJ ‚|S )ad  
    Minimize approximately a quadratic function subject to bound constraints in
    a trust region.

    This function solves approximately

    .. math::

        \min_{s \in \mathbb{R}^n} \quad g^{\mathsf{T}} s + \frac{1}{2}
        s^{\mathsf{T}} H s \quad \text{s.t.} \quad
        \left\{ \begin{array}{l}
            l \le s \le u\\
            \lVert s \rVert \le \Delta,
        \end{array} \right.

    using an active-set variation of the truncated conjugate gradient method.

    Parameters
    ----------
    grad : `numpy.ndarray`, shape (n,)
        Gradient :math:`g` as shown above.
    hess_prod : callable
        Product of the Hessian matrix :math:`H` with any vector.

            ``hess_prod(s) -> `numpy.ndarray`, shape (n,)``

        returns the product :math:`H s`.
    xl : `numpy.ndarray`, shape (n,)
        Lower bounds :math:`l` as shown above.
    xu : `numpy.ndarray`, shape (n,)
        Upper bounds :math:`u` as shown above.
    delta : float
        Trust-region radius :math:`\Delta` as shown above.
    debug : bool
        Whether to make debugging tests during the execution.

    Returns
    -------
    `numpy.ndarray`, shape (n,)
        Approximate solution :math:`s`.

    Other Parameters
    ----------------
    improve_tcg : bool, optional
        If True, a solution generated by the truncated conjugate gradient
        method that is on the boundary of the trust region is improved by
        moving around the trust-region boundary on the two-dimensional space
        spanned by the solution and the gradient of the quadratic function at
        the solution (default is True).

    Notes
    -----
    This function implements Algorithm 6.2 of [1]_. It is assumed that the
    origin is feasible with respect to the bound constraints and that `delta`
    is finite and positive.

    References
    ----------
    .. [1] T. M. Ragonneau. *Model-Based Derivative-Free Optimization Methods
       and Software*. PhD thesis, Department of Applied Mathematics, The Hong
       Kong Polytechnic University, Hong Kong, China, 2022. URL:
       https://theses.lib.polyu.edu.hk/handle/200/12294.
    é   ç        r   Fç      $Àç      ð?ç:Œ0âŽyE>ç      à?TÚimprove_tcgç       @ç:Œ0âŽyE¾é   é   çš™™™™™ñ?))Ú
isinstanceÚnpÚndarrayÚndimÚinspectÚ	signatureÚbindÚshapeÚfloatÚboolr   ÚallÚisfiniteÚminimumÚmaximumÚsizeÚcopyÚ
zeros_likeÚcount_nonzeroÚEPSÚmaxÚlinalgÚnormÚ	_alpha_trÚZeroDivisionErrorÚTINYÚabsÚinfÚminÚ	full_likeÚclipÚargminÚ_argminÚgetÚsqrtÚanyÚzerosÚonesÚintÚlinspaceÚargmax)6ÚgradÚ	hess_prodÚxlÚxuÚdeltaÚdebugÚkwargsÚtolÚnÚ	grad_origÚfree_bdÚstepÚsdÚkÚreductÚboundary_reachedÚgrad_sdÚalpha_trÚhess_sdÚcurv_sdÚ
alpha_quadÚalphaÚi_xlÚi_xuÚall_alpha_xlÚall_alpha_xuÚalpha_xlÚalpha_xuÚalpha_bdÚbetaÚi_newÚ	step_baseÚstep_comparatorÚstep_sqÚgrad_sqÚ	grad_stepÚtemp_xlÚtemp_xuÚdist_xlÚdist_xuÚall_t_xlÚall_t_xuÚt_xlÚt_xuÚt_bdÚ	hess_stepÚ	curv_stepÚcurv_step_sdÚ	n_samplesÚ	t_samplesÚ
sin_valuesÚ
all_reductÚi_maxÚ	cos_values6                                                         ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/_lib/cobyqa/subsolvers/optim.pyÚtangential_byrd_omojokunrr      sÉ  € ð@ ñ 
2Ý˜$¥¤
Ñ+Ô+Ð>°´	¸Q²°°Ð>ÝÔ  Ñ+Ô+×0Ò0°Ñ6Ô6Ð6Ð6Ð6Ý˜"�bœjÑ)Ô)ÐD¨b¬h¸$¼*Ò.DÐ.DÐ.DÐDÝ˜"�bœjÑ)Ô)ÐD¨b¬h¸$¼*Ò.DÐ.DÐ.DÐDÝ˜%¥Ñ'Ô'Ð'Ð'Ð'Ý˜%¥Ñ&Ô&Ð&Ð&Ð&Ý˜R Ñ$Ô$ˆÝŒv�b˜C’iÑ Ô Ð Ð Ð ÝŒv�b˜S˜D’jÑ!Ô!Ð!Ð!Ð!ÝŒ{˜5Ñ!Ô!Ð1 e¨c¢k k kÐ1Ý	Œ�B˜Ñ	Ô	€BÝ	Œ�B˜Ñ	Ô	€Bð 	Œ	€AÝŒ7�4‰=Œ=€DÝ”˜‘”€Ið �S’˜T CšZÑ(¨b°3ªh¸4À#º:Ñ-FÑG€Gõ Œ=˜ÑÔ€DÝ	Œ�tÑ	Ô	€BØ˜”=�.€B€w�Kà	€AØ€FØÐØ
�bÔ˜wÑ'Ô'Ò
'Ñ
'à˜‘)ˆØ�e�c‘k A‘o­¨Cµ´·²ÀÑ1EÔ1EÑ(FÔ(FÑFÒFÐFÙð	Ý   r¨5Ñ1Ô1ˆHˆHøÝ ð 	ð 	ð 	Ø‰Eð	øøøð
 ˆ9�wÑ $¨¡-Ò/Ð/Ùð �)˜B‘-”-ˆØ�w‘,ˆØ•T�C ™LœLÑ(Ò(Ð(Ý˜g˜X¨Ñ/°Ñ5Ô5ˆJˆJåœˆJõ �H˜jÑ)Ô)ˆØˆ6�W˜s U™{¨WÑ4Ñ4Ñ5¸À¹ÒFÐFÙð •b”f�W’ ¥t e­b¬f°R¸$±YÑ.?Ô.?Ñ&?Ò!?Ñ@ˆØ•R”V’ ¥T­B¬F°2¸±9Ñ,=Ô,=Ñ%=Ò =Ñ>ˆÝ”| D­"¬&Ñ1Ô1ˆÝ”| D­"¬&Ñ1Ô1ˆÝœZØ�ŒX˜˜Tœ
Ñ" b¨¤hÑ.Øñ
ô 
ˆ�TÑõ  œZØ�ŒX˜˜Tœ
Ñ" b¨¤hÑ.Øñ
ô 
ˆ�TÑõ ”6˜,Ñ'Ô'ˆÝ”6˜,Ñ'Ô'ˆÝ�x Ñ*Ô*ˆõ �E˜8Ñ$Ô$ˆØ�3Š;ˆ;ÝœGØ�W” ¨¨7¬Ñ 3Ñ3Ø�7”Ø�7”ñô ˆD�‰Mð
 �E˜G‘OÑ#ˆDØ�e˜w¨¨u©°wÑ)>Ñ>Ñ?Ñ?ˆFà•3�x Ñ*Ô*Ò*Ð*ð ˜”M G¨GÔ$4Ñ4¸Ñ?ˆDØ  G¤Ñ,¨t°G¬}Ñ<ˆBˆw‰KØˆB�ˆx‰LØ�‰FˆAˆAØ�XÒÐð ˜5Ò Ð Ýœ	 ,Ñ/Ô/�Ø  œi��U‘�åœ	 ,Ñ/Ô/�Ø  œi��U‘Ø"ˆG�E‰NØ œ=˜.ˆBˆw‰KØˆB�ˆx‰LØˆAˆAð
 ˜5Ò Ð Ý Ñ-Ô-�Ø  œi��U‘Ø!&�˜‘Ø˜5Ò Ð Ý Ñ-Ô-�Ø  œi��U‘Ø!&�˜‘Ø#ÐØð{ �bÔ˜wÑ'Ô'Ò
'Ñ
'ð@ ‡z‚z�- Ñ&Ô&ñ oÐ+;ñ oÝ”G˜D‘M”Mˆ	Ø# iÑ/°#¸	±/ÀIÀIØñE
ô E
ñ 3
ñ 
ˆõ Ô˜wÑ'Ô'¨!Ò+Ñ+ð ˜7”m d¨7¤mÑ3ˆGØ˜7”m d¨7¤mÑ3ˆGØ˜Wœ¨¨W¬Ñ5ˆIÝ”w�s 7¨WÑ#4°yÀ#±~Ñ#EÀsÑKÔKÑLÔLÐLˆGØ# d¨7¤mÑ3°gÀÀWÄÑ6MÑMˆBˆw‰KØˆB�ˆx‰LØ˜% &™.Ò(Ð(­B¬FØ�D˜5¥2¤6¨"¨W¬+Ñ#6Ô#6Ñ6Ò6ñ-ô -Ð(ñ ØˆwˆKˆKŒK˜G˜8Ñ#ˆKˆK‰Kõ
 ”h˜q‘k”kˆGÝ”h˜q‘k”kˆGà�W” Ñ$ r¨'¤{°cÑ'9Ñ9¸B¸w¼KÈ3Ñ<NÑNð �GÑð �W” Ñ$ r¨'¤{°cÑ'9Ñ9¸B¸w¼KÈ3Ñ<NÑNð �GÑõ ”˜ ¨#¢Ô.Ñ/Ô/°"°W¸s²]Ô2CÑCð �G˜c’MÑ"õ ”˜ ¨#¢Ô.Ñ/Ô/°"°W¸s²]Ô2CÑCð �G˜c’MÑ"õ ”j ¨¡¨CÑ0Ô0ˆGÝ”j  d¡¨CÑ0Ô0ˆGØ�T G™^Ò+ˆDØ�T G™^Ò+ˆDÝ”w˜q‘z”zˆHÝ”w˜q‘z”zˆHÝœZØ˜”Ø˜” ¨¤Ñ-ñô ˆH�T‰Nõ  œZØ˜”Ø˜” ¨¤Ñ-ñô ˆH�T‰Nõ ”6˜(Ñ#Ô#ˆDÝ”6˜(Ñ#Ô#ˆDÝ�t˜T‘?”?ˆDð "˜	 $™œˆIØ�i ‘m”mˆGØ˜yÑ(ˆIØ˜7‘lˆGØ '™>ˆLð
 ˆIÝ˜Y¨™]¨dÑ2°QÑ6Ñ7Ô7ˆIÝœ D¨9Ñ$4°d¸IÑFÔFˆIØ˜y™¨C°)¸S±.Ñ,@ÑAˆJØ#Ø˜IÑ%Øñà˜iÑ'ñ(ð Ø˜|Ñ+¨c°W¸yÑ5HÑ.IÑIñKñKñˆJõ Œv�j CÒ'Ñ(Ô(ð àõ ”I˜jÑ)Ô)ˆEØ˜y¨Ô/°3Ñ6Ñ6Ø�i Ô&¨#Ñ-Ñ-ñˆIð ˜D œMÑ)¨J°uÔ,=ÀÀ7ÄÑ,KÑKð �‰Mð �Y ‘_¨	Ñ1°J¸uÔ4EÈÑ4OÑOÑOˆDØ�j Ô'Ñ'ˆFð
 �cŠzˆz˜e y°1¡}Ò4Ð4Ø˜4’<�<Ý# HÑ-Ô-�EØ"$ U¤)�D˜‘KØ%*�G˜E‘NØ˜4’<�<Ý# HÑ-Ô-�EØ"$ U¤)�D˜‘KØ%*�G˜E‘NøàõI Ô˜wÑ'Ô'¨!Ò+Ñ+ðP �tÑ˜c D™j¨9¨9°T©?¬?Ñ:Ñ:¸_ÒLÐLØˆDàð 2ÝŒv�b˜D’jÑ!Ô!Ð!Ð!Ð!ÝŒv�d˜b’jÑ!Ô!Ð!Ð!Ð!ÝŒy�~Š~˜dÑ#Ô# c¨E¡kÒ1Ð1Ð1Ð1Ø€Ks   É	I É
I)É(I)c	                 ó8  — |�r	t          | t          j        ¦  «        r| j        dk    sJ ‚t	          j        |¦  «                             | ¦  «        sJ ‚t          |t          j        ¦  «        r|j        | j        k    sJ ‚t          |t          j        ¦  «        r|j        | j        k    sJ ‚t          |t          j        ¦  «        r!|j        dk    r|j        d         | j        k    sJ ‚t          |t          j        ¦  «        r!|j        dk    r|j        |j        d         k    sJ ‚t          |t          j        ¦  «        r!|j        dk    r|j        d         | j        k    sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          ||¦  «        }
t          j        ||
k    ¦  «        sJ ‚t          j        ||
 k    ¦  «        sJ ‚t          j        ||
 k    ¦  «        sJ ‚t          j        |¦  «        r|dk    sJ ‚t          j        |d¦  «        }t          j        |d¦  «        }t          j        |d¦  «        }| j        }t          j        | ¦  «        } t          j        | ¦  «        }|dk     | dk     z  }|dk    | dk    z  }|dk    || z  dk    z  }t#          |||||¦  «        \  }}t          j        | ¦  «        }|dd…|d…f          |dd…|d…f         j        | z  z  }t          j        |¦  «        }d}d}d}|||z
  k     �r¡| |z  }|dt(          z  |z  t+          dt          j                             | ¦  «        ¦  «        z  k    r�n[	 t1          |||¦  «        }n# t2          $ r Y �n;w xY w| |z  d	|z  k    r�n( ||¦  «        }||z  }|t4          t7          |¦  «        z  k    rt+          | |z  d¦  «        }nt          j        }t;          ||¦  «        }| |d
|z  |z  z   z  d	|z  k    r�n´||t          j         k    z  |t4           t          j        ||z
  ¦  «        z  k     z  }||t          j        k     z  |t4          t          j        ||z
  ¦  «        z  k    z  }t          j        |t          j        ¦  «        } t          j        |t          j        ¦  «        }!t          j        ||         ||         z
  ||         z  d¦  «        | |<   t          j        ||         ||         z
  ||         z  d¦  «        |!|<   t          j        | ¦  «        }"t          j        |!¦  «        }#t;          |"|#¦  «        }$||z  }%||%t4          t          j        |¦  «        z  k    z  }&t          j        |t          j        ¦  «        }'||&         |%|&         z  |'|&<   t          j        |'t          j        ¬¦  «        }(t;          ||$|(¦  «        }|dk    rPt          j        |||z  z   ||¦  «        }| ||z  z  } t          j        d|||%z  z
  ¦  «        }|||d
|z  |z  z   z  z  }|t;          ||$|(¦  «        k     r<|dd…|d…f         |dd…|d…f         j        | z  z  })|)|z  |z  }*|*|z  |)z
  }|dz  }�n1||k     r®|"|k    r%t          j         | ¦  «        }+||+         ||+<   d||+<   nD|#|k    r%t          j         |!¦  «        }+||+         ||+<   d||+<   nt          j         |'¦  «        }+d||+<   t#          |||||¦  «        \  }}|dd…|d…f          |dd…|d…f         j        | z  z  }d}n}|"|k    rtC          | ¦  «        }+||+         ||+<   d||+<   |#|k    rtC          |!¦  «        }+||+         ||+<   d||+<   |(|k    rtC          |'¦  «        }+d||+<   t#          |||||¦  «        \  }}d}n
|||z
  k     �°¡|	 "                    dd¦  «        �r|�r	||k     �rt          j        |¦  «        },||k     �rµ|dd…|d…f         |dd…|d…f         j        |z  z  }-|dd…|d…f         |dd…|d…f         j        | z  z  })|-|-z  }.|)|)z  }/|)|-z  }0t          j#        t+          |.|/z  |0dz  z
  d¦  «        ¦  «         }|dd…|d…f         |dd…|d…f         j        |0|z  |.| z  z
  z  z  }|d|z  k    s3t          j$        |t4           t          j        |¦  «        z  k    ¦  «        r�nÄ|| z  }t          j%        |¦  «        }1t          j%        |¦  «        }2t          j        ||z
  d¦  «        }3t          j        ||z
  d¦  «        }4||         dz  |3|         |3|         d|-|         z  z
  z  z
  |1|<   ||         dz  |4|         |4|         d|-|         z  z   z  z
  |2|<   t          j#        |1|1dk             ¦  «        ||1dk             z
  |1|1dk    <   t          j#        |2|2dk             ¦  «        ||2dk             z   |2|2dk    <   |1t4          |3z  k    }|2t4          |4z  k    }t          j&        |¦  «        }5t          j&        |¦  «        }6t          j        |5|         |3|         |1|         z  ¦  «        |5|<   t          j        |6|         |4|         |2|         z  ¦  «        |6|<   t          j        |5¦  «        }7t          j        |6¦  «        }8t;          |7|8¦  «        }9t          j        |¦  «        }:||-z  };||z  }%|%|         dz  ||         ||         d|;|         z  z   z  z
  |:|<   t          j#        |:|:dk             ¦  «        |%|:dk             z   |:|:dk    <   |:t4          |z  k    }&t          j'        |¦  «        }<t          j        |<|&         ||&         |:|&         z  ¦  «        |<|&<   t          j        |<d¬¦  «        }=t;          |9|=¦  «        }> ||-¦  «        }? ||¦  «        }|-|?z  }@||z  }|-|z  }Ad}BtQ          |Bdz
  |>z  dz   ¦  «        }Bt          j)        |>|Bz  |>|B¦  «        }Cd|Cz  d|Cdz  z   z  }D|D|0|Cz  |z
  |Dd
|Cdz  z  |@z  d|Cz  |Az  z
  d
|z  z   z  z
  z  }Et          j        |Edk    ¦  «        r�n:t          j*        |E¦  «        }Fd|C|F         dz  z
  d|C|F         dz  z   z  }Gt          j        ||Gdz
  |-z  z   |D|F         |z  z   ||¦  «        }| |Gdz
  |?z  |D|F         |z  z   z  } t          j        d||Gdz
  |;z  z
  |D|F         |%z  z
  ¦  «        }||E|F         z  }|>dk     r„|F|Bdz
  k    r{|7|>k    rtC          |5¦  «        }+||+         ||+<   d||+<   |8|>k    rtC          |6¦  «        }+||+         ||+<   d||+<   |=|>k    rtC          |<¦  «        }+d||+<   t#          |||||¦  «        \  }}nn||k     �°µ||z  d
|z   ||¦  «        z  z   ||,z  d
|,z   ||,¦  «        z  z   k    r|,}|r»t          ||¦  «        }
t          j        ||k    ¦  «        sJ ‚t          j        ||k    ¦  «        sJ ‚t          j        ||z  ||
z   k    ¦  «        sJ ‚t          j        t          j        ||z  ¦  «        |
k    ¦  «        sJ ‚t          j                             |¦  «        d|z  k     sJ ‚|S )af
  
    Minimize approximately a quadratic function subject to bound and linear
    constraints in a trust region.

    This function solves approximately

    .. math::

        \min_{s \in \mathbb{R}^n} \quad g^{\mathsf{T}} s + \frac{1}{2}
        s^{\mathsf{T}} H s \quad \text{s.t.} \quad
        \left\{ \begin{array}{l}
            l \le s \le u,\\
            A_{\scriptscriptstyle I} s \le b_{\scriptscriptstyle I},\\
            A_{\scriptscriptstyle E} s = 0,\\
            \lVert s \rVert \le \Delta,
        \end{array} \right.

    using an active-set variation of the truncated conjugate gradient method.

    Parameters
    ----------
    grad : `numpy.ndarray`, shape (n,)
        Gradient :math:`g` as shown above.
    hess_prod : callable
        Product of the Hessian matrix :math:`H` with any vector.

            ``hess_prod(s) -> `numpy.ndarray`, shape (n,)``

        returns the product :math:`H s`.
    xl : `numpy.ndarray`, shape (n,)
        Lower bounds :math:`l` as shown above.
    xu : `numpy.ndarray`, shape (n,)
        Upper bounds :math:`u` as shown above.
    aub : `numpy.ndarray`, shape (m_linear_ub, n)
        Coefficient matrix :math:`A_{\scriptscriptstyle I}` as shown above.
    bub : `numpy.ndarray`, shape (m_linear_ub,)
        Right-hand side :math:`b_{\scriptscriptstyle I}` as shown above.
    aeq : `numpy.ndarray`, shape (m_linear_eq, n)
        Coefficient matrix :math:`A_{\scriptscriptstyle E}` as shown above.
    delta : float
        Trust-region radius :math:`\Delta` as shown above.
    debug : bool
        Whether to make debugging tests during the execution.

    Returns
    -------
    `numpy.ndarray`, shape (n,)
        Approximate solution :math:`s`.

    Other Parameters
    ----------------
    improve_tcg : bool, optional
        If True, a solution generated by the truncated conjugate gradient
        method that is on the boundary of the trust region is improved by
        moving around the trust-region boundary on the two-dimensional space
        spanned by the solution and the gradient of the quadratic function at
        the solution (default is True).

    Notes
    -----
    This function implements Algorithm 6.3 of [1]_. It is assumed that the
    origin is feasible with respect to the bound and linear constraints, and
    that `delta` is finite and positive.

    References
    ----------
    .. [1] T. M. Ragonneau. *Model-Based Derivative-Free Optimization Methods
       and Software*. PhD thesis, Department of Applied Mathematics, The Hong
       Kong Polytechnic University, Hong Kong, China, 2022. URL:
       https://theses.lib.polyu.edu.hk/handle/200/12294.
    r   r   r   r   NFr	   r
   r   r   ©ÚinitialTr   r   r   r   r   r   )+r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r    r"   Úqr_tangential_byrd_omojokunr#   ÚTr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Ú	ones_liker8   r9   r:   )Hr;   r<   r=   r>   ÚaubÚbubÚaeqr?   r@   rA   rB   rC   rD   Úfree_xlÚfree_xuÚfree_ubÚn_actÚqrF   rG   ÚresidrH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   Úaub_sdÚi_ubÚall_alpha_ubÚalpha_ubÚ	grad_projrX   rY   rZ   Ú	step_projr\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   Útemp_ubÚaub_stepÚall_t_ubÚt_ubÚt_minrh   ri   rj   rk   rl   rm   rn   ro   rp   sH                                                                           rq   Ú$constrained_tangential_byrd_omojokunr�   C  s^  € ðf ñ 2Ý˜$¥¤
Ñ+Ô+Ð>°´	¸Q²°°Ð>ÝÔ  Ñ+Ô+×0Ò0°Ñ6Ô6Ð6Ð6Ð6Ý˜"�bœjÑ)Ô)ÐD¨b¬h¸$¼*Ò.DÐ.DÐ.DÐDÝ˜"�bœjÑ)Ô)ÐD¨b¬h¸$¼*Ò.DÐ.DÐ.DÐDå�s�BœJÑ'Ô'ð	
à”˜A’�Ø”	˜!” ¤	Ò)Ð)Ð)ð*õ
 �s�BœJÑ'Ô'ð	
à”˜A’�Ø”˜CœI aœLÒ(Ð(Ð(ð)õ
 �s�BœJÑ'Ô'ð	
à”˜A’�Ø”	˜!” ¤	Ò)Ð)Ð)ð*õ ˜%¥Ñ'Ô'Ð'Ð'Ð'Ý˜%¥Ñ&Ô&Ð&Ð&Ð&Ý˜R Ñ$Ô$ˆÝŒv�b˜C’iÑ Ô Ð Ð Ð ÝŒv�b˜S˜D’jÑ!Ô!Ð!Ð!Ð!ÝŒv�c˜c˜T’kÑ"Ô"Ð"Ð"Ð"ÝŒ{˜5Ñ!Ô!Ð1 e¨c¢k k kÐ1Ý	Œ�B˜Ñ	Ô	€BÝ	Œ�B˜Ñ	Ô	€BÝ
Œ*�S˜#Ñ
Ô
€Cð 	Œ	€AÝŒ7�4‰=Œ=€DÝ”˜‘”€Ið �CŠx˜D 3šJÑ'€GØ�CŠx˜D 3šJÑ'€GØ�SŠy˜S 4™Z¨#Ò-Ñ.€GÝ*¨3°°W¸gÀwÑOÔO�H€Eˆ1õ Œ=˜ÑÔ€DØ
ˆAˆAˆAˆuˆvˆvˆIŒ,ˆ˜!˜A˜A˜A˜u˜v˜v˜Iœ,œ.¨4Ñ/Ñ	0€BÝŒG�C‰LŒL€Eà	€AØ€FØÐØ
ˆa�%‰iŠ-‰-à˜‘)ˆØ�e�c‘k A‘o­¨Cµ´·²ÀÑ1EÔ1EÑ(FÔ(FÑFÒFÐFÙð	Ý   r¨5Ñ1Ô1ˆHˆHøÝ ð 	ð 	ð 	Ø‰Eð	øøøð
 ˆ9�wÑ $¨¡-Ò/Ð/Ùð �)˜B‘-”-ˆØ�w‘,ˆØ•T�C ™LœLÑ(Ò(Ð(Ý˜g˜X¨Ñ/°Ñ5Ô5ˆJˆJåœˆJõ �H˜jÑ)Ô)ˆØˆ6�W˜s U™{¨WÑ4Ñ4Ñ5¸À¹ÒFÐFÙð ˜"¥¤˜wš,Ñ'¨2µ°½¼¸rÀD¹yÑ8IÔ8IÑ0IÒ+IÑJˆØ˜"�rœvš+Ñ&¨"­tµb´f¸RÀ$¹YÑ6GÔ6GÑ/GÒ*GÑHˆÝ”| D­"¬&Ñ1Ô1ˆÝ”| D­"¬&Ñ1Ô1ˆÝœZØ�ŒX˜˜Tœ
Ñ" b¨¤hÑ.Øñ
ô 
ˆ�TÑõ  œZØ�ŒX˜˜Tœ
Ñ" b¨¤hÑ.Øñ
ô 
ˆ�TÑõ ”6˜,Ñ'Ô'ˆÝ”6˜,Ñ'Ô'ˆÝ�x Ñ*Ô*ˆð �r‘ˆØ˜&¥4­"¬&°©-¬-Ñ#7Ò7Ñ8ˆÝ”| C­¬Ñ0Ô0ˆØ" 4œ[¨6°$¬<Ñ7ˆ�TÑÝ”6˜,µ´Ð7Ñ7Ô7ˆõ �E˜8 XÑ.Ô.ˆØ�3Š;ˆ;Ý”7˜4 %¨"¡*Ñ,¨b°"Ñ5Ô5ˆDØ�E˜G‘OÑ#ˆDÝ”J˜s E¨E°F©NÑ$:Ñ;Ô;ˆEØ�e˜w¨¨u©°wÑ)>Ñ>Ñ?Ñ?ˆFà•3�x ¨8Ñ4Ô4Ò4Ð4ð ˜!˜!˜!˜U˜V˜V˜)œ¨¨!¨!¨!¨U¨V¨V¨)¬¬¸Ñ(=Ñ>ˆIØ Ñ'¨7Ñ2ˆDØ˜‘˜YÑ&ˆBØ�‰FˆA‰AØ�XÒÐð ˜5Ò Ð Ýœ	 ,Ñ/Ô/�Ø  œi��U‘Ø!&�˜‘�Ø˜UÒ"Ð"Ýœ	 ,Ñ/Ô/�Ø  œi��U‘Ø!&�˜‘�åœ	 ,Ñ/Ô/�Ø!&�˜‘Ý2ØØØØØñô ‰HˆE�1ð �A�A�A�u�v�v�I”,� ! A A A u v v I¤,¤.°4Ñ"7Ñ8ˆBØˆAˆAð
 ˜5Ò Ð Ý Ñ-Ô-�Ø  œi��U‘Ø!&�˜‘Ø˜5Ò Ð Ý Ñ-Ô-�Ø  œi��U‘Ø!&�˜‘Ø˜5Ò Ð Ý Ñ-Ô-�Ø!&�˜‘Ý2ØØØØØñô ‰HˆE�1ð  $ÐØðk ˆa�%‰iŠ-‰-ðp ‡z‚z�- Ñ&Ô&ñ ZÐ+;ñ ZÀÈÂ	Á	Ý”G˜D‘M”Mˆ	Ø�aŠi‰ið ˜!˜!˜!˜U˜V˜V˜)œ¨¨!¨!¨!¨U¨V¨V¨)¬¬¸Ñ(=Ñ>ˆIØ˜!˜!˜!˜U˜V˜V˜)œ¨¨!¨!¨!¨U¨V¨V¨)¬¬¸Ñ(=Ñ>ˆIØ )Ñ+ˆGØ )Ñ+ˆGØ! IÑ-ˆIÝ”w�s 7¨WÑ#4°yÀ#±~Ñ#EÀsÑKÔKÑLÔLÐLˆGØ�1�1�1�e�f�f�9”Ø�!�!�!�U�V�V�)”” )¨dÑ"2°W¸t±^Ñ"CÑDñˆBð ˜% &™.Ò(Ð(­B¬FØ�D˜5¥2¤6¨"¡:¤:Ñ-Ò-ñ-ô -Ð(ñ Ø�7�(‰NˆBõ ”h˜q‘k”kˆGÝ”h˜q‘k”kˆGÝ”j ¨¡¨CÑ0Ô0ˆGÝ”j  d¡¨CÑ0Ô0ˆGØ! 'œ{¨cÑ1°G¸GÔ4DØ˜Ô  3¨°7Ô);Ñ#;Ñ;ñ5ñ  ˆG�GÑð  " 'œ{¨cÑ1°G¸GÔ4DØ˜Ô  3¨°7Ô);Ñ#;Ñ;ñ5ñ  ˆG�GÑõ ”˜ ¨#¢Ô.Ñ/Ô/°"°W¸s²]Ô2CÑCð �G˜c’MÑ"õ ”˜ ¨#¢Ô.Ñ/Ô/°"°W¸s²]Ô2CÑCð �G˜c’MÑ"ð �T G™^Ò+ˆDØ�T G™^Ò+ˆDÝ”w˜q‘z”zˆHÝ”w˜q‘z”zˆHÝœZØ˜”Ø˜” ¨¤Ñ-ñô ˆH�T‰Nõ  œZØ˜”Ø˜” ¨¤Ñ-ñô ˆH�T‰Nõ ”6˜(Ñ#Ô#ˆDÝ”6˜(Ñ#Ô#ˆDÝ�t˜T‘?”?ˆDõ ”m EÑ*Ô*ˆGØ˜Y‘ˆHØ˜2‘XˆFØ% gœ°#Ñ5¸¸g¼Ø�g”  x°Ô'8Ñ!8Ñ8ñ9ñ  ˆG�GÑõ ”˜ ¨#¢Ô.Ñ/Ô/°&¸À3ºÔ2GÑGð �G˜c’MÑ"ð �T E™\Ò)ˆDÝ”| EÑ*Ô*ˆHÝœZØ˜”Ø�d”˜g dœmÑ+ñô ˆH�T‰Nõ ”6˜(¨CÐ0Ñ0Ô0ˆDÝ˜˜d‘O”OˆEð "˜	 )Ñ,Ô,ˆIØ�i ‘m”mˆGØ! IÑ-ˆIØ˜7‘lˆGØ$ wÑ.ˆLð
 ˆIÝ˜Y¨™]¨eÑ3°aÑ7Ñ8Ô8ˆIÝœ E¨IÑ$5°u¸iÑHÔHˆIØ˜y™¨C°)¸S±.Ñ,@ÑAˆJØ#Ø˜IÑ%Øñàà˜) S™.Ñ(¨9Ñ4Ø˜I‘o¨Ñ4ñ5à˜G‘mñ$ñññ	ˆJõ Œv�j CÒ'Ñ(Ô(ð áõ ”I˜jÑ)Ô)ˆEØ˜y¨Ô/°3Ñ6Ñ6Ø�i Ô&¨#Ñ-Ñ-ñˆIõ ”7Ø˜	 C™¨9Ñ4Ñ4°zÀ%Ô7HÈ2Ñ7MÑMØØñô ˆDð
 �Y ‘_¨	Ñ1°J¸uÔ4EÈÑ4OÑOÑOˆDÝ”JØØØ˜s‘? hÑ.ñ/à˜UÔ# fÑ,ñ-ñô ˆEð �j Ô'Ñ'ˆFð
 �sŠ{ˆ{˜u¨	°A©Ò5Ð5Ø˜5’=�=Ý# HÑ-Ô-�EØ"$ U¤)�D˜‘KØ%*�G˜E‘NØ˜5’=�=Ý# HÑ-Ô-�EØ"$ U¤)�D˜‘KØ%*�G˜E‘NØ˜5’=�=Ý# HÑ-Ô-�EØ%*�G˜E‘NÝ6ØØØØØñô ‘��q�qð ðc �aŠi‰iðj �tÑ˜c D™j¨9¨9Øñ,
ô ,
ñ 
ñ 
à˜	Ñ! C¨)¡O°i°iÀ	Ñ6JÔ6JÑ$JÑJòKð Kð ˆDàð 2Ý˜R Ñ$Ô$ˆÝŒv�b˜D’jÑ!Ô!Ð!Ð!Ð!ÝŒv�d˜b’jÑ!Ô!Ð!Ð!Ð!ÝŒv�c˜D‘j C¨#¡IÒ-Ñ.Ô.Ð.Ð.Ð.ÝŒv•b”f˜S 4™ZÑ(Ô(¨CÒ/Ñ0Ô0Ð0Ð0Ð0ÝŒy�~Š~˜dÑ#Ô# c¨E¡kÒ1Ð1Ð1Ð1Ø€Ks   Í M2 Í2
N Í?N c           	      óê  — |�rÙt          | t          j        ¦  «        r| j        dk    sJ ‚t          |t          j        ¦  «        r!|j        dk    r|j        | j        d         k    sJ ‚t          |t          j        ¦  «        r'|j        dk    r|j        d         | j        d         k    sJ ‚t          |t          j        ¦  «        r!|j        dk    r|j        |j        d         k    sJ ‚t          |t          j        ¦  «        r|j        | j        d         fk    sJ ‚t          |t          j        ¦  «        r|j        | j        d         fk    sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          ||¦  «        }	t          j	        ||	k    ¦  «        sJ ‚t          j	        ||	 k    ¦  «        sJ ‚t          j
        |¦  «        r|dk    sJ ‚t          j        |d¦  «        }t          j        |d¦  «        }| j        \  }
}t          j        |j        | z  t          j        d| ¦  «        f         }|dk     |d|…         dk     z  }|dk    |d|…         dk    z  }|dk     }|dk    | |d|…         z  ||d…         z
  dk    z  }t          | ||||¦  «        \  }}t          j        ||z  ||d…         ||d…         z  z   ¦  «        }t          j        |¦  «        }|dd…|d…f          |dd…|d…f         j        |z  z  }|||d…         z   }d}d}d}|||
z   |z
  k     �ró||z  }|dt$          z  |z  t'          dt          j                             |¦  «        ¦  «        z  k    r�n­	 t-          ||d|…         |¦  «        }n# t.          $ r t          j        }Y nw xY w	 t3          |t-          ||d…         ||d…         |¦  «        ¦  «        }n# t.          $ r Y nw xY w| |z  d	|z  k    r�n&t          j        |j        ||d|…         z  z  ||d…         f         }||z  }|t4          t7          |¦  «        z  k    rt'          | |z  d¦  «        }nt          j        }t3          ||¦  «        }| |d
|z  |z  z   z  d	|z  k    r�nŽ||t          j         k    z  |d|…         t4           t          j        ||z
  ¦  «        z  k     z  } ||t          j        k     z  |d|…         t4          t          j        ||z
  ¦  «        z  k    z  }!|||d…         t4           t          j        ||d…         ¦  «        z  k     z  }"t          j        |t          j        ¦  «        }#t          j        |t          j        ¦  «        }$t          j        |t          j        ¦  «        }%t          j        ||          ||          z
  |d|…         |          z  d¦  «        |#| <   t          j        ||!         ||!         z
  |d|…         |!         z  d¦  «        |$|!<   t          j        ||d…         |"          ||d…         |"         z  d¦  «        |%|"<   t          j        |#¦  «        }&t          j        |$¦  «        }'t          j        |%t          j        ¬¦  «        }(t3          |&|'|(¦  «        })| |d|…         z  ||d…         z
  }*||*t4          t          j        |¦  «        z  k    z  }+t          j        |t          j        ¦  «        },||+         |*|+         z  |,|+<   t          j        |,t          j        ¬¦  «        }-t3          ||)|-¦  «        }|dk    rXt          j        |||d|…         z  z   ||¦  «        }|||z  z  }t          j        d|||*z  z
  ¦  «        }|||d
|z  |z  z   z  z  }|t3          ||)|-¦  «        k     r<|dd…|d…f         |dd…|d…f         j        |z  z  }.|.|z  |z  }/|/|z  |.z
  }|dz  }�n!||k     rÎ|&|k    r%t          j        |#¦  «        }0||0         ||0<   d||0<   nd|'|k    r%t          j        |$¦  «        }0||0         ||0<   d||0<   n9|(|k    rt          j        |%¦  «        }0d||0<   nt          j        |,¦  «        }0d||0<   t          | ||||¦  «        \  }}|dd…|d…f          |dd…|d…f         j        |z  z  }d}nM|&|k    rt?          |#¦  «        }0||0         ||0<   d||0<   |'|k    rt?          |$¦  «        }0||0         ||0<   d||0<   d}n|||
z   |z
  k     �°ó|                      dd¦  «        �rÙ|�rÖt          j!        |¦  «        }1||z  }2| j        t          j        | |z  |z
  d¦  «        z  |j        ||z  |z
  z  z   }t          j        |¦  «        }t          j"        |2¦  «        dk    �rü||2         ||2         z  }3||2         ||2         z  }4||2         ||2         z  }5t          j        t'          |3|4z  |5dz  z
  d¦  «        ¦  «         }|5||2         z  |3||2         z  z
  ||2<   d||2 <   |d|z  k    s9t          j#        |t4           t          j        ||2         ¦  «        z  k    ¦  «        r�n9||2xx         | z  cc<   t          j        |¦  «        }6t          j        |¦  «        }7||2         dz  ||2         dz  z   ||2         dz  z
  |6|2<   ||2         dz  ||2         dz  z   ||2         dz  z
  |7|2<   t          j        |6|6dk             ¦  «        ||6dk             z
  |6|6dk    <   t          j        |7|7dk             ¦  «        ||7dk             z   |7|7dk    <   t          j        ||z
  d¦  «        }8t          j        ||z
  d¦  «        }9|6t4          |8z  k    } |7t4          |9z  k    }!t          j$        |¦  «        }:t          j$        |¦  «        };t          j        |:|          |8|          |6|          z  ¦  «        |:| <   t          j        |;|!         |9|!         |7|!         z  ¦  «        |;|!<   t          j        |:¦  «        }<t          j        |;¦  «        }=t3          |<|=¦  «        }>d}?tK          |?dz
  |>z  dz   ¦  «        }?t          j&        |>|?z  |>|?¦  «        }@t          j        | |z  |z
  d¦  «        }A||z  |z
  }Bt          j!        |¦  «        }Cd|C|2 <   t          j'        |?¦  «        }DtQ          |?¦  «        D ]„}Ed|@|E         z  d|@|E         dz  z   z  }Ft          j        ||F||@|E         |Cz  z
  z  z   ||¦  «        }Gt          j        | |Gz  |z
  d¦  «        }H||Gz  |z
  }Id
|A|Az  |B|Bz  z   |H|Hz  z
  |I|Iz  z
  z  |D|E<   Œ…t          j	        |Ddk    ¦  «        r�nt          j)        |D¦  «        }Jd|@|J         dz  z
  d|@|J         dz  z   z  }Kd|@|J         z  d|@|J         dz  z   z  }F|K||2         z  |F||2         z  z   ||2<   | j        t          j        | |z  |z
  d¦  «        z  |j        ||z  |z
  z  z   }||D|J         z  }|>dk     rT|J|?dz
  k    rK|<|>k    rt?          |:¦  «        }0||0         ||0<   d|2|0<   |=|>k    rt?          |;¦  «        }0||0         ||0<   d|2|0<   nnt          j"        |2¦  «        dk    �°üt          j        | |z  |z
  d¦  «        }At          j        | |1z  |z
  d¦  «        }L||z  |z
  }B||1z  |z
  }M|A|Az  |B|Bz  z   |L|Lz  |M|Mz  z   k    r|1}|r\t          j	        ||k    ¦  «        sJ ‚t          j	        ||k    ¦  «        sJ ‚t          j                             |¦  «        d|z  k     sJ ‚|S )a­	  
    Minimize approximately a linear constraint violation subject to bound
    constraints in a trust region.

    This function solves approximately

    .. math::

        \min_{s \in \mathbb{R}^n} \quad \frac{1}{2} \big( \lVert \max \{
        A_{\scriptscriptstyle I} s - b_{\scriptscriptstyle I}, 0 \} \rVert^2 +
        \lVert A_{\scriptscriptstyle E} s - b_{\scriptscriptstyle E} \rVert^2
        \big) \quad \text{s.t.}
        \quad
        \left\{ \begin{array}{l}
            l \le s \le u,\\
            \lVert s \rVert \le \Delta,
        \end{array} \right.

    using a variation of the truncated conjugate gradient method.

    Parameters
    ----------
    aub : `numpy.ndarray`, shape (m_linear_ub, n)
        Matrix :math:`A_{\scriptscriptstyle I}` as shown above.
    bub : `numpy.ndarray`, shape (m_linear_ub,)
        Vector :math:`b_{\scriptscriptstyle I}` as shown above.
    aeq : `numpy.ndarray`, shape (m_linear_eq, n)
        Matrix :math:`A_{\scriptscriptstyle E}` as shown above.
    beq : `numpy.ndarray`, shape (m_linear_eq,)
        Vector :math:`b_{\scriptscriptstyle E}` as shown above.
    xl : `numpy.ndarray`, shape (n,)
        Lower bounds :math:`l` as shown above.
    xu : `numpy.ndarray`, shape (n,)
        Upper bounds :math:`u` as shown above.
    delta : float
        Trust-region radius :math:`\Delta` as shown above.
    debug : bool
        Whether to make debugging tests during the execution.

    Returns
    -------
    `numpy.ndarray`, shape (n,)
        Approximate solution :math:`s`.

    Other Parameters
    ----------------
    improve_tcg : bool, optional
        If True, a solution generated by the truncated conjugate gradient
        method that is on the boundary of the trust region is improved by
        moving around the trust-region boundary on the two-dimensional space
        spanned by the solution and the gradient of the quadratic function at
        the solution (default is True).

    Notes
    -----
    This function implements Algorithm 6.4 of [1]_. It is assumed that the
    origin is feasible with respect to the bound constraints and that `delta`
    is finite and positive.

    References
    ----------
    .. [1] T. M. Ragonneau. *Model-Based Derivative-Free Optimization Methods
       and Software*. PhD thesis, Department of Applied Mathematics, The Hong
       Kong Polytechnic University, Hong Kong, China, 2022. URL:
       https://theses.lib.polyu.edu.hk/handle/200/12294.
    r   r   r   r   NFr	   r
   r   r   rt   Tr   r   r   r   r   r   )*r   r   r   r   r!   r   r   r   r   r   r   r   r    Úr_rw   Úqr_normal_byrd_omojokunr4   r6   r%   r&   r'   r(   r)   r*   r-   r.   r+   r,   r/   r0   r1   r2   r3   r"   r$   r5   r7   r8   r9   ÚemptyÚranger:   )Nry   rz   r{   Úbeqr=   r>   r?   r@   rA   rB   Úm_linear_ubrC   r;   r|   r}   Ú
free_slackr~   r   r€   Údelta_slackrF   rG   r�   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   Úi_slackrS   rT   Úall_alpha_slackrU   rV   Úalpha_slackrW   r‚   rƒ   r„   r…   r†   rX   rY   rZ   rE   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rk   rl   Úresid_ubÚresid_eqr‡   rn   ÚiÚ	sin_valueÚstep_altÚresid_ub_altÚresid_eq_altro   rp   Úresid_ub_baseÚresid_eq_basesN                                                                                 rq   Únormal_byrd_omojokunr£   æ  sÒ  € ðF ñ 2Ý˜#�rœzÑ*Ô*Ð<¨s¬x¸1ª}¨}¨}Ð<å�s�BœJÑ'Ô'ð	
à”˜A’�Ø”˜CœI aœLÒ(Ð(Ð(ð)õ
 �s�BœJÑ'Ô'ð	
à”˜A’�Ø”	˜!” ¤	¨!¤Ò,Ð,Ð,ð-õ
 �s�BœJÑ'Ô'ð	
à”˜A’�Ø”˜CœI aœLÒ(Ð(Ð(ð)õ ˜"�bœjÑ)Ô)ÐI¨b¬h¸3¼9ÀQ¼<¸/Ò.IÐ.IÐ.IÐIÝ˜"�bœjÑ)Ô)ÐI¨b¬h¸3¼9ÀQ¼<¸/Ò.IÐ.IÐ.IÐIÝ˜%¥Ñ'Ô'Ð'Ð'Ð'Ý˜%¥Ñ&Ô&Ð&Ð&Ð&Ý˜R Ñ$Ô$ˆÝŒv�b˜C’iÑ Ô Ð Ð Ð ÝŒv�b˜S˜D’jÑ!Ô!Ð!Ð!Ð!ÝŒ{˜5Ñ!Ô!Ð1 e¨c¢k k kÐ1Ý	Œ�B˜Ñ	Ô	€BÝ	Œ�B˜Ñ	Ô	€Bð ”Y�N€K�ÝŒ5�”˜#˜‘�rœz¨#°¨tÑ4Ô4Ð4Ô5€DØ�CŠx˜D  ! œH sšNÑ+€GØ�CŠx˜D  ! œH sšNÑ+€GØ�s’€JØ�SŠy˜S 4¨¨¨¤8™^¨d°1°2°2¬hÑ6¸Ò<Ñ=€GÝ&ØØØØØñô �H€Eˆ1õ ”'˜# ™) d¨1¨2¨2¤h°°a°b°b´Ñ&9Ñ9Ñ:Ô:€Kõ Œ8�A‰;Œ;€DØ
ˆAˆAˆAˆuˆvˆvˆIŒ,ˆ˜!˜A˜A˜A˜u˜v˜v˜Iœ,œ.¨4Ñ/Ñ	0€BØ�$�q�r�r”(‰N€Eà	€AØ€FØÐØ
ˆa�+‰o Ñ%Ò
%Ñ
%à˜‘)ˆØ�e�c‘k A‘o­¨Cµ´·²ÀÑ1EÔ1EÑ(FÔ(FÑFÒFÐFÙð	Ý   r¨"¨1¨"¤v¨uÑ5Ô5ˆHˆHøÝ ð 	ð 	ð 	Ý”vˆHˆHˆHð	øøøð
	Ý˜8¥Y¨t°A°B°B¬x¸¸A¸B¸B¼ÀÑ%MÔ%MÑNÔNˆHˆHøÝ ð 	ð 	ð 	ØˆDð	øøøð
 ˆ9�wÑ $¨¡-Ò/Ð/Ùõ ”%˜œ  r¨"¨1¨"¤v¡Ñ.°°1°2°2´Ð6Ô7ˆØ�w‘,ˆØ•T�C ™LœLÑ(Ò(Ð(Ý˜g˜X¨Ñ/°Ñ5Ô5ˆJˆJåœˆJõ �H˜jÑ)Ô)ˆØˆ6�W˜s U™{¨WÑ4Ñ4Ñ5¸À¹ÒFÐFÙð ˜"¥¤˜wš,Ñ'¨2¨b¨q¨b¬6µT°E½B¼FÀ2ÈÁ9Ñ<MÔ<MÑ4MÒ+MÑNˆØ˜"�rœvš+Ñ&¨"¨R¨a¨R¬&µ4½"¼&ÀÀdÁÑ:KÔ:KÑ3KÒ*KÑLˆØ  1 2 2¤­$¨µ´¸¸Q¸R¸R¼Ñ1AÔ1AÑ)AÒ AÑBˆÝ”| D­"¬&Ñ1Ô1ˆÝ”| D­"¬&Ñ1Ô1ˆÝœ, s­B¬FÑ3Ô3ˆÝœZØ�ŒX˜˜Tœ
Ñ" b¨¨!¨¤f¨T¤lÑ2Øñ
ô 
ˆ�TÑõ  œZØ�ŒX˜˜Tœ
Ñ" b¨¨!¨¤f¨T¤lÑ2Øñ
ô 
ˆ�TÑõ $&¤:Ø�!�"�"ŒX�gÔÐ  A B B¤¨¤Ñ0Øñ$
ô $
ˆ˜Ñ õ ”6˜,Ñ'Ô'ˆÝ”6˜,Ñ'Ô'ˆÝ”f˜_µb´fÐ=Ñ=Ô=ˆÝ�x ¨;Ñ7Ô7ˆð �r˜"˜1˜"”v‘  1 2 2¤Ñ&ˆØ˜&¥4­"¬&°©-¬-Ñ#7Ò7Ñ8ˆÝ”| C­¬Ñ0Ô0ˆØ" 4œ[¨6°$¬<Ñ7ˆ�TÑÝ”6˜,µ´Ð7Ñ7Ô7ˆõ �E˜8 XÑ.Ô.ˆØ�3Š;ˆ;Ý”7˜4 %¨"¨R¨a¨R¬&¡.Ñ0°"°bÑ9Ô9ˆDØ�E˜G‘OÑ#ˆDÝ”J˜s E¨E°F©NÑ$:Ñ;Ô;ˆEØ�e˜w¨¨u©°wÑ)>Ñ>Ñ?Ñ?ˆFà•3�x ¨8Ñ4Ô4Ò4Ð4ð ˜!˜!˜!˜U˜V˜V˜)œ¨¨!¨!¨!¨U¨V¨V¨)¬¬¸Ñ(=Ñ>ˆIØ Ñ'¨7Ñ2ˆDØ˜‘˜YÑ&ˆBØ�‰FˆA‰AØ�XÒÐð ˜5Ò Ð Ýœ	 ,Ñ/Ô/�Ø  œi��U‘Ø!&�˜‘�Ø˜UÒ"Ð"Ýœ	 ,Ñ/Ô/�Ø  œi��U‘Ø!&�˜‘�Ø Ò%Ð%Ýœ	 /Ñ2Ô2�Ø$)�
˜5Ñ!Ð!åœ	 ,Ñ/Ô/�Ø!&�˜‘Ý.Ø�W˜g z°7ñô ‰HˆE�1ð �A�A�A�u�v�v�I”,� ! A A A u v v I¤,¤.°4Ñ"7Ñ8ˆBØˆAˆAð
 ˜5Ò Ð Ý Ñ-Ô-�Ø  œi��U‘Ø!&�˜‘Ø˜5Ò Ð Ý Ñ-Ô-�Ø  œi��U‘Ø!&�˜‘Ø#ÐØðq ˆa�+‰o Ñ%Ò
%Ñ
%ðv ‡z‚z�- Ñ&Ô&ñ ~Ð+;ñ ~Ý”G˜D‘M”Mˆ	Ø˜GÑ#ˆØŒu•r”z #¨¡*¨sÑ"2°CÑ8Ô8Ñ8¸3¼5Ø�$‰J˜Ññ<
ñ 
ˆõ ŒX�a‰[Œ[ˆÝÔ˜wÑ'Ô'¨!Ò+Ñ+ð ˜7”m d¨7¤mÑ3ˆGØ˜7”m d¨7¤mÑ3ˆGØ˜Wœ¨¨W¬Ñ5ˆIÝ”w�s 7¨WÑ#4°yÀ#±~Ñ#EÀsÑKÔKÑLÔLÐLˆGØ# d¨7¤mÑ3°gÀÀWÄÑ6MÑMˆBˆw‰KØˆB�ˆx‰LØ˜% &™.Ò(Ð(­B¬FØ�D˜5¥2¤6¨"¨W¬+Ñ#6Ô#6Ñ6Ò6ñ-ô -Ð(ñ ØˆwˆKˆKŒK˜G˜8Ñ#ˆKˆK‰Kõ
 ”h˜q‘k”kˆGÝ”h˜q‘k”kˆGà�W” Ñ$ r¨'¤{°cÑ'9Ñ9¸B¸w¼KÈ3Ñ<NÑNð �GÑð �W” Ñ$ r¨'¤{°cÑ'9Ñ9¸B¸w¼KÈ3Ñ<NÑNð �GÑõ ”˜ ¨#¢Ô.Ñ/Ô/°"°W¸s²]Ô2CÑCð �G˜c’MÑ"õ ”˜ ¨#¢Ô.Ñ/Ô/°"°W¸s²]Ô2CÑCð �G˜c’MÑ"õ ”j ¨¡¨CÑ0Ô0ˆGÝ”j  d¡¨CÑ0Ô0ˆGØ�T G™^Ò+ˆDØ�T G™^Ò+ˆDÝ”w˜q‘z”zˆHÝ”w˜q‘z”zˆHÝœZØ˜”Ø˜” ¨¤Ñ-ñô ˆH�T‰Nõ  œZØ˜”Ø˜” ¨¤Ñ-ñô ˆH�T‰Nõ ”6˜(Ñ#Ô#ˆDÝ”6˜(Ñ#Ô#ˆDÝ�t˜T‘?”?ˆDð
 ˆIÝ˜Y¨™]¨dÑ2°QÑ6Ñ7Ô7ˆIÝœ D¨9Ñ$4°d¸IÑFÔFˆIÝ”z #¨¡*¨sÑ"2°CÑ8Ô8ˆHØ˜T‘z CÑ'ˆHÝœ ™œˆIØ"%ˆI�w�hÑÝœ )Ñ,Ô,ˆJÝ˜9Ñ%Ô%ð ð �Ø )¨A¤,Ñ.°#¸	À!¼ÈÑ8KÑ2KÑL�	Ýœ7Ø˜9¨¨Y°q¬\¸IÑ-EÑ(EÑFÑFØØñô �õ
  "œz¨#°©.¸3Ñ*>ÀÑDÔD�Ø" X™~°Ñ3�Ø #Ø˜xÑ'Ø Ñ)ñ*à" \Ñ1ñ2ð # \Ñ1ñ2ñ!�
˜1‘�õ Œv�j CÒ'Ñ(Ô(ð áõ ”I˜jÑ)Ô)ˆEØ˜y¨Ô/°3Ñ6Ñ6Ø�i Ô&¨#Ñ-Ñ-ñˆIð ˜y¨Ô/Ñ/Ø )¨EÔ"2°cÑ"9Ñ9ñ;ˆIà%¨¨W¬Ñ5¸	ÀBÀwÄKÑ8OÑOˆD�‰MØ”5�2œ: c¨D¡j°3Ñ&6¸Ñ<Ô<Ñ<¸s¼uØ�d‘
˜SÑ ñ@ñ ˆDð �j Ô'Ñ'ˆFð
 �cŠzˆz˜e y°1¡}Ò4Ð4Ø˜4’<�<Ý# HÑ-Ô-�EØ"$ U¤)�D˜‘KØ%*�G˜E‘NØ˜4’<�<Ý# HÑ-Ô-�EØ"$ U¤)�D˜‘KØ%*�G˜E‘NøàõW Ô˜wÑ'Ô'¨!Ò+Ñ+õ^ ”:˜c D™j¨3Ñ.°Ñ4Ô4ˆÝœ
 3¨¡?°SÑ#8¸#Ñ>Ô>ˆØ˜‘: Ñ#ˆØ˜i™¨#Ñ-ˆà�xÑ (¨XÑ"5Ñ5Ø˜mÑ+¨m¸mÑ.KÑKòLð Lð ˆDàð 2ÝŒv�b˜D’jÑ!Ô!Ð!Ð!Ð!ÝŒv�d˜b’jÑ!Ô!Ð!Ð!Ð!ÝŒy�~Š~˜dÑ#Ô# c¨E¡kÒ1Ð1Ð1Ð1Ø€Ks$   Í9N ÎN,Î+N,Î0/O  Ï 
O-Ï,O-c                 ó2  — |j         }t          j        |¦  «        }t          t          j        |g| | d d …f         g|| d d …f          g|| d d …f         gg¦  «        j        d¬¦  «        \  }}}	t          j        t          j        t          j        |¦  «        ¦  «        dt          z  |z  t          j
                             |d t          j        |j        ¦  «        …d t          j        |j        ¦  «        …f         d¬¦  «        z  k    ¦  «        }
|
|fS ©NT)Úpivotingg      $@r   )Úaxis)r!   r   Úeyer   Úblockrw   r$   r,   Údiagr%   r'   r(   r.   r   )ry   r{   r|   r}   r~   rC   Úidentityr€   ÚrÚ_r   s              rq   rv   rv   c  s'  € ØŒ€AÝŒv�a‰yŒy€HÝÝ
Œà�Ø�g�X˜q˜q˜q�[Ô!Ð"Ø˜G˜8 Q Q Q˜;Ô'Ð'Ð(Ø˜7˜( A A A˜+Ô&Ð'ð	ñ	
ô 	
ô Øð
ñ 
ô 
�G€A€qˆ!õ ÔÝ
Œ�rŒw�q‰zŒzÑÔØÝ
ñà
ñõ Œ)�.Š.˜Ð,�RœV A¤G™_œ_Ð,Ð.?µ´°q´w±´Ð.?Ð?Ô@Àqˆ.Ñ
IÔ
IñJò	Jñô €Eð �!ˆ8€Oó    c                 ó”  — | j         \  }}t          j        |¦  «        }t          j        |¦  «        }t          t          j        | | d d …f         || d d …f          gt          j        |t          j        |¦  «        z
  |f¦  «        || d d …f          g|| d d …f          t          j        |t          j        |¦  «        z
  |f¦  «        g|| d d …f         t          j        |t          j        |¦  «        z
  |f¦  «        gg¦  «        j        d¬¦  «        \  }	}
}t          j        t          j        t          j	        |
¦  «        ¦  «        dt          z  ||z   z  t          j                             |
d t          j        |
j         ¦  «        …d t          j        |
j         ¦  «        …f         d¬¦  «        z  k    ¦  «        }||	fS r¥   )r   r   r¨   r   r©   r6   r$   rw   r,   rª   r%   r'   r(   r.   )ry   r|   r}   r•   r~   r”   rC   Ú
identity_nÚ
identity_mr€   r¬   r­   r   s                rq   r�   r�   {  sÜ  € Ø”Y�N€K�Ý”˜‘”€JÝ”˜Ñ$Ô$€JÝÝ
Œð ˜˜ ! ! !˜Ô$Ø  ¨!¨!¨! Ô,Ð,ðõ
 ”H˜k­BÔ,<¸ZÑ,HÔ,HÑHÈ!ÐLÑMÔMØ  ¨Q¨Q¨Q Ô/Ð/ðð
    ¨!¨!¨! Ô,Ð,Ý”H˜a¥"Ô"2°7Ñ";Ô";Ñ;¸[ÐIÑJÔJðð
  ˜x¨¨¨˜{Ô+Ý”H˜a¥"Ô"2°7Ñ";Ô";Ñ;¸[ÐIÑJÔJððñ	
ô 	
ô& Øð+ñ ô �G€A€qˆ!õ. ÔÝ
Œ�rŒw�q‰zŒzÑÔØÝ
ñàˆ{‰?ñõ Œ)�.Š.˜Ð,�RœV A¤G™_œ_Ð,Ð.?µ´°q´w±´Ð.?Ð?Ô@Àqˆ.Ñ
IÔ
IñJò	Jñô €Eð �!ˆ8€Or®   c                 ót  — | |z  }||z  }|dz  | | z  z
  }t          j        t          |dz  ||z  z   d¦  «        ¦  «        }|dk    r5|t          t	          ||z
  ¦  «        z  k    rt          ||z
  |z  d¦  «        }n<t	          ||z   ¦  «        t          |z  k    rt          |||z   z  d¦  «        }nt
          ‚|S )Nr   r   )r   r4   r&   r+   r,   r*   )rF   rG   r?   Ústep_sdÚsd_sqÚ
dist_tr_sqÚtemprL   s           rq   r)   r)      sÌ   € Ø�R‰i€GØ�‰G€EØ˜‘˜d T™kÑ)€JÝŒ7•3�w ‘| e¨jÑ&8Ñ8¸#Ñ>Ô>Ñ?Ô?€DØ�#‚~€~˜%¥$­¨T°G©^Ñ)<Ô)<Ñ"<Ò<Ð<Ý˜˜w™¨%Ñ/°Ñ5Ô5ˆˆÝ	ˆT�G‰^Ñ	Ô	�t jÑ0Ò	0Ð	0Ý�z T¨G¡^Ñ4°cÑ:Ô:ˆˆåÐØ€Or®   c                 óV   — t          j        | t          j        | ¦  «        k    ¦  «        S ©N)r   Úflatnonzeror&   ©Úxs    rq   Ú_argmaxr¼   ®  ó   € ÝŒ>˜!�rœv a™yœyš.Ñ)Ô)Ð)r®   c                 óV   — t          j        | t          j        | ¦  «        k    ¦  «        S r¸   )r   r¹   r.   rº   s    rq   r2   r2   ²  r½   r®   )r   Únumpyr   Úscipy.linalgr   Úutilsr   Úfinfor   Útinyr+   Úepsr%   rr   r�   r£   rv   r�   r)   r¼   r2   © r®   rq   ú<module>rÆ      só   ðØ €€€à Ð Ð Ð Ø Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "ð €r„x��„Ô€Ø€b„hˆu�o„oÔ€ðsð sð sðl	`ð `ð `ðFzð zð zðzð ð ð0"ð "ð "ðJð ð ð*ð *ð *ð*ð *ð *ð *ð *r®   