
    9i                     t    S r SSKJs  Jr  SSKJrJr  S rS r	SS jr
S rS rS	 rS
 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_dtypec                     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       W/var/www/html/land-doc-ocr/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   Fg        r   Br   )upperr   )filttrimfirstilasts        r   _trim_zerosr4   3   s~    E::<D
d{ABw		 
 ::a=D
d{ddABwax	 
 d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)r0   r   r   )xpx
atleast_ndr7   
ValueErrorr4   r   r   r
   )c_or_rr   s     r   _poly1dr=   J   sf     ^^Fr2F{{Q677c*F||A!QCv||4Mr   c                H    UR                  U5      nU  H
  nX1-  U-   nM     U$ )z'Old-style polynomial, `np.polyval`
    )
zeros_like)pxr   ypvs        r   polyvalrD   W   s,     	aAEBJ Hr   c          
         UR                  U 5      n [        R                  " U SUS9n U R                  S   S:X  a  g[	        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   r6   r   g      ?convolverF   r   r   full)moder   T)copy)r   r9   r:   r   r   scipy.signalrF   r
   ones	ones_likestackr	   
complex128allsortr   conjr   )seq_of_zerosr   convolve_funcdtr(   onezeror   s           r   polyrY   b   s-   ::l+L>>,Q2>L!! 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   rF   r   rG   )r=   r   rL   rF   )a1a2r   rU   vals        r   polymulr^      s;    R!3 B
D1M:

CJr   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   r6   rH   )r   .T)	broadcastr   r   r   .)r	   r
   astyper   r9   r:   
isinstancetuplelistr   reshaper   r7   r   range)rA   cr   r_   c0_r2   s          r   npp_polyvalrl      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   r6   rH   z,x.ndim must be < r.ndim when tensor == Falser   )axis)r9   r:   rd   re   rf   r   rg   r   r7   r;   prod)rA   rr   r_   s       r   npp_polyvalfromrootsrq      s    qqR(A !UT\""JJqMJJq''D166M12	
166	GHH7715q7!!r   )fb)__doc__scipy._lib.array_api_extra_libarray_api_extrar9   scipy._lib._array_apir   r   r   r*   r4   r=   rD   rY   r^   rl   rq    r   r   <module>ry      sL    ) ( >
<4.	:	  %) " .2 "r   