docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
polynomials.h
Go to the documentation of this file.
1
36
37#pragma once
38
40
41namespace sdfg {
42namespace symbolic {
43
45typedef SymEngine::RCP<const SymEngine::MExprPoly> Polynomial;
46
48typedef std::unordered_map<Symbol, Expression, SymEngine::RCPBasicHash, SymEngine::RCPBasicKeyEq> AffineCoeffs;
49
64
88
93bool is_integer_affine(const Expression& expr);
94
110
118 bool success;
121
123 return {false, SymEngine::null, SymEngine::null};
124 }
125};
126
145
167solve_affine_bound(const Expression& expr, const Symbol& symbol, const Expression& bound_value, bool is_lower_bound);
168
185std::pair<Expression, Expression> polynomial_div(const Expression& dividend, const Expression& divisor);
186
187
188} // namespace symbolic
189} // namespace sdfg
Symbol symbol(const std::string &name)
Creates a symbolic variable with the given name.
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
SymEngine::RCP< const SymEngine::Symbol > Symbol
Reference-counted pointer to a SymEngine Symbol.
Definition symbolic.h:71
std::vector< Symbol > SymbolVec
Vector of symbols.
Definition symbolic.h:92
Definition assumptions.h:55
std::pair< Expression, Expression > polynomial_div(const Expression &dividend, const Expression &divisor)
Performs polynomial division.
AffineCoeffs affine_coefficients(Polynomial poly)
Converts a Polynomial of degree 1 to coefficient map.
bool is_integer_affine(const Expression &expr)
Whether expr is affine in all of its symbols with integer coefficients, e.g.
std::unordered_map< Symbol, Expression, SymEngine::RCPBasicHash, SymEngine::RCPBasicKeyEq > AffineCoeffs
Map from symbols to their coefficients in an affine expression.
Definition polynomials.h:48
Expression solve_affine_bound(const Expression &expr, const Symbol &symbol, const Expression &bound_value, bool is_lower_bound)
Solves for a symbol's bound given an inequality constraint.
Expression affine_inverse(AffineCoeffs coeffs, Symbol symbol)
Computes the inverse function for an affine expression.
SymEngine::RCP< const SymEngine::MExprPoly > Polynomial
Type representing a SymEngine polynomial expression.
Definition polynomials.h:45
AffineDecomposition affine_decomposition(const Expression &expr, const Symbol &symbol)
Decomposes an expression into affine form w.r.t.
Polynomial polynomial(const Expression expr, SymbolVec &symbols)
Converts an Expression to a Polynomial.
Definition analysis.h:7
Result of affine decomposition of an expression w.r.t.
Definition polynomials.h:117
bool success
True if the expression is affine in the symbol.
Definition polynomials.h:118
Expression coeff
Coefficient of the symbol (must be non-zero integer for success).
Definition polynomials.h:119
static AffineDecomposition failure()
Definition polynomials.h:122
Expression offset
Constant offset (terms not involving the symbol).
Definition polynomials.h:120
Symbolic system for integer-based symbol analysis.