Ë
    âQ(hÈ±  ã                   óÌ   — 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y)é    N)Úqré   )Úget_arrays_tolc                 óÊ  — |�r<t        | t        j                  «      r| j                  dk(  sJ ‚t	        j
                  |«      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kD  sJ ‚t        j                  |d«      }t        j                  |d«      }| j                  }t        j                   | «      } t        j                   | «      }	|dk  | dk  z  |dkD  | dkD  z  z  }
t        j"                  | «      }t        j"                  |«      }| |
    ||
<   d}d}d}|t        j$                  |
«      k  �rA| |z  }|dt&        z  |z  t)        dt        j*                  j-                  | «      «      z  k\  r�n	 t/        |||«      }| |z  d|z  k  r�nå ||«      }||z  }|t2        t5        |«      z  kD  rt)        | |z  d«      }nt        j6                  }t9        ||«      }| |d|z  |z  z   z  d|z  k  r�n|t        j6                   kD  |t2         t        j4                  ||z
  «      z  k  z  }|t        j6                  k  |t2        t        j4                  ||z
  «      z  kD  z  }t        j:                  |t        j6                  «      }t        j:                  |t        j6                  «      }t        j                  ||   ||   z
  ||   z  d«      ||<   t        j                  ||   ||   z
  ||   z  d«      ||<   t        j8                  |«      }t        j8                  |«      }t9        ||«      }t9        ||«      }|dkD  rEt        j<                  ||
   |||
   z  z   ||
   ||
   «      ||
<   | ||z  z  } |||d|z  |z  z   z  z  }|t9        ||«      k  r+| |
   ||
   z  |z  }|||
   z  | |
   z
  ||
<   d||
 <   |dz  }n™||k  rW||k  rt        j>                  |«      }||   ||<   nt        j>                  |«      }||   ||<   d|
|<   | |
    ||
<   d||
 <   d}n=||k  rtA        |«      }||   ||<   d|
|<   ||k  rtA        |«      }||   ||<   d|
|<   d	}n|t        j$                  |
«      k  r�ŒA|jC                  d
d	«      �r|�rt        j                   |«      }|	|z  d|z   ||«      z  z   } t        j$                  |
«      dkD  �r¹||
   ||
   z  }!| |
   | |
   z  }"| |
   ||
   z  }#t        jD                  t)        |!|"z  |#dz  z
  d«      «       }|#||
   z  |!| |
   z  z
  ||
<   d||
 <   |d|z  k\  s6t        jF                  |t2         t        j4                  ||
   «      z  k\  «      r�n||
xx   | z  cc<   t        jH                  |«      }$t        jH                  |«      }%||
   dz  ||
   dz  z   ||
   dz  z
  |$|
<   ||
   dz  ||
   dz  z   ||
   dz  z
  |%|
