Vcsn  2.2
Be Rational
vcsn::detail::polynomialset_impl< Context, Kind > Class Template Reference

Linear combination of labels: map labels to weights. More...

#include <fwd.hh>

Collaboration diagram for vcsn::detail::polynomialset_impl< Context, Kind >:

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_tself () const
 Ourself, but after the application of weightset_mixin. More...
 
const context_tcontext () const
 
const labelset_ptrlabelset () const
 
const weightset_ptrweightset () const
 
value_tdel_weight (value_t &v, const label_t &l) const
 Remove the monomial of l in v. More...
 
value_tnew_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_tset_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_tadd_here (value_t &v, const label_t &l, const weight_t k) const
 v += <k>l. More...
 
value_tadd_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_tadd_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_tsub_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_tconjunction_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_tconjunction_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_tldiv_here (const weight_t w, value_t &v) const
 Left exterior division. More...
 
value_trdiv_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_tzero () 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_tconv_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_tconv_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_tone ()
 The unit polynomial. More...
 
static const monomial_tmonomial_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...
 

Detailed Description

template<typename Context, wet_kind_t Kind>
class vcsn::detail::polynomialset_impl< Context, Kind >

Linear combination of labels: map labels to weights.

Template Parameters
Contextthe LabelSet and WeightSet types.

Definition at line 41 of file fwd.hh.

Member Typedef Documentation

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::context_t = Context

Definition at line 82 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
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.

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::labelset_ptr = typename context_t::labelset_ptr

Definition at line 86 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::labelset_t = labelset_t_of<context_t>

Definition at line 83 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
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.

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::self_t = polynomialset<Context, Kind>

Definition at line 81 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::value_t = wet_of<context_t, Kind>

Definition at line 92 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::weight_t = weight_t_of<context_t>

Definition at line 90 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::weightset_ptr = typename context_t::weightset_ptr

Definition at line 87 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
using vcsn::detail::polynomialset_impl< Context, Kind >::weightset_t = weightset_t_of<context_t>

Definition at line 84 of file polynomialset.hh.

Constructor & Destructor Documentation

template<typename Context , wet_kind_t Kind>
vcsn::detail::polynomialset_impl< Context, Kind >::polynomialset_impl ( )
delete
template<typename Context , wet_kind_t Kind>
vcsn::detail::polynomialset_impl< Context, Kind >::polynomialset_impl ( const polynomialset_impl< Context, Kind > &  )
default
template<typename Context , wet_kind_t Kind>
vcsn::detail::polynomialset_impl< Context, Kind >::polynomialset_impl ( polynomialset_impl< Context, Kind > &&  )
default
template<typename Context , wet_kind_t Kind>
vcsn::detail::polynomialset_impl< Context, Kind >::polynomialset_impl ( const context_t ctx)
inline

Definition at line 99 of file polynomialset.hh.

