
    -i$                         S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJr  S
SKrS rS rg)z
This module contains subroutines for initialization.

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.
   )checkbreak_con)	DEBUGGINGREALMAX)INFO_DEFAULT)evaluate)savehist)inv)fmsg)savefilt    Nc                    SnSn[         R                  " U5      nUb  [         R                  " U5      OSnUU-
  n[         R                  " U
5      n[        (       aw  US:  d
   SU 35       eUS:  d
   SU 35       e[        U5      S::  d
   S	U 35       e[	        [         R
                  " U
5      5      (       d
   S
U 35       eU	S:  d
   SU 35       e[        n[         R                  " UUS-   5      U	-  nU
USS2U4'   [         R                  " U5      U	-  n[         R                  " US-   [        S9n[         R                  " US-   5      [        -   n[         R                  " US-   5      [        -   n[         R                  " UUS-   45      [        -   n[        US-   5       GH5  nUSS2U4   R                  5       nUS:X  a  UnUn Un!O#US-
  nUU==   U	-  ss'   [        U UUXE5      u  n n![         R                  " [         R                  " SU!5      5      n"[!        USUUU	U UU"U!5	        [#        UUUU UU"UU!U5	        SUU'   U UU'   U!USS2U4'   U"UU'   [%        UUU"UU UU5      n#U#[        :w  a  U#n  OgUU:  d  M  UU   UU   :  d  M  UU   UU   sUU'   UU'   UU   UU   sUU'   UU'   USS2UU/4   USS2UU/4'   UUSS2U4'   U	* UUSUS-   24'   GM8     [         R&                  " U5      n$UR	                  5       (       a  [)        USS2SU24   5      n[        (       Ga  U$U::  d
   SU 35       eUR                  US-   :X  d
   SU 35       eUR*                  UUS-   4:X  d
   SU 35       e[         R,                  " U5      R/                  5       (       d)  [         R0                  " U5      R/                  5       (       a
   SU 35       eUR                  US-   :X  a[  [/        US:  5      (       dH  [/        [         R,                  " U5      5      (       d$  [/        [         R2                  " U5      5      (       a
   SU 35       eUR                  US-   :X  aH  [/        [         R,                  " U5      5      (       d$  [/        [         R2                  " U5      5      (       a
   SU 35       eUR*                  UUS-   4:X  d
   SU 35       e[         R
                  " U5      R	                  5       (       d
   SU 35       e[	        [         R                  " [        USS2SU24   5      SS9S:  5      (       d
   SU 35       eUR*                  UU4:X  d
   SU 35       e[         R
                  " U5      R	                  5       (       d
   SU 35       e[         R4                  " USS2SU24   U-  [         R                  " U5      SSS9(       d  [	        U5      (       a   SS SU 35       eUUUUUUU$U4$ ) zY
This subroutine does the initialization concerning X, function values, and
constraints.
COBYLA
INITIALIZENr   zM >= 0    zN >= 1    z$IPRINT is 0, 1, -1, 2, -2, 3, or -3 zX0 is finite zRHOBEG > 0 )dtypeInitializationTzNF <= MAXFUN zEVALUATED.size == Num_vars + 1 zCONMAT.shape = [M, N+1] z!CONMAT does not contain NaN/-Inf zOCVAL.shape == Num_vars+1 and CVAL does not contain negative values or NaN/+Inf z2FVAL.shape == Num_vars+1 and FVAL is not NaN/+Inf zSIM.shape == [N, N+1] zSIM is finite axiszSIM(:, 1:N) has no zero column zSIMI.shape == [N, N] zSIMI is finite g?)rtolatolzSIMI = SIM(:, 1:N)^ )npsizer   absallisfiniter   eyezerosboolr   rangecopyr   maxappendr
   r   r   count_nonzeror	   shapeisnananyisneginfisposinfallclose)%calcfciprintmaxfunconstr0amatbvecctolf0ftargetrhobegx0xhistfhistchistconhistmaxhistsolversrnamenum_constraintsm_lconm_nlconnum_varsinfosimsimi	evaluatedfvalcvalconmatkxjfconstrcstrvsubinfonfs%                                        W/var/www/html/venv/lib/python3.13/site-packages/scipy/_lib/pyprima/cobyla/initialize.pyinitxfcrS      s[    FF ggg&O".RWWT]AF&Gwwr{H y!#7wvh%77#1}0x00}6{aP#Gx!PP 2;;r?##=}VH%==#z1[11z D &&8A:
&
/CC8 66(f$D !40I 88HQJ')D88HQJ')DXX
34w>F 8a< 8!!#6AAFAAaDFND GT@IAvryyF+, 	V%vq&!QvN 	!UAueUFGL 	!Qq!tQ !E4GQGl"D x<DGd8n4&*8nd1g#DGT(^&*8nd1g#DGT(^'-a(A.>'?F1q(m#$ C8"7C4AaC4LM !P 
		)	$B}}3q)8)|$% yV|5}VH55|~~A-Y1PQWPX/YY- ||A>>cBZ[aZb@cc>HHV$((**bkk&.A.E.E.G.GvLmntmuJvvHyyHqL(#dQh--3rxxPT~CVCVZ]^`^i^ijn^oZpZp  	N  vE  FL  EM  tN  	Nq yyHqL(#bhhtn2E2ER[[Y]M^I_I_  	`  eW  X^  W_  c`  	``yyXx!|44W8Nvh6WW4{{3##%%@x'@@%266#c!YhY,/0q9A=>>jBabhai@jj>zzh11S5J6(3SS1{{4 $$&&B/&(BB&{{3q)8)|,t3RVVH5ECVYZbefobpbp  	V  uH  IK  HL  LM  NT  MU  sV  	VpfdCtR==    c                 J
   U R                   S   nUR                   S   n[        U	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:X  d   e[        R                  " U5      U:X  d   e[        R                  " U
S5      U:X  a  [        R                  " U
S5      U:X  d   e[        R                  " U	5      U:X  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5      US-   :X  d   eSn[        US-   5       HQ  nXo   (       d  M  X:  a  USS2U4   USS2U4   -   nO	USS2U4   n[        X?   XXO   UXXU SS2U4   U5      u  ppnMS     [        (       Ga  X::  d   e[        R                  " US5      U:X  a  [        R                  " US5      U:X  d   e[        R
                  " USS2SU24   5      [        R                  " USS2SU24   5      -  R                  5       (       a   e[        R                  " U5      U:X  d   e[        USU S[        R
                  " USU 5      -  [        R                  " USU 5      -  :  5      (       a   e[        R                  " U
S5      U:X  a  [        R                  " U
S5      U:X  d   e[        R
                  " U
SS2SU24   5      R                  5       (       a   e[        R                  " U	5      U:X  d   e[        [        R
                  " U	SU 5      [        R                  " U	SU 5      -  5      (       a   eU$ )aK  
This function initializes the filter (XFILT, etc) that will be used when selecting
x at the end of the solver.
N.B.:
1. Why not initialize the filters using XHIST, etc? Because the history is empty if
the user chooses not to output it.
2. We decouple INITXFC and INITFILT so that it is easier to parallelize the former
if needed.
r   r   Nr   )r'   lenr   r   r   r(   r*   r)   r+   r   r   r$   r   r"   r   )rI   r3   cweightrH   rG   rD   rF   cfiltconfiltffiltxfiltr?   rB   maxfiltnfiltirK   s                    rR   initfiltr_      sv    ll1oOyy|H%jG y!###1}}!||www"o5"'''1:MQX:XXXwwu~(((wwua H,1Bg1MMMwwu~(((wwvq!_49KxZ[|9[[[HHV$r{{6'::??AAAAwwt}1,SBHHTN@RUWU`U`aeUf@f9f5g5gggwwt}1,S$"++VZJ[9[5\5\\\wwsA(*rwwsA(Q,/NNN{{3##%%%%266#c!YhY,/0q9A=>>>>wwy!X\111 E8A:<<|1IAxK 001I2:47DSWSZ\]_dmr  |B  CD  FG  CG  |H  JQ  3R/E%  ywww"o5"'''1:MQX:XXXHHWQY/02;;wq&5&y?Q3RRWWYYYYwwu~(((uVe}q288E&5M+B'BR[[QVW]X]Q^E_'__````wwua H,1Bg1MMMHHU1fuf9-.335555wwu~(((rxxfu.U6E]1KKLLLLLrT   )__doc__common.checkbreakr   common.constsr   r   common.infosr   common.evaluater   common.historyr   common.linalgr	   common.messager
   common.selectxr   numpyr   rS   r_    rT   rR   <module>rk      s4    / . ' & %  ! % }>@ArT   