(Event+Time).Variant Operators  2.3
Operators for Timed Discrete Event Systems in Dioids
etvo::polyEd Class Reference

Class for polynomials in the semiring E[[d]]. More...

#include <polyEd.h>

Inheritance diagram for etvo::polyEd:
etvo::ISterm

Public Member Functions

 polyEd ()
 default initialization to Epsilon
 
 polyEd (bool TopNotE)
 specific initialization : polyEd(true) set to Top, polyEd(false) set to E
 
 polyEd (const Ed &m)
 initialisation to a polynomial with one Ed term w.d^t
 
 polyEd (const std::vector< Ed > &v)
 
bool isCanon () const
 Check if a polyEd is in canonical form, say for a sum w_id^t_i, w_i and t_i are strictly ordered.
 
void canon ()
 set to the canonical form
 
bool isE () const
 check if is equal to E()=g0.d0
 
polyEd oplus (const polyEd &p) const
 Sum of polynomials in E[[d]].
 
polyEd operator+ (const polyEd &p) const
 Sum of polynomials in E[[d]].
 
polyEd oplusCD (const polyEd &p) const
 Sum of polynomials in E[[d]] via a Core Decomposition (see J.Trunk Thesis)
 
polyEd operator+ (const Ed &m) const
 Sum of a polynomial in E[[d]] with a monomial in E[[d]].
 
void add (const Ed &m)
 The current polynomial pcur is modified as pcur=pcur+m.
 
polyEd operator+= (const Ed &m)
 Lies on polyEd::add(const Ed & m) method.
 
polyEd operator* (const polyEd &p) const
 Product of polynomials in E[[d]].
 
polyEd otimes (const polyEd &p) const
 Product of polynomials in E[[d]].
 
polyEd operator* (const Ed &m) const
 Product of one polynomial by one monomial in E[[d]].
 
polyEd otimesCD (const polyEd &p) const
 Product of polynomials in E[[d]] via a Core Decomposition (see j.Trunk thesis)
 
polyEd inf (const polyEd &p) const
 Infimum of two polynomials in E[[d]] : p1.inf(p2) = greatest x s.t. x<=p1 and x<=p2.
 
polyEd infCD (const polyEd &p) const
 
seriesEd star () const
 
polyEd lfrac (const polyEd &) const
 Computation of the left-multiplication residuation: p1.lfrac(p2) =p2= greatest x s.t. p2.x <= p1.
 
polyEd lfracCD (const polyEd &) const
 
polyEd lfrac (const Ed &m) const
 Computation of the left-multiplication residuation: p1.lfrac(m) =m= greatest x s.t. m.x <= p1.
 
polyEd rfrac (const polyEd &) const
 Computation of the right-multiplication residuation: p1.rfrac(p2) =p1/p2= greatest x s.t. x.p2 <= p1.
 
polyEd rfracCD (const polyEd &) const
 
polyEd rfrac (const Ed &m) const
 Computation of the right-multiplication residuation: p1.rfrac(m) =p1/m= greatest x s.t. x.m <= p1.
 
bool operator== (const polyEd &) const
 Check equality.
 
bool operator!= (const polyEd &) const
 Check difference.
 
bool operator<= (const polyEd &) const
 Check order on polynomials in E[[d]].
 
bool operator>= (const polyEd &) const
 Check order on polynomials in E[[d]].
 
poly toPoly () const
 The zero-slice polynomial in MinMax[[g,d]].
 
Ed getFirstDif (const polyEd &p) const
 
polyEd transientStar (int Tmax) const
 Do not use it. Use polyEd::star(). Only for DEBUGGING purpose.
 
void getMaxGain (unsigned int &mu, unsigned int &beta) const
 Gives the maximal gain.
 
void getLcmGain (unsigned int &mu, unsigned int &beta) const
 Gives th Least Common multiple of gains.
 
std::pair< unsigned int, unsigned int > getPeriodicity () const
 Returns the periodicity as a pair.
 
std::vector< EdgetTerms () const
 return the monomials as a collection of Ed terms
 
void removeTerm (unsigned idx)
 remove term number i in the polynomial
 
Ed operator[] (unsigned idx) const
 Returns a copy of monomial in position idx in the polynomial.
 
unsigned int size () const
 Returns the size = the number of monomials. For Epsilon and Top, size=0.
 
std::string toString () const
 returns a string that gives the description of the current polynomial. Is depending on the canonical form of gNg terms
 
std::string toStringAsMuVar () const
 returns a string that gives the description of the current polynomial as a sum of g^n.m<seq>.d^t terms
 
matrix< polygetCore (unsigned ratio=1) const
 
matrix< polygetCoreMax (unsigned ratio=1) const
 returns the maximal Core matrix<poly> (in MinMax[[g,d]]) of the current polynomial
 
