piranha
0.10

Polynomial class. More...
#include <piranha/polynomial.hpp>
Public Types  
template<typename Cf2 >  
using  rebind = polynomial< Cf2, Key > 
Series rebind alias.  
using  term_type = term< Cf, Key > 
Alias for term type.  
using  size_type = typename container_type::size_type 
Size type. More...  
using  const_iterator = const_iterator_impl 
Const iterator. More...  
Public Member Functions  
polynomial ()=default  
Defaulted default constructor. More...  
polynomial (const polynomial &)=default  
Defaulted copy constructor.  
polynomial (polynomial &&)=default  
Defaulted move constructor.  
template<typename Str , str_enabler< Str > = 0>  
polynomial (Str &&name)  
Constructor from symbol name. More...  
~polynomial ()  
Trivial destructor.  
polynomial &  operator= (const polynomial &other)=default 
Copy assignment operator. More...  
polynomial &  operator= (polynomial &&other)=default 
Move assignment operator. More...  
template<typename T >  
pow_ret_type< T >  pow (const T &x) const 
Override default exponentiation method. More...  
template<typename Series = polynomial>  
inverse_type< Series >  invert () const 
Inversion. More...  
template<typename T = polynomial>  
integrate_type< T >  integrate (const std::string &name) const 
Integration. More...  
template<typename T , find_cf_enabler< T > = 0>  
Cf  find_cf (const T &c) const 
Find coefficient. More...  
template<typename T , find_cf_init_list_enabler< T > = 0>  
Cf  find_cf (std::initializer_list< T > l) const 
Find coefficient. More...  
degree_type< T >  degree () const 
Total degree. More...  
pdegree_type< T >  degree (const symbol_fset &names) const 
Partial degree. More...  
ldegree_type< T >  ldegree () const 
Total low degree. More...  
pldegree_type< T >  ldegree (const symbol_fset &names) const 
Partial low degree. More...  
polynomial< Cf, Key >  truncate_degree (const T &max_degree) const 
Total degree truncation. More...  
polynomial< Cf, Key >  truncate_degree (const T &max_degree, const symbol_fset &names) const 
Partial degree truncation. More...  
t_degree_type< T >  t_degree () const 
Trigonometric degree. More...  
pt_degree_type< T >  t_degree (const symbol_fset &names) const 
Partial trigonometric degree. More...  
t_ldegree_type< T >  t_ldegree () const 
Trigonometric low degree. More...  
pt_ldegree_type< T >  t_ldegree (const symbol_fset &names) const 
Partial trigonometric low degree. More...  
t_order_type< T >  t_order () const 
Trigonometric order. More...  
pt_order_type< T >  t_order (const symbol_fset &names) const 
Partial trigonometric order. More...  
t_lorder_type< T >  t_lorder () const 
Trigonometric low order. More...  
pt_lorder_type< T >  t_lorder (const symbol_fset &names) const 
Partial trigonometric low order. More...  
ipow_subs_type< T >  ipow_subs (const std::string &name, const integer &n, const T &x) const 
Substitution. More...  
ipow_subs_type< T >  ipow_subs (const std::string &name, const Int &n, const T &x) const 
Substitution. More...  
subs_type< T >  subs (const symbol_fmap< T > &dict) const 
Substitution. More...  
t_subs_type< T, U >  t_subs (const std::string &name, const T &c, const U &s) const 
Trigonometric substitution. More...  
size_type  size () const 
Series size. More...  
bool  empty () const 
Empty test. More...  
bool  is_single_coefficient () const 
Test for singlecoefficient series. More...  
void  insert (T &&term) 
Insert term. More...  
void  insert (T &&term) 
Insert generic term with Sign = true . More...  
polynomial< Cf, Key >  operator+ () const 
Identity operator. More...  
polynomial< Cf, Key >  operator () const 
Negation operator. More...  
void  negate () 
Negate series inplace. More...  
partial_type< Series >  partial (const std::string &name) const 
Partial derivative. More...  
const_iterator  begin () const 
Begin iterator. More...  
const_iterator  end () const 
End iterator. More...  
polynomial< Cf, Key >  filter (std::function< bool(const std::pair< typename term_type::cf_type, polynomial< Cf, Key > > &)> func) const 
Term filtering. More...  
polynomial< Cf, Key >  transform (std::function< std::pair< typename term_type::cf_type, polynomial< Cf, Key > >(const std::pair< typename term_type::cf_type, polynomial< Cf, Key > > &)> func) const 
Term transformation. More...  
polynomial< Cf, Key >  trim () const 
Trim. More...  
void  print_tex (std::ostream &os) const 
Print in TeX mode. More...  
std::size_t  hash () const 
Hash value. More...  
bool  is_identical (const polynomial< Cf, Key > &other) const 
Check for identical series. More...  
const symbol_fset &  get_symbol_set () const 
Symbol set getter. More...  
void  set_symbol_set (const symbol_fset &args) 
Symbol set setter. More...  
Tablequerying methods  
Methods to query the properties of the internal container used to store the terms.  
sparsity_info_type  table_sparsity () const 
Table sparsity. More...  
double  table_load_factor () const 
Table load factor. More...  
size_type  table_bucket_count () const 
Table bucket count. More...  
Lowlevel interface  
Lowlevel methods.  
container_type &  _container () 
Get a mutable reference to the container of terms. More...  
const container_type &  _container () const 
Get a const reference to the container of terms. More...  
Static Public Member Functions  
template<typename U , typename T = polynomial, at_degree_set_enabler< T, U > = 0>  
static void  set_auto_truncate_degree (const U &max_degree) 
Set totaldegreebased autotruncation. More...  
template<typename U , typename T = polynomial, at_degree_set_enabler< T, U > = 0>  
static void  set_auto_truncate_degree (const U &max_degree, const symbol_fset &names) 
Set partialdegreebased autotruncation. More...  
template<typename T = polynomial, at_degree_enabler< T > = 0>  
static void  unset_auto_truncate_degree () 
Disable degreebased autotruncation. More...  
template<typename T = polynomial, at_degree_enabler< T > = 0>  
static std::tuple< int, degree_type< T >, symbol_fset >  get_auto_truncate_degree () 
Query the status of the degreebased autotruncation mechanism. More...  
template<typename T = polynomial, um_enabler< T > = 0>  
static polynomial  untruncated_multiplication (const polynomial &p1, const polynomial &p2) 
Untruncated multiplication. More...  
template<typename U , typename T = polynomial, tm_enabler< T, U > = 0>  
static polynomial  truncated_multiplication (const polynomial &p1, const polynomial &p2, const U &max_degree) 
Truncated multiplication (total degree). More...  
template<typename U , typename T = polynomial, tm_enabler< T, U > = 0>  
static polynomial  truncated_multiplication (const polynomial &p1, const polynomial &p2, const U &max_degree, const symbol_fset &names) 
Truncated multiplication (partial degree). More...  
static void  clear_pow_cache () 
Clear the internal cache of natural powers. More...  
static void  register_custom_derivative (const std::string &name, F func) 
Register custom partial derivative. More...  
static void  unregister_custom_derivative (const std::string &name) 
Unregister custom partial derivative. More...  
static void  unregister_all_custom_derivatives () 
Unregister all custom partial derivatives. More...  
Protected Types  
using  container_type = hash_set< term_type > 
Container type for terms.  
Protected Attributes  
symbol_fset  m_symbol_set 
Symbol set.  
container_type  m_container 
Terms container.  
Polynomial class.
This class represents multivariate polynomials as collections of multivariate polynomial terms. Cf
represents the ring over which the polynomial is defined, while Key
represents the monomial type.
Polynomials support an automatic degreebased truncation mechanism, disabled by default, which comes into play during polynomial multiplication. It allows to discard automatically all those terms, generated during series multiplication, whose total or partial degree is greater than a specified limit. This mechanism can be configured via a set of threadsafe static methods, and it is enabled if:
D
,D
is equalitycomparable, subtractable and the type resulting from the subtraction is still D
.This class satisfies the piranha::is_series and piranha::is_cf type traits.
Cf
must be suitable for use in piranha::series as first template argument, Key
must be an instance of either piranha::monomial or piranha::kronecker_monomial.
This class provides the same guarantee as the base series type it derives from.
Move semantics is equivalent to the move semantics of the base series type it derives from.
Definition at line 149 of file polynomial.hpp.

inherited 
Const iterator.
Iterator type that can be used to iterate over the terms of the series. The object returned upon dereferentiation is an std::pair
in which the first element is a copy of the coefficient of the term, the second element a singleterm instance of Derived
constructed from the term's key and a unitary coefficient.
This iterator is an input iterator which additionally offers the multipass guarantee.
Definition at line 1994 of file series.hpp.

inherited 
Size type.
Used to represent the number of terms in the series. Equivalent to piranha::hash_set::size_type.
Definition at line 1981 of file series.hpp.

default 
Defaulted default constructor.
Will construct a polynomial with zero terms.

inlineexplicit 
Constructor from symbol name.
Str
is a C or C++ string.Will construct a univariate polynomial made of a single term with unitary coefficient and exponent, representing the symbolic variable name
. The type of name
must be a string type (either C or C++).
name  name of the symbolic variable that the polynomial will represent. 
unspecified  any exception thrown by:

Definition at line 480 of file polynomial.hpp.

inlineinherited 
Get a mutable reference to the container of terms.
Definition at line 2788 of file series.hpp.

inlineinherited 
Get a const reference to the container of terms.
Definition at line 2796 of file series.hpp.

inlineinherited 
Begin iterator.
Return an iterator to the first term of the series. The returned iterator will provide, when dereferenced, an std::pair
in which the first element is a copy of the coefficient of the term, whereas the second element is a singleterm instance of Derived
built from the term's key and a unitary coefficient.
Note that terms are stored unordered in the series, hence it is not defined which particular term will be returned by calling this method. The only guarantee is that the iterator can be used to transverse all the series' terms until piranha::series::end() is eventually reached.
Calling any nonconst method on the series will invalidate the iterators obtained via piranha::series::begin() and piranha::series::end().
unspecified  any exception thrown by:

