§
    fŠtj•)  ã                   óJ   — d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
Zd„ Zd„ ZdS )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                 óÂ  — d}t          j        |d¦  «        }t          �rm|dk    sJ ‚t          j        |¦  «        |k    r!t          t          j        |¦  «        ¦  «        sJ ‚||k    r|dk    sJ ‚t          j        |d¦  «        |k    rt          j        |d¦  «        |dz   k    sJ ‚t          j        |¦  «                             ¦   «         sJ ‚t          t          j        t          |dd…d|…f         ¦  «        d¬¦  «        dk    ¦  «        sJ ‚t          j        |d¦  «        |k    rt          j        |d¦  «        |k    sJ ‚t          j        |¦  «                             ¦   «         sJ ‚t          |dd…d|…f         ||¦  «        sJ ‚t          j        t          j        |d¦  «        ¦  «        }| rbt          t          |dd…d|…f         t          j        ||df¦  «        j        z
  ¦  «        d¬¦  «        |d|…<   t          ||z  ¦  «        ||<   n4t          t          |dd…d|…f         ¦  «        d¬¦  «        |d|…<   d||<   t          j        d|t          t          j        ||dz  ¦  «        ¦  «        z  ¦  «        }	t          ||¦  «        }
|	t          t          j        g |
¢dt          |
¦  «        z
  ‘¦  «        ¦  «        z  }| sd||<   d|t          j        |¦  «        <   d}t#          |dk    ¦  «        rt          j        |¦  «        }| r|€t          j        |¦  «        }t          r*|�d|cxk    r	|dz   k     sn J ‚||k    s| sJ ‚|dk    s| rJ ‚|S )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                ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/_lib/pyprima/cobyla/geometry.pyÚ
setdrop_trr,      s‘  € ð €Dõ Œw�s˜A‰Œ€Hõ ñ 	4Ø˜1Š}ˆ}ˆ}ˆ}ÝŒw�q‰zŒz˜XÒ%Ð%­#­b¬k¸!©n¬nÑ*=Ô*=Ð%Ð%Ð=Ø˜Š|ˆ|  a¢  Ð'ÝŒw�s˜A‰Œ (Ò*Ð*­r¬w°s¸A©¬À(ÈQÁ,Ò/NÐ/NÐ/NÐNÝŒ{˜3ÑÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%Ý•2”6�#˜c ! ! ! Y h Y ,Ô/Ñ0Ô0°qÐ9Ñ9Ô9¸AÒ=Ñ>Ô>Ð>Ð>Ð>ÝŒw�t˜QÑÔ 8Ò+Ð+µ´¸¸aÑ0@Ô0@ÀHÒ0LÐ0LÐ0LÐLÝŒ{˜4Ñ Ô ×$Ò$Ñ&Ô&Ð&Ð&Ð&Ý�S˜˜˜˜I˜X˜I˜Ô&¨¨dÑ3Ô3Ð3Ð3Ð3õ~ ŒX•b”g˜c 1‘o”oÑ&Ô&€FØð Ý$¥Y¨s°1°1°1°i°x°i°<Ô/@Å2Ä7È1ÈxÐYZÈmÑC\ÔC\ÔC^Ñ/^Ñ%_Ô%_ÐfgÐhÑhÔhˆˆy�ˆyÑÝ# A a¡C™=œ=ˆˆxÑÐå$¥Y¨s°1°1°1°i°x°i°<Ô/@Ñ%AÔ%AÈÐJÑJÔJˆˆy�ˆyÑØˆˆxÑåŒZ˜˜6¥I­b¬j¸¸eÀB¹hÑ.GÔ.GÑ$HÔ$HÑHÑIÔI€Fõ �D˜!ÑÔ€EØ•S�œÐ"? EÐ"?¨1­x¸©¬Ñ+>Ð"?Ñ@Ô@ÑAÔAÑA€Eð ð Øˆˆh‰ð  €E�"Œ(�5‰/Œ/Ñà€Eõ ˆ5�1Š9�~„~ð !Ý”	˜%Ñ Ô ˆàð "�e�mÝ”	˜&Ñ!Ô!ˆõ ð +Øˆ}  eÐ!:Ð!:Ò!:Ð!:¨h¸©lÒ!:Ð!:Ð!:Ð!:Ð!:Ð;Ø˜Ò Ð  IÐ Ð Ð-Ø˜Šzˆz ˆzˆzÐ*ð €Ló    c	           
      óà  — |�t          j        |d¦  «        nd}	t          j        |d¦  «        }
t          j        |d¦  «        }t          �r·|
|	cxk    rdk    sn J ‚|dk    sJ ‚|dk    sJ ‚|dk    sJ ‚t          j        |d¦  «        |k    rt          j        |d¦  «        |k    sJ ‚t          j        |¦  «                             ¦   «         sJ ‚t          j        |¦  «        |dz   k    r6t          t          j        |¦  «        t          j        |¦  «        z  ¦  «        rJ ‚t          j        |d¦  «        |
k    rt          j        |d¦  «        |dz   k    sJ ‚t          j        t          j        |¦  «        t          j        |¦  «        z  ¦  «        rJ ‚t          j        |¦  «        |dz   k    r=t          |dt          j        |¦  «        z  t          j        |¦  «        z  k     ¦  «        rJ ‚d| cxk    r|k     sn J ‚|| dd…f         }||t          |¦  «        z  z  }t          |d|…         ||         z
  |¦  «        }t          j
        ||
f¦  «        }|�|j        n||dd…d|	…f<   t          ||	d…d|…f         t          j        ||	d…|f         |df¦  «        j        z
  |¦  «        j        |dd…|	d…f<   t          j        t          j        d|dd…|f         t          ||¦  «        z   ¦  «        ¦  «        }t          j        t          j        d|dd…|f         t          ||¦  «        z
  ¦  «        ¦  «        }t          ||¦  «         ||z  z   t          ||¦  «        ||z  z   k     r|dz  }t          rot          j        |¦  «        |k    r!t	          t          j        |¦  «        ¦  «        sJ ‚d|z  t           j                             |¦  «        cxk     r	d|z  k    sn J ‚|S )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?   ¥   s  € ð "&Ð!1�RŒW�T˜1ÑÔÐ°q€FÝ”g˜f aÑ(Ô(€OÝŒw�t˜QÑÔ€Hõ ñ %Ø &Ð-Ð-Ò-Ð-¨AÒ-Ð-Ð-Ð-Ð-Ð-Ø˜1Š}ˆ}ˆ}ˆ}Ø˜ŠzˆzˆzˆzØ�aŠxˆxˆxˆxÝŒw�t˜QÑÔ 8Ò+Ð+µ´¸¸aÑ0@Ô0@ÀHÒ0LÐ0LÐ0LÐLÝŒ{˜4Ñ Ô ×$Ò$Ñ&Ô&Ð&Ð&Ð&ÝŒw�t‰}Œ} ¨1¡Ò,Ð,µS½¼À$¹¼Í"Ì+ÐVZÑJ[ÔJ[Ñ9[Ñ5\Ô5\Ð,Ð,Ð\ÝŒw�v˜qÑ!Ô! _Ò4Ð4½¼ÀÈÑ9KÔ9KÈxÐZ[É|Ò9[Ð9[Ð9[Ð[Ý”6�"œ( 6Ñ*Ô*­R¬[¸Ñ-@Ô-@Ñ@ÑAÔAÐAÐAÐAÝŒw�t‰}Œ} ¨1¡Ò,Ð,µS¸ÀÅBÄHÈTÁNÄNÑ@RÕUWÔU`ÐaeÑUfÔUfÑ@fÒ9fÑ5gÔ5gÐ,Ð,ÐgØ�EÐ$Ð$Ò$Ð$˜HÒ$Ð$Ð$Ð$Ð$Ð$ð 	ˆU�A�A�AˆXŒ€AØ�!•d˜1‘g”g‘+Ñ€Aõ 	��Y�h�Y” $ x¤.Ñ0°$Ñ7Ô7€AÝ
Œ�(˜OÐ,Ñ-Ô-€AØ"Ð.�D”F�F°D€A€a€a€aˆˆ&ˆ€j�MÝ˜V F G G¨Y¨h¨YÐ$6Ô7Ýœ' &¨¨¨°(Ð):Ô";¸hÈ¸]ÑKÔKÔMñNØPTñVô VÜVWð €a€a€aˆˆˆ€j�Mõ Œ6•"”)˜A˜v a a a¨ kÔ2µW¸QÀ±]´]ÑBÑCÔCÑDÔD€DÝŒ6•"”)˜A˜v a a a¨ kÔ2µW¸QÀ±]´]ÑBÑCÔCÑDÔD€DÝˆq�!‰Œ€}�t˜d‘{Ñ"¥V¨A¨q¡\¤\°D¸4±KÑ%?Ò?Ð?Ø	ˆR‰ˆõ ð @ÝŒw�q‰zŒz˜XÒ%Ð%­#­b¬k¸!©n¬nÑ*=Ô*=Ð%Ð%Ð=ð �V‰|�bœiŸnšn¨QÑ/Ô/Ð?Ð?Ò?Ð?°3¸±<Ò?Ð?Ð?Ð?Ð?Ð?Ø€Hr-   )Ú__doc__Úcommon.constsr   Úcommon.linalgr   r   r   r   r   r	   Únumpyr   r,   r?   © r-   r+   ú<module>rE      s‹   ððð ð &Ð %Ð %Ð %Ð %Ð %Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ Ð Ð Ð ðPð Pð Pðj=ð =ð =ð =ð =r-   