Member Function Documentation

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::add ( const value_t l,
const value_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::add_here ( value_t v,
const label_t l,
const weight_t  k 
) const
inline
template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::add_here ( value_t v,
const monomial_t m 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::add_here ( value_t l,
const value_t r 
) const
inline

Definition at line 255 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType, typename WS >
auto vcsn::detail::polynomialset_impl< Context, Kind >::add_here_impl ( value_t l,
const value_t r 
) const -> std::enable_if_t<WetType != wet_kind_t::bitset, value_t&>
inline

v += p, default case.

Definition at line 221 of file polynomialset.hh.

References vcsn::detail::polynomialset_impl< Context, Kind >::add_here().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType, typename WS >
auto vcsn::detail::polynomialset_impl< Context, Kind >::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&>
inline

v += p, B and bitsets.

Definition at line 233 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType, typename WS >
auto vcsn::detail::polynomialset_impl< Context, Kind >::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&>
inline

v += p, F2 and bitsets.

Definition at line 245 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
void vcsn::detail::polynomialset_impl< Context, Kind >::clear ( value_t v)
inline

Set to zero.

Definition at line 176 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::complement ( const value_t v) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::conjunction ( const value_t l,
const value_t r 
) const
inline
template<typename Context , wet_kind_t Kind>
template<typename Ctx >
std::enable_if_t<Ctx::is_lar, value_t> vcsn::detail::polynomialset_impl< Context, Kind >::conjunction_impl ( const value_t l,
const value_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<typename Ctx >
std::enable_if_t<!Ctx::is_lar, value_t> vcsn::detail::polynomialset_impl< Context, Kind >::conjunction_impl ( const value_t l,
const value_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
const context_t& vcsn::detail::polynomialset_impl< Context, Kind >::context ( ) const
inline
template<typename Context , wet_kind_t Kind>
static value_t vcsn::detail::polynomialset_impl< Context, Kind >::conv ( self_t  ,
const value_t v 
)
inlinestatic

Conversion from (this and) other weightsets.

Definition at line 913 of file polynomialset.hh.

References vcsn::detail::v.

template<typename Context , wet_kind_t Kind>
template<typename WS >
value_t vcsn::detail::polynomialset_impl< Context, Kind >::conv ( const WS &  ws,
const typename WS::value_t &  v 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<typename C , wet_kind_t K>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::conv ( const polynomialset< C, K > &  sps,
const typename polynomialset< C, K >::value_t v 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::conv ( std::istream &  i,
const char  sep = '+' 
) const
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.

Parameters
ithe stream to parse.
septhe 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.

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
boost::optional<label_t> vcsn::detail::polynomialset_impl< Context, Kind >::conv_label ( std::istream &  i,
bool  weighted,
const char  sep = '+' 
) const
inline

Read a label, if there is one.

Does not handle \z, nor letter classes.

Returns
none if there is no label.

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().

template<typename Context , wet_kind_t Kind>
boost::optional<monomial_t> vcsn::detail::polynomialset_impl< Context, Kind >::conv_monomial ( std::istream &  i,
const char  sep = '+' 
) const
inline

Read a monomial from a stream.

Parameters
ithe stream to parse
septhe separator between monomials.
Returns
boost::none on EOF

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.

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
weight_t vcsn::detail::polynomialset_impl< Context, Kind >::conv_weight ( std::istream &  i) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::del_weight ( value_t v,
const label_t l 
) const
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().

template<typename Context , wet_kind_t Kind>
monomial_t vcsn::detail::polynomialset_impl< Context, Kind >::determinize ( value_t  v) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static ATTRIBUTE_PURE bool vcsn::detail::polynomialset_impl< Context, Kind >::equal ( const value_t l,
const value_t r 
)
inlinestatic

Definition at line 862 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
static ATTRIBUTE_PURE auto vcsn::detail::polynomialset_impl< Context, Kind >::equal_impl ( const value_t l,
const value_t r 
) -> std::enable_if_t<WetType != wet_kind_t::bitset, bool>
inlinestatic

Definition at line 843 of file polynomialset.hh.

References vcsn::detail::polynomialset_impl< Context, Kind >::monomial_equal().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
static ATTRIBUTE_PURE auto vcsn::detail::polynomialset_impl< Context, Kind >::equal_impl ( const value_t l,
const value_t r 
) -> std::enable_if_t<WetType == wet_kind_t::bitset, bool>
inlinestatic

Definition at line 853 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
const weight_t vcsn::detail::polynomialset_impl< Context, Kind >::get_weight ( const value_t v,
const label_t l 
) const
inline

Definition at line 161 of file polynomialset.hh.

References vcsn::detail::v, vcsn::weight_of(), and vcsn::detail::polynomialset_impl< Context, Kind >::weightset().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static constexpr bool vcsn::detail::polynomialset_impl< Context, Kind >::has_lightening_weights ( )
inlinestatic

Definition at line 127 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
static ATTRIBUTE_PURE size_t vcsn::detail::polynomialset_impl< Context, Kind >::hash ( const monomial_t m,
size_t  res = 0 
)
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static ATTRIBUTE_PURE size_t vcsn::detail::polynomialset_impl< Context, Kind >::hash ( const value_t v)
inlinestatic

Definition at line 1034 of file polynomialset.hh.

References vcsn::detail::v.

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
static ATTRIBUTE_PURE auto vcsn::detail::polynomialset_impl< Context, Kind >::hash_impl ( const value_t p) -> std::enable_if_t<WetType != wet_kind_t::bitset, size_t>
inlinestatic

Definition at line 1013 of file polynomialset.hh.

References vcsn::detail::polynomialset_impl< Context, Kind >::hash().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
static ATTRIBUTE_PURE auto vcsn::detail::polynomialset_impl< Context, Kind >::hash_impl ( const value_t p) -> std::enable_if_t<WetType == wet_kind_t::bitset, size_t>
inlinestatic

Definition at line 1026 of file polynomialset.hh.

References vcsn::detail::hash_value().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::infiltration ( const value_t l,
const value_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static constexpr bool vcsn::detail::polynomialset_impl< Context, Kind >::is_commutative ( )
inlinestatic

Definition at line 126 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
monomial_t vcsn::detail::polynomialset_impl< Context, Kind >::ldiv ( const monomial_t l,
const monomial_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::ldiv ( const monomial_t l,
const value_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::ldiv_here ( const weight_t  w,
value_t v 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static ATTRIBUTE_PURE bool vcsn::detail::polynomialset_impl< Context, Kind >::less ( const value_t l,
const value_t r 
)
inlinestatic

Definition at line 982 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
static ATTRIBUTE_PURE auto vcsn::detail::polynomialset_impl< Context, Kind >::less_impl ( const value_t l,
const value_t r 
) -> std::enable_if_t<WetType != wet_kind_t::bitset, bool>
inlinestatic

Definition at line 963 of file polynomialset.hh.

References vcsn::detail::polynomialset_impl< Context, Kind >::monomial_less().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
static ATTRIBUTE_PURE auto vcsn::detail::polynomialset_impl< Context, Kind >::less_impl ( const value_t l,
const value_t r 
) -> std::enable_if_t<WetType == wet_kind_t::bitset, bool>
inlinestatic

Definition at line 973 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::lgcd ( const value_t lhs,
const value_t rhs 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::lmul ( const weight_t  w,
const value_t v 
) const
inline
template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::lmul_label ( const label_t lhs,
const value_t v 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static self_t vcsn::detail::polynomialset_impl< Context, Kind >::make ( std::istream &  is)
inlinestatic

Build from the description in is.

Definition at line 1041 of file polynomialset.hh.

References vcsn::rat::ctx(), and vcsn::eat().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static ATTRIBUTE_PURE bool vcsn::detail::polynomialset_impl< Context, Kind >::monomial_equal ( const monomial_t lhs,
const monomial_t rhs 
)
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static ATTRIBUTE_PURE bool vcsn::detail::polynomialset_impl< Context, Kind >::monomial_less ( const monomial_t lhs,
const monomial_t rhs 
)
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static const monomial_t& vcsn::detail::polynomialset_impl< Context, Kind >::monomial_one ( )
inlinestatic

The unit monomial.

Definition at line 875 of file polynomialset.hh.

Referenced by vcsn::detail::polynomialset_impl< Context, Kind >::one().

template<typename Context , wet_kind_t Kind>
auto vcsn::detail::polynomialset_impl< Context, Kind >::mul ( const value_t l,
const value_t r 
) const -> value_t
inline

The product of polynomials l and r.

Definition at line 352 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
auto vcsn::detail::polynomialset_impl< Context, Kind >::mul ( const value_t p,
const label_t l,
const weight_t  w 
) const -> value_t
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::mul ( const monomial_t lhs,
const value_t v 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::mul ( const value_t l,
const monomial_t rhs 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
auto vcsn::detail::polynomialset_impl< Context, Kind >::mul_impl ( const value_t l,
const value_t r 
) const -> std::enable_if_t<WetType != wet_kind_t::bitset, value_t>
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType>
auto vcsn::detail::polynomialset_impl< Context, Kind >::mul_impl ( const value_t l,
const value_t r 
) const -> std::enable_if_t<WetType == wet_kind_t::bitset, value_t>
inline

The product of polynomials l and r.

Case of bitsets.

Definition at line 343 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::new_weight ( value_t v,
const label_t l,
const weight_t  w 
) const
inline

Set the monomial of l in v to weight k.

Precondition
w is not null

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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
auto vcsn::detail::polynomialset_impl< Context, Kind >::norm ( const value_t v) const -> weight_t
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::normalize ( value_t  res) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
weight_t vcsn::detail::polynomialset_impl< Context, Kind >::normalize_here ( value_t v) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static const value_t& vcsn::detail::polynomialset_impl< Context, Kind >::one ( )
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
std::ostream& vcsn::detail::polynomialset_impl< Context, Kind >::print ( const monomial_t m,
std::ostream &  out,
format  fmt = {} 
) const
inline
template<typename Context , wet_kind_t Kind>
std::ostream& vcsn::detail::polynomialset_impl< Context, Kind >::print ( const value_t v,
std::ostream &  out,
format  fmt = {},
const std::string &  sep = " + " 
) const
inline

Print a value (a polynomial).

Parameters
vthe polynomial
outthe output stream
fmtthe format: "text" or "latex"
septhe separator between monomials

Definition at line 1263 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
template<typename Ctx = context_t>
std::enable_if_t<!labelset_t_of<Ctx>::is_letterized(), std::ostream&> vcsn::detail::polynomialset_impl< Context, Kind >::print_ ( const value_t v,
std::ostream &  out,
format  fmt = {},
const std::string &  sep = " + " 
) const
inlineprivate

Print a non-null value for a non letterized labelset.

Definition at line 1389 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
template<typename Ctx = context_t>
std::enable_if_t<labelset_t_of<Ctx>::is_letterized(), std::ostream&> vcsn::detail::polynomialset_impl< Context, Kind >::print_ ( const value_t v,
std::ostream &  out,
format  fmt = {},
const std::string &  sep = " + " 
) const
inlineprivate

Print a non-null value for a letterized labelset (e.g., letterset or nullableset.

Definition at line 1401 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
std::ostream& vcsn::detail::polynomialset_impl< Context, Kind >::print_set ( std::ostream &  o,
format  fmt = {} 
) const
inline

Definition at line 1051 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
std::ostream& vcsn::detail::polynomialset_impl< Context, Kind >::print_weight_ ( const weight_t  w,
std::ostream &  out,
format  fmt 
) const
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_().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
std::ostream& vcsn::detail::polynomialset_impl< Context, Kind >::print_with_classes_ ( const value_t v,
std::ostream &  out,
format  fmt,
const std::string &  sep 
) const
inlineprivate
template<typename Context , wet_kind_t Kind>
std::ostream& vcsn::detail::polynomialset_impl< Context, Kind >::print_without_classes_ ( const value_t v,
std::ostream &  out,
format  fmt,
const std::string &  sep 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<size_t Tape>
auto vcsn::detail::polynomialset_impl< Context, Kind >::project ( const value_t v) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::rdiv ( const value_t l,
const value_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::rdiv_here ( value_t v,
const weight_t  w 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::rmul ( const value_t v,
const weight_t  w 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::rmul_label ( const value_t v,
const label_t rhs 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType = value_t::kind>
auto vcsn::detail::polynomialset_impl< Context, Kind >::scalar_product ( const value_t l,
const value_t r 
) const -> std::enable_if_t<WetType != wet_kind_t::bitset, weight_t>
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType = value_t::kind, typename WS = weightset_t>
auto vcsn::detail::polynomialset_impl< Context, Kind >::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>
inline

The sum of the weights of the common labels.

B and bitsets.

Definition at line 446 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
template<wet_kind_t WetType = value_t::kind, typename WS = weightset_t>
auto vcsn::detail::polynomialset_impl< Context, Kind >::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>
inline

The sum of the weights of the common labels.

F2 and bitsets.

Definition at line 458 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
const self_t& vcsn::detail::polynomialset_impl< Context, Kind >::self ( ) const
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.

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::set_weight ( value_t v,
const label_t l,
const weight_t  w 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static constexpr bool vcsn::detail::polynomialset_impl< Context, Kind >::show_one ( )
inlinestatic
template<typename Context , wet_kind_t Kind>
static symbol vcsn::detail::polynomialset_impl< Context, Kind >::sname ( )
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::star ( const value_t v) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
static constexpr star_status_t vcsn::detail::polynomialset_impl< Context, Kind >::star_status ( )
inlinestatic

Definition at line 906 of file polynomialset.hh.

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::sub ( const value_t l,
const value_t r 
) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t& vcsn::detail::polynomialset_impl< Context, Kind >::sub_here ( value_t v,
const monomial_t m 
) const
inline
template<typename Context , wet_kind_t Kind>
label_t vcsn::detail::polynomialset_impl< Context, Kind >::to_label ( const value_t v) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
value_t vcsn::detail::polynomialset_impl< Context, Kind >::transpose ( const value_t v) const
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
template<typename... Polys>
auto vcsn::detail::polynomialset_impl< Context, Kind >::tuple ( Polys &&...  vs) const -> value_t
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().

Here is the call graph for this function:

template<typename Context , wet_kind_t Kind>
const weightset_ptr& vcsn::detail::polynomialset_impl< Context, Kind >::weightset ( ) const
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().

template<typename Context , wet_kind_t Kind>
const value_t& vcsn::detail::polynomialset_impl< Context, Kind >::zero ( ) const
inline

Definition at line 893 of file polynomialset.hh.

Member Data Documentation

template<typename Context , wet_kind_t Kind>
constexpr char vcsn::detail::polynomialset_impl< Context, Kind >::langle = '<'
staticprivate
template<typename Context , wet_kind_t Kind>
constexpr char vcsn::detail::polynomialset_impl< Context, Kind >::rangle = '>'
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().


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