
    Yh                     p    d Z ddlmc mZ ddlmZmZ d Zd Z	ddZ
d Zd	 Zd
 Zd ZdddZdddZdS )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                    |                     |           } |                    | j        d          r?t          |           |                    |           z   |                    |           dz  z   }n| }|                    |          }| |         S )Ncomplex floating   )asarrayisdtypedtypeabsrealimagargsort)arrxpsorteridxss       i/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/signal/_polyutils.py_sort_cmplxr      s{     **S//C	zz#)/00 SBGGCLL(2773<<?:::fDt9    c                <   | j         d         dk     r|                    g | j                  S t          |dd          }|r ||           S | j         d         }|                    |dz
  |dz
  d| j                  }|                    | dd                    | d         z  |dddf<   t          |j        d	          r|j                            |          S ddl	}|                    |j                            |                    |                              S )
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    z!}qzz"DJz///GT**I  y 	
1A
q1ua!er44AQRR!!!DG+AaaaeH ry)$$ <y  ###zz")++BJJqMM::;;;r   fbc                     d}|                                 }d|v r| D ]}|dk    r n|dz   }| j        d         }d|v r| d d d         D ]}|dk    r n|dz
  }| ||         S )Nr   Fg        r   Br   )upperr   )filttrimfirstilasts        r   _trim_zerosr5   3   s    E::<<D
d{{ 	" 	"ABww	:a=D
d{{ddd 	  	 ABwwaxd
r   c                    t          j        | d|          } | j        dk    rt          d          t	          | d          } | j        d         dk    r|                    dg| j                  } | S )zM Constructor of np.poly1d object from an array of coefficients (r=False)
    r   ndimr   zPolynomial must be 1d only.f)r1   r   r   )xpx
atleast_ndr8   
ValueErrorr5   r   r   r
   )c_or_rr   s     r   _poly1dr>   J   su     ^Fr222F{Q6777c***F|A!QCv|44Mr   c                J    |                     |          }| D ]
}||z  |z   }|S )z( Old-style polynomial, `np.polyval`
    )
zeros_like)pxr   ypvs        r   polyvalrE   W   s8     	aA  EBJHr   c          
      ,   |                     |           } t          j        | d|          } | j        d         dk    rdS t	          |dd           }|ddlm} | j        }|                    d|          }|	                    | d                   }| D ]&} |||
                    || f          d	
          }'|                    |j        d          r|                     | |j                  }|                    |                    |                    |                    |                    |                    |                    |                              k              r*|                     |                    |          d          }|S )Nr   r7   r   g      ?convolverG   r   r   full)moder   T)copy)r   r:   r;   r   r   scipy.signalrG   r
   ones	ones_likestackr	   
complex128allsortr   conjr   )seq_of_zerosr   convolve_funcdtr(   onezeror   s           r   polyrZ   b   s~   ::l++L>,Q2>>>L!!!s B
D11M::::::		B
BA
,,|A
'
'C B BM!RXXsTEl33&AAA	zz!'-.. 2

<r}
==66"''"''%..))RWWRWWRWWU^^5L5L-M-MMNN 	2

2771::D
11AHr   c                    t          | |          t          ||          }} t          |dd           }|ddlm}  || |          }|S )N)r   rG   r   rH   )r>   r   rM   rG   )a1a2r   rV   vals        r   polymulr_      sf    RB!3!3!3B B
D11M::::::
-B

CJr   T)tensorc                    |                     |j        d          r#|                    |t          |                    }t	          j        |d|          }t          | t          t          z            r|	                    |           } |r&|
                    ||j        d| j        z  z             }t          |d         | d|          \  }}t          d|j        d	         dz             D ]}|| d
f         || z  z   }|S )Nintegralr   r7   rI   )r   .T)	broadcastr   r   r   .)r	   r
   astyper   r:   r;   
isinstancetuplelistr   reshaper   r8   r   range)rB   cr   r`   c0_r3   s          r   npp_polyvalrm      s    	zz!':&& /IIa)"--..qqR(((A!UT\"" JJqMM 3JJq17T!&[022qz1<<<EB1agaj1n%%  r3wZ"Q$Ir   c                X   t          j        |d|          }t          | t          t          z            r|                    |           } |r'|                    ||j        d| j        z  z             }n| j        |j        k    rt          d          |
                    | |z
  d          S )Nr   r7   rI   z,x.ndim must be < r.ndim when tensor == Falser   )axis)r:   r;   re   rf   rg   r   rh   r   r8   r<   prod)rB   rr   r`   s       r   npp_polyvalfromrootsrr      s    qqR(((A !UT\"" JJqMM IJJq!'D16M122	
16		GHHH771q5q7!!!r   )r+   )__doc__scipy._lib.array_api_extra_libarray_api_extrar:   scipy._lib._array_apir   r   r   r*   r5   r>   rE   rZ   r_   rm   rr    r   r   <module>ry      s     ) ( ( ( ( ( ( ( ( > > > > > > > >
 
 
< < <4   .	 	 	    :	 	 	  %)     " .2 " " " " " " "r   