Definition at line 2504 of file series.hpp.

inlinestaticinherited 
Clear the internal cache of natural powers.
This method can be used to clear the cache of natural powers of series maintained by piranha::series::pow().
unspecified  any exception thrown by threading primitives. 
Definition at line 2371 of file series.hpp.

inlineinherited 
Total degree.
The degree of the series is the maximum degree of its terms. If the series is empty, zero will be returned.
std::overflow_error  if the computation results in an overflow. 
unspecified  any exception thrown by:

Definition at line 390 of file power_series.hpp.

inlineinherited 
Partial degree.
The partial degree of the series is the maximum partial degree of its terms. If the series is empty, zero will be returned.
names  names of the variables to be considered in the computation of the degree. 
std::overflow_error  if the computation results in an overflow. 
unspecified  any exception thrown by:

Definition at line 444 of file power_series.hpp.

inlineinherited 
Empty test.
true
if size() is nonzero, false
otherwise. Definition at line 2103 of file series.hpp.

inlineinherited 
End iterator.
Return an iterator one past the last term of the series. See the documentation of piranha::series::begin() on how the returned iterator can be used.
unspecified  any exception thrown by:

Definition at line 2523 of file series.hpp.

inlineinherited 
Term filtering.
This method will apply the functor func
to each term in the series, and produce a return series containing all terms in this
for which func
returns true
. Terms are passed to func
in the format resulting from dereferencing the iterators obtained via piranha::series::begin().
func  filtering functor. 
unspecified  any exception thrown by:

Definition at line 2547 of file series.hpp.

inline 
Find coefficient.
T
satisfies piranha::has_input_begin_end,Key
can be constructed from the begin/end iterators of c
and a piranha::symbol_fset.This method will first construct a term with zero coefficient and key initialised from the begin/end iterators of c
and the symbol set of this
, and it will then try to locate the term inside this
. If the term is found, its coefficient will be returned. Otherwise, a coefficient initialised from 0 will be returned.
c  the container that will be used to construct the Key to be located. 
Key
corresponds to c
if such term exists, zero otherwise.unspecified  any exception thrown by:

Definition at line 754 of file polynomial.hpp.

