
    Ed                     R    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dS )	    )S)_sympify)Poly   )
MatrixExprc                   D     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        s"t          d                    |                    |j        s"t          d                    |                    |                                dk    s"t          d                    |                    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     Dlib/python3.11/site-packages/sympy/matrices/expressions/companion.pyr   zCompanionMatrix.__new__   s    ~~$%% 	I:AA$GGHHH} 	L=DDTJJKKK! 	D5<<TBBD D D{{}}! 	E6==dCCE E E wwsD)))    c                 L    | j         d         }|                                }||fS )Nr   )argsr   )selfr   sizes      r   shapezCompanionMatrix.shape'   s$    y|{{}}Tzr   c                     || j         dz
  k    r)| j        d                                         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.   sW    	A 	IaL++--b1f555!a%Z 	5Lvr   c                 N    ddl m} |                    | j        d                   S )Nr   )ImmutableDenseMatrix)sympy.matrices.immutabler'   	companionr   )r   r'   s     r   as_explicitzCompanionMatrix.as_explicit6   s.    AAAAAA#--dil;;;r   )
__name__
__module____qualname____doc__r   propertyr   r%   r*   __classcell__)r   s   @r   r	   r	      s{         * * * * *    X  < < < < < < <r   r	   N)	sympy.core.singletonr   sympy.core.sympifyr   sympy.polys.polytoolsr   matexprr   r	    r   r   <module>r6      s    " " " " " " ' ' ' ' ' ' & & & & & &      0< 0< 0< 0< 0<j 0< 0< 0< 0< 0<r   