
    sg                     J    d dl mZ d dlmZ d dlmZ ddlmZ  G d de      Zy)	    )S)_sympify)Poly   )
MatrixExprc                   >     e Zd ZdZ fdZed        Zd Zd Z xZ	S )CompanionMatrixa  A symbolic companion matrix of a polynomial.

    Examples
    ========

    >>> from sympy import Poly, Symbol, symbols
    >>> from sympy.matrices.expressions import CompanionMatrix
    >>> x = Symbol('x')
    >>> c0, c1, c2, c3, c4 = symbols('c0:5')
    >>> p = Poly(c0 + c1*x + c2*x**2 + c3*x**3 + c4*x**4 + x**5, x)
    >>> CompanionMatrix(p)
    CompanionMatrix(Poly(x**5 + c4*x**4 + c3*x**3 + c2*x**2 + c1*x + c0,
    x, domain='ZZ[c0,c1,c2,c3,c4]'))
    c                    t        |      }t        |t              st        dj	                  |            |j
                  st        dj	                  |            |j                  st        dj	                  |            |j                         dk\  st        dj	                  |            t        | %  | |      S )Nz{} must be a Poly instance.z{} must be a monic polynomial.z#{} must be a univariate polynomial.r   z${} must have degree not less than 1.)
r   
isinstancer   
ValueErrorformatis_monicis_univariatedegreesuper__new__)clspoly	__class__s     W/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/expressions/companion.pyr   zCompanionMatrix.__new__   s    ~$%:AA$GHH}}=DDTJKK!!5<<TBD D{{}!6==dCE E wsD))    c                 H    | j                   d   }|j                         }||fS )Nr   )argsr   )selfr   sizes      r   shapezCompanionMatrix.shape'   s$    yy|{{}Tzr   c                     || j                   dz
  k(  r$| j                  d   j                         d|z
      S ||dz   k(  rt        j                  S t        j
                  S )Nr   r   )colsr   
all_coeffsr   OneZero)r   ijs      r   _entryzCompanionMatrix._entry.   sR    		AIIaL++-b1f555!a%Z55Lvvr   c                 J    ddl m} |j                  | j                  d         S )Nr   )ImmutableDenseMatrix)sympy.matrices.immutabler'   	companionr   )r   r'   s     r   as_explicitzCompanionMatrix.as_explicit6   s    A#--diil;;r   )
__name__
__module____qualname____doc__r   propertyr   r%   r*   __classcell__)r   s   @r   r	   r	      s+    *   <r   r	   N)	sympy.core.singletonr   sympy.core.sympifyr   sympy.polys.polytoolsr   matexprr   r	    r   r   <module>r6      s    " ' & 0<j 0<r   