![]() |
Vcsn
2.8
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... | |
template<typename Ctx > | |
using | rweight_t = decltype(std::declval< labelset_t_of< Ctx > >() .rweight(std::declval< label_t_of< Ctx > >(), std::declval< weight_t_of< Ctx > >())) |
Detect whether the labelset features rweight . More... | |
template<typename Ctx > | |
using | has_rweight_fn = detect< Ctx, rweight_t > |
Whether LabelSet features rweight . More... | |
template<typename Ctx > | |
using | compose_t = decltype(std::declval< labelset_t_of< Ctx > >() .compose(std::declval< label_t_of< Ctx > >(), std::declval< label_t_of< Ctx > >())) |
Detect whether the labelset features a binary compose . More... | |
template<typename Ctx > | |
using | has_compose_fn = detect< Ctx, compose_t > |
Whether LabelSet features compose . 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 | value (const label_t &l, const weight_t w) const |
Create a polynomial with a single value. More... | |
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 w. 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 (value_t res, 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 | infiltrate (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 | abs (const value_t &v) const |
Map all weights to their absolute value. More... | |
value_t | star (const value_t &v) const |
The star of polynomial v. More... | |
value_t | lweight (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... | |
auto | rweight (const value_t &v, const weight_t w) const -> value_t |
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 | rdivide (const value_t &l, const value_t &r) const |
monomial_t | ldivide (const monomial_t &l, const monomial_t &r) const |
Left division between two mononials: l \ r . More... | |
value_t | ldivide (const monomial_t &l, const value_t &r) const |
Left division by a monomial: l \ r . More... | |
template<typename Ctx = context_t> | |
std::enable_if_t< Ctx::is_lar, value_t & > | add_ldivide_here (value_t &res, const value_t &l, const value_t &r) const |
The left-division of polynomials l and r: res += l \ r . More... | |
template<typename Ctx = context_t> | |
std::enable_if_t<!Ctx::is_lar, value_t & > | add_ldivide_here (value_t &res, const value_t &l, const value_t &r) const |
The left-division of polynomials l and r: res += l \ r . More... | |
value_t | ldivide (const value_t &l, const value_t &r) const |
Left division of two polynomials: l \ r . More... | |
value_t & | ldivide_here (const weight_t w, value_t &v) const |
Left exterior division. More... | |
value_t & | rdivide_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, ldivide 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 |
The polynomialset for tape Tape. More... | |
template<size_t Tape> | |
auto | project (const value_t &v) const |
Extract a single tape. More... | |
template<typename Ctx1 , typename Ctx2 > | |
auto | compose (const polynomialset< Ctx1 > &ps1, const typename polynomialset< Ctx1 >::value_t &p1, const polynomialset< Ctx2 > &ps2, const typename polynomialset< Ctx2 >::value_t &p2) const -> std::enable_if_t< are_composable< Ctx1, Ctx2 > |
The composition of polynomials l and r when the context is a composable tupleset. More... | |
template<typename Ctx = context_t> | |
auto | compose (const value_t &l, const value_t &r) const -> std::enable_if_t< has_compose_fn< Ctx > |
The composition of polynomials l and r when the context features compose . 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 |
Transpose the labels and the weights. More... | |
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=std::cout, format fmt={}) const |
Print a monomial. More... | |
std::ostream & | print (const value_t &v, std::ostream &out=std::cout, 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) |
Whether l == r. More... | |
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 int | monomial_compare (const monomial_t &lhs, const monomial_t &rhs) |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | compare_impl_ (const value_t &l, const value_t &r) -> std::enable_if_t< WetType !=wet_kind_t::bitset, int > |
template<wet_kind_t WetType> | |
static ATTRIBUTE_PURE auto | compare_impl_ (const value_t &l, const value_t &r) -> std::enable_if_t< WetType==wet_kind_t::bitset, int > |
static ATTRIBUTE_PURE int | compare (const value_t &l, const value_t &r) |
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... | |
Public Attributes | |
value_t | |
const auto & | ls1 = *ps1.labelset() |
const auto & | ls2 = *ps2.labelset() |
constexpr auto | out = number_of_tapes<Ctx2>::value - 1 |
constexpr auto | in = 0 |
const auto & | midls = ls1.template set<out>() |
auto | res = value_t{} |
for(const auto &m1:p1) for(const auto &m2 return | res |
for(const auto &lm:l) for(const auto &rm return | res |
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 >::compose_t = decltype(std::declval<labelset_t_of<Ctx> >() .compose(std::declval<label_t_of<Ctx> >(), std::declval<label_t_of<Ctx> >())) |
Detect whether the labelset features a binary compose
.
Definition at line 859 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::context_t = Context |
Definition at line 83 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::has_compose_fn = detect<Ctx, compose_t> |
Whether LabelSet features compose
.
This is actually meant to detect the case of expressionset.
Definition at line 864 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::has_rweight_fn = detect<Ctx, rweight_t> |
Whether LabelSet features rweight
.
Definition at line 543 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::label_t = typename labelset_t::value_t |
Polynomials over labels.
Definition at line 90 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::labelset_ptr = typename context_t::labelset_ptr |
Definition at line 87 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::labelset_t = labelset_t_of<context_t> |
Definition at line 84 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 95 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::rweight_t = decltype(std::declval<labelset_t_of<Ctx> >() .rweight(std::declval<label_t_of<Ctx> >(), std::declval<weight_t_of<Ctx> >())) |
Detect whether the labelset features rweight
.
Definition at line 539 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::self_t = polynomialset<Context, Kind> |
Definition at line 82 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::value_t = wet_of<context_t, Kind> |
Definition at line 93 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::weight_t = weight_t_of<context_t> |
Definition at line 91 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::weightset_ptr = typename context_t::weightset_ptr |
Definition at line 88 of file polynomialset.hh.
using vcsn::detail::polynomialset_impl< Context, Kind >::weightset_t = weightset_t_of<context_t> |
Definition at line 85 of file polynomialset.hh.
|
delete |
|
default |
|
default |
|
inline |
Definition at line 100 of file polynomialset.hh.
|
inline |
Map all weights to their absolute value.
Definition at line 471 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
The sum of polynomials l and r.
Definition at line 266 of file polynomialset.hh.
References vcsn::add_here(), and vcsn::res.
|
inline |
v += <k>l
.
Definition at line 195 of file polynomialset.hh.
References vcsn::detail::label_is_zero(), vcsn::detail::v, and vcsn::weight_of().
|
inline |
v += m
.
Definition at line 218 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), and vcsn::weight_of().
|
inline |
Definition at line 260 of file polynomialset.hh.
|
inline |
v += p
, default case.
Definition at line 226 of file polynomialset.hh.
References vcsn::add_here().
|
inline |
v += p
, B and bitsets.
Definition at line 238 of file polynomialset.hh.
|
inline |
v += p
, F2 and bitsets.
Definition at line 250 of file polynomialset.hh.
|
inline |
The left-division of polynomials l and r: res += l \ r
.
Valid only for expressionsets.
Definition at line 628 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
The left-division of polynomials l and r: res += l \ r
.
Valid only for every other labelsets.
Definition at line 649 of file polynomialset.hh.
References vcsn::add_here(), vcsn::factor(), vcsn::detail::front(), vcsn::res, and vcsn::to_string().
|
inline |
Set to zero.
Definition at line 183 of file polynomialset.hh.
|
inlinestatic |
Definition at line 1103 of file polynomialset.hh.
|
inlinestatic |
Definition at line 1084 of file polynomialset.hh.
References vcsn::detail::lexicographical_cmp().
|
inlinestatic |
Definition at line 1094 of file polynomialset.hh.
|
inline |
Complement this polynomial.
Requires a rather powerful labelset, typically expressionset.
Definition at line 943 of file polynomialset.hh.
References vcsn::normalize().
|
inline |
The composition of polynomials l and r when the context is a composable tupleset.
Definition at line 871 of file polynomialset.hh.
|
inline |
The composition of polynomials l and r when the context features compose
.
Definition at line 902 of file polynomialset.hh.
References vcsn::res.
|
inline |
Definition at line 411 of file polynomialset.hh.
|
inline |
The conjunction of polynomials l and r.
Valid only for expressionsets.
Definition at line 384 of file polynomialset.hh.
References vcsn::add_here(), vcsn::detail::conjunction(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
The conjunction of polynomials l and r.
Valid only for every other labelsets.
Definition at line 399 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Definition at line 123 of file polynomialset.hh.
|
inlinestatic |
Conversion from (this and) other weightsets.
Definition at line 1035 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 1045 of file polynomialset.hh.
|
inline |
Convert from another polynomialset to type_t.
Definition at line 1053 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Read a polynomial from a stream.
More general than a mere inverse of print
, in particular a+a
is properly understood as <2>a
in lal, z
.
i | the stream to parse. |
sep | the separator between monomials. |
Definition at line 1372 of file polynomialset.hh.
References vcsn::add_here(), vcsn::require(), vcsn::res, and SKIP_SPACES.
|
inline |
Read a label, if there is one.
Does not handle \\z
, nor letter classes.
Definition at line 1257 of file polynomialset.hh.
|
inline |
Read a monomial from a stream.
i | the stream to parse |
sep | the separator between monomials. |
Definition at line 1341 of file polynomialset.hh.
References vcsn::require(), and SKIP_SPACES.
|
inline |
Read a weight, if there is one, bracketed.
Definition at line 1318 of file polynomialset.hh.
References vcsn::bracketed(), and vcsn::conv().
|
inline |
Remove the monomial of l in v.
Definition at line 141 of file polynomialset.hh.
References vcsn::detail::v.
|
inline |
"Determinize" this polynomial: turn into a monomial.
Requires a rather powerful labelset, typically expressionset.
Definition at line 934 of file polynomialset.hh.
|
inlinestatic |
Whether l == r.
Definition at line 984 of file polynomialset.hh.
|
inlinestatic |
Definition at line 964 of file polynomialset.hh.
|
inlinestatic |
Definition at line 974 of file polynomialset.hh.
|
inline |
Definition at line 168 of file polynomialset.hh.
References vcsn::detail::v, and vcsn::weight_of().
|
inlinestatic |
Definition at line 128 of file polynomialset.hh.
|
inlinestatic |
Definition at line 1176 of file polynomialset.hh.
References vcsn::hash_combine(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inlinestatic |
Definition at line 1207 of file polynomialset.hh.
References vcsn::detail::v.
|
inlinestatic |
Definition at line 1186 of file polynomialset.hh.
References vcsn::res.
|
inlinestatic |
Definition at line 1199 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 419 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inlinestatic |
Definition at line 127 of file polynomialset.hh.
|
inlinestatic |
Whether is the unit polynomial.
Definition at line 1004 of file polynomialset.hh.
References vcsn::detail::v.
|
inline |
Definition at line 1022 of file polynomialset.hh.
|
inline |
Definition at line 124 of file polynomialset.hh.
|
inline |
Left division between two mononials: l \ r
.
Definition at line 608 of file polynomialset.hh.
References vcsn::label_of(), and vcsn::weight_of().
|
inline |
Left division by a monomial: l \ r
.
Definition at line 616 of file polynomialset.hh.
References vcsn::add_here(), and vcsn::res.
|
inline |
Left division of two polynomials: l \ r
.
Definition at line 672 of file polynomialset.hh.
References vcsn::res.
|
inline |
Left exterior division.
Definition at line 681 of file polynomialset.hh.
References vcsn::detail::v, vcsn::weight_of(), and vcsn::weight_set().
|
inlinestatic |
Definition at line 1146 of file polynomialset.hh.
|
inlinestatic |
Definition at line 1127 of file polynomialset.hh.
|
inlinestatic |
Definition at line 1137 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 705 of file polynomialset.hh.
References vcsn::lgcd(), and vcsn::res.
|
inline |
Left product by a label.
Definition at line 512 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Left exterior product.
Definition at line 499 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, vcsn::detail::v, and vcsn::weight_of().
|
inlinestatic |
Build from the description in is.
Definition at line 1214 of file polynomialset.hh.
References vcsn::detail::ctx, and vcsn::eat().
|
inlinestatic |
Definition at line 1073 of file polynomialset.hh.
References vcsn::compare(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inlinestatic |
Definition at line 954 of file polynomialset.hh.
References vcsn::label_of(), and vcsn::weight_of().
|
inlinestatic |
Definition at line 1114 of file polynomialset.hh.
References vcsn::label_of(), and vcsn::weight_of().
|
inlinestatic |
|
inline |
The product of monomials l and r.
Definition at line 320 of file polynomialset.hh.
References vcsn::label_of(), and vcsn::weight_of().
|
inline |
The product of polynomials l and r.
Definition at line 356 of file polynomialset.hh.
|
inline |
The product of polynomials l and r.
Definition at line 364 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Left product by a monomial.
Definition at line 524 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Right product by a monomial.
Definition at line 589 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
The product of polynomials l and r.
General case.
Definition at line 330 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
The product of polynomials l and r.
Case of bitsets.
Definition at line 347 of file polynomialset.hh.
|
inline |
Set the monomial of l in v to weight w.
Definition at line 150 of file polynomialset.hh.
References vcsn::detail::v.
|
inline |
The norm: the weight with which we should divide a polynomial to normalize it.
Definition at line 774 of file polynomialset.hh.
References vcsn::detail::v.
|
inline |
|
inline |
Normalize v in place: compute the LGCD of the weights, ldivide the monomials with that factor, and return the factor.
Definition at line 790 of file polynomialset.hh.
References vcsn::res.
|
inlinestatic |
|
inline |
Print a monomial.
Definition at line 1415 of file polynomialset.hh.
References vcsn::label_of(), vcsn::format::latex, vcsn::detail::out(), and vcsn::weight_of().
|
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 1435 of file polynomialset.hh.
References vcsn::format::latex, vcsn::detail::out(), vcsn::detail::print_(), and vcsn::format::utf8.
|
inlineprivate |
Print a non-null value for a non letterized labelset.
Definition at line 1561 of file polynomialset.hh.
References vcsn::detail::is_letterized().
|
inlineprivate |
Print a non-null value for a letterized labelset (e.g., letterset or nullableset.
Definition at line 1573 of file polynomialset.hh.
|
inline |
Definition at line 1224 of file polynomialset.hh.
References vcsn::format::latex, vcsn::context< LabelSet, WeightSet >::print_set(), and vcsn::format::sname.
|
inlineprivate |
Print a weight.
Definition at line 1459 of file polynomialset.hh.
References vcsn::format::latex, vcsn::detail::out(), and vcsn::format::utf8.
|
inlineprivate |
Print a polynomial value with classes.
Definition at line 1495 of file polynomialset.hh.
References vcsn::format::for_labels(), vcsn::detail::front(), vcsn::detail::is_letterized(), vcsn::label_of(), vcsn::map, vcsn::detail::out(), vcsn::detail::print(), vcsn::detail::print_label_class(), and vcsn::weight_of().
|
inlineprivate |
Print a polynomial value without classes.
Definition at line 1478 of file polynomialset.hh.
References vcsn::detail::out(), and vcsn::detail::print().
|
inline |
The polynomialset for tape Tape.
Definition at line 832 of file polynomialset.hh.
References vcsn::detail::make_polynomialset().
|
inline |
Extract a single tape.
Definition at line 839 of file polynomialset.hh.
References vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Definition at line 600 of file polynomialset.hh.
References vcsn::to_string().
|
inline |
Right exterior division.
Definition at line 691 of file polynomialset.hh.
References vcsn::rdivide(), vcsn::detail::v, vcsn::weight_of(), and vcsn::weight_set().
|
inline |
Right product.
Definition at line 577 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Right exterior product.
Definition at line 547 of file polynomialset.hh.
References vcsn::add_here(), vcsn::label_of(), vcsn::res, vcsn::detail::v, and vcsn::weight_of().
|
inline |
The sum of the weights of the common labels.
Default case.
Definition at line 434 of file polynomialset.hh.
References vcsn::res, and vcsn::weight_of().
|
inline |
The sum of the weights of the common labels.
B and bitsets.
Definition at line 450 of file polynomialset.hh.
|
inline |
The sum of the weights of the common labels.
F2 and bitsets.
Definition at line 462 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 114 of file polynomialset.hh.
|
inline |
Set the monomial of l in v to weight w.
Definition at line 159 of file polynomialset.hh.
|
inlinestatic |
Definition at line 1027 of file polynomialset.hh.
|
inlinestatic |
The static name.
Definition at line 117 of file polynomialset.hh.
References vcsn::res, and vcsn::sname().
|
inline |
The star of polynomial v.
Definition at line 481 of file polynomialset.hh.
References vcsn::raise_not_starrable().
|
inlinestatic |
Definition at line 1028 of file polynomialset.hh.
|
inline |
The subtraction of polynomials l and r.
Definition at line 305 of file polynomialset.hh.
References vcsn::res.
|
inline |
v -= m
.
Definition at line 279 of file polynomialset.hh.
References vcsn::detail::label_is_zero(), vcsn::label_of(), vcsn::to_string(), vcsn::detail::v, vcsn::weight_of(), and vcsn::weight_set().
|
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 922 of file polynomialset.hh.
References vcsn::label_of(), vcsn::res, and vcsn::weight_of().
|
inline |
Transpose the labels and the weights.
In the case of a polynomial of expressions, use transposition instead of transpose, i.e., add tranposition operators instead of creating deep transposed copies of the expressions.
Definition at line 1158 of file polynomialset.hh.
References vcsn::label_of(), vcsn::res, vcsn::transpose(), and vcsn::weight_of().
|
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 816 of file polynomialset.hh.
References vcsn::add_here(), vcsn::detail::cross(), vcsn::res, and vcsn::detail::tuple().
|
inline |
Create a polynomial with a single value.
Definition at line 134 of file polynomialset.hh.
|
inline |
Definition at line 125 of file polynomialset.hh.
|
inline |
Definition at line 1015 of file polynomialset.hh.
References vcsn::res.
|
private |
Definition at line 1586 of file polynomialset.hh.
constexpr auto vcsn::detail::polynomialset_impl< Context, Kind >::in = 0 |
Definition at line 883 of file polynomialset.hh.
|
staticprivate |
Left marker for weight in concrete syntax.
Definition at line 1589 of file polynomialset.hh.
const auto& vcsn::detail::polynomialset_impl< Context, Kind >::ls1 = *ps1.labelset() |
Definition at line 878 of file polynomialset.hh.
const auto& vcsn::detail::polynomialset_impl< Context, Kind >::ls2 = *ps2.labelset() |
Definition at line 879 of file polynomialset.hh.
const auto& vcsn::detail::polynomialset_impl< Context, Kind >::midls = ls1.template set<out>() |
Definition at line 885 of file polynomialset.hh.
constexpr auto vcsn::detail::polynomialset_impl< Context, Kind >::out = number_of_tapes<Ctx2>::value - 1 |
Definition at line 881 of file polynomialset.hh.
|
staticprivate |
Right marker for weight in concrete syntax.
Definition at line 1591 of file polynomialset.hh.
auto vcsn::detail::polynomialset_impl< Context, Kind >::res = value_t{} |
Definition at line 886 of file polynomialset.hh.
for (const auto& m1: p1) for ( const auto & m2 return vcsn::detail::polynomialset_impl< Context, Kind >::res |
Definition at line 887 of file polynomialset.hh.
for (const auto& lm: l) for ( const auto & rm return vcsn::detail::polynomialset_impl< Context, Kind >::res |
Definition at line 906 of file polynomialset.hh.
vcsn::detail::polynomialset_impl< Context, Kind >::value_t |
Definition at line 876 of file polynomialset.hh.