Drake
Monomial Class Reference

Represents a monomial, a product of powers of variables with non-negative integer exponents. More...

#include <common/symbolic_monomial.h>

## Public Member Functions

Monomial ()=default
Constructs a monomial equal to 1. More...

Monomial (const std::map< Variable, int > &powers)
Constructs a Monomial from powers. More...

Monomial (const Expression &e)
Converts an expression to a monomial if the expression is written as ∏ᵢpow(xᵢ, kᵢ), otherwise throws a runtime error. More...

Monomial (const Variable &var)
Constructs a Monomial from var. More...

Monomial (const Variable &var, int exponent)
Constructs a Monomial from var and exponent. More...

int degree (const Variable &v) const
Returns the degree of this Monomial in a variable v. More...

int total_degree () const
Returns the total degree of this Monomial. More...

Variables GetVariables () const
Returns the set of variables in this monomial. More...

const std::map< Variable, int > & get_powers () const
Returns the internal representation of Monomial, the map from a base (Variable) to its exponent (int). More...

double Evaluate (const Environment &env) const
Evaluates under a given environment env. More...

std::pair< double, MonomialEvaluatePartial (const Environment &env) const
Partially evaluates using a given environment env. More...

Expression ToExpression () const
Returns a symbolic expression representing this monomial. More...

bool operator== (const Monomial &m) const
Checks if this monomial and m represent the same monomial. More...

bool operator!= (const Monomial &m) const
Checks if this monomial and m do not represent the same monomial. More...

Monomialoperator*= (const Monomial &m)
Returns this monomial multiplied by m. More...

Monomialpow_in_place (int p)
Returns this monomial raised to p. More...

Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable
Monomial (const Monomial &)=default

Monomialoperator= (const Monomial &)=default

Monomial (Monomial &&)=default

Monomialoperator= (Monomial &&)=default

## Friends

template<class HashAlgorithm >
void hash_append (HashAlgorithm &hasher, const Monomial &item) noexcept
Implements the hash_append generic hashing concept. More...

std::ostream & operator<< (std::ostream &out, const Monomial &m)

## Detailed Description

Represents a monomial, a product of powers of variables with non-negative integer exponents.

Note that it does not include the coefficient part of a monomial.

## Constructor & Destructor Documentation

 Monomial ( const Monomial & )
default
 Monomial ( Monomial && )
default
 Monomial ( )
default

Constructs a monomial equal to 1.

Namely the total degree is zero.

Here is the caller graph for this function:

 Monomial ( const std::map< Variable, int > & powers )
explicit

Constructs a Monomial from powers.

 Monomial ( const Expression & e )
explicit

Converts an expression to a monomial if the expression is written as ∏ᵢpow(xᵢ, kᵢ), otherwise throws a runtime error.

Precondition
is_polynomial(e) should be true.
 Monomial ( const Variable & var )
explicit

Constructs a Monomial from var.

 Monomial ( const Variable & var, int exponent )

Constructs a Monomial from var and exponent.

## Member Function Documentation

 int degree ( const Variable & v ) const

Returns the degree of this Monomial in a variable v.

 double Evaluate ( const Environment & env ) const

Evaluates under a given environment env.

Exceptions
 std::out_of_range exception if there is a variable in this monomial whose assignment is not provided by env.

Here is the call graph for this function:

Here is the caller graph for this function:

 pair< double, Monomial > EvaluatePartial ( const Environment & env ) const

Partially evaluates using a given environment env.

The evaluation result is of type pair<double, Monomial>. The first component (: double) represents the coefficient part while the second component represents the remaining parts of the Monomial which was not evaluated.

Example 1. Evaluate with a fully-specified environment (x³*y²).EvaluatePartial({{x, 2}, {y, 3}}) = (2³ * 3² = 8 * 9 = 72, Monomial{} = 1).

Example 2. Evaluate with a partial environment (x³*y²).EvaluatePartial({{x, 2}}) = (2³ = 8, y²).

Here is the call graph for this function:

Here is the caller graph for this function:

 const std::map& get_powers ( ) const
inline

Returns the internal representation of Monomial, the map from a base (Variable) to its exponent (int).

Here is the call graph for this function:

Here is the caller graph for this function:

 Variables GetVariables ( ) const

Returns the set of variables in this monomial.

Here is the caller graph for this function:

 bool operator!= ( const Monomial & m ) const

Checks if this monomial and m do not represent the same monomial.

Here is the caller graph for this function:

 Monomial & operator*= ( const Monomial & m )

Returns this monomial multiplied by m.

Here is the call graph for this function:

Here is the caller graph for this function:

 Monomial& operator= ( const Monomial & )
default
 Monomial& operator= ( Monomial && )
default
 bool operator== ( const Monomial & m ) const

Checks if this monomial and m represent the same monomial.

Two monomials are equal iff they contain the same variable raised to the same exponent.

Here is the caller graph for this function:

 Monomial & pow_in_place ( int p )

Returns this monomial raised to p.

Exceptions
 std::runtime_error if p is negative.

Here is the caller graph for this function:

 Expression ToExpression ( ) const

Returns a symbolic expression representing this monomial.

Here is the caller graph for this function:

 int total_degree ( ) const
inline

Returns the total degree of this Monomial.

Here is the call graph for this function:

Here is the caller graph for this function:

## Friends And Related Function Documentation

 void hash_append ( HashAlgorithm & hasher, const Monomial & item )
friend

Implements the hash_append generic hashing concept.

 std::ostream& operator<< ( std::ostream & out, const Monomial & m )
friend

The documentation for this class was generated from the following files: