
    -i)                     H    S r SSKJr  SSKJrJrJrJrJrJ	r	  SSK
rS rS rg)a  
This module contains subroutines concerning the geometry-improving of the interpolation set.

Translated from Zaikun Zhang's modern-Fortran reference implementation in PRIMA.

Dedicated to late Professor M. J. D. Powell FRS (1936--2015).

Python translation by Nickolai Belakovski.
   )	DEBUGGING)isinvmatprodinprodnormprimasum	primapow2    Nc                    Sn[         R                  " US5      n[        (       Gat  US:  d   e[         R                  " U5      U:X  a$  [        [         R                  " U5      5      (       d   eX#:  a  US:  d   e[         R                  " US5      U:X  a  [         R                  " US5      US-   :X  d   e[         R                  " U5      R                  5       (       d   e[        [         R
                  " [        USS2SU24   5      SS9S:  5      (       d   e[         R                  " US5      U:X  a  [         R                  " US5      U:X  d   e[         R                  " U5      R                  5       (       d   e[        USS2SU24   XV5      (       d   e[         R                  " [         R                  " US5      5      nU (       aR  [        [        USS2SU24   [         R                  " XS45      R                  -
  5      SS9USU& [        X-  5      X'   O#[        [        USS2SU24   5      SS9USU& SX'   [         R                  " SU[        [         R                  " X2S-  5      5      -  5      n	[        XQ5      n
U	[        [         R                  " / U
QS[        U
5      -
  P5      5      -  nU (       d  SX'   SU[         R                   " U5      '   Sn[#        US:  5      (       a  [         R$                  " U5      nU (       a  Uc  [         R$                  " U5      n[        (       a5  Ub  SUs=::  a
  US-   :  d   e   eX::  d	  U (       d   eUS:  d	  U (       a   eU$ )a  
This function finds (the index) of a current interpolation point to be replaced with
the trust-region trial point. See (19)-(22) of the COBYLA paper.
N.B.:
1. If XIMPROVED == True, then JDROP > 0 so that D is included into XPT. Otherwise,
   it is a bug.
2. COBYLA never sets JDROP = NUM_VARS
TODO: Check whether it improves the performance if JDROP = NUM_VARS is allowed when
XIMPROVED is True. Note that UPDATEXFC should be revised accordingly.
g?r
      N)axis
   )npsizer   allisfinitemaxabsr   zerosr   r	   tileTmaximumr   arrayisnananyargmax)	ximprovedddeltarhosimsimiitolnum_varsdistsqweightsimidscorejdrops                U/var/www/html/venv/lib/python3.13/site-packages/scipy/_lib/pyprima/cobyla/geometry.py
setdrop_trr,      s    D wwsAH y1}}wwqzX%#bkk!n*=*===|a''wwsA(*rwwsA(Q,/NNN{{3##%%%%266#c!YhY,/0q9A=>>>>wwtQ8+a0@H0LLL{{4 $$&&&&SIXI&3333~ XXbggc1o&F$Ys1ixi</@2771YZmC\C^C^/^%_fghy#AC=$Ys1ixi</@%AJyZZ6IbjjBh.G$HHIF DES"?E"?1x+>"?@AAE   E"((5/E 519~~		% em		&! y}e!:hl!:;;!:;; I--z** L    c	           
         Ub  [         R                  " US5      OSn	[         R                  " US5      n
[         R                  " US5      n[        (       Ga  Xs=:  a  S:  d   e   eUS:  d   eUS:  d   eUS:  d   e[         R                  " US5      U:X  a  [         R                  " US5      U:X  d   e[         R                  " U5      R	                  5       (       d   e[         R                  " U5      US-   :X  a;  [        [         R                  " U5      [         R                  " U5      -  5      (       a   e[         R                  " US5      U
:X  a  [         R                  " US5      US-   :X  d   e[         R
                  " [         R                  " U5      [         R                  " U5      -  5      (       a   e[         R                  " U5      US-   :X  aA  [        US[         R                  " U5      -  [         R                  " U5      -  :  5      (       a   eSU s=::  a  U:  d   e   eXSS24   nXl[        U5      -  -  n[        USU X{   -
  U5      n[         R                  " X45      nUb  UR                  OUUSS2SU	24'   [        X9S2SU24   [         R                  " X9S2U4   US45      R                  -
  U5      R                  USS2U	S24'   [         R                  " [         R                  " SUSS2U4   [        X5      -   5      5      n[         R                  " [         R                  " SUSS2U4   [        X5      -
  5      5      n[        X5      * UU-  -   [        X5      XO-  -   :  a  US-  n[        (       au  [         R                  " U5      U:X  a$  [	        [         R                  " U5      5      (       d   eSU-  [         R                   R                  U5      s=:  a
  SU-  ::  d   e   eU$ )z
This function calculates a geometry step so that the geometry of the interpolation set is improved
when SIM[: JDROP_GEO] is replaced with SIM[:, NUM_VARS] + D. See (15)--(17) of the COBYLA paper.
Nr
   r   r   g?g?)r   r   r   r   r   r   r   isposinfr   r   r   r   r   r   appendr   linalg)r*   amatbvecconmatcpencvaldelbarfvalr#   m_lconnum_constraintsr%   r   gAcvpdcvnds                    r+   geostepr?      sb    "&!1RWWT1qFggfa(OwwtQH y-A-----1}}zzaxxwwtQ8+a0@H0LLL{{4 $$&&&&wwt}1,S$"++VZJ[9[5\5\\\wwvq!_49KxZ[|9[[[66"((6*R[[-@@AAAAwwt}1,SBHHTN@RUWU`U`aeUf@f9f5g5gggE$H$$$$$ 	AXAd1g+A 	Yh$.0$7A
(,-A".DFFDAa&jMVGYhY$67''&():";h]KMMNPTVVWVW ajM 66"))Avak2WQ]BCDD66"))Avak2WQ]BCDDq}td{"VA\DK%??	R ywwqzX%#bkk!n*=*=== V|biinnQ/?3<?????Hr-   )__doc__common.constsr   common.linalgr   r   r   r   r   r	   numpyr   r,   r?    r-   r+   <module>rE      s$    & M M Pj=r-   