<   t        jD                  |$|$dkD     «      ||$dkD     z
  |$|$dkD  <   t        jD                  |%|%dkD     «      ||%dkD     z   |%|%dkD  <   t        j                  ||z
  d«      }&t        j                  ||z
  d«      }'|$t2        |&z  kD  }|%t2        |'z  kD  }t        jJ                  |«      }(t        jJ                  |«      })t        j                  |(|   |&|   |$|   z  «      |(|<   t        j                  |)|   |'|   |%|   z  «      |)|<   t        j8                  |(«      }*t        j8                  |)«      }+t9        |*|+«      }, ||«      }- ||«      }||-z  }.||z  }||z  }/d}0tM        |0dz
  |,z  dz   «      }0t        jN                  |,|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        jP                  |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  rC|4|0dz
  k(  r;|*|,k  rtA        |(«      }||   ||<   d|
|<   |+|,k  rtA        |)«      }||   ||<   d|
|<   nnt        j$                  |
«      dkD  r�Œ¹|	|z  d|z   ||«      z  z   | kD  r|}|r[t        j                  ||k  «      sJ ‚t        j                  ||k  «      sJ ‚t        j*                  j-                  |«      d|z  k  sJ ‚|S # t0        $ r Y �Œ•w xY w)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/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/_lib/cobyqa/subsolvers/optim.pyÚtangential_byrd_omojokunrr      sº
  € ò@ Ü˜$¤§
¡
Ô+°·	±	¸Q²Ð>Ð>Ü× Ñ  Ó+×0Ñ0°Ô6Ð6Ð6Ü˜"œbŸj™jÔ)¨b¯h©h¸$¿*¹*Ò.DÐDÐDÜ˜"œbŸj™jÔ)¨b¯h©h¸$¿*¹*Ò.DÐDÐDÜ˜%¤Ô'Ð'Ð'Ü˜%¤Ô&Ð&Ð&Ü˜R Ó$ˆÜ�v‰v�b˜C‘iÔ Ð Ð Ü�v‰v�b˜S˜D‘jÔ!Ð!Ð!Ü�{‰{˜5Ô! e¨c¢kÐ1Ð1Ü	�‰�B˜Ó	€BÜ	�‰�B˜Ó	€Bð 	�	‰	€AÜ�7‰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Ó(FÑFÒFÙð	Ü   r¨5Ó1ˆHð ˆ9�wÑ $¨¡-Ò/Ùñ ˜B“-ˆØ�w‘,ˆØ”TœC ›LÑ(Ò(Ü˜g˜X¨Ñ/°Ó5‰JäŸ™ˆJô �H˜jÓ)ˆØˆ6�W˜s U™{¨WÑ4Ñ4Ñ5¸À¹ÒFÙð ”b—f‘f�W‘ ¤t e¬b¯f©f°R¸$±YÓ.?Ñ&?Ñ!?Ñ@ˆØ”R—V‘V‘ ¤T¬B¯F©F°2¸±9Ó,=Ñ%=Ñ =Ñ>ˆÜ—|‘| D¬"¯&©&Ó1ˆÜ—|‘| D¬"¯&©&Ó1ˆÜŸZ™ZØ�‰X˜˜T™
Ñ" b¨¡hÑ.Øó
ˆ�TÑô  ŸZ™ZØ�‰X˜˜T™
Ñ" b¨¡hÑ.Øó
ˆ�TÑô —6‘6˜,Ó'ˆÜ—6‘6˜,Ó'ˆÜ�x Ó*ˆô �E˜8Ó$ˆØ�3Š;ÜŸG™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Ø�XÒð ˜5Ò ÜŸ	™	 ,Ó/�Ø  ™i��U’äŸ	™	 ,Ó/�Ø  ™i��U‘Ø"ˆG�E‰NØ ™=˜.ˆBˆw‰KØˆB�ˆx‰LØ‰Að
 ˜5Ò Ü Ó-�Ø  ™i��U‘Ø!&�˜‘Ø˜5Ò Ü Ó-�Ø  ™i��U‘Ø!&�˜‘Ø#ÐØð{ Œb×Ñ˜wÓ'Ô
'ð@ ‡z�z�- Õ&Ò+;Ü—G‘G˜D“Mˆ	Ø# iÑ/°#¸	±/ÁIØóE
ñ 3
ñ 
ˆô ×Ñ˜wÓ'¨!Ó+ð ˜7‘m d¨7¡mÑ3ˆGØ˜7‘m d¨7¡mÑ3ˆGØ˜W™¨¨W©Ñ5ˆIÜ—w‘wœs 7¨WÑ#4°yÀ#±~Ñ#EÀsÓKÓLÐLˆGØ# d¨7¡mÑ3°gÀÀWÁÑ6MÑMˆBˆw‰KØˆB�ˆx‰LØ˜% &™.Ò(¬B¯F©FØœD˜5¤2§6¡6¨"¨W©+Ó#6Ñ6Ñ6ô-ñ Øˆw‹K˜G˜8Ñ#‹Kô
 —h‘h˜q“kˆGÜ—h‘h˜q“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‘j ¨¡¨CÓ0ˆGÜ—j‘j  d¡¨CÓ0ˆGØœT G™^Ñ+ˆDØœT G™^Ñ+ˆDÜ—w‘w˜q“zˆHÜ—w‘w˜q“zˆHÜŸZ™ZØ˜‘Ø˜‘ ¨¡Ñ-óˆH�T‰Nô  ŸZ™ZØ˜‘Ø˜‘ ¨¡Ñ-óˆH�T‰Nô —6‘6˜(Ó#ˆDÜ—6‘6˜(Ó#ˆDÜ�t˜T“?ˆDñ " $›ˆIÙ “mˆGØ˜yÑ(ˆIØ˜7‘lˆGØ '™>ˆLð
 ˆIÜ˜Y¨™]¨dÑ2°QÑ6Ó7ˆIÜŸ™ D¨9Ñ$4°d¸IÓFˆIØ˜y™¨C°)¸S±.Ñ,@ÑAˆJØ#Ø˜IÑ%Øñà˜iÑ'ñ(ð Ø˜|Ñ+¨c°W¸yÑ5HÑ.IÑIñKñKñˆJô �v‰v�j CÑ'Ô(àô —I‘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˜e y°1¡}Ò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°T«?Ñ:Ñ:¸_ÒLØˆDáÜ�v‰v�b˜D‘jÔ!Ð!Ð!Ü�v‰v�d˜b‘jÔ!Ð!Ð!Ü�y‰y�~‰~˜dÓ# c¨E¡kÒ1Ð1Ð1Ø€KøôY !ò 	Úð	ús   Ég ç	g"ç!g"c	                 óª  — |�r,t        | t        j                  «      r| j                  dk(  sJ ‚t	        j
                  |«      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kD  sJ ‚t        j                  |d«      }t        j                  |d«      }t        j                  |d«      }| j                  }t        j                   | «      } t        j                   | «      }|dk  | dk  z  }|dkD  | dkD  z  }|dkD  || z  dkD  z  }t#        |||||«      \  }}t        j$                  | «      }|dd…|d…f    |dd…|d…f   j&                  | z  z  }t        j                   |«      }d}d}d}|||z
  k  �rH| |z  }|dt(        z  |z  t+        dt        j,                  j/                  | «      «      z  k\  r�n	 t1        |||«      }| |z  d	|z  k  r�nì ||«      }||z  }|t4        t7        |«      z  kD  rt+        | |z  d«      }nt        j8                  }t;        ||«      }| |d
