Ë
    ÏÍ:jv   ã                   ó¢   — 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)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/home/mcse/projects/srt_converter/srt-converter-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   8   sŠ   € Ø€EØ�:‰:‹<€DØ
ˆd�{Øò 	"ˆAØ�BŠwÙà ™	‘ð		"ð
 �:‰:�a‰=€DØ
ˆd�{Ø‘d˜�d‘ò 	 ˆAØ�BŠwÙà˜a‘x‘ð		 ð
 ��dÐÐr   c                 óF  — t        | |d|¬«      \  } }|€%|j                  | j                  «      j                  }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   )Úlstsq)Úcondr=   ©ÚrcondF)Úfull_matricesc                 ó   — d| z  S )Nç      ð?© )Úxs    r   ú<lambda>z_lstsq.<locals>.<lambda>`   s
   € ¸2À¹6€ r   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   Ú_lstsqrZ   O   s  € Ü�a˜¨4°BÔ7�D€A€qà€}Ø—‘˜Ÿ™Ó!×%Ñ%ˆä�„|Ý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   )rL   Ú
atleast_ndr]   Ú
ValueErrorr9   r"   r   r   )Úc_or_rr   s     r   Ú_poly1drb   p   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"   )ÚprE   r   ÚyÚjs        r   Úpolyvalri   }   se   € ð 	�
‰
�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   rC   r   Úconvolve©rk   ©r   Úfull)Úmoder
   T)Úcopy)r   rL   r_   r"   r   r   r#   Úscipy.signalrk   ÚonesÚ	ones_likeÚstackr   Ú
complex128ÚallÚsortr   Úconj)Úseq_of_zerosr   Úconvolve_funcÚdtr,   ÚoneÚzeror   s           r   Úpolyr~   Œ   sS  € à—:‘:˜lÓ+€LÜ—>‘> ,°Q¸2Ô>€Là×Ñ˜!Ñ Ò!Ø�z‰z˜# R§W¡W¨\Ó%:×%@Ñ%@ˆzÓAÐAô ˜B 
¨DÓ1€MØÐÝ:à	×	Ñ	€BØ
�‰�˜BˆÓ€AØ
�,‰,�| A‘Ó
'€CØò BˆÙ˜!˜RŸX™X s¨T¨E lÓ3¸&ÔA‰ðBð 
‡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   rk   r   rl   )rb   r#   rq   rk   )Úa1Úa2r   rz   Ú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)r@   r   z!Polyfit may be poorly conditioned)Ú
stacklevel)Úintr   r   r`   r]   Ú	TypeErrorr   r"   rH   r   rI   r%   Úaranger   ÚsqrtÚsumrZ   rN   ÚwarningsÚwarnr   )rE   rg   Údegr   r@   ÚorderÚpowersÚlhsÚscaleÚcÚ_rX   Ú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\   rm   )r   .T)Ú	broadcastr   r   r   .)r   r   Úastyper   rL   r_   Ú
isinstanceÚtupleÚlistr   Úreshaper"   r]   r   re   )rE   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\   rm   z,x.ndim must be < r.ndim when tensor == Falser   r†   )rL   r_   rž   rŸ   r    r   r¡   r"   r]   r`   Úprod)rE   Ú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._external.array_api_extraÚ	_externalÚarray_api_extrarL   Úscipy._lib._array_apir   r   r   r   r   Únumpy.exceptionsr   r   r.   r9   rZ   rb   ri   r~   rƒ   r˜   r£   r§   rD   r   r   ú<module>r¯      sl   ðñó ß -Ð -÷õ õ )ò
ò<ó4ó.%òB	òòò:	ð %)ô 'ð\ %)ô ð" .2õ "r   