inline 
Find coefficient.
Key
can be constructed from the begin/end iterators of l
and a piranha::symbol_fset.This method is identical to the other overload with the same name, and it is provided for convenience.
l  the list that will be used to construct the Key to be located. 
Key
corresponds to l
if such term exists, zero otherwise.unspecified  any exception thrown by the other overload. 
Definition at line 774 of file polynomial.hpp.

inlinestatic 
Query the status of the degreebased autotruncation mechanism.
This method will return a tuple of three elements describing the status of the degreebased autotruncation mechanism. The elements of the tuple have the following meaning:
unspecified  any exception thrown by threading primitives or by the involved constructors. 
Definition at line 727 of file polynomial.hpp.

inlineinherited 
Symbol set getter.
Definition at line 2762 of file series.hpp.

inlineinherited 
Hash value.
The hash value for a series is zero if the series is empty, otherwise it is computed by adding the hash values of all terms. This ensures that two identical series in which the terms are stored in different order still produce the same hash value.
Note, however, that the arguments of the series are not considered in the hash value and that, in general, two series that compare equal according to operator==() will not have the same hash value (as the equality operator merges the arguments of two series before actually performing the comparison). Instead of operator==(), is_identical() should be used for storing series as keys in associative containers.
unspecified  any exception thrown by computing the hash of a term. 
Definition at line 2730 of file series.hpp.

inlineinherited 
Insert term.
T
is piranha::series::term_type.This method will insert term
into the series using internally piranha::hash_set::insert.
The insertion algorithm proceeds as follows:
std::invalid_argument
exception is thrown;Sign
is true
) or subtracted (if Sign
is false
) to the existing term's coefficient;Sign
is false
, its coefficient is negated.After any modification to an existing term in the series (e.g., via insertion with negative Sign
or via inplace addition or subtraction of existing coefficients), the term will be checked again for compatibility and ignorability, and, in case the term has become incompatible or ignorable, it will be erased from the series.
The exception safety guarantee upon insertion is that the series will be left in an undefined but valid state. Such a guarantee relies on the fact that the addition/subtraction and negation methods of the coefficient type will leave the coefficient in a valid (possibly undefined) state in face of exceptions.
term  term to be inserted. 
unspecified  any exception thrown by:

std::invalid_argument  if term is incompatible. 
Definition at line 2161 of file series.hpp.

inlineinherited 
Insert generic term with Sign = true
.
T
is piranha::series::term_type.Convenience wrapper for the generic insert() method, with Sign
set to true
.
term  term to be inserted. 
unspecified  any exception thrown by generic insert(). 
Definition at line 2177 of file series.hpp.

inline 
Integration.
This method will attempt to compute the antiderivative of the polynomial term by term. If the term's coefficient does not depend on the integration variable, the result will be calculated via the integration of the corresponding monomial. Integration with respect to a variable appearing to the power of 1 will fail.
Otherwise, a strategy of integration by parts is attempted, its success depending on the integrability of the coefficient and on the value of the exponent of the integration variable. The integration will fail if the exponent is negative or nonintegral.
name  integration variable. 
this
with respect to name
.std::invalid_argument  if the integration procedure fails. 
unspecified  any exception thrown by:

Definition at line 591 of file polynomial.hpp.

inline 
Inversion.
piranha::polynomial::pow(1)
is a wellformed expression.unspecified  any exception thrown by piranha::polynomial::pow(). 
Definition at line 557 of file polynomial.hpp.

inlineinherited 
Substitution.
This method will return an object resulting from the substitution of the integral power of the symbol called name
in this
with the generic object x
.
name  name of the symbol to be substituted. 
n  integral power of the symbol to be substituted. 
x  object used for the substitution. 
unspecified  any exception resulting from:

Definition at line 224 of file ipow_substitutable_series.hpp.

inlineinherited 
Substitution.
Int
is a C++ integral type.This is a convenience method that will call the other ipow_subs() overload after converting n
to piranha::integer.
name  name of the symbol to be substituted. 
n  integral power of the symbol to be substituted. 
x  object used for the substitution. 
unspecified  any exception resulting from calling the other ipow_subs() overload, or by constructing a piranha::integer from a C++ integral type. 
Definition at line 252 of file ipow_substitutable_series.hpp.

