carl  24.04
Computer ARithmetic Library
MultivariateRoot.h File Reference

Represent a dynamic root, also known as a "root expression". More...

#include <carl-logging/carl-logging.h>
#include <carl-arith/poly/umvpoly/functions/Substitution.h>
#include <carl-arith/core/Variable.h>
#include <carl-arith/numbers/numbers.h>
#include <carl-arith/ran/ran.h>
#include <optional>
#include <algorithm>
#include <iostream>
#include <tuple>
Include dependency graph for MultivariateRoot.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  carl::MultivariateRoot< Poly >
 
struct  std::hash< carl::MultivariateRoot< Pol > >
 

Namespaces

 carl
 carl is the main namespace for the library.
 

Functions

template<typename Poly >
bool carl::operator== (const MultivariateRoot< Poly > &lhs, const MultivariateRoot< Poly > &rhs)
 
template<typename Poly >
bool carl::operator< (const MultivariateRoot< Poly > &lhs, const MultivariateRoot< Poly > &rhs)
 
template<typename P >
std::ostream & carl::operator<< (std::ostream &os, const MultivariateRoot< P > &mr)
 
template<typename Poly >
void carl::variables (const MultivariateRoot< Poly > &mr, carlVariables &vars)
 Add the variables mentioned in underlying polynomial, excluding the root-variable "_z". More...
 
template<typename Poly >
void carl::substitute_inplace (MultivariateRoot< Poly > &mr, Variable var, const Poly &poly)
 Create a copy of the underlying polynomial with the given variable replaced by the given polynomial. More...
 
template<typename Poly >
MultivariateRoot< Poly > carl::convert_to_mvroot (const typename MultivariateRoot< Poly >::RAN &ran, Variable var)
 
template<typename Poly >
std::optional< typename MultivariateRoot< Poly >::RAN > carl::evaluate (const MultivariateRoot< Poly > &mr, const carl::Assignment< typename MultivariateRoot< Poly >::RAN > &m)
 Return the emerging algebraic real after pluggin in a subpoint to replace all variables with algebraic reals that are not the root-variable "_z". More...
 

Detailed Description

Represent a dynamic root, also known as a "root expression".

It's a generalization of an algebraic real(= univariate poly having roots + root index). It uses a multivariate poly with distinguished, root-variable "_z" and an root index. If we want to "evaluate" this root, we need to plug in a subpoint with algebraic-real values for all variables that are not "_z". The result is basically an algebraic real. And since this algebraic real depends on the subpoint, you can also think of this as a multidimensional scalar function: A root(p(x1,x2,_z), 1) value represents a function f(x1,x2) of algReal^2 to an algebraic real. For example, f(a,b)= root(q(_z),1), where the resulting algebraic real is the 1. root of poly q(_z) := p(a,b,_z) after pluggin a and b into poly p.

Definition in file MultivariateRoot.h.