
    -i<                        S r SSKrSSKJr  SSKJrJrJrJ	r	  SSK
JrJrJrJrJr  SSKJr  SSKJr  SS	KJrJrJrJrJrJr  SS
KJrJrJr  SSKJ r   SSK!J"r"  SSK#J$r$J%r%  SSK&J'r'J(r(J)r)  SSK*J+r+J,r,  SSK-J.r.J/r/  SSK0J1r1J2r2  S r3S r4S r5g)z
This module performs the major calculations of COBYLA.

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.
    N   )checkbreak_con)REALMAXEPS	DEBUGGINGMIN_MAXFILT)INFO_DEFAULTMAXTR_REACHEDDAMAGING_ROUNDINGSMALL_TR_RADIUSCALLBACK_TERMINATE)evaluate)savehist)isinvmatprodinprodnormprimasum	primapow2)fmsgretmsgrhomsg)redrat)redrho)savefiltselectx   )
updatepolefindpole	updatexfc)
setdrop_trgeostep)trstlptrrad)initxfcinitfiltc                    / n/ n/ n/ nSn[         R                  " [         R                  " U5      [         R                  " U5      45      n[         R                  " [         R                  " U5      S-   5      n[        nUb  [         R                  " U5      OSn[         R                  " U5      nUU-
  n[         R                  " U5      n[        (       a  [        U5      S::  d   eUU:  a  US:  d   eUS:  d   eUUS-   :  d   eX:  a  US:  d   e[        [         R                  " U5      5      (       d   eSUs=::  a  U	s=::  a  S:  d   e   eSUs=:  a  Ss=:  a  U:  d   e   eSU::  d   eSU::  d   eSUs=::  a  U::  d   e   eUb  [         R                  " U5      UU4:X  d   e[        [        U5      Us=::  a  U::  d   e   e[        XX?XEUUXUUUUUU5      u  n n!n"n#n$n%n&n'[         R                  " [         R                  " [         R                  " US5      U5      5      n([         R                  " [         R                  " U5      [         R                  " U(5      45      n)[         R                  " [         R                  " U(5      5      n*[         R                  " [         R                  " U5      [         R                  " U(5      45      n+[        U!XgU"U%U#U U(U)U*U+5      n,U'[        :w  a  U'n-[!        U*SU, U(SU, Xv5      n.U+SS2U.4   nU*U.   nU)SS2U.4   nU(U.   n/[#        UU-UU&UUU/U5        [        (       a  U&U::  d   e[         R                  " U5      U:X  a$  [%        [         R&                  " U5      5      (       a   e[         R&                  " U5      (       d  [         R(                  " U5      (       a   eUUUU/U&UUUUU-4
$ Un0Un1[         R                  " U[         R                  " S[+        U!U%5      5      5      n2Sn3S	n4Sn5[         R                  " S[         R                  " S
U-  S5      5      n6SU-  n7[,        n-[/        U75       GH  n8[1        XEU!U2U"U1U%U0U#U$5
      n2[3        U2U!U"U%U#U$5      u  n!n"n%n#n$n'U'[4        :X  a  U'n-  GO[        [7        [9        U#SS2SU24   5      SS9S[9        U15      -  :*  5      n9[;        U%SU U%U   -
  U$5      n:Ub  UR<                  OUUSS2SU24'   [;        U!US2SU24   [         R>                  " U!US2U4   US45      R<                  -
  U$5      R<                  USS2US24'   [A        UU!SS2U4   * U1U:5      n;[        U1[C        U;5      5      n<U<SU0-  :*  n3[E        U;U:5      * n=U"U   [         RF                  " [         RH                  " SU!SS2U4   [;        U;U5      -   5      5      -
  n>U=U2U>-  -   n?U?S[        U2S5      -  U0-  :  + n@U3(       d  W@(       a  U1S-  n1U1U6U0-  ::  a  U0n1GOU#SS2U4   U;-   n[7        [9        UU#SS2U4   -
  5      5      UU'   [7        [9        URK                  US5      U#SS2U4   RK                  US5      U#SS2SU24   -   -
  5      SS9USU& [         RL                  " U5      nAUUA   [9        SU-  5      ::  a  U%WA   nU!SS2UA4   nU"UA   n/On[O        U UUXE5      u  nn[         RF                  " [         RH                  " SU5      5      n/U&S-  n&[Q        UUUUUU/UUU5	        [S        U/XgUUU,U(U*U+UU)5      u  n,n(n*n+n)[U        USUU&U1UUU/U5	        U%U   U2U"U   -  -   UU2U/-  -   -
  nB[W        UBU?U5      n4[Y        U1U<XXU45      n1U1U6U0-  ::  a  U0n1WBS:  nC[[        UCU;U1U0U#U$5      n5[]        U5UU2U/U;UU!U"U%U#U$5      u  n#n$n%n!n"n'U'[4        :X  a  U'n-  GOy[_        UU&U/UUU
U5      n'U'[        :w  a  U'n-  GOYU3=(       d    W@=(       d    U4S:*  =(       d    U5SL nDUD=(       a    U9(       + nEWD=(       a    U9=(       a    [G        U1U<5      U0:*  nFWE(       Ga  [        [7        [9        U#SS2SU24   5      SS9S[9        U15      -  :*  5      (       Gd  [         R`                  " [7        [9        U#SS2SU24   5      SS9SS9nGU1S-  nH[c        UGXEU!U2U"UHU%U$5	      n;U#SS2U4   U;-   n[7        [9        UU#SS2U4   -
  5      5      UU'   [7        [9        URK                  US5      U#SS2U4   RK                  US5      U#SS2SU24   -   -
  5      SS9USU& [         RL                  " U5      nAUUA   [9        SU-  5      ::  a  U%WA   nU!SS2UA4   nU"UA   n/On[O        U UUXE5      u  nn[         RF                  " [         RH                  " SU5      5      n/U&S-  n&[Q        UUUUUU/UUU5	        [S        U/XgUUU,U(U*U+UU)5      u  n,n(n*n+n)[U        USUU&U1UUU/U5	        []        WGUU2U/U;UU!U"U%U#U$5      u  n#n$n%n!n"n'U'[4        :X  a  U'n-  GO[_        UU&U/UUU
U5      n'U'[        :w  a  U'n-  OWF(       a  U0U::  a  [d        n-  O[G        SU0-  [g        U0U5      5      n1[g        U0U5      n0[         R                  " U[         R                  " U2[+        U!U%5      5      5      n2[i        UUU&U%U   U0U#SS2U4   U"U   U!SS2U4   U25	        [3        U2U!U"U%U#U$5      u  n!n"n%n#n$n'U'[4        :X  a  U'n-  O?U(       d  GM  U" U#SS2U4   U%U   U&U8U"U   U!SS2U4   5      nIUI(       d  GM  [j        n-  O   U#SS2U4   W;-   nU-[d        :X  a  U3(       a  [C        UU#SS2U4   -
  5      SU-  :  a  U&U:  a  [O        U UUXE5      u  nn[         RF                  " [         RH                  " SU5      5      n/U&S-  n&[Q        UUUUUU/UUU5	        [S        U/XgUUU,U(U*U+UU)5      u  n,n(n*n+n)[U        USUU&U0UUU/U5	        [!        U*SU, U(SU, [G        U2U5      U5      n.U+SS2U.4   nU*U.   nU)SS2U.4   nU(U.   n/[#        UU-UU&UUU/U5        UUUU/U&UUUUU-4
$ )z=
This subroutine performs the actual computations of COBYLA.
COBYLAr   Nr      r   g     @@Fg      ?g      ?
   axis   g?gư>g-C6?zTrust regionGeometry      ?gMbP?)6npzerossizer   r   absallisfiniteshapeminr   r%   minimummaximumr&   r	   r   r   anyisnanisposinffcratior
   rangegetcpenr   r   r   r   r   Ttiler#   r   r   maxappendreshapeargminr   r   r   r   r   r$   r!   r    r   argmaxr"   r   r   r   r   )Jcalcfciprintmaxfiltmaxfunamatbvecctolcweighteta1eta2ftargetgamma1gamma2rhobegrhoendconstrfxmaxhistcallbackxhistfhistchistconhistsolverAdistsqcpenminm_lconnum_constraintsm_nlconnum_vars	evaluatedconmatcvalsimsimifvalnfsubinfocfiltconfiltffiltxfiltnfiltinfokoptcstrvrhodeltacpenshortdratiojdrop_trgamma3maxtrtradequate_geogddnormprerefprerecpreremtrfailjactrem	ximproved
bad_trstepimprove_geo
reduce_rho	jdrop_geodelbar	terminatesJ                                                                             S/var/www/html/venv/lib/python3.13/site-packages/scipy/_lib/pyprima/cobyla/cobylb.pycobylbr      sp    EEEG F
"''!*bggfo./AXXbggaj1n%F G #.RWWT]AFggfoO&GwwqzH y6{a&(Vq[881}}A%%%FQJ..2;;q>""""D$D$1$$$$$6&A&&&&&&DyyG||G%v%%%%%|rxx~&(1CCCC;'7<f<<<<< =DFd$7AUE7G=-9IvtS$b' HHRZZ

7A 6?@Ehh89GHHRWWU^$EHHbggaj"''%.12EVTD$YwE#E , uVe}eFUmWC!T'N$KD!dvtVRAuf=9<<771:)#bhhqk2B2BBBr{{1~~66 !VUBueWdJJ CE::grzz%1FGHDFEH ZZ2::dVmS9:F KED El t64udCdS 2<D&$PT<?2G.dCw ''D 8Ic!YhY,.?$@qIQQZ[`QaMaab T)8_tH~5="&"2!WfW*((:!;''&():";h]KMM"NPTVVWVW 	
!VW* 1vak**E15E47# 39$ A,h"&&1fQ[6IGTUWXM6Y)Z"[[
 $-'vD!4s:;V SLE$ AxK 1$A'	!c!X+6F2F(GHF8 (199Xq3IQ[!))(A6Q		\9JJ4L *MST!VF9H		&!AayIdVm44G1Q %VQD	6ryyF34a!UAueUFGT6>udUV?@%PU?Dfg7W3ueUG UAq%P 8ntd8n'<<TE\AQRF 6640E< %FEJEs
" 
I
 ")QsCFH 6?xQUW\^_abdjlprvx{  ~B  6C2CtVT7++ %VRa!LG,& GvG!Gx47G
 5%5MLMS5F#5M
l s8Ic!YhY,6G,Hq#QUVYbchYiUi#ijj: 		(9SIXI5F+Ga"PWXYI 1WF	4vtT64QUVA AxK 1$A'	!c!X+6F2F(GHF8 (199Xq3IQ[!))(A6Q		\9JJ4L *MST!VF9H		&!AayIdVm44G1Q %VQD	6ryyF34a!UAueUFGT6>udUV?@%PU?Dfg7W3ueUG
 VR1eVL5>y&RVX]_`bcekmqswy|  C  6D2CtVT7++ %VRa!LG,&
 f}&c	6#v#67Ef%C ::grzz$8M'NOD662tH~sC8<LdS[n^defhpep^qswx5?fdTXZ]_c5d2FD$T7++ 8 Q[!14>2r4PX>[abcembm[noIy)y
 B 	AxK1ASH%%&&8K VQ<	6ryyF+,
a!UAueUFGL.6udQPQSXZ_afhmouw~.+ueUGV^VRaE6J 5%=%-T71CTJDagAdAQWF$KE 64Q5&9aE5%$FF    c
                 h
   UR                  5       nUR                  5       nUR                  5       nUR                  5       nU	R                  5       n	[        R                  " [        R                  " US5      [        R                  " US5      45      n
SnUb  [        R                  " U5      OSn[        R                  " US5      n[        R                  " US5      n[        (       Ga{  US:  d   eUS:  d   eUS:  d   e[        R                  " US5      U:X  a  [        R                  " US5      US-   :X  d   e[        R
                  " U5      [        R                  " U5      -  R                  5       (       a   e[        R                  " U5      US-   :X  aA  [        US[        R
                  " U5      -  [        R                  " U5      -  :  5      (       a   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                  " 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   X5      (       d   eXW:  a  US:  d   e[        n[        US-   5       GHH  n[!        X2XFUU	5      u  p$phpU["        :X  a    GO*[%        USU Xn   -
  U	5      nU b  U R&                  OU U
SS2SU24'   [%        X,S2SU24   [        R(                  " X,S2U4   US45      R&                  -
  U	5      R&                  U
SS2US24'   [+        XSS2U4   * UU5      n[-        UU5      * nXN   [        R                  " [        R.                  " SUSS2U4   [%        UU
5      -   5      5      -
  nUS:  a  US:  d    O7[        U[1        SU-  U-  [2        5      5      n[5        X4U5      U:X  d  GMI    O   [        (       aa  X3:  a  US:  d   eWUW-  -   S:  dH  U["        :X  d>  US:  a8  [        R6                  " UU5      S:  a  [        R                  " U5      (       a   eU$ )z
This function gets the penalty parameter CPEN so that PREREM = PREREF + CPEN * PREREC > 0.
See the discussions around equation (9) of the COBYLA paper.
r   r   Nr,   )copyr1   r2   r3   r   r<   isneginfr;   r=   r6   r5   rC   r4   r   r	   r?   r   r   r   rA   rB   r#   r   rD   r8   r   r   r:   )rL   rM   ri   rz   rj   ry   rm   rx   rk   rl   ra   itolrd   re   rg   ru   iterr   r   r   r   s                        r   r@   r@   2  s    [[]F99;D99;D
((*C99;D 	"''#q/27761#567AD #.RWWT]AFggfa(OwwsAH y!###1}}axxwwvq!_49KxZ[|9[[[HHV$r{{6'::??AAAAwwt}1,D1rxx~-D0AAABB	C Cwwt}1,S$"++VZJ[9[5\5\\\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|a'' D" hl#.8tSV9=/?+d $$ D(Odn4d;"&"2!WfW*((:!;''&():";h]KMM"NPTVVWVW 	
!VW* 1ak**E15 A,"&&1fQ[6IGTUWXM6Y)Z"[[ 
vz 4R&[617;<D%1G $T y|q((v%)T5F-F1FF!;a!?TZH[H[	\ \ Kr   c                 .   [         (       aM  [        R                  " U5      S:  d   e[        R                  " U S5      [        R                  " U5      :X  d   e[        R                  " U * SS9n[        R                  " U * SS9n[        U5      n[	        U5      n[        USU-  :  5      (       aO  XE:  aJ  [        R                  " [        R                  " US5      U-
  USU-  :  [        R                  S9nXT-
  U-  nOSn[         (       a  US:  d   eU$ )z
This function calculates the ratio between the "typical change" of F and that of CONSTR.
See equations (12)-(13) in Section 3 of the COBYLA paper for the definition of the ratio.
r   r,   r0   r   )whereinitial)r   r1   r3   r8   rC   r;   r:   inf)ri   rm   cmincmaxfminfmaxdenomrs           r   r>   r>     s     ywwt}!!!wwvq!RWWT]222 666'"D666'"Dt9Dt9D
4#*$+rzz$*T1d
9JTVTZTZ[ [E! yAvvHr   )6__doc__numpyr1   common.checkbreakr   common.constsr   r   r   r   common.infosr	   r
   r   r   r   common.evaluater   common.historyr   common.linalgr   r   r   r   r   r   common.messager   r   r   common.ratior   common.redrhor   common.selectxr   r   updater   r   r    geometryr!   r"   trustregionr#   r$   
initializer%   r&   r   r@   r>    r   r   <module>r      s`     . @ @8 8 & % M M 1 1 ! " . 3 3 ) & )QGjqh$r   