Ë
    çÿæià   ã                   óÆ   — d Z ddlZddlmc mZ ddlmZmZm	Z	m
Z
mZ 	 ddlmZ d„ Zd„ Zdd„Zdd„Zd	„ Zd
„ Zd„ Zd„ Zddœd„Zddœd„Zddœd„Zy# e$ r	 ddlmZ Y Œ:w xY w)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                 óò   — |j                  | «      } |j                  | j                  d«      r3t        | «      |j	                  | «      z   |j                  | «      dz  z   }n| }|j                  |«      }| |   S )Núcomplex floatingé   )ÚasarrayÚisdtypeÚdtypeÚabsÚrealÚimagÚargsort)ÚarrÚxpÚsorterÚidxss       úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/scipy/signal/_polyutils.pyÚ_sort_cmplxr      sh   € ð �*‰*�S‹/€CØ	‡z�z�#—)‘)Ð/Ô0Ü�S“˜BŸG™G C›LÑ(¨2¯7©7°3«<¸©?Ñ:‰àˆà�:‰:�fÓ€DØˆt‰9Ðó    c                ó  — | j                   d   dk  r|j                  g | j                  ¬«      S t        |dd«      }|r || «      S | j                   d   }|j	                  |dz
  |dz
  d| j                  ¬«      }|j                  | dd «       | d   z  |dd…df<   t        |j                  d	«      r|j                  j                  |«      S ddl	}|j                  |j                  j                  |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�z�!�}�qÒØ�z‰z˜" D§J¡JˆzÓ/Ð/ä˜˜G TÓ*€IÙñ ˜‹Ðð 	�
‰
�1‰€AØ
�‰ˆq�1‰u�a˜!‘e˜r¨¯©ˆÓ4€AØ—‘˜˜Q˜R˜Ó!Ð! D¨¡GÑ+€A‚aˆ€e�Hô ˆr�y‰y˜)Ô$Ø�y‰y× Ñ  Ó#Ð#ãØ�z‰z˜"Ÿ)™)×+Ñ+¨B¯J©J°q«MÓ:Ó;Ð;r   c                 ó¶   — d}|j                  «       }d|v r| D ]  }|dk7  r n|dz   }Œ | j                  d   }d|v r| d d d…   D ]  }|dk7  r n|dz
  }Œ | || S )Nr   ÚFç        r   ÚBr   )Úupperr"   )ÚfiltÚtrimÚfirstÚiÚlasts        r   Ú_trim_zerosr9   <   s€   € Ø€EØ�:‰:‹<€DØ
ˆd�{ÛˆAØ�BŠwÙà ™	‘ð	 ð
 �:‰:�a‰=€DØ
ˆd�{Ø‘d˜�d”ˆAØ�BŠwÙà˜a‘x‘ð	 ð
 ��dÐÐr   c                 ó”  — t        | |d|¬«      \  } }|€L|j                  | j                  «      j                  t	        | j
                  d   | j
                  d   «      z  }t        |«      rddlm}  || ||¬«      S t        |j                  dd «      x}r || ||¬	«      S |j                  j                  | d
¬«      \  }}}||kD  }	t        j                  |	|fd„ d¬«      }|j                  |j
                  d   «      |z  }
|j                  |
z  |j                  z  |z  }|j!                  |	«      }|j#                  g «      }||||fS )NT©Úforce_floatingr   r   éþÿÿÿr   )Úlstsq)Úcondr>   ©ÚrcondF)Úfull_matricesc                 ó   — d| z  S )Nç      ð?© )Úxs    r   Ú<lambda>z_lstsq.<locals>.<lambda>d   s   € ¸2Àº6r   r1   )Ú
fill_value)r   Úfinfor   ÚepsÚmaxr"   r   Úscipy.linalgr>   r#   r'   ÚsvdÚxpxÚapply_wherer$   ÚTÚcount_nonzeror   )r,   Úbr   rA   Ús_lstsqÚ
lstsq_funcÚuÚsÚvtÚsing_val_maskÚsigmarF   ÚrankÚ	residualss                 r   Ú_lstsqr\   S   s1  € Ü�a˜¨4°BÔ7�D€A€qà€}Ø—‘˜Ÿ™Ó!×%Ñ%¬¨A¯G©G°B©K¸¿¹À¹Ó(EÑEˆä�„|Ý1Ù�q˜! %Ô(Ð(Ü˜rŸy™y¨'°4Ó8Ð	8ˆÐ	8á˜!˜Q eÔ,Ð,ð —9‘9—=‘= °%�=Ó8‰ˆˆ1ˆbà˜E™	ˆÜ�O‰O˜M¨A¨4Ñ1AÈbÔQˆà—‘�q—w‘w˜q‘zÓ" QÑ&ˆØ�D‰D�5‰L˜1Ÿ3™3Ñ Ñ"ˆà×Ñ Ó.ˆð —J‘J˜r“Nˆ	Ø�)˜T 1Ð$Ð$r   c                óä   — t        j                  | d|¬«      } | j                  dkD  rt        d«      ‚t	        | d¬«      } | j
                  d   dk(  r|j                  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)r5   r   r   )rN   Ú
atleast_ndr_   Ú
ValueErrorr9   r"   r   r   )Úc_or_rr   s     r   Ú_poly1drd   t   sf   € ô �^‰^˜F¨¨rÔ2€FØ‡{�{�Q‚ÜÐ6Ó7Ð7Ü˜ cÔ*€FØ‡|�|�A�˜!ÒØ—‘˜Q˜C v§|¡|�Ó4ˆØ€Mr   c                óÀ   — |j                  | «      } |j                  |«      }|j                  |«      }t        | j                  d   «      D ]  }||z  | |df   z   }Œ |S )z( Old-style polynomial, `np.polyval`
    r   .)r   Ú
zeros_likeÚranger"   )ÚprF   r   ÚyÚjs        r   Úpolyvalrk   �   s`   € ð 	�
‰
�1‹€AØ
�
‰
�1‹€AØ
�‰�aÓ€Aô �1—7‘7˜1‘:ÖˆØ�‰E�A�a˜�f‘IÑ‰ð à€Hr   c          
      ó   — |j                  | «      } t        j                  | d|¬«      } | j                  d   dk(  r,|j                  d|j	                  | «      j
                  ¬«      S t        |dd «      }|€ddlm} | j
                  }|j                  d|¬«      }|j                  | d   «      }| D ]  } |||j                  || f«      d	¬
«      }Œ! |j                  |j
                  d«      rž|j                  | |j                  ¬«      }|j                  |j                  |j!                  |«      «      |j                  |j!                  |j#                  |«      «      «      k(  «      r"|j                  |j	                  |«      d¬«      }|S )Nr   r^   r   rD   r   Úconvolve©rm   ©r   Úfull)Úmoder
   T)Úcopy)r   rN   ra   r"   r   r   r#   Úscipy.signalrm   ÚonesÚ	ones_likeÚstackr   Ú
complex128ÚallÚsortr   Úconj)Úseq_of_zerosr   Úconvolve_funcÚdtr,   ÚoneÚzeror   s           r   Úpolyr€   �   sL  € à—:‘:˜lÓ+€LÜ—>‘> ,°Q¸2Ô>€Là×Ñ˜!Ñ Ò!Ø�z‰z˜# R§W¡W¨\Ó%:×%@Ñ%@ˆzÓAÐAô ˜B 
¨DÓ1€MØÐÝ:à	×	Ñ	€BØ
�‰�˜BˆÓ€AØ
�,‰,�| A‘Ó
'€CÛˆÙ˜!˜RŸX™X s¨T¨E lÓ3¸&ÔA‰ð ð 
‡z�z�!—'‘'Ð-Ô.à—
‘
˜<¨r¯}©}�
Ó=ˆØ�6‰6�"—'‘'˜"Ÿ'™' %›.Ó)¨R¯W©W°R·W±W¸R¿W¹WÀU»^Ó5LÓ-MÑMÔNØ—
‘
˜2Ÿ7™7 1›:¨D�
Ó1ˆAà€Hr   c                óv   — t        | |¬«      t        ||¬«      }} t        |dd «      }|€ddlm}  || |«      }|S )N)r   rm   r   rn   )rd   r#   rs   rm   )Úa1Úa2r   r|   Úvals        r   Úpolymulr…   ­   sC   € Ü�R˜BÔ¤¨°Ô!3ˆ€Bô ˜B 
¨DÓ1€MØÐÝ:á
˜˜BÓ
€CØ€Jr   r@   c          	      óª  — t        |«      dz   }|j                  | «      } |j                  |«      }t        | |d|¬«      \  } }|dk  rt        d«      ‚| j                  dk7  rt        d«      ‚t        | «      dk(  rt        d«      ‚|j                  dk  s|j                  dkD  rt        d	«      ‚| j                  d   |j                  d   k7  rt        d
«      ‚|€5| j                  d   |j                  | j                  «      j                  z  }|j                  |j                  || j                  t        | «      ¬«      «      }| d d …d f   |d d d …f   z  }|j                  |j                  ||z  d¬«      «      }||z  }t!        ||||¬«      \  }	}
}}
|	j"                  |z  j"                  }	||k7  rd}t%        j&                  |t(        d¬«       |	S )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)rA   r   z!Polyfit may be poorly conditioned)Ú
stacklevel)Úintr   r   rb   r_   Ú	TypeErrorr   r"   rI   r   rJ   r%   Úaranger   ÚsqrtÚsumr\   rP   ÚwarningsÚwarnr   )rF   ri   Údegr   rA   ÚorderÚpowersÚlhsÚscaleÚcÚ_rZ   Úmsgs                r   Úpolyfitrš   º   s¨  € ä�‹H�q‰L€EØ
�
‰
�1‹€AØ
�
‰
�1‹€AÜ�a˜¨4°BÔ7�D€A€qð ˆQ‚wÜÐ,Ó-Ð-Ø‡v�v�‚{ÜÐ2Ó3Ð3Üˆqƒz�Q‚ÜÐ9Ó:Ð:Ø‡v�v�‚z�Q—V‘V˜a’ZÜÐ7Ó8Ð8Ø‡w�wˆq�z�Q—W‘W˜Q‘ZÒÜÐ>Ó?Ð?ð €}Ø—‘˜‘
˜RŸX™X a§g¡gÓ.×2Ñ2Ñ2ˆð �W‰W�R—Y‘Y˜u¨A¯G©G¼IÀa»L�YÓIÓJ€FØ
ŠAˆtˆG‰*˜˜t¢Q˜w™Ñ
'€Cð �G‰G�B—F‘F˜3 ™9¨1�FÓ-Ó.€EØˆ5�L€Cä˜3 ¨°2Ô6�M€A€qˆ$�Ø	
�‰ˆu‰�‰€Að ˆu‚}Ø1ˆÜ�‰�cœ;°1Õ5à€Hr   T)Útensorc                óØ  — |j                  |j                  d«      r|j                  |t        |«      «      }t	        j
                  |d|¬«      }t        | t        t        z  «      r|j                  | «      } |r,|j                  ||j                  d| j                  z  z   «      }t        |d   | d|¬«      \  }}t        d|j                  d	   dz   «      D ]  }|| d
f   || z  z   }Œ |S )NÚintegralr   r^   ro   )r   .T)Ú	broadcastr   r   r   .)r   r   Úastyper   rN   ra   Ú
isinstanceÚtupleÚlistr   Úreshaper"   r_   r   rg   )rF   r—   r   r›   Úc0r˜   r7   s          r   Únpp_polyvalr¥   è   sÍ   € Ø	‡z�z�!—'‘'˜:Ô&Ø�I‰I�aÔ)¨"Ó-Ó.ˆä�‰�q˜q RÔ(€AÜ�!”UœT‘\Ô"Ø�J‰J�q‹MˆÙØ�J‰J�q˜1Ÿ7™7 T¨!¯&©&¡[Ñ0Ó2ˆä�q˜‘z 1°¸Ô<�E€BˆÜ�1�a—g‘g˜a‘j 1‘nÖ%ˆØ�ˆr�3ˆw‰Z˜"˜Q™$Ñ‰ð &à€Ir   c                óT  — t        j                  |d|¬«      }t        | t        t        z  «      r|j                  | «      } |r-|j                  ||j                  d| j                  z  z   «      }n$| j                  |j                  k\  rt        d«      ‚|j                  | |z
  d¬«      S )Nr   r^   ro   z,x.ndim must be < r.ndim when tensor == Falser   rˆ   )rN   ra   r    r¡   r¢   r   r£   r"   r_   rb   Úprod)rF   Úrr   r›   s       r   Únpp_polyvalfromrootsr©   ù   sˆ   € Ü�‰�q˜q RÔ(€Aô �!”UœT‘\Ô"Ø�J‰J�q‹MˆáØ�J‰J�q˜!Ÿ'™' D¨1¯6©6¡MÑ1Ó2‰Ø	
�‰�1—6‘6Ò	ÜÐGÓHÐHØ�7‰7�1�q‘5˜qˆ7Ó!Ð!r   )Úfb)NN)Ú__doc__r�   Úscipy._lib.array_api_extraÚ_libÚarray_api_extrarN   Úscipy._lib._array_apir   r   r   r   r   Únumpy.exceptionsr   ÚImportErrorr(   r   r.   r9   r\   rd   rk   r€   r…   rš   r¥   r©   rE   r   r   Ú<module>r²      s„   ðñó ß (Ð (÷õ ð"Ý,ò
ò<ó4ó.%òB	òòò:	ð %)ô 'ð\ %)ô ð" .2õ "øðS ò "ç!ð"ús   ŸA ÁA ÁA 