§
    ƒÛg  ã                   óf  — d Z ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZmZmZ  eej        ¦  «        d	„ ¦   «         Z eej        ¦  «        d
„ ¦   «         Zd„ Z eej        ¦  «        d„ ¦   «         Z eej        ¦  «        d„ ¦   «         Z eej        ¦  «        d„ ¦   «         ZdS )z5
Implementation of operations involving polynomials.
é    N)Ú
polynomial)Ú	polyutils)Útypeof)ÚtypesÚerrors)Úoverload)Útype_can_asarrayÚas_dtypeÚ
from_dtypec                 ó    ‡— t          | d| ¦  «        }t          |t          j        ¦  «        rt          j        Šnt          |¦  «        Šˆfd„}|S )NÚdtypec                 ó  •— t          | j        ¦  «        dk    rt          d¦  «        ‚t          j        | ¦  «        d         }t          |¦  «        dk    rt          j        d‰¬¦  «        S t          | ¦  «        |d         z
  dz
  }| t          |d         ¦  «        t          |d         ¦  «        dz   …         } t          | ¦  «        }|dk    rlt          j        t          j        |dz
  f‰¦  «        d¦  «        j	        }| dd …          | d         z  |dd d …f<   t          j
                             |¦  «        }nt          j        d‰¬¦  «        }|dk    r*t          j        |t          j        |‰¬¦  «        f¦  «        S |S )Né   zInput must be a 1d array.r   )r   éÿÿÿÿé   )ÚlenÚshapeÚ
ValueErrorÚnpÚnonzeroÚzerosÚintÚdiagÚonesÚTÚlinalgÚeigvalsÚhstack)ÚpÚnon_zeroÚtzÚnÚAÚrootsÚcast_ts         €úI/granary/edev/quantum/lib/python3.11/site-packages/numba/np/polynomial.pyÚ
roots_implzroots_impl.<locals>.roots_impl   sd  ø€ õ ˆqŒw‰<Œ<˜1ÒÐÝÐ8Ñ9Ô9Ð9å”:˜a‘=”= Ô#ˆåˆx‰=Œ=˜AÒÐÝ”8˜A VÐ,Ñ,Ô,Ð,å�‰VŒV�h˜r”lÑ" QÑ&ˆð �c�(˜1”+ÑÔ�s 8¨B¤<Ñ0Ô0°1Ñ4Ð4Ô5ˆå�‰FŒFˆØˆqŠ5ˆ5õ ”�œ  Q¡ ¨&Ñ1Ô1°1Ñ5Ô5Ô7ˆAØ˜˜˜”u�f˜q œt‘mˆAˆa���ˆd‰GÝ”I×%Ò% aÑ(Ô(ˆEˆEå”H˜Q fÐ-Ñ-Ô-ˆEð �Š6ˆ6Ý”9˜e¥R¤X¨b¸Ð%?Ñ%?Ô%?Ð@ÑAÔAÐAàˆLó    )ÚgetattrÚ
isinstancer   ÚIntegerr   Úfloat64r
   )r   Útyr'   r%   s      @r&   r'   r'      s`   ø€ õ
 
