carl  24.04
Computer ARithmetic Library
Term.h File Reference
#include "Monomial.h"
#include "MonomialPool.h"
#include <carl-arith/numbers/numbers.h>
#include <memory>
#include "Term.tpp"
Include dependency graph for Term.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  carl::Term< Coefficient >
 Represents a single term, that is a numeric coefficient and a monomial. More...
 
struct  std::hash< carl::Term< Coefficient > >
 Specialization of std::hash for a Term. More...
 

Namespaces

 carl
 carl is the main namespace for the library.
 

Functions

template<typename Coeff >
bool carl::is_zero (const Term< Coeff > &term)
 Checks whether a term is zero. More...
 
template<typename Coeff >
void carl::variables (const Term< Coeff > &t, carlVariables &vars)
 Add the variables of the given term to the variables. More...
 
template<typename Coeff >
bool carl::is_one (const Term< Coeff > &term)
 Checks whether a term is one. More...
 
template<typename Coeff >
Term< Coeff > carl::operator- (const Term< Coeff > &rhs)
 
In-place multiplication operators
template<typename Coeff >
Term< Coeff > & carl::operator*= (Term< Coeff > &lhs, const Coeff &rhs)
 Multiply a term with something and return the changed term. More...
 
template<typename Coeff >
Term< Coeff > & carl::operator*= (Term< Coeff > &lhs, Variable rhs)
 Multiply a term with something and return the changed term. More...
 
template<typename Coeff >
Term< Coeff > & carl::operator*= (Term< Coeff > &lhs, const Monomial::Arg &rhs)
 Multiply a term with something and return the changed term. More...
 
template<typename Coeff >
Term< Coeff > & carl::operator*= (Term< Coeff > &lhs, const Term< Coeff > &rhs)
 Multiply a term with something and return the changed term. More...
 
Comparison operators
template<typename Coeff >
bool carl::operator== (const Term< Coeff > &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator== (const Term< Coeff > &lhs, const Monomial &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator== (const Term< Coeff > &lhs, Variable rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator== (const Term< Coeff > &lhs, const Coeff &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator== (const Monomial::Arg &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator== (Variable lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator== (const Coeff &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator!= (const Term< Coeff > &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator!= (const Term< Coeff > &lhs, const Monomial::Arg &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator!= (const Term< Coeff > &lhs, Variable rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator!= (const Term< Coeff > &lhs, const Coeff &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator!= (const Monomial::Arg &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator!= (Variable lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator!= (const Coeff &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator< (const Term< Coeff > &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator< (const Term< Coeff > &lhs, const Monomial::Arg &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator< (const Term< Coeff > &lhs, Variable rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator< (const Term< Coeff > &lhs, const Coeff &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator< (const Monomial::Arg &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator< (Variable lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator< (const Coeff &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator<= (const Term< Coeff > &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator<= (const Term< Coeff > &lhs, const Monomial::Arg &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator<= (const Term< Coeff > &lhs, Variable rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator<= (const Term< Coeff > &lhs, const Coeff &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator<= (const Monomial::Arg &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator<= (Variable lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator<= (const Coeff &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator> (const Term< Coeff > &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator> (const Term< Coeff > &lhs, const Monomial::Arg &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator> (const Term< Coeff > &lhs, Variable rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator> (const Term< Coeff > &lhs, const Coeff &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator> (const Monomial::Arg &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator> (Variable lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator> (const Coeff &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator>= (const Term< Coeff > &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator>= (const Term< Coeff > &lhs, const Monomial::Arg &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator>= (const Term< Coeff > &lhs, Variable rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator>= (const Term< Coeff > &lhs, const Coeff &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator>= (const Monomial::Arg &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator>= (Variable lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
template<typename Coeff >
bool carl::operator>= (const Coeff &lhs, const Term< Coeff > &rhs)
 Compares two arguments where one is a term and the other is either a term, a monomial or a variable. More...
 
Multiplication operators
template<typename Coeff >
Term< Coeff > carl::operator* (Term< Coeff > lhs, const Term< Coeff > &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (Term< Coeff > lhs, const Monomial::Arg &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (Term< Coeff > lhs, Variable rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (Term< Coeff > lhs, const Coeff &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (const Monomial::Arg &lhs, const Term< Coeff > &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff , EnableIf< carl::is_number_type< Coeff >> = dummy>
Term< Coeff > carl::operator* (const Monomial::Arg &lhs, const Coeff &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (Variable lhs, const Term< Coeff > &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (Variable lhs, const Coeff &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (const Coeff &lhs, const Term< Coeff > &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff , EnableIf< carl::is_number_type< Coeff >> = dummy>
Term< Coeff > carl::operator* (const Coeff &lhs, const Monomial::Arg &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff >
Term< Coeff > carl::operator* (const Coeff &lhs, Variable rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff , EnableIf< carl::is_subset_of_rationals_type< Coeff >> = dummy>
Term< Coeff > carl::operator/ (const Term< Coeff > &lhs, const Coeff &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff , EnableIf< carl::is_subset_of_rationals_type< Coeff >> = dummy>
Term< Coeff > carl::operator/ (const Monomial::Arg &lhs, const Coeff &rhs)
 Perform a multiplication involving a term. More...
 
template<typename Coeff , EnableIf< carl::is_subset_of_rationals_type< Coeff >> = dummy>
Term< Coeff > carl::operator/ (Variable &lhs, const Coeff &rhs)
 Perform a multiplication involving a term. More...