
    Bpjv                          S r SSKrSSKJs  Jr  SSKJrJrJ	r	J
r
Jr  SSKJr  S rS rSS jrSS jrS	 rS
 rS rS rSS.S jrSS.S jrSS.S jrg)a0  Partial replacements for numpy polynomial routines, with Array API compatibility.

This module contains both "old-style", np.poly1d, routines from the main numpy
namespace, and "new-style", np.polynomial.polynomial, routines.

To distinguish the two sets, the "new-style" routine names start with `npp_`
    N)
xp_promotexp_default_dtypexp_size	xp_deviceis_numpy)RankWarningc                     UR                  U 5      n UR                  U R                  S5      (       a3  [        U 5      UR	                  U 5      -   UR                  U 5      S-  -   nOU nUR                  U5      nX   $ )Ncomplex floating   )asarrayisdtypedtypeabsrealimagargsort)arrxpsorteridxss       S/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/signal/_polyutils.py_sort_cmplxr      si     **S/C	zz#))/00SBGGCL(2773<?:::fD9    c                    U R                   S   S:  a  UR                  / U R                  S9$ [        USS5      nU(       a  U" U 5      $ U R                   S   nUR	                  US-
  US-
  SU R                  S9nUR                  U SS 5      * U S   -  USS2S4'   [        UR                  S	5      (       a  UR                  R                  U5      $ SSK	nUR                  UR                  R                  UR                  U5      5      5      $ )
z(numpy.roots, best-effor replacement
    r      r   rootsN   )kr   eigvals)
shaper   r   getattreyefliphasattrlinalgr!   numpy)coefr   	root_funcnanps         r   	polyrootsr.      s     zz!}qzz"DJJz//GT*I  	

1A
q1ua!er4AQR!!DG+AaeH ryy)$$yy  ##zz"))++BJJqM:;;r   c                     SnUR                  5       nSU;   a  U  H  nUS:w  a    O	US-   nM     U R                  S   nSU;   a  U S S S2    H  nUS:w  a    O	US-
  nM     XU $ )Nr   F        r   Br   )upperr"   )filttrimfirstilasts        r   _trim_zerosr9   8   s~    E::<D
d{ABw		 
 ::a=D
d{ddABwax	 
 dr   c                 .   [        XSUS9u  pUc%  UR                  U R                  5      R                  n[	        U5      (       a  SSKJn  U" XUS9$ [        UR                  SS 5      =n(       a  U" XUS9$ UR                  R                  U SS	9u  pgnXs:  n	[        R                  " X4S
 SS9nUR                  UR                  S   5      U-  n
UR                  U
-  UR                  -  U-  nUR                  U	5      nUR!                  / 5      nXX4$ )NTforce_floatingr   r   )lstsq)condr=   rcondF)full_matricesc                     SU -  $ )N      ? )xs    r   <lambda>_lstsq.<locals>.<lambda>`   s    26r   r1   )
fill_value)r   finfor   epsr   scipy.linalgr=   r#   r'   svdxpxapply_wherer$   r"   Tcount_nonzeror   )r,   br   r@   s_lstsq
lstsq_funcusvtsing_val_masksigmarE   rank	residualss                 r   _lstsqr[   O   s   a4B7DA}!%%||1q%((ryy'48	8	8!e,, 99==%=8b	OOM41AbQqwwqz"Q&DD5L133". JJrN	T$$r   c                    [         R                  " U SUS9n U R                  S:  a  [        S5      e[	        U SS9n U R
                  S   S:X  a  UR                  S/U R                  S9n U $ )zLConstructor of np.poly1d object from an array of coefficients (r=False)
    r   ndimr   zPolynomial must be 1d only.f)r5   r   r   )rM   
atleast_ndr^   
ValueErrorr9   r"   r   r   )c_or_rr   s     r   _poly1drc   p   sf     ^^Fr2F{{Q677c*F||A!QCv||4Mr   c                    UR                  U 5      n UR                  U5      nUR                  U5      n[        U R                  S   5       H  nX1-  XS4   -   nM     U$ )z'Old-style polynomial, `np.polyval`
    r   .)r   
zeros_likeranger"   )prE   r   yjs        r   polyvalrj   }   s\     	

1A


1A
aA 1771:EAfI Hr   c          
         UR                  U 5      n [        R                  " U SUS9n U R                  S   S:X  a)  UR                  SUR	                  U 5      R
                  S9$ [        USS 5      nUc  SSKJn  U R
                  nUR                  SUS9nUR                  U S   5      nU  H  nU" XAR                  XV* 45      S	S
9nM     UR                  UR
                  S5      (       a  UR                  XR                  S9nUR                  UR                  UR!                  U5      5      UR                  UR!                  UR#                  U5      5      5      :H  5      (       a  UR                  UR	                  U5      SS9nU$ )Nr   r]   r   rC   r   convolverl   r   full)moder
   T)copy)r   rM   r`   r"   r   r   r#   scipy.signalrl   ones	ones_likestackr   
complex128allsortr   conj)seq_of_zerosr   convolve_funcdtr,   onezeror   s           r   polyr      sL   ::l+L>>,Q2>L!!zz#RWW\%:%@%@zAA B
D1M:			B
BA
,,|A
'C!XXsEl3&A  
zz!''-..

<}}
=66"''"''%.)RWWRWWRWWU^5L-MMNN

2771:D
1AHr   c                d    [        XS9[        XS9p[        USS 5      nUc  SSKJn  U" X5      nU$ )N)r   rl   r   rm   )rc   r#   rr   rl   )a1a2r   r{   vals        r   polymulr      s;    R!3 B
D1M:

CJr   r?   c          	         [        U5      S-   nUR                  U 5      n UR                  U5      n[        XSUS9u  pUS:  a  [        S5      eU R                  S:w  a  [        S5      e[        U 5      S:X  a  [        S5      eUR                  S:  d  UR                  S:  a  [        S	5      eU R                  S   UR                  S   :w  a  [        S
5      eUc5  U R                  S   UR                  U R                  5      R                  -  nUR                  UR                  XPR                  [        U 5      S95      nU S S 2S 4   US S S 24   -  nUR                  UR                  Xw-  SS95      nXx-  n[!        XqXCS9u  ppU	R"                  U-  R"                  n	X:w  a  Sn[$        R&                  " U[(        SS9  U	$ )Nr   Tr;   r   zexpected deg >= 0zexpected 1D vector for xzexpected non-empty vector for xr   zexpected 1D or 2D array for yz$expected x and y to have same length)r   deviceaxis)r@   r   z!Polyfit may be poorly conditioned)
stacklevel)intr   r   ra   r^   	TypeErrorr   r"   rI   r   rJ   r%   aranger   sqrtsumr[   rO   warningswarnr   )rE   rh   degr   r@   orderpowerslhsscalec_rY   msgs                r   polyfitr      s   HqLE


1A


1Aa4B7DA Qw,--vv{233qzQ9::vvzQVVaZ788wwqzQWWQZ>?? }
RXXagg.222 WWRYYuGGIaLYIJF
AtG*tQw
'C GGBFF391F-.ELC36MA$	
uA }1c;15Hr   T)tensorc                   UR                  UR                  S5      (       a  UR                  U[        U5      5      n[        R
                  " USUS9n[        U [        [        -  5      (       a  UR                  U 5      n U(       a+  UR                  XR                  SU R                  -  -   5      n[        US   U SUS9u  pE[        SUR                  S	   S-   5       H  nX* S
4   X@-  -   nM     U$ )Nintegralr   r]   rn   )r   .T)	broadcastr   r   r   .)r   r   astyper   rM   r`   
isinstancetuplelistr   reshaper"   r^   r   rf   )rE   r   r   r   c0r   r7   s          r   npp_polyvalr      s    	zz!'':&&IIa)"-.qqR(A!UT\""JJqMJJq77T!&&[02qz1<EB1aggaj1n%r3wZ"$ &Ir   c                \   [         R                  " USUS9n[        U [        [        -  5      (       a  UR                  U 5      n U(       a,  UR                  XR                  SU R                  -  -   5      nO%U R                  UR                  :  a  [        S5      eUR                  X-
  SS9$ )Nr   r]   rn   z,x.ndim must be < r.ndim when tensor == Falser   r   )rM   r`   r   r   r   r   r   r"   r^   ra   prod)rE   rr   r   s       r   npp_polyvalfromrootsr      s    qqR(A !UT\""JJqMJJq''D166M12	
166	GHH7715q7!!r   )fb)NN)__doc__r   scipy._external.array_api_extra	_externalarray_api_extrarM   scipy._lib._array_apir   r   r   r   r   numpy.exceptionsr   r   r.   r9   r[   rc   rj   r   r   r   r   r   rD   r   r   <module>r      sl     - -  )
<4.%B	:	 %) '\ %) " .2 "r   