Vcsn
2.2
Be Rational
|
Linear combination of labels: map labels to weights. More...
#include <fwd.hh>
Classes | |
struct | norm_ |
In the general case, normalize by the first (non null) weight. More... | |
struct | norm_< polynomialset< Ctx, Knd >, Dummy > |
Compute the left GCD of weights which are polynomials. More... | |
struct | norm_< z, Dummy > |
For Z, take the GCD, with the sign of the first value. More... | |
Public Types | |
using | self_t = polynomialset< Context, Kind > |
using | context_t = Context |
using | labelset_t = labelset_t_of< context_t > |
using | weightset_t = weightset_t_of< context_t > |
using | labelset_ptr = typename context_t::labelset_ptr |
using | weightset_ptr = typename context_t::weightset_ptr |
using | label_t = typename labelset_t::value_t |
Polynomials over labels. More... | |
using | weight_t = weight_t_of< context_t > |
using | value_t = wet_of< context_t, Kind > |
using | monomial_t = typename value_t::value_type |
A pair <label, weight>. More... | |
Public Member Functions | |
polynomialset_impl ()=delete | |
polynomialset_impl (const polynomialset_impl &)=default | |
polynomialset_impl (polynomialset_impl &&)=default | |
polynomialset_impl (const context_t &ctx) | |
const self_t & | self () const |
Ourself, but after the application of weightset_mixin. More... | |
const context_t & | context () const |
const labelset_ptr & | labelset () const |
const weightset_ptr & | weightset () const |
value_t & | del_weight (value_t &v, const label_t &l) const |
Remove the monomial of l in v. More... | |
value_t & | new_weight (value_t &v, const label_t &l, const weight_t w) const |
Set the monomial of l in v to weight k. More... | |
value_t & | set_weight (value_t &v, const label_t &l, const weight_t w) const |
Set the monomial of l in v to weight w. More... | |
const weight_t | get_weight (const value_t &v, const label_t &l) const ATTRIBUTE_PURE |
void | clear (value_t &v) |
Set to zero. More... | |
value_t & | add_here (value_t &v, const label_t &l, const weight_t k) const |
v += <k>l . More... | |
value_t & | add_here (value_t &v, const monomial_t &m) const |
v += m . More... | |
template<wet_kind_t WetType, typename WS > | |
auto | add_here_impl (value_t &l, const value_t &r) const -> std::enable_if_t< WetType!=wet_kind_t::bitset, value_t & > |
v += p , default case. More... | |
template<wet_kind_t WetType, typename WS > | |
auto | add_here_impl (value_t &l, const value_t &r) const -> std::enable_if_t<(WetType==wet_kind_t::bitset &&std::is_same< WS, b >::value), value_t & > |
v += p , B and bitsets. More... | |
template<wet_kind_t WetType, typename WS > | |
auto | add_here_impl (value_t &l, const value_t &r) const -> std::enable_if_t<(WetType==wet_kind_t::bitset &&std::is_same< WS, f2 >::value), value_t & > |
v += p , F2 and bitsets. More... | |
value_t & | add_here (value_t &l, const value_t &r) const |
value_t | add (const value_t &l, const value_t &r) const |
The sum of polynomials l and r. More... | |
value_t & | sub_here (value_t &v, const monomial_t &m) const |
v -= m . More... | |
value_t | sub (const value_t &l, const value_t &r) const |
The subtraction of polynomials l and r. More... | |
monomial_t | mul (const monomial_t &l, const monomial_t &r) const |
The product of monomials l and r. More... | |
template<wet_kind_t WetType> | |
auto | mul_impl (const value_t &l, const value_t &r) const -> std::enable_if_t< WetType!=wet_kind_t::bitset, value_t > |
The product of polynomials l and r. More... | |
template<wet_kind_t WetType> | |
auto | mul_impl (const value_t &l, const value_t &r) const -> std::enable_if_t< WetType==wet_kind_t::bitset, value_t > |
The product of polynomials l and r. More... | |
auto | mul (const value_t &l, const value_t &r) const -> value_t |
The product of polynomials l and r. More... | |
auto | mul (const value_t &p, const label_t &l, const weight_t w) const -> value_t |
The product of polynomials l and r. More... | |
template<typename Ctx > | |
std::enable_if_t< Ctx::is_lar, value_t > | conjunction_impl (const value_t &l, const value_t &r) const |
The conjunction of polynomials l and r. More... | |
template<typename Ctx > | |
std::enable_if_t<!Ctx::is_lar, value_t > | conjunction_impl (const value_t &l, const value_t &r) const |
The conjunction of polynomials l and r. More... | |
value_t | conjunction (const value_t &l, const value_t &r) const |
value_t | infiltration (const value_t &l, const value_t &r) const |
The infiltration of polynomials l and r. More... | |
template<wet_kind_t WetType = value_t::kind> | |
auto | scalar_product (const value_t &l, const value_t &r) const -> std::enable_if_t< WetType!=wet_kind_t::bitset, weight_t > |
The sum of the weights of the common labels. More... | |
template<wet_kind_t WetType = value_t::kind, typename WS = weightset_t> | |
auto | scalar_product (const value_t &l, const value_t &r) const -> std::enable_if_t<(WetType==wet_kind_t::bitset &&std::is_same< WS, b >::value), weight_t > |
The sum of the weights of the common labels. More... | |
template<wet_kind_t WetType = value_t::kind, typename WS = weightset_t> | |
auto | scalar_product (const value_t &l, const value_t &r) const -> std::enable_if_t<(WetType==wet_kind_t::bitset &&std::is_same< WS, f2 >::value), weight_t > |
The sum of the weights of the common labels. More... | |
value_t | star (const value_t &v) const |
The star of polynomial v. More... | |
value_t | lmul (const weight_t w, const value_t &v) const |
Left exterior product. More... | |
value_t | lmul_label (const label_t &lhs, const value_t &v) const |
Left product by a label. More... | |
value_t | mul (const monomial_t &lhs, const value_t &v) const |
Left product by a monomial. More... | |
value_t | rmul (const value_t &v, const weight_t w) const |
Right exterior product. More... | |
value_t | rmul_label (const value_t &v, const label_t &rhs) const |
Right product. More... | |
value_t | mul (const value_t &l, const monomial_t &rhs) const |
Right product by a monomial. More... | |
value_t | rdiv (const value_t &l, const value_t &r) const |
monomial_t | ldiv (const monomial_t &l, const monomial_t &r) const |
value_t | ldiv (const monomial_t &l, const value_t &r) const |
Left division by a monomial. More... | |
value_t | ldiv (const value_t &l, const value_t &r) const |
value_t & | ldiv_here (const weight_t w, value_t &v) const |
Left exterior division. More... | |
value_t & | rdiv_here (value_t &v, const weight_t w) const |
Right exterior division. More... | |
value_t | lgcd (const value_t &lhs, const value_t &rhs) const |
LGCD between two polynomials. More... | |
auto | norm (const value_t &v) const -> weight_t |
The norm: the weight with which we should divide a polynomial to normalize it. More... | |
weight_t | normalize_here (value_t &v) const |
Normalize v in place: compute the LGCD of the weights, ldiv the monomials with that factor, and return the factor. More... | |
value_t | normalize (value_t res) const |
Normalized v. More... | |
template<typename... Polys> | |
auto | tuple (Polys &&...vs) const -> value_t |
Build a tuple of polynomials: (e.E+f.F)|(g.G+h.H) => eg. More... | |
template<size_t Tape> | |
auto | project (const value_t &v) const |
Extract a single tape. More... | |
label_t | to_label (const value_t &v) const |
Convert into a label. More... | |
monomial_t | determinize (value_t v) const |
"Determinize" this polynomial: turn into a monomial. More... | |
value_t | complement (const value_t &v) const |
Complement this polynomial. More... | |
const value_t & | zero () const |
bool | is_zero (const value_t &v) const |
template<typename WS > | |
value_t | conv (const WS &ws, const typename WS::value_t &v) const |
FIXME: use enable_if to prevent this from being instantiated when WS is a polynomialset. More... | |
template<typename C , wet_kind_t K> | |
value_t | conv (const polynomialset< C, K > &sps, const typename polynomialset< C, K >::value_t &v) const |
Convert from another polynomialset to type_t. More... | |
value_t | transpose (const value_t &v) const |
std::ostream & | print_set (std::ostream &o, format fmt={}) const |
boost::optional< label_t > | conv_label (std::istream &i, bool weighted, const char sep= '+') const |
Read a label, if there is one. More... | |
weight_t | conv_weight (std::istream &i) const |
Read a weight, if there is one, bracketed. More... | |
boost::optional< monomial_t > | conv_monomial (std::istream &i, const char sep= '+') const |
Read a monomial from a stream. More... | |
value_t | conv (std::istream &i, const char sep= '+') const |
Read a polynomial from a stream. More... | |
std::ostream & | print (const monomial_t &m, std::ostream &out, format fmt={}) const |
Print a monomial. More... | |
std::ostream & | print (const value_t &v, std::ostream &out, format fmt={}, const std::string &sep=" + ") const |
Print a value (a polynomial). More... | |
Static Public Member Functions | |
static symbol | sname () |
The static name. More... | |
static constexpr bool | is_commutative () |
static constexpr bool | has_lightening_weights () |
static ATTRIBUTE_PURE bool | monomial_equal (const monomial_t &lhs, const monomial_t &rhs) |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | equal_impl (const value_t &l, const value_t &r) -> std::enable_if_t< WetType!=wet_kind_t::bitset, bool > |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | equal_impl (const value_t &l, const value_t &r) -> std::enable_if_t< WetType==wet_kind_t::bitset, bool > |
static ATTRIBUTE_PURE bool | equal (const value_t &l, const value_t &r) |
static const value_t & | one () |
The unit polynomial. More... | |
static const monomial_t & | monomial_one () |
The unit monomial. More... | |
static bool | is_one (const value_t &v) ATTRIBUTE_PURE |
Whether is the unit polynomial. More... | |
static constexpr bool | show_one () |
static constexpr star_status_t | star_status () |
static value_t | conv (self_t, const value_t &v) |
Conversion from (this and) other weightsets. More... | |
static ATTRIBUTE_PURE bool | monomial_less (const monomial_t &lhs, const monomial_t &rhs) |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | less_impl (const value_t &l, const value_t &r) -> std::enable_if_t< WetType!=wet_kind_t::bitset, bool > |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | less_impl (const value_t &l, const value_t &r) -> std::enable_if_t< WetType==wet_kind_t::bitset, bool > |
static ATTRIBUTE_PURE bool | less (const value_t &l, const value_t &r) |
static ATTRIBUTE_PURE size_t | hash (const monomial_t &m, size_t res=0) |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | hash_impl (const value_t &p) -> std::enable_if_t< WetType!=wet_kind_t::bitset, size_t > |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | hash_impl (const value_t &p) -> std::enable_if_t< WetType==wet_kind_t::bitset, size_t > |
static ATTRIBUTE_PURE size_t | hash (const value_t &v) |
static self_t | make (std::istream &is) |
Build from the description in is. More... | |
Private Member Functions | |
std::ostream & | print_weight_ (const weight_t w, std::ostream &out, format fmt) const |
Print a weight. More... | |
std::ostream & | print_without_classes_ (const value_t &v, std::ostream &out, format fmt, const std::string &sep) const |
Print a polynomial value without classes. More... | |
std::ostream & | print_with_classes_ (const value_t &v, std::ostream &out, format fmt, const std::string &sep) const |
Print a polynomial value with classes. More... | |
template<typename Ctx = context_t> | |
std::enable_if_t<!labelset_t_of< Ctx >::is_letterized(), std::ostream & > | print_ (const value_t &v, std::ostream &out, format fmt={}, const std::string &sep=" + ") const |
Print a non-null value for a non letterized labelset. More... | |
template<typename Ctx = context_t> | |
std::enable_if_t< labelset_t_of< Ctx >::is_letterized(), std::ostream & > | print_ (const value_t &v, std::ostream &out, format fmt={}, const std::string &sep=" + ") const |
Print a non-null value for a letterized labelset (e.g., letterset or nullableset. More... | |
Private Attributes | |
context_t | ctx_ |
Static Private Attributes | |
static constexpr char | langle = '<' |
Left marker for weight in concrete syntax. More... | |
static constexpr char | rangle = '>' |
Right marker for weight in concrete syntax. More... | |
Linear combination of labels: map labels to weights.
Context | the LabelSet and WeightSet types. |
using vcsn::detail::polynomialset_impl< Context, Kind >::context_t = Context |
Definition at line 82 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::label_t = typename labelset_t::value_t |
Polynomials over labels.
Definition at line 89 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::labelset_ptr = typename context_t::labelset_ptr |
Definition at line 86 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::labelset_t = labelset_t_of<context_t> |
Definition at line 83 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::monomial_t = typename value_t::value_type |
A pair <label, weight>.
Definition at line 94 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::self_t = polynomialset<Context, Kind> |
Definition at line 81 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::value_t = wet_of<context_t, Kind> |
Definition at line 92 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::weight_t = weight_t_of<context_t> |
Definition at line 90 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::weightset_ptr = typename context_t::weightset_ptr |
Definition at line 87 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::weightset_t = weightset_t_of<context_t> |
Definition at line 84 of file polynomialset.hh.
|
delete |
|
default |
|
default |
|
inline |
Definition at line 99 of file polynomialset.hh.
|
inline |
The sum of polynomials l and r.
Definition at line 261 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here().
|
inline |
v += <k>l
.
Definition at line 188 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::label_is_zero(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::set_weight(), vcsn::detail::v, vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::add(), vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::add_here_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::conjunction_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::conv(), vcsn::detail::polynomialset_impl< Context, Kind >::infiltration(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul_label(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::detail::polynomialset_impl< Context, Kind >::mul_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::rmul(), vcsn::detail::polynomialset_impl< Context, Kind >::rmul_label(), and vcsn::detail::polynomialset_impl< Context, Kind >::tuple().
|
inline |
v += m
.
Definition at line 213 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), and vcsn::weight_of().
|
inline |
Definition at line 255 of file polynomialset.hh.
|
inline |
v += p
, default case.
Definition at line 221 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here().
|
inline |
v += p
, B and bitsets.
Definition at line 233 of file polynomialset.hh.
|
inline |
v += p
, F2 and bitsets.
Definition at line 245 of file polynomialset.hh.
|
inline |
Set to zero.
Definition at line 176 of file polynomialset.hh.
|
inline |
Complement this polynomial.
Requires a rather powerful labelset, typically expressionset.
Definition at line 822 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::normalize(), vcsn::detail::polynomialset_impl< Context, Kind >::to_label(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Definition at line 407 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::conjunction_impl().
|
inline |
The conjunction of polynomials l and r.
Valid only for expressionsets.
Definition at line 380 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::conjunction(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
The conjunction of polynomials l and r.
Valid only for every other labelsets.
Definition at line 395 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Definition at line 122 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::ctx_.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::project().
|
inlinestatic |
Conversion from (this and) other weightsets.
Definition at line 913 of file polynomialset.hh.
References vcsn::detail::v.
|
inline |
FIXME: use enable_if to prevent this from being instantiated when WS is a polynomialset.
Then use this same technique for expressions.
Definition at line 923 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Convert from another polynomialset to type_t.
Definition at line 931 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Read a polynomial from a stream.
Somewhat more general than a mere reversal of "format", in particular "a+a" is properly understood as "<2>a" in char_z.
i | the stream to parse. |
sep | the separator between monomials. |
Definition at line 1200 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::conv_label(), vcsn::detail::polynomialset_impl< Context, Kind >::conv_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::langle, vcsn::require(), and SKIP_SPACES.
|
inline |
Read a label, if there is one.
Does not handle \z
, nor letter classes.
Definition at line 1084 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::conv(), and vcsn::detail::polynomialset_impl< Context, Kind >::conv_monomial().
|
inline |
Read a monomial from a stream.
i | the stream to parse |
sep | the separator between monomials. |
Definition at line 1168 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::conv_label(), vcsn::detail::polynomialset_impl< Context, Kind >::conv_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::langle, vcsn::require(), and SKIP_SPACES.
|
inline |
Read a weight, if there is one, bracketed.
Definition at line 1145 of file polynomialset.hh.
References vcsn::bracketed(), vcsn::conv(), vcsn::detail::polynomialset_impl< Context, Kind >::langle, vcsn::detail::polynomialset_impl< Context, Kind >::rangle, and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::conv(), and vcsn::detail::polynomialset_impl< Context, Kind >::conv_monomial().
|
inline |
Remove the monomial of l in v.
Definition at line 134 of file polynomialset.hh.
References vcsn::detail::v.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::set_weight().
|
inline |
"Determinize" this polynomial: turn into a monomial.
Requires a rather powerful labelset, typically expressionset.
Definition at line 813 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::normalize_here(), and vcsn::detail::polynomialset_impl< Context, Kind >::to_label().
|
inlinestatic |
Definition at line 862 of file polynomialset.hh.
|
inlinestatic |
Definition at line 843 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::monomial_equal().
|
inlinestatic |
Definition at line 853 of file polynomialset.hh.
|
inline |
Definition at line 161 of file polynomialset.hh.
References vcsn::detail::v, vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inlinestatic |
Definition at line 127 of file polynomialset.hh.
|
inlinestatic |
Definition at line 1003 of file polynomialset.hh.
References vcsn::hash_combine(), vcsn::label_of(), and vcsn::weight_of().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::hash_impl().
|
inlinestatic |
Definition at line 1034 of file polynomialset.hh.
References vcsn::detail::v.
|
inlinestatic |
Definition at line 1013 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::hash().
|
inlinestatic |
Definition at line 1026 of file polynomialset.hh.
References vcsn::detail::hash_value().
|
inline |
The infiltration of polynomials l and r.
Not valid for all the labelsets.
Definition at line 415 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inlinestatic |
Definition at line 126 of file polynomialset.hh.
|
inlinestatic |
Whether is the unit polynomial.
Definition at line 882 of file polynomialset.hh.
References vcsn::detail::v.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::ldiv_here(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul(), vcsn::detail::polynomialset_impl< Context, Kind >::print_weight_(), vcsn::detail::polynomialset_impl< Context, Kind >::print_with_classes_(), and vcsn::detail::polynomialset_impl< Context, Kind >::rdiv_here().
|
inline |
Definition at line 900 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul(), vcsn::detail::polynomialset_impl< Context, Kind >::new_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::norm(), vcsn::detail::polynomialset_impl< Context, Kind >::normalize_here(), vcsn::detail::polynomialset_impl< Context, Kind >::rmul(), vcsn::detail::polynomialset_impl< Context, Kind >::set_weight(), and vcsn::detail::polynomialset_impl< Context, Kind >::sub_here().
|
inline |
Definition at line 123 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::ctx_.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::complement(), vcsn::detail::polynomialset_impl< Context, Kind >::conjunction_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::conv(), vcsn::detail::polynomialset_impl< Context, Kind >::infiltration(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::lgcd(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul_label(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::detail::polynomialset_impl< Context, Kind >::mul_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::print_with_classes_(), vcsn::detail::polynomialset_impl< Context, Kind >::rmul(), vcsn::detail::polynomialset_impl< Context, Kind >::rmul_label(), vcsn::detail::polynomialset_impl< Context, Kind >::star(), vcsn::detail::polynomialset_impl< Context, Kind >::sub_here(), vcsn::detail::polynomialset_impl< Context, Kind >::to_label(), vcsn::detail::polynomialset_impl< Context, Kind >::transpose(), and vcsn::detail::polynomialset_impl< Context, Kind >::tuple().
|
inline |
Definition at line 571 of file polynomialset.hh.
References vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), and vcsn::detail::polynomialset_impl< Context, Kind >::ldiv_here().
|
inline |
Left division by a monomial.
Definition at line 579 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), and vcsn::detail::polynomialset_impl< Context, Kind >::ldiv().
|
inline |
Definition at line 588 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::factor(), vcsn::detail::front(), vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::detail::polynomialset_impl< Context, Kind >::print(), vcsn::detail::polynomialset_impl< Context, Kind >::sname(), vcsn::detail::polynomialset_impl< Context, Kind >::sub(), and vcsn::to_string().
|
inline |
Left exterior division.
Definition at line 633 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_one(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::v, vcsn::weight_of(), vcsn::weight_set(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::normalize_here().
|
inlinestatic |
Definition at line 982 of file polynomialset.hh.
|
inlinestatic |
Definition at line 963 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::monomial_less().
|
inlinestatic |
Definition at line 973 of file polynomialset.hh.
|
inline |
LGCD between two polynomials.
Based only on weights. For instance <2>a+<4>b, <3>a+<6>b => <1>a+<2>b. And ab, a => 1. We could try to have ab, a => a in the future.
Definition at line 657 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::one(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Left exterior product.
Definition at line 486 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::is_one(), vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::detail::v, vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::to_label().
|
inline |
Left product by a label.
Definition at line 499 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), and vcsn::weight_of().
|
inlinestatic |
Build from the description in is.
Definition at line 1041 of file polynomialset.hh.
References vcsn::rat::ctx(), and vcsn::eat().
|
inlinestatic |
Definition at line 833 of file polynomialset.hh.
References vcsn::label_of(), and vcsn::weight_of().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::equal_impl().
|
inlinestatic |
Definition at line 950 of file polynomialset.hh.
References vcsn::label_of(), and vcsn::weight_of().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::less_impl().
|
inlinestatic |
The unit monomial.
Definition at line 875 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::one().
|
inline |
The product of monomials l and r.
Definition at line 316 of file polynomialset.hh.
References vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::conjunction_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::infiltration(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul_label(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::detail::polynomialset_impl< Context, Kind >::mul_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::rmul_label(), and vcsn::detail::polynomialset_impl< Context, Kind >::scalar_product().
|
inline |
The product of polynomials l and r.
Definition at line 352 of file polynomialset.hh.
|
inline |
The product of polynomials l and r.
Definition at line 360 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Left product by a monomial.
Definition at line 511 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Right product by a monomial.
Definition at line 553 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
The product of polynomials l and r.
General case.
Definition at line 326 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
The product of polynomials l and r.
Case of bitsets.
Definition at line 343 of file polynomialset.hh.
|
inline |
Set the monomial of l in v to weight k.
Definition at line 143 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::detail::v, and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::set_weight().
|
inline |
The norm: the weight with which we should divide a polynomial to normalize it.
Definition at line 726 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::detail::v, and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::normalize_here().
|
inline |
Normalized v.
Definition at line 752 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::normalize_here().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::complement().
|
inline |
Normalize v in place: compute the LGCD of the weights, ldiv the monomials with that factor, and return the factor.
Definition at line 742 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv_here(), vcsn::detail::polynomialset_impl< Context, Kind >::norm(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::determinize(), and vcsn::detail::polynomialset_impl< Context, Kind >::normalize().
|
inlinestatic |
The unit polynomial.
Definition at line 868 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::monomial_one().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::lgcd(), and vcsn::detail::polynomialset_impl< Context, Kind >::star().
|
inline |
Print a monomial.
Definition at line 1243 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::print_with_classes_(), and vcsn::detail::polynomialset_impl< Context, Kind >::print_without_classes_().
|
inline |
Print a value (a polynomial).
v | the polynomial |
out | the output stream |
fmt | the format: "text" or "latex" |
sep | the separator between monomials |
Definition at line 1263 of file polynomialset.hh.
|
inlineprivate |
Print a non-null value for a non letterized labelset.
Definition at line 1389 of file polynomialset.hh.
|
inlineprivate |
Print a non-null value for a letterized labelset (e.g., letterset or nullableset.
Definition at line 1401 of file polynomialset.hh.
|
inline |
Definition at line 1051 of file polynomialset.hh.
|
inlineprivate |
Print a weight.
Definition at line 1287 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_one(), vcsn::format::latex, vcsn::detail::out(), vcsn::detail::polynomialset_impl< Context, Kind >::show_one(), vcsn::format::utf8, and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::print_with_classes_().
|
inlineprivate |
Print a polynomial value with classes.
Definition at line 1323 of file polynomialset.hh.
References vcsn::format::for_labels(), vcsn::detail::front(), vcsn::detail::polynomialset_impl< Context, Kind >::is_one(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::map, vcsn::detail::out(), vcsn::detail::polynomialset_impl< Context, Kind >::print(), vcsn::detail::print_label_class(), vcsn::detail::polynomialset_impl< Context, Kind >::print_weight_(), and vcsn::weight_of().
|
inlineprivate |
Print a polynomial value without classes.
Definition at line 1306 of file polynomialset.hh.
References vcsn::detail::out(), and vcsn::detail::polynomialset_impl< Context, Kind >::print().
|
inline |
Extract a single tape.
Definition at line 784 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::context(), vcsn::label_of(), vcsn::detail::make_polynomialset(), and vcsn::weight_of().
|
inline |
Definition at line 564 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::sname(), and vcsn::to_string().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::rdiv_here().
|
inline |
Right exterior division.
Definition at line 643 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_one(), vcsn::detail::polynomialset_impl< Context, Kind >::rdiv(), vcsn::detail::v, vcsn::weight_of(), vcsn::weight_set(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Right exterior product.
Beware that we do not multiply the weight here, but the label. It seems that this routine is used only when calling "split", which is done only on polynomials of expressions, so it is valid to rmul a label by a weight. If some day we need an rmul between weights, we will need additional properties to allow it.
Definition at line 530 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Right product.
Definition at line 541 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), and vcsn::weight_of().
|
inline |
The sum of the weights of the common labels.
Default case.
Definition at line 430 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
The sum of the weights of the common labels.
B and bitsets.
Definition at line 446 of file polynomialset.hh.
|
inline |
The sum of the weights of the common labels.
F2 and bitsets.
Definition at line 458 of file polynomialset.hh.
|
inline |
Ourself, but after the application of weightset_mixin.
FIXME: this is ugly. It is due to the fact that instead of the CRTP, we used a mixin approach to add features to expressionset as opposed to expressionset_impl. Except that here, we have an expression_impl, and we need the expression. So after all, maybe the CRTP is a better approach.
Cannot be a reference member, as we do support assignments, in which case the copied self would point to the original this.
Definition at line 113 of file polynomialset.hh.
|
inline |
Set the monomial of l in v to weight w.
Definition at line 152 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::del_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::detail::polynomialset_impl< Context, Kind >::new_weight(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::add_here().
|
inlinestatic |
Definition at line 905 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::print_weight_().
|
inlinestatic |
The static name.
Definition at line 116 of file polynomialset.hh.
References vcsn::sname().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::rdiv(), vcsn::detail::polynomialset_impl< Context, Kind >::star(), and vcsn::detail::polynomialset_impl< Context, Kind >::sub_here().
|
inline |
The star of polynomial v.
Definition at line 468 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::one(), vcsn::detail::polynomialset_impl< Context, Kind >::sname(), vcsn::to_string(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inlinestatic |
Definition at line 906 of file polynomialset.hh.
|
inline |
The subtraction of polynomials l and r.
Definition at line 301 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::sub_here().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::ldiv().
|
inline |
v -= m
.
Definition at line 275 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::is_zero(), vcsn::label_is_zero(), vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::sname(), vcsn::to_string(), vcsn::detail::v, vcsn::weight_of(), vcsn::weight_set(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::sub().
|
inline |
Convert into a label.
Requires a rather powerful labelset, typically expressionset. Typical usage is therefore to "project" a polynomial of expressions into an expression (say for complement for instance).
Definition at line 801 of file polynomialset.hh.
References vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul(), and vcsn::weight_of().
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::complement(), and vcsn::detail::polynomialset_impl< Context, Kind >::determinize().
|
inline |
Definition at line 989 of file polynomialset.hh.
References vcsn::label_of(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
inline |
Build a tuple of polynomials: (e.E+f.F)|(g.G+h.H) => eg.
(E|G) + eh.(E|H) + fg.(F|G) + fh.(F|H).
Definition at line 768 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::cross(), and vcsn::detail::polynomialset_impl< Context, Kind >::labelset().
|
inline |
Definition at line 124 of file polynomialset.hh.
References vcsn::detail::polynomialset_impl< Context, Kind >::ctx_.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::add_here(), vcsn::detail::polynomialset_impl< Context, Kind >::complement(), vcsn::detail::polynomialset_impl< Context, Kind >::conjunction_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::conv(), vcsn::detail::polynomialset_impl< Context, Kind >::conv_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::get_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::infiltration(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv(), vcsn::detail::polynomialset_impl< Context, Kind >::ldiv_here(), vcsn::detail::polynomialset_impl< Context, Kind >::lgcd(), vcsn::detail::polynomialset_impl< Context, Kind >::lmul(), vcsn::detail::polynomialset_impl< Context, Kind >::mul(), vcsn::detail::polynomialset_impl< Context, Kind >::mul_impl(), vcsn::detail::polynomialset_impl< Context, Kind >::new_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::norm(), vcsn::detail::polynomialset_impl< Context, Kind >::normalize_here(), vcsn::detail::polynomialset_impl< Context, Kind >::print_weight_(), vcsn::detail::polynomialset_impl< Context, Kind >::rdiv_here(), vcsn::detail::polynomialset_impl< Context, Kind >::rmul(), vcsn::detail::polynomialset_impl< Context, Kind >::scalar_product(), vcsn::detail::polynomialset_impl< Context, Kind >::set_weight(), vcsn::detail::polynomialset_impl< Context, Kind >::star(), vcsn::detail::polynomialset_impl< Context, Kind >::sub_here(), and vcsn::detail::polynomialset_impl< Context, Kind >::transpose().
|
inline |
Definition at line 893 of file polynomialset.hh.
|
private |
Definition at line 1414 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::context(), vcsn::detail::polynomialset_impl< Context, Kind >::labelset(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().
|
staticprivate |
Left marker for weight in concrete syntax.
Definition at line 1417 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::conv(), vcsn::detail::polynomialset_impl< Context, Kind >::conv_monomial(), and vcsn::detail::polynomialset_impl< Context, Kind >::conv_weight().
|
staticprivate |
Right marker for weight in concrete syntax.
Definition at line 1419 of file polynomialset.hh.
Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::conv_weight().