void toPov (graphicPR::PovRay &pov, graphicPR::PovRay::Color c)
 used in the creation of POV-Ray script for a polyEd object
 
polyEd odot (const polyEd &p) const
 
polyEd osum (const polyEd &p) const
 
- Public Member Functions inherited from etvo::ISterm
 ISterm (bool isEpsilon=false)
 default constructor : an epsilon term
 
 ISterm (int epsNTop)
 constructor to specify the type of ISterm
 
bool isEpsilon () const
 
bool isTop () const
 
bool isExtreme () const
 
void setEpsilon ()
 
void setTop ()
 
bool operator== (const ISterm &) const
 

Static Public Member Functions

static polyEd Epsilon ()
 Epsilon element.
 
static polyEd E ()
 E element.
 
static polyEd Top ()
 Top element.
 
static polyEd otimes (const Ed &m, const polyEd &p)
 
static polyEd toPolyEd (const poly &p)
 An injection from MinMax[[g,d]] to E[[d]]. More...
 
static polyEd toCausal (const polyEd &p)
 returns a causal polynomial in E[[d]]
 
static polyEd coreToPolyEd (const matrix< poly > &core)
 computes the recomposition of a polyEd polynomial from a Core Decomposition core.
 
static etvo::matrix< polygetMatN (unsigned size)
 

Additional Inherited Members

- Protected Attributes inherited from etvo::ISterm
char _epsNTop
 _epsNTop = -1 epsilon 0 not extrem (normal) +1 Top
 

Detailed Description

Class for polynomials in the semiring E[[d]].

Epsilon and Top element exist

Author
BC LH JT LARIS
Version
2.0

Constructor & Destructor Documentation

◆ polyEd()

etvo::polyEd::polyEd ( const std::vector< Ed > &  v)

initialization to a polynomial created from a collection of Ed terms w.d^t The initialization leads to a canonical form where Ed terms are sorted

Member Function Documentation

◆ getCore()

matrix< poly > etvo::polyEd::getCore ( unsigned  ratio = 1) const

returns the Core matrix<poly> (in MinMax[[g,d]]) of the current polynomial a polynomial p=Mu_m Q Beta_b with Mu_m=[mu_m g^1mu_m g^2mu_m ... g^(m-1)mu_m] with Beta_b=[beta_b g^(b-1) ... beta_b g^1 beta_b]' and Q in MinMax[[g,d]] Mu_m and Beta_b are implicit from the size of Core

◆ getFirstDif()

Ed etvo::polyEd::getFirstDif ( const polyEd p) const

When the current polynomial is different from p, gives the first different monomial Otherwise, if both polynomials are equals, returns Ed::E()=g0.d0

◆ getMatN()

etvo::matrix< poly > etvo::polyEd::getMatN ( unsigned  size)
static

returns the specific matrix Beta_N.Mu_N with Mu_m=[mu_m g^1mu_m g^2mu_m ... g^(m-1)mu_m] with Beta_b=[beta_b g^(b-1) ... beta_b g^1 beta_b]'

◆ infCD()

polyEd etvo::polyEd::infCD ( const polyEd p) const

Infimum of two polynomials in E[[d]] via a Core Decomposition (see J.Trunk thesis) Note: p1.inf(p2) is supposed to be equal to p1.infCD(p2), with a different algorithm.

◆ lfracCD()

polyEd etvo::polyEd::lfracCD ( const polyEd p) const

Computation of the left-multiplication residuation via a Core Decomposition : p1.lfracCD(p2) =p2= greatest x s.t. p2.x <= p1 Note: p1.lfrac(p2) is supposed to be equal to p1.lfracCD(p2) with a different algorithm

◆ rfracCD()

polyEd etvo::polyEd::rfracCD ( const polyEd p) const

Computation of the right-multiplication residuation via a Core Decomposition: p1.rfrac(p2) =p1/p2= greatest x s.t. x.p2 <= p1 Note: p1.rfrac(p2) is supposed to be equal to p1.rfracCD(p2), with a different algorithm

◆ star()

seriesEd etvo::polyEd::star ( ) const

Kleene star of a polynomial in E[[d]], the result is a series in E[[d]] The default algorithm is by using a Core Decomposition of the current polynomial, the Kleene star of the Core matrix, and finally the recomposition of a series in E[[d]] Exception : this method can throw a const char * exception (non causal case) or an etvoException when the result is a degenerate matrix (generally, it corresponds to liveness issues for the corresponding WB-TEG)

◆ toPolyEd()

polyEd etvo::polyEd::toPolyEd ( const poly p)
static

An injection from MinMax[[g,d]] to E[[d]].

Creates a polynomial in E[[d]] from a polynomial in MinMax[[g,d]]


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