inlineinherited 
Check for identical series.
Derived
is equalitycomparable.This method will return true
if the symbol sets of this
and other
are the same, and other == *this
.
other  argument for the comparison. 
true
if this
and other
are identical, false
otherwise.unspecified  any exception thrown by the comparison operator of Derived . 
Definition at line 2754 of file series.hpp.

inlineinherited 
Test for singlecoefficient series.
A series is considered to be singlecoefficient when it is symbolically equivalent to a coefficient. That is, the series is either empty (in which case it is considered to be equivalent to a coefficient constructed from zero) or consisting of a single term with unitary key (in which case the series is considered equivalent to its only coefficient).
true
in case of singlecoefficient series, false
otherwise.unspecified  any exception thrown by the is_unitary() method of the key type. 
Definition at line 2118 of file series.hpp.

inlineinherited 
Total low degree.
The low degree of the series is the minimum low degree of its terms. If the series is empty, zero will be returned.
std::overflow_error  if the computation results in an overflow. 
unspecified  any exception thrown by:

Definition at line 416 of file power_series.hpp.

inlineinherited 
Partial low degree.
The partial low degree of the series is the minimum partial low degree of its terms. If the series is empty, zero will be returned.
names  names of the variables to be considered in the computation of the low degree. 
std::overflow_error  if the computation results in an overflow. 
unspecified  any exception thrown by:

Definition at line 475 of file power_series.hpp.

inlineinherited 
Negate series inplace.
This method will call math::negate() on the coefficients of all terms. In case of exceptions, the basic exception safety guarantee is provided.
If any term becomes ignorable or incompatible after negation, it will be erased from the series.
unspecified  any exception thrown by math::negate() on the coefficient type. 
Definition at line 2214 of file series.hpp.

inlineinherited 
Identity operator.
this
, cast to Derived
.unspecified  any exception thrown by the copy constructor. 
Definition at line 2187 of file series.hpp.

inlineinherited 
Negation operator.
this
on which negate() has been called.unspecified  any exception thrown by:

Definition at line 2199 of file series.hpp.

default 
Copy assignment operator.
other  the assignment argument. 
this
.unspecified  any exception thrown by the assignment operator of the base class. 

default 
Move assignment operator.
other  the assignment argument. 
this
.

inlineinherited 
Partial derivative.
This method will return the partial derivative of this
with respect to the variable called name
. The method will construct the return value from the output of the differentiation methods of coefficient and key, and via arithmetic and/or term insertion operations.
Note that, contrary to the specialisation of piranha::math::partial() for series types, this method will not take into account custom derivatives registered via piranha::series::register_custom_derivative().
name  name of the argument with respect to which the derivative will be calculated. 
this
with respect to the symbol name
.unspecified  any exception thrown by:

Definition at line 2405 of file series.hpp.

inline 
Override default exponentiation method.
x
and the key type can be raised to the power of x
via its exponentiation method.This exponentiation override will check if the polynomial consists of a singleterm with nonunitary key. In that case, the return polynomial will consist of a single term with coefficient computed via piranha::math::pow() and key computed via the monomial exponentiation method. Otherwise, the base (i.e., default) exponentiation method will be used.
x  exponent. 
this
to the power of x
.unspecified  any exception thrown by:

Definition at line 530 of file polynomial.hpp.

inlineinherited 
Print in TeX mode.
Print series to stream os
in TeX mode. The representation is constructed in the same way as explained in piranha::series::operator<<(), but using piranha::print_tex_coefficient() and the key's TeX printing method instead of the plain printing functions.
os  target stream. 
unspecified  any exception thrown by:

Definition at line 2654 of file series.hpp.

inlinestaticinherited 
Register custom partial derivative.
Derived
, and if F
is a type that can be used to construct std::function<partial_type(const Derived &)
, where partial_type
is the type resulting from the partial derivative of Derived
.Register a copy of a callable func
associated to the symbol name
for use by piranha::math::partial(). func
will be used to compute the partial derivative of instances of type Derived
with respect to name
in place of the default partial differentiation algorithm.
It is safe to call this method from multiple threads.
name  symbol for which the custom partial derivative function will be registered. 
func  custom partial derivative function. 
unspecified  any exception thrown by:

Definition at line 2432 of file series.hpp.