|z  |z  z   z  d	|z  k  r�n†||t        j8                   kD  z  |t4         t        j6                  ||z
  «      z  k  z  }||t        j8                  k  z  |t4        t        j6                  ||z
  «      z  kD  z  }t        j<                  |t        j8                  «      } t        j<                  |t        j8                  «      }!t        j                  ||   ||   z
  ||   z  d«      | |<   t        j                  ||   ||   z
  ||   z  d«      |!|<   t        j:                  | «      }"t        j:                  |!«      }#t;        |"|#«      }$||z  }%||%t4        t        j6                  |«      z  kD  z  }&t        j<                  |t        j8                  «      }'||&   |%|&   z  |'|&<   t        j:                  |'t        j8                  ¬«      }(t;        ||$|(«      }|dkD  rRt        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  }�n||k  r¤|"|k  r#t        j@                  | «      }+||+   ||+<   d||+<   nB|#|k  r#t        j@                  |!«      }+||+   ||+<   d||+<   nt        j@                  |'«      }+d||+<   t#        |||||«      \  }}|dd…|d…f    |dd…|d…f   j&                  | z  z  }d}nd|"|k  rtC        | «      }+||+   ||+<   d||+<   |#|k  rtC        |!«      }+||+   ||+<   d||+<   |(|k  rtC        |'«      }+d||+<   t#        |||||«      \  }}d}n
|||z
  k  r�ŒH|	jE                  dd«      �rs|�rp||k  �rjt        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        jF                  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        jH                  |t4         t        j6                  |«      z  k\  «      r�n:|| z  }t        jJ                  |«      }1t        jJ                  |«      }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        jF                  |1|1dkD     «      ||1dkD     z
  |1|1dkD  <   t        jF                  |2|2dkD     «      ||2dkD     z   |2|2dkD  <   |1t4        |3z  kD  }|2t4        |4z  kD  }t        jL                  |«      }5t        jL                  |«      }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        jF                  |:|:dkD     «      |%|:dkD     z   |:|:dkD  <   |:t4        |z  kD  }&t        jN                  |«      }<t        j                  |<|&   ||&   |:|&   z  «      |<|&<   t        j:                  |<d¬«      }=t;        |9|=«      }> ||-«      }? ||«      }|-|?z  }@||z  }|-|z  }Ad}BtQ        |Bdz
  |>z  dz   «      }Bt        jR                  |>|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        jT                  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  rjFBdz
  k(  rb|7|>k  rtC        |5«      }+||+   ||+<   d||+<   |8|>k  rtC        |6«      }+||+   ||+<   d||+<   |=|>k  rtC        |<«      }+d||+<   t#        |||||«      \  }}nn||k  r�Œ$||z  d
|z   ||«      z  z   ||,z  d
|,z   ||,«      z  z   kD  r|,}|r·t        ||«      }
t        j                  ||k  «      sJ ‚t        j                  ||k  «      sJ ‚t        j                  ||z  ||
z   k  «      sJ ‚t        j                  t        j6                  ||z  «      |
k  «      sJ ‚t        j,                  j/                  |«      d|z  k  sJ ‚|S # t2        $ r Y �ŒMw xY w)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 Ü˜$¤§
¡
Ô+°·	±	¸Q²Ð>Ð>Ü× Ñ  Ó+×0Ñ0°Ô6Ð6Ð6Ü˜"œbŸj™jÔ)¨b¯h©h¸$¿*¹*Ò.DÐDÐDÜ˜"œbŸj™jÔ)¨b¯h©h¸$¿*¹*Ò.DÐDÐDä�sœBŸJ™JÔ'Ø—‘˜A’Ø—	‘	˜!‘ §	¡	Ò)ð	
ð*ô
 �sœBŸJ™JÔ'Ø—‘˜A’Ø—‘˜CŸI™I a™LÒ(ð	
ð)ô
 �sœBŸJ™JÔ'Ø—‘˜A’Ø—	‘	˜!‘ §	¡	Ò)ð	
ð*ô ˜%¤Ô'Ð'Ð'Ü˜%¤Ô&Ð&Ð&Ü˜R Ó$ˆÜ�v‰v�b˜C‘iÔ Ð Ð Ü�v‰v�b˜S˜D‘jÔ!Ð!Ð!Ü�v‰v�c˜c˜T‘kÔ"Ð"Ð"Ü�{‰{˜5Ô! e¨c¢kÐ1Ð1Ü	�‰�B˜Ó	€BÜ	�‰�B˜Ó	€BÜ
�*‰*�S˜#Ó
€Cð 	�	‰	€AÜ�7‰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�H€Eˆ1ô �=‰=˜Ó€DØ
ŠAˆu‰vˆI‰,ˆ˜!šA˜u™v˜I™,Ÿ.™.¨4Ñ/Ñ	0€BÜ�G‰G�C‹L€Eà	€AØ€FØÐØ
ˆa�%‰i‹-à˜‘)ˆØ�eœc‘k A‘o¬¨C´·±·±ÀÓ1EÓ(FÑFÒFÙð	Ü   r¨5Ó1ˆHð ˆ9�wÑ $¨¡-Ò/Ùñ ˜B“-ˆØ�w‘,ˆØ”TœC ›LÑ(Ò(Ü˜g˜X¨Ñ/°Ó5‰JäŸ™ˆJô �H˜jÓ)ˆØˆ6�W˜s U™{¨WÑ4Ñ4Ñ5¸À¹ÒFÙð ˜"¤§¡˜w™,Ñ'¨2´°¼¿¹¸rÀD¹yÓ8IÑ0IÑ+IÑJˆØ˜"œrŸv™v™+Ñ&¨"¬t´b·f±f¸RÀ$¹YÓ6GÑ/GÑ*GÑHˆÜ—|‘| D¬"¯&©&Ó1ˆÜ—|‘| D¬"¯&©&Ó1ˆÜŸZ™ZØ�‰X˜˜T™
Ñ" b¨¡hÑ.Øó
ˆ�TÑô  ŸZ™ZØ�‰X˜˜T™
Ñ" b¨¡hÑ.Øó
ˆ�TÑô —6‘6˜,Ó'ˆÜ—6‘6˜,Ó'ˆÜ�x Ó*ˆð �r‘ˆØ˜&¤4¬"¯&©&°«-Ñ#7Ñ7Ñ8ˆÜ—|‘| C¬¯©Ó0ˆØ" 4™[¨6°$©<Ñ7ˆ�TÑÜ—6‘6˜,´·±Ô7ˆô �E˜8 XÓ.ˆØ�3Š;Ü—7‘7˜4 %¨"¡*Ñ,¨b°"Ó5ˆDØ�E˜G‘OÑ#ˆDÜ—J‘J˜s E¨E°F©NÑ$:Ó;ˆEØ�e˜w¨¨u©°wÑ)>Ñ>Ñ?Ñ?ˆFà”3�x ¨8Ó4Ò4ð š!˜U™V˜)™¨ª!¨U©V¨)©¯©¸Ñ(=Ñ>ˆIØ Ñ'¨7Ñ2ˆDØ˜‘˜YÑ&ˆBØ�‰FŠAØ�XÒð ˜5Ò ÜŸ	™	 ,Ó/�Ø  ™i��U‘Ø!&�˜’Ø˜UÒ"ÜŸ	™	 ,Ó/�Ø  ™i��U‘Ø!&�˜’äŸ	™	 ,Ó/�Ø!&�˜‘Ü2ØØØØØó‰HˆE�1ð ’A�u‘v�I‘,� !¢A u¡v I¡,§.¡.°4Ñ"7Ñ8ˆBØ‰Að
 ˜5Ò Ü Ó-�Ø  ™i��U‘Ø!&�˜‘Ø˜5Ò Ü Ó-�Ø  ™i��U‘Ø!&�˜‘Ø˜5Ò Ü Ó-�Ø!&�˜‘Ü2ØØØØØó‰HˆE�1ð  $ÐØðk ˆa�%‰iŒ-ðp ‡z�z�- Õ&Ò+;ÀÈÃ	Ü—G‘G˜D“Mˆ	Ø�a‹ið š!˜U™V˜)™¨ª!¨U©V¨)©¯©¸Ñ(=Ñ>ˆIØš!˜U™V˜)™¨ª!¨U©V¨)©¯©¸Ñ(=Ñ>ˆIØ )Ñ+ˆGØ )Ñ+ˆGØ! IÑ-ˆIÜ—w‘wœs 7¨WÑ#4°yÀ#±~Ñ#EÀsÓKÓLÐLˆGØ’1�e‘f�9‘Ø’!�U‘V�)‘—‘ )¨dÑ"2°W¸t±^Ñ"CÑDñˆBð ˜% &™.Ò(¬B¯F©FØœD˜5¤2§6¡6¨"£:Ñ-Ñ-ô-ñ Ø�7�(‰NˆBô —h‘h˜q“kˆGÜ—h‘h˜q“kˆGÜ—j‘j ¨¡¨CÓ0ˆGÜ—j‘j  d¡¨CÓ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‘w˜q“zˆHÜ—w‘w˜q“zˆHÜŸZ™ZØ˜‘Ø˜‘ ¨¡Ñ-óˆH�T‰Nô  ŸZ™ZØ˜‘Ø˜‘ ¨¡Ñ-óˆH�T‰Nô —6‘6˜(Ó#ˆDÜ—6‘6˜(Ó#ˆDÜ�t˜T“?ˆDô —m‘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™ZØ˜‘Ø�d‘˜g d™mÑ+óˆH�T‰Nô —6‘6˜(¨CÔ0ˆDÜ˜˜d“OˆEñ " )Ó,ˆIÙ “mˆGØ! IÑ-ˆIØ˜7‘lˆGØ$ wÑ.ˆLð
 ˆIÜ˜Y¨™]¨eÑ3°aÑ7Ó8ˆIÜŸ™ E¨IÑ$5°u¸iÓHˆIØ˜y™¨C°)¸S±.Ñ,@ÑAˆJØ#Ø˜IÑ%Øñàà˜) S™.Ñ(¨9Ñ4Ø˜I‘o¨Ñ4ñ5à˜G‘mñ$ñññ	ˆJô �v‰v�j CÑ'Ô(áô —I‘I˜jÓ)ˆEØ˜y¨Ñ/°3Ñ6Ñ6Ø�i Ñ&¨#Ñ-Ñ-ñˆIô —7‘7Ø˜	 C™¨9Ñ4Ñ4°zÀ%Ñ7HÈ2Ñ7MÑMØØóˆDð
 �Y ‘_¨	Ñ1°J¸uÑ4EÈÑ4OÑOÑOˆDÜ—J‘JØØØ˜s‘? hÑ.ñ/à˜UÑ# fÑ,ñ-óˆEð �j Ñ'Ñ'ˆFð
 �sŠ{˜u¨	°A©Ò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ð ðc �aŒiðj �tÑ˜c D™j©9Øó,
ñ 
ñ 
à˜	Ñ! C¨)¡O±iÀ	Ó6JÑ$JÑJòKð ˆDáÜ˜R Ó$ˆÜ�v‰v�b˜D‘jÔ!Ð!Ð!Ü�v‰v�d˜b‘jÔ!Ð!Ð!Ü�v‰v�c˜D‘j C¨#¡IÑ-Ô.Ð.Ð.Ü�v‰v”b—f‘f˜S 4™ZÓ(¨CÑ/Ô0Ð0Ð0Ü�y‰y�~‰~˜dÓ# c¨E¡kÒ1Ð1Ð1Ø€Køôe !ò 	Úð	ús   Í=w ÷	w÷w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kD  sJ ‚t        j                  |d«      }t        j                  |d«      }| j
                  \  }
}t        j                  |j                  | z  t        j                  d| «      f   }|dk  |d| dk  z  }|dkD  |d| dkD  z  }|dk  }|dkD  | |d| z  ||d z
  dkD  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(                  j+                  |«      «      z  k\  r�nü	 t-        ||d| |«      }	 t3        |t-        ||d ||d |«      «      }| |z  d	|z  k  r�n¿t        j                  |j                  ||d| z  z  ||d f   }||z  }|t4        t7        |«      z  kD  rt'        | |z  d«      }nt        j0                  }t3        ||«      }| |d
|z  |z  z   z  d	|z  k  r�n6||t        j0                   kD  z  |d| t4         t        j6                  ||z
  «      z  k  z  } ||t        j0                  k  z  |d| t4        t        j6                  ||z
  «      z  kD  z  }!|||d t4         t        j6                  ||d «      z  k  z  }"t        j8                  |t        j0                  «      }#t        j8                  |t        j0                  «      }$t        j8                  |t        j0                  «      }%t        j                  ||    ||    z
  |d| |    z  d«      |#| <   t        j                  ||!   ||!   z
  |d| |!   z  d«      |$|!<   t        j                  ||d |"    ||d |"   z  d«      |%|"<   t        j2                  |#«      }&t        j2                  |$«      }'t        j2                  |%t        j0                  ¬«      }(t3        |&|'|(«      })| |d| z  ||d z
  }*||*t4        t        j6                  |«      z  kD  z  }+t        j8                  |t        j0                  «      },||+   |*|+   z  |,|+<   t        j2                  |,t        j0                  ¬«      }-t3        ||)|-«      }|dkD  rUt        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<   nb|'|k  r#t        j<                  |$«      }0||0   ||0<   d||0<   n:|(|k  rt        j<                  |%«      }0d||0<   nt        j<                  |,«      }0d||0<   t        | ||||«      \  }}|dd…|d…f    |dd…|d…f   j                  |z  z  }d}n=|&|k  rt?        |#«      }0||0   ||0<   d||0<   |'|k  rt?        |$«      }0||0   ||0<   d||0<   d}n|||
z   |z
  k  r�Œ<|jA                  dd«      �ro|�rlt        jB                  |«      }1||z  }2| j                  t        j                  | |z  |z
  d«      z  |j                  ||z  |z
  z  z   }t        j"                  |«      }t        jD                  |2«      dkD  �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\  s6t        jF                  |t4         t        j6                  ||2   «      z  k\  «      r�nà||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kD     «      ||6dkD     z
  |6|6dkD  <   t        j                   |7|7dkD     «      ||7dkD     z   |7|7dkD  <   t        j                  ||z
  d«      }8t        j                  ||z
  d«      }9|6t4        |8z  kD  } |7t4        |9z  kD  }!t        jH                  |«      }:t        jH                  |«      };t        j                  |:|    |8|    |6|    z  «      |:| <   t        j                  |;|!   |9|!   |7|!   z  «      |;|!<   t        j2                  |:«      }<t        j2                  |;«      }=t3        |<|=«      }>d}?tK        |?dz
  |>z  dz   «      }?t        jL                  |>|?z  |>|?«      }@t        j                  | |z  |z
  d«      }A||z  |z
  }Bt        jB                  |«      }Cd|C|2 <   t        jN                  |?«      }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        jR                  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  rCJ|?dz
  k(  r;|<|>k  rt?        |:«      }0||0   ||0<   d|2|0<   |=|>k  rt?        |;«      }0||0   ||0<   d|2|0<   nnt        jD                  |2«      dkD  r�Œ„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   kD  r|1}|r[t        j                  ||k  «      sJ ‚t        j                  ||k  «      sJ ‚t        j(                  j+                  |«      d|z  k  sJ ‚|S # t.        $ r t        j0                  }Y �
Œèw xY w# t.        $ r Y �
ŒÚw xY w)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£   æ  sY  € òF Ü˜#œrŸz™zÔ*¨s¯x©x¸1ª}Ð<Ð<ä�sœBŸJ™JÔ'Ø—‘˜A’Ø—‘˜CŸI™I a™LÒ(ð	
ð)ô
 �sœBŸJ™JÔ'Ø—‘˜A’Ø—	‘	˜!‘ §	¡	¨!¡Ò,ð	
ð-ô
 �sœBŸJ™JÔ'Ø—‘˜A’Ø—‘˜CŸI™I a™LÒ(ð	
ð)ô ˜"œbŸj™jÔ)¨b¯h©h¸3¿9¹9ÀQ¹<¸/Ò.IÐIÐIÜ˜"œbŸj™jÔ)¨b¯h©h¸3¿9¹9ÀQ¹<¸/Ò.IÐIÐIÜ˜%¤Ô'Ð'Ð'Ü˜%¤Ô&Ð&Ð&Ü˜R Ó$ˆÜ�v‰v�b˜C‘iÔ Ð Ð Ü�v‰v�b˜S˜D‘jÔ!Ð!Ð!Ü�{‰{˜5Ô! e¨c¢kÐ1Ð1Ü	�‰�B˜Ó	€BÜ	�‰�B˜Ó	€Bð —Y‘Y�N€K�Ü�5‰5�—‘˜#˜‘œrŸz™z¨#°¨tÓ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¨hÑ6¸Ñ<Ñ=€GÜ&ØØØØØó�H€Eˆ1ô —'‘'˜# ™) d¨1¨2 h°°a°b°Ñ&9Ñ9Ó:€Kô �8‰8�A‹;€DØ
ŠAˆu‰vˆI‰,ˆ˜!šA˜u™v˜I™,Ÿ.™.¨4Ñ/Ñ	0€BØ�$�q�r�(‰N€Eà	€AØ€FØÐØ
ˆa�+‰o Ñ%Ó
%à˜‘)ˆØ�eœc‘k A‘o¬¨C´·±·±ÀÓ1EÓ(FÑFÒFÙð	Ü   r¨"¨1 v¨uÓ5ˆHð	Ü˜8¤Y¨t°A°B¨x¸¸A¸B¸ÀÓ%MÓNˆHð ˆ9�wÑ $¨¡-Ò/Ùô —%‘%˜Ÿ™  r¨"¨1 v¡Ñ.°°1°2°Ð6Ñ7ˆØ�w‘,ˆØ”TœC ›LÑ(Ò(Ü˜g˜X¨Ñ/°Ó5‰JäŸ™ˆJô �H˜jÓ)ˆØˆ6�W˜s U™{¨WÑ4Ñ4Ñ5¸À¹ÒFÙð ˜"¤§¡˜w™,Ñ'¨2¨b¨q¨6´T°E¼B¿F¹FÀ2ÈÁ9Ó<MÑ4MÑ+MÑNˆØ˜"œrŸv™v™+Ñ&¨"¨R¨a¨&´4¼"¿&¹&ÀÀdÁÓ:KÑ3KÑ*KÑLˆØ  1 2 ¬$¨´·±¸¸Q¸R¸Ó1AÑ)AÑ AÑBˆÜ—|‘| D¬"¯&©&Ó1ˆÜ—|‘| D¬"¯&©&Ó1ˆÜŸ,™, s¬B¯F©FÓ3ˆÜŸZ™ZØ�‰X˜˜T™
Ñ" b¨¨! f¨T¡lÑ2Øó
ˆ�TÑô  ŸZ™ZØ�‰X˜˜T™
Ñ" b¨¨! f¨T¡lÑ2Øó
ˆ�TÑô $&§:¡:Ø�!�"ˆX�gÑÐ  A B ¨¡Ñ0Øó$
ˆ˜Ñ ô —6‘6˜,Ó'ˆÜ—6‘6˜,Ó'ˆÜ—f‘f˜_´b·f±fÔ=ˆÜ�x ¨;Ó7ˆð �r˜"˜1�v‘  1 2 Ñ&ˆØ˜&¤4¬"¯&©&°«-Ñ#7Ñ7Ñ8ˆÜ—|‘| C¬¯©Ó0ˆØ" 4™[¨6°$©<Ñ7ˆ�TÑÜ—6‘6˜,´·±Ô7ˆô �E˜8 XÓ.ˆØ�3Š;Ü—7‘7˜4 %¨"¨R¨a¨&¡.Ñ0°"°bÓ9ˆDØ�E˜G‘OÑ#ˆDÜ—J‘J˜s E¨E°F©NÑ$:Ó;ˆEØ�e˜w¨¨u©°wÑ)>Ñ>Ñ?Ñ?ˆFà”3�x ¨8Ó4Ò4ð š!˜U™V˜)™¨ª!¨U©V¨)©¯©¸Ñ(=Ñ>ˆIØ Ñ'¨7Ñ2ˆDØ˜‘˜YÑ&ˆBØ�‰FŠAØ�XÒð ˜5Ò ÜŸ	™	 ,Ó/�Ø  ™i��U‘Ø!&�˜’Ø˜UÒ"ÜŸ	™	 ,Ó/�Ø  ™i��U‘Ø!&�˜’Ø Ò%ÜŸ	™	 /Ó2�Ø$)�
˜5Ò!äŸ	™	 ,Ó/�Ø!&�˜‘Ü.Ø�W˜g z°7ó‰HˆE�1ð ’A�u‘v�I‘,� !¢A u¡v I¡,§.¡.°4Ñ"7Ñ8ˆBØ‰Að
 ˜5Ò Ü Ó-�Ø  ™i��U‘Ø!&�˜‘Ø˜5Ò Ü Ó-�Ø  ™i��U‘Ø!&�˜‘Ø#ÐØðq ˆa�+‰o Ñ%Ô
%ðv ‡z�z�- Õ&Ò+;Ü—G‘G˜D“Mˆ	Ø˜GÑ#ˆØ�u‰u”r—z‘z #¨¡*¨sÑ"2°CÓ8Ñ8¸3¿5¹5Ø�$‰J˜Ññ<
ñ 
ˆô �X‰X�a‹[ˆÜ×Ñ˜wÓ'¨!Ó+ð ˜7‘m d¨7¡mÑ3ˆGØ˜7‘m d¨7¡mÑ3ˆGØ˜W™¨¨W©Ñ5ˆIÜ—w‘wœs 7¨WÑ#4°yÀ#±~Ñ#EÀsÓKÓLÐLˆGØ# d¨7¡mÑ3°gÀÀWÁÑ6MÑMˆBˆw‰KØˆB�ˆx‰LØ˜% &™.Ò(¬B¯F©FØœD˜5¤2§6¡6¨"¨W©+Ó#6Ñ6Ñ6ô-ñ Øˆw‹K˜G˜8Ñ#‹Kô
 —h‘h˜q“kˆGÜ—h‘h˜q“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‘j ¨¡¨CÓ0ˆGÜ—j‘j  d¡¨CÓ0ˆGØœT G™^Ñ+ˆDØœT G™^Ñ+ˆDÜ—w‘w˜q“zˆHÜ—w‘w˜q“zˆHÜŸZ™ZØ˜‘Ø˜‘ ¨¡Ñ-óˆH�T‰Nô  ŸZ™ZØ˜‘Ø˜‘ ¨¡Ñ-óˆH�T‰Nô —6‘6˜(Ó#ˆDÜ—6‘6˜(Ó#ˆDÜ�t˜T“?ˆDð
 ˆIÜ˜Y¨™]¨dÑ2°QÑ6Ó7ˆIÜŸ™ D¨9Ñ$4°d¸IÓFˆIÜ—z‘z #¨¡*¨sÑ"2°CÓ8ˆHØ˜T‘z CÑ'ˆHÜŸ™ ›ˆIØ"%ˆI�w�hÑÜŸ™ )Ó,ˆJÜ˜9Ó%ò �Ø )¨A¡,Ñ.°#¸	À!¹ÈÑ8KÑ2KÑL�	ÜŸ7™7Ø˜9¨¨Y°q©\¸IÑ-EÑ(EÑFÑFØØó�ô
  "Ÿz™z¨#°©.¸3Ñ*>ÀÓD�Ø" X™~°Ñ3�Ø #Ø˜xÑ'Ø Ñ)ñ*à" \Ñ1ñ2ð # \Ñ1ñ2ñ!�
˜1’ðô �v‰v�j CÑ'Ô(àô —I‘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‘5œ2Ÿ:™: c¨D¡j°3Ñ&6¸Ó<Ñ<¸s¿u¹uØ�d‘
˜SÑ ñ@ñ ˆDð �j Ñ'Ñ'ˆFð
 �cŠz˜e y°1¡}Ò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ˆÜŸ
™
 3¨¡?°SÑ#8¸#Ó>ˆØ˜‘: Ñ#ˆØ˜i™¨#Ñ-ˆà�xÑ (¨XÑ"5Ñ5Ø˜mÑ+¨m¸mÑ.KÑKòLð ˆDáÜ�v‰v�b˜D‘jÔ!Ð!Ð!Ü�v‰v�d˜b‘jÔ!Ð!Ð!Ü�y‰y�~‰~˜dÓ# c¨E¡kÒ1Ð1Ð1Ø€Køôm !ò 	Ü—v‘v‹Hð	ûô !ò 	Úð	ús$   Í0y Îy, ùy)ù(y)ù,	y9ù8y9c                 óD  — |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                  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‰v�a‹y€HÜÜ
�‰à�Ø�g�Xšq�[Ñ!Ð"Ø˜G˜8¢Q˜;Ñ'Ð'Ð(Ø˜7˜(¢A˜+Ñ&Ð'ð	ó	
÷ ‰!Øô
�G€A€qˆ!ô ×ÑÜ
�‰Œr�w‰w�q‹zÓØÜ
ñà
ñô �)‰)�.‰.˜Ð,œRŸV™V A§G¡G›_Ð,Ð.?´·±°q·w±w³Ð.?Ð?Ñ@Àqˆ.Ó
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                  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‘Y�N€K�Ü—‘˜“€JÜ—‘˜Ó$€JÜÜ
�‰ð ˜˜¢!˜Ñ$Ø  ª! Ñ,Ð,ðô
 —H‘H˜k¬B×,<Ñ,<¸ZÓ,HÑHÈ!ÐLÓMØ  ªQ Ñ/Ð/ðð
    ª! Ñ,Ð,Ü—H‘H˜a¤"×"2Ñ"2°7Ó";Ñ;¸[ÐIÓJðð
  ˜xª˜{Ñ+Ü—H‘H˜a¤"×"2Ñ"2°7Ó";Ñ;¸[ÐIÓJððó	
÷& ‰!Øô+�G€A€qˆ!ô. ×ÑÜ
�‰Œr�w‰w�q‹zÓØÜ
ñàˆ{‰?ñô �)‰)�.‰.˜Ð,œRŸV™V A§G¡G›_Ð,Ð.?´·±°q·w±w³Ð.?Ð?Ñ@Àqˆ.Ó
IñJñ	Jó€Eð �!ˆ8€Or®   c                 óB  — | |z  }||z  }|dz  | | z  z
  }t        j                  t        |dz  ||z  z   d«      «      }|dk  r,|t        t	        ||z
  «      z  kD  rt        ||z
  |z  d«      }|S t	        ||z   «      t        |z  kD  rt        |||z   z  d«      }|S t
        ‚)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‰7”3�w ‘| e¨jÑ&8Ñ8¸#Ó>Ó?€DØ�#‚~˜%¤$¬¨T°G©^Ó)<Ñ"<Ò<Ü˜˜w™¨%Ñ/°Ó5ˆð
 €Oô	 
ˆT�G‰^Ó	œt jÑ0Ò	0Ü�z T¨G¡^Ñ4°cÓ:ˆð €Oô  Ðr®   c                 óX   — t        j                  | t        j                  | «      k\  «      S ©N)r   Úflatnonzeror&   ©Úxs    rq   Ú_argmaxr¼   ®  ó   € Ü�>‰>˜!œrŸv™v a›y™.Ó)Ð)r®   c                 óX   — 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Æ      sl   ðÛ ã Ý å "ð €r‡x�x�ƒ×Ñ€Ø€b‡h�hˆuƒo×Ñ€òsòl	`òFzòzò0"òJò*ó*r®   