��G˜QÑ	Ô	€BÝ�"•e”mÑ$Ô$ð Ý”ˆˆå˜"‘”ˆð ð  ð  ð  ð  ðD Ðr(   c                 ó  — t          | ¦  «        sd}t          j        |¦  «        ‚t          | t          j        ¦  «        rd}t          j        || z  ¦  «        ‚t          j        | ¦  «        dk    rd}t          j        |¦  «        ‚d„ }|S )Nz%The argument "seq" must be array-likez&Unsupported type %r for argument "seq"r   úCoefficient array is not 1-dc                 óª   — t          | ¦  «        dk    r| S t          t          | ¦  «        dz
  dd¦  «        D ]}| |         dk    r nŒ| d |dz   …         S )Nr   r   r   )r   Úrange)ÚseqÚis     r&   Úimplzpolyutils_trimseq.<locals>.implM   sd   € Ýˆs‰8Œ8�qŠ=ˆ=ØˆJå�3˜s™8œ8 a™<¨¨RÑ0Ô0ð ð �Ø�q”6˜Q’;�;Ø�Eð à�t˜˜!™�t”9Ðr(   )	r	   r   ÚTypingErrorr*   r   Ú	BaseTupler   ÚndimÚNumbaValueError)r2   Úmsgr4   s      r&   Úpolyutils_trimseqr:   ?   s•   € å˜CÑ Ô ð &Ø5ˆÝÔ  Ñ%Ô%Ð%å�#•u”Ñ'Ô'ð .Ø6ˆÝÔ  ¨¡Ñ-Ô-Ð-å	„wˆs�|„|�aÒÐØ,ˆÝÔ$ SÑ)Ô)Ð)ðð ð ð €Kr(   c                 ó�  — t           j        }| D ]©}t          |t          j        ¦  «        rt          t          |¦  «        ¦  «        }n[t          |t          j        ¦  «        r-d„ |j        D ¦   «         }t          t          j        |Ž ¦  «        }nt          |j	        ¦  «        }t          j        ||¦  «        }Œªt          |¦  «        S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS © )r
   )Ú.0r-   s     r&   ú