inlinestatic 
Set totaldegreebased autotruncation.
U
can be safely cast to the degree type.Setup the degreebased autotruncation mechanism to truncate according to the total maximum degree. If the new auto truncation settings are different from the currently active ones, the natural power cache defined in piranha::series will be cleared.
max_degree  maximum total degree that will be retained during automatic truncation. 
unspecified  any exception thrown by:

Definition at line 637 of file polynomial.hpp.

inlinestatic 
Set partialdegreebased autotruncation.
U
can be safely cast to the degree type.Setup the degreebased autotruncation mechanism to truncate according to the partial degree. If the new auto truncation settings are different from the currently active ones, the natural power cache defined in piranha::series will be cleared.
max_degree  maximum partial degree that will be retained during automatic truncation. 
names  names of the variables that will be considered during the computation of the partial degree. 
unspecified  any exception thrown by:

Definition at line 676 of file polynomial.hpp.

inlineinherited 
Symbol set setter.
args  piranha::symbol_fset that will be associated to the series. 
std::invalid_argument  if the series is not empty. 
unspecified  any exception thrown by the copy assignment operator of piranha::symbol_fset. 
Definition at line 2773 of file series.hpp.

inlineinherited 

inlineinherited 
Substitution.
T
must be suitable for use in sm_intersect_idx().This method will return an object resulting from the substitution in this
of the symbols in dict
with the mapped values.
dict  a dictionary mapping a set of symbols to the values that will be substituted for them. 
unspecified  any exception resulting from:

Definition at line 218 of file substitutable_series.hpp.

inlineinherited 
Trigonometric degree.
unspecified  any exception resulting from the computation and comparison of the degree of the individual terms. 
Definition at line 204 of file trigonometric_series.hpp.

inlineinherited 
Partial trigonometric degree.
names  the names of the variables to be considered in the computation. 
unspecified  any exception resulting from the computation and comparison of the degree of the individual terms. 
Definition at line 226 of file trigonometric_series.hpp.

inlineinherited 
Trigonometric low degree.
unspecified  any exception resulting from the computation and comparison of the degree of the individual terms. 
Definition at line 248 of file trigonometric_series.hpp.

inlineinherited 
Partial trigonometric low degree.
names  the names of the variables to be considered in the computation. 
unspecified  any exception resulting from the computation and comparison of the degree of the individual terms. 
Definition at line 270 of file trigonometric_series.hpp.

inlineinherited 
Trigonometric low order.
unspecified  any exception resulting from the computation and comparison of the order of the individual terms. 
Definition at line 335 of file trigonometric_series.hpp.

inlineinherited 
Partial trigonometric low order.
names  the names of the variables to be considered in the computation. 
unspecified  any exception resulting from the computation and comparison of the order of the individual terms. 
Definition at line 357 of file trigonometric_series.hpp.

inlineinherited 
Trigonometric order.
unspecified  any exception resulting from the computation and comparison of the order of the individual terms. 
Definition at line 292 of file trigonometric_series.hpp.

inlineinherited 
Partial trigonometric order.
names  the names of the variables to be considered in the computation. 
unspecified  any exception resulting from the computation and comparison of the order of the individual terms. 
Definition at line 314 of file trigonometric_series.hpp.

inlineinherited 
Trigonometric substitution.
Trigonometric substitution is the substitution of the cosine and sine of name
for c
and s
.
name  name of the symbol that will be subject to substitution. 
c  cosine of name . 
s  sine of name . 
unspecified  any exception resulting from:

Definition at line 219 of file t_substitutable_series.hpp.

inlineinherited 
Table bucket count.
Definition at line 2263 of file series.hpp.

inlineinherited 
Table load factor.
Will call piranha::hash_set::load_factor() on the internal terms container and return the result.
Definition at line 2255 of file series.hpp.

inlineinherited 
Table sparsity.
Will call piranha::hash_set::evaluate_sparsity() on the internal terms container and return the result.
unspecified  any exception thrown by piranha::hash_set::evaluate_sparsity(). 
Definition at line 2244 of file series.hpp.

inlineinherited 
Term transformation.
This method will apply the functor func
to each term in the series, and will use the return value of the functor to construct a new series. Terms are passed to func
in the same format resulting from dereferencing the iterators obtained via piranha::series::begin(), and func
is expected to produce a return value of the same type.
The return series is first initialised as an empty series. For each input term t
, the return value of func
is used to construct a new temporary series from the multiplication of t.first
and t.second
. Each temporary series is then added to the return value series.
This method requires the coefficient type to be multipliable by Derived
.
func  transforming functor. 
unspecified  any exception thrown by:

Definition at line 2585 of file series.hpp.

inlineinherited 
Trim.
This method will return a series mathematically equivalent to this
in which discardable arguments have been removed from the internal set of symbols. Which symbols are removed depends on the trimming method trim_identify()
of the key type (e.g., in a polynomial a symbol can be discarded if its exponent is zero in all monomials).
If the coefficient type is an instance of piranha::series, trim() will be called recursively on the coefficients while building the return value.
this
.unspecified  any exception thrown by:

Definition at line 2619 of file series.hpp.

inlineinherited 
Total degree truncation.
This method can be used to eliminate the parts of a series whose degree is greater than max_degree
. This includes the elimination of whole terms, but also the recursive truncation of coefficients via the piranha::math::truncate_degree() function, if supported by the coefficient. It must be noted that, in general, this method is not guaranteed to eliminate all the parts whose degree is greater than max_degree
(in particular, in the current implementation there is no truncation implemented for keys  a key is kept asis or completely eliminated).
max_degree  maximum allowed total degree. 
this
.unspecified  any exception thrown by:

Definition at line 510 of file power_series.hpp.

inlineinherited 
Partial degree truncation.
This method is equivalent to the other overload, the only difference being that the partial degree is considered in the computation.
max_degree  maximum allowed partial degree. 
names  names of the variables to be considered in the computation of the partial degree. 
this
.unspecified  any exception thrown by:

Definition at line 543 of file power_series.hpp.

inlinestatic 
Truncated multiplication (total degree).
U
can be safely cast to the degree type of the calling piranha::polynomial.This function will return the product of p1
and p2
, truncated to the maximum total degree of max_degree
(regardless of the current automatic truncation settings). Note that this function is available only if the operands are of the same type and no type promotions affect the coefficient types during multiplication.
p1  the first operand. 
p2  the second operand. 
max_degree  the maximum total degree in the result. 
p1
and p2
.unspecified  any exception thrown by:

Definition at line 835 of file polynomial.hpp.

inlinestatic 
Truncated multiplication (partial degree).
U
can be safely cast to the degree type of the calling piranha::polynomial.This function will return the product of p1
and p2
, truncated to the maximum partial degree of max_degree
(regardless of the current automatic truncation settings). Note that this function is available only if the operands are of the same type and no type promotions affect the coefficient types during multiplication.
p1  the first operand. 
p2  the second operand. 
max_degree  the maximum degree in the result. 
names  the set of the symbols that will be considered in the computation of the degree. 
p1
and p2
.unspecified  any exception thrown by:

Definition at line 872 of file polynomial.hpp.

inlinestaticinherited 
Unregister all custom partial derivatives.
Derived
.Will unregister all custom derivatives currently registered via register_custom_derivative(). It is safe to call this method from multiple threads.
unspecified  any exception thrown by failure(s) in threading primitives. 
Definition at line 2478 of file series.hpp.

inlinestaticinherited 
Unregister custom partial derivative.
Derived
.Unregister the custom partial derivative function associated to the symbol name
. If no custom partial derivative was previously registered using register_custom_derivative(), calling this function will be a noop.
It is safe to call this method from multiple threads.
name  symbol for which the custom partial derivative function will be unregistered. 
unspecified  any exception thrown by:

Definition at line 2459 of file series.hpp.

inlinestatic 
Disable degreebased autotruncation.
Disable the degreebased autotruncation mechanism.
unspecified  any exception thrown by:

Definition at line 701 of file polynomial.hpp.

inlinestatic 
Untruncated multiplication.
This function will return the product of p1
and p2
, computed without truncation (regardless of the current automatic truncation settings). Note that this function is available only if the operands are of the same type and no type promotions affect the coefficient types during multiplication.
p1  the first operand. 
p2  the second operand. 
p1
and p2
.unspecified  any exception thrown by:

Definition at line 800 of file polynomial.hpp.