<listcomp>z&_poly_result_dtype.<locals>.<listcomp>`   s   € Ð3Ð3Ð3 "•˜"‘”Ð3Ð3Ð3r(   )r   r,   r*   r   ÚNumberÚstrr
   ÚTupleÚresult_typer   r   )ÚtupÚ	res_dtypeÚitemÚs1Úts        r&   Ú_poly_result_dtyperI   X   s°   € õ ”
€IØð 4ð 4ˆÝ�d�EœLÑ)Ô)ð 	!Ý•X˜d‘^”^Ñ$Ô$ˆBˆBÝ˜�eœkÑ*Ô*ð 	!Ø3Ð3¨¬
Ð3Ñ3Ô3ˆAÝ•R”^ QÐ'Ñ(Ô(ˆBˆBå�T”Z‘”ˆBÝ”^ I¨rÑ2Ô2ˆ	ˆ	Ý�iÑ Ô Ð r(   c                 óT  ‡— t          | ¦  «        sd}t          j        |¦  «        ‚t          |¦  «        sd}t          j        |¦  «        ‚t          j        | ¦  «        dk    st          j        |¦  «        dk    rd}t          j        |¦  «        ‚t          | |f¦  «        Šˆfd„}|S )Nú$The argument "c1" must be array-likeú$The argument "c2" must be array-liker   r/   c                 ó"  •— t          j        | ¦  «        } t          j        |¦  «        }t          j        | ¦  «                             ‰¦  «        }t          j        |¦  «                             ‰¦  «        }t	          |¦  «        t	          |¦  «        z
  }|dk    r*t          j        |¦  «        }t          j        ||f¦  «        }|dk     r+t          j        | ¦  «        }t          j        ||f¦  «        }||z   }t          j        |¦  «        S ©Nr   ©	r   ÚasarrayÚ
atleast_1dÚastyper   r   ÚconcatenateÚpuÚtrimseq©Úc1Úc2Úarr1Úarr2ÚdiffÚzrÚvalÚresult_dtypes          €r&   r4   znumpy_polyadd.<locals>.implw   óØ   ø€ ÝŒZ˜‰^Œ^ˆÝŒZ˜‰^Œ^ˆÝŒ}˜RÑ Ô ×'Ò'¨Ñ5Ô5ˆÝŒ}˜RÑ Ô ×'Ò'¨Ñ5Ô5ˆÝ�4‰yŒy�3˜t™9œ9Ñ$ˆØ�!Š8ˆ8Ý”˜$‘”ˆBÝ”> 4¨ *Ñ-Ô-ˆDØ�!Š8ˆ8Ý”˜4˜%‘”ˆBÝ”> 4¨ *Ñ-Ô-ˆDØ�T‰kˆÝŒz˜#‰ŒÐr(   ©r	   r   r5   r   r7   r8   rI   ©rW   rX   r9   r4   r^   s       @r&   Únumpy_polyaddrb   g   ó·   ø€ å˜BÑÔð &Ø4ˆÝÔ  Ñ%Ô%Ð%å˜BÑÔð &Ø4ˆÝÔ  Ñ%Ô%Ð%å	„wˆr�{„{�Q‚€�"œ' "™+œ+¨š/˜/Ø,ˆÝÔ$ SÑ)Ô)Ð)å% r¨2 hÑ/Ô/€Lðð ð ð ð ð €Kr(   c                 óT  ‡— t          | ¦  «        sd}t          j        |¦  «        ‚t          |¦  «        sd}t          j        |¦  «        ‚t          j        | ¦  «        dk    st          j        |¦  «        dk    rd}t          j        |¦  «        ‚t          | |f¦  «        Šˆfd„}|S )NrK   rL   r   r/   c                 ó"  •— t          j        | ¦  «        } t          j        |¦  «        }t          j        | ¦  «                             ‰¦  «        }t          j        |¦  «                             ‰¦  «        }t	          |¦  «        t	          |¦  «        z
  }|dk    r*t          j        |¦  «        }t          j        ||f¦  «        }|dk     r+t          j        | ¦  «        }t          j        ||f¦  «        }||z
  }t          j        |¦  «        S rN   rO   rV   s          €r&   r4   znumpy_polysub.<locals>.impl™   r_   r(   r`   ra   s       @r&   Únumpy_polysubrf   ‰   rc   r(   c                 óT  ‡— t          | ¦  «        sd}t          j        |¦  «        ‚t          |¦  «        sd}t          j        |¦  «        ‚t          j        | ¦  «        dk    st          j        |¦  «        dk    rd}t          j        |¦  «        ‚t          | |f¦  «        Šˆfd„}|S )NrK   rL   r   r/   c                 ó  •— t          j        | ¦  «        } t          j        |¦  «        }t          j        | ¦  «        }t          j        |¦  «        }t          j        ||¦  «                             ‰¦  «        }t          j        |¦  «        S )N)r   rP   rQ   ÚconvolverR   rT   rU   )rW   rX   rY   rZ   r]   r^   s        €r&   r4   znumpy_polymul.<locals>.impl»   sh   ø€ ÝŒZ˜‰^Œ^ˆÝŒZ˜‰^Œ^ˆÝŒ}˜RÑ Ô ˆÝŒ}˜RÑ Ô ˆÝŒk˜$ Ñ%Ô%×,Ò,¨\Ñ:Ô:ˆÝŒz˜#‰ŒÐr(   r`   ra   s       @r&   Únumpy_polymulrj   «   s·   ø€ å˜BÑÔð &Ø4ˆÝÔ  Ñ%Ô%Ð%å˜BÑÔð &Ø4ˆÝÔ  Ñ%Ô%Ð%å	„wˆr�{„{�Q‚€�"œ' "™+œ+¨š/˜/Ø,ˆÝÔ$ SÑ)Ô)Ð)å% r¨2 hÑ/Ô/€Lðð ð ð ð ð €Kr(   )Ú__doc__Únumpyr   Únumpy.polynomialr   Úpolyr   rT   Únumbar   Ú
numba.corer   r   Únumba.core.extendingr   Únumba.np.numpy_supportr	   r
   r   r$   r'   rU   r:   rI   Úpolyaddrb   Úpolysubrf   Úpolymulrj   r=   r(   r&   ú<module>rv      s}  ððð ð
 Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ià	€ˆ"Œ(ÑÔð,ð ,ñ Ôð,ð^ 
€ˆ"Œ*ÑÔðð ñ Ôðð0!ð !ð !ð 
€ˆ$Œ,ÑÔðð ñ ÔððB 
€ˆ$Œ,ÑÔðð ñ ÔððB 
€ˆ$Œ,ÑÔðð ñ Ôðð ð r(   