Developer documentation

mmx::sparse Namespace Reference

namespace for representation of polynomials as sequence of monomials More...

Classes

struct  CLASS
 
struct  dual
 

Functions

template<class C , class O >
void neg_exponent (dual< C, O > &p)
 
template<class C , class O >
void add (dual< C, O > &res, const dual< C, O > &a, const dual< C, O > &b)
 
template<class C , class O >
void add (dual< C, O > &res, const dual< C, O > &a, const C &b)
 
template<class C , class O >
void add (dual< C, O > &res, const C &b, const dual< C, O > &a)
 
template<class C , class O >
void sub (dual< C, O > &res, const dual< C, O > &a, const dual< C, O > &b)
 
template<class C , class O >
void sub (dual< C, O > &res, const dual< C, O > &a, const C &b)
 
template<class C , class O >
void sub (dual< C, O > &res, const C &a, const dual< C, O > &b)
 
template<class C , class O >
void mul (dual< C, O > &res, const dual< C, O > &a, const dual< C, O > &b)
 
template<class C , class O >
void mul (dual< C, O > &res, const dual< C, O > &a, const C &b)
 
template<class C , class O >
void mul (dual< C, O > &res, const C &b, const dual< C, O > &a)
 
template<class C , class O >
void mul (dual< C, O > &res, const monomial_seq< C, O > &p, const dual< C, O > &l)
 
template<class C , class O >
void mul (monomial_seq< C, O > &res, const dual< C, O > &l, const monomial_seq< C, O > &p)
 
template<class C , class O >
void div (dual< C, O > &f, const C &c)
 
template<class C , class O >
void div (dual< C, O > &r, const dual< C, O > &p, const C &c)
 
template<class X >
bool with_plus_sign (const X &x)
 
template<class OSTREAM , class C >
OSTREAM & print_dual (OSTREAM &os, const monom< C > &m, const variables &V)
 
template<class OSTREAM , class C , class O >
OSTREAM & print (OSTREAM &os, const dual< C, O > &P, const variables &V)
 Output operator. More...
 
TMPL void add (Polynomial &result, const Polynomial &p1, const Polynomial &p2)
 
TMPL void add (Polynomial &p1, const Polynomial &p2)
 Inplace addition. More...
 
template<class C , class O , class MONOM , class REP , class I , class J , class M >
I add (Polynomial &p1, I b1, J e1, const M &m2)
 
TMPL void add (Polynomial &p, const typename Polynomial::monom_t &m)
 
TMPL void add (Polynomial &p, const C &c)
 
TMPLX void add (Polynomial &r, const Polynomial &q, const X &c)
 
TMPL void add (Polynomial &r, const C &c, const Polynomial &q)
 
TMPL void sub (Polynomial &result, const Polynomial &p1, const Polynomial &p2)
 
TMPL void sub (Polynomial &p, const Polynomial &q)
 
TMPLX void sub (Polynomial &r, const Polynomial &q, const X &c)
 
TMPLX void sub (Polynomial &r, const X &c, const Polynomial &q)
 
TMPL void mul (Polynomial &r, const C &c)
 Multiplication of a polynomial by a monomial or a scalar. More...
 
TMPL void mul (Polynomial &r, const Polynomial &p, const C &c)
 
TMPLX void mul (Polynomial &r, const X &c, const Polynomial &p)
 
template<class C , class O , class MONOM , class REP , class M >
void mul_ext (Polynomial &r, const Polynomial &a, const M &m)
 Multiplication of a polynomial by a monomial or a scalar. More...
 
TMPL void mul (Polynomial &r, const Polynomial &a, const typename Polynomial::monom_t &m)
 Multiplication of a polynomial by a monomial or a scalar. More...
 
TMPL void mul (Polynomial &r, const typename Polynomial::monom_t &m)
 Multiplication of a polynomial by a monomial or a scalar. More...
 
template<class C , class O , class MONOM , class REP , class M >
void mul_ext_e (Polynomial &result, const Polynomial &a, const M &m)
 
TMPL void mul (Polynomial &r, const Polynomial &a, const Polynomial &b)
 Multiplication of two polynomials. More...
 
TMPLX void mul (Polynomial &r, const Polynomial &a, const Polynomial &b, const X &o)
 Specialisation for list. More...
 
TMPL void mul_iterator (Polynomial &r, typename Polynomial::const_iterator b, typename Polynomial::const_iterator e, const Polynomial &p)
 
TMPL void mul (Polynomial &r, const Polynomial &p)
 
TMPL void div (Polynomial &q, const Polynomial &a, const Polynomial &b)
 
TMPL void div (Polynomial &r, const Polynomial &b)
 
TMPL void div (Polynomial &f, const typename Polynomial::Scalar &c)
 
TMPL void div (Polynomial &r, const Polynomial &p, const C &c)
 
TMPL void rem (Polynomial &r, const Polynomial &a, const Polynomial &b)
 
template<class C , class O , class MONOM , class REP , class U >
void coefficients (Seq< U > &r, const Polynomial &f, int v)
 
TMPL void coefficients (Seq< C > &r, const Polynomial &f)
 
template<class R >
int lvar (const R &p)
 Index of the leading variable (of maximal index) of a polynomial. More...
 
template<class R >
unsigned nbvar (const R &p)
 Number of variables of a polynomial. More...
 
template<class R >
int degree (const R &p)
 Degree of a polynomial. More...
 
template<class R >
int degree (const R &p, int i)
 Degree of a polynomial with respect to the i th variable.. More...
 
template<class R >
R::coeff_t & leadingcoeff (R &a)
 
template<class R >
R::coeff_t leadingcoeff (const R &a)
 
template<class POL >
POL::coeff_t coeffof (const POL &p, const typename POL::monom_t &mono)
 
template<class POL >
POL::const_iterator last_term (const POL &p)
 
template<class R >
void div_rem (R &q, R &a, const R &b0)
 Divide a in place by b, concidering all the monomials. More...
 
TMPL void diff (Polynomial &r, const Polynomial &p, int i)
 Derivative of p with respect to i th variable put in r. More...
 
TMPL void shift (Polynomial &r, const Polynomial &p, const typename Polynomial::monom_t &m)
 Multiply p by a monomial m and put the result in r. More...
 
TMPL void copy (Polynomial &r, const Polynomial &a)
 Copy of a in r. More...
 
TMPL Polynomial::coeff_t eval (const Polynomial &p, const typename Polynomial::coeff_t &x, const typename Polynomial::coeff_t &y)
 Evaluate the polynomial p for x0=x, x1=y, and the other xi=1. More...
 
template<class C , class O , class MONOM , class REP , class R , class VCT >
void eval_at (R &r, const Polynomial &p, const VCT &x)
 
template<class R , class C , class O , class MONOM , class REP , class X >
void eval (R &r, const Polynomial &p, const X &x)
 Evaluate the polynomial p for x0=x, x1=y, and the other xi=1. **/. More...
 
TMPL void homogenize (Polynomial &r, const Polynomial &p, const Polynomial &v)
 
TMPL void homogenize (Polynomial &r, const Polynomial &p, int n, const Polynomial &v)
 
template<class MP >
MP convert (const MP &P, typename MP::coeff_t x, typename MP::coeff_t y, int ind)
 
template<class C , class O , class MONOM , class REP , class VARIABLES >
std::string to_string (const Polynomial &P, const VARIABLES &V)
 
template<class OS , class C , class O , class MONOM , class REP , class VARIABLES >
OS & print (OS &os, const Polynomial &P, const VARIABLES &V)
 
template<class OS , class C , class O , class MONOM , class REP , class VARIABLES >
OS & print_as_double (OS &os, const Polynomial &P, const VARIABLES &V)
 
template<class OS , class C , class O , class MONOM , class REP >
OS & print (OS &os, const Polynomial &P)
 
template<class OS , class C , class O , class MONOM , class REP >
OS & print_verbatim (OS &os, const Polynomial &P)
 
template<class POL , class C >
POL shift (typename POL::const_iterator monom, const C &a, int i)
 
template<class POL , class C >
POL scale (const POL &p, C a, int v)
 
template<class T , class MP , class V >
eval (const MP &p, const V &v)
 
template<class R , class MP , class V >
void eval (R &r, const MP &p, const V &v, unsigned n)
 
template<class MP , class X >
MP subs (unsigned var, const X &val, const MP &P)
 
template<class MP >
MP subs (const MP &P, int var, typename MP::coeff_t val)
 
template<class MP >
MP subs (const MP &P, char *x, typename MP::coeff_t val)
 
template<class T >
void print (const T &x)
 
template<class MP >
MP swap (const MP &P, int var_i, int var_j)
 
template<class MP >
MP swap (const MP &P, char *x_i, char *x_j)
 
template<class C , class O , class MONOM , class REP >
C content (const Polynomial &P)
 

Detailed Description

namespace for representation of polynomials as sequence of monomials

Function Documentation

template<class C , class O >
void mmx::sparse::add ( dual< C, O > &  res,
const dual< C, O > &  a,
const dual< C, O > &  b 
)
inline
template<class C , class O >
void mmx::sparse::add ( dual< C, O > &  res,
const dual< C, O > &  a,
const C b 
)
inline
TMPL void mmx::sparse::add ( Polynomial result,
const Polynomial p1,
const Polynomial p2 
)
template<class C , class O >
void mmx::sparse::add ( dual< C, O > &  res,
const C b,
const dual< C, O > &  a 
)
inline
TMPL void mmx::sparse::add ( Polynomial p1,
const Polynomial p2 
)

Inplace addition.

template<class C , class O , class MONOM , class REP , class I , class J , class M >
I mmx::sparse::add ( Polynomial p1,
I  b1,
e1,
const M &  m2 
)
TMPL void mmx::sparse::add ( Polynomial p,
const typename Polynomial::monom_t &  m 
)
TMPL void mmx::sparse::add ( Polynomial p,
const C c 
)
TMPLX void mmx::sparse::add ( Polynomial r,
const Polynomial q,
const X c 
)
TMPL void mmx::sparse::add ( Polynomial r,
const C c,
const Polynomial q 
)
template<class C , class O , class MONOM , class REP , class U >
void mmx::sparse::coefficients ( Seq< U > &  r,
const Polynomial f,
int  v 
)
TMPL void mmx::sparse::coefficients ( Seq< C > &  r,
const Polynomial f 
)
template<class POL >
POL::coeff_t mmx::sparse::coeffof ( const POL p,
const typename POL::monom_t &  mono 
)

Return the coefficient of a monomial m in a polynomial p if it appears in p or 0 otherwise.

template<class C , class O , class MONOM , class REP >
C mmx::sparse::content ( const Polynomial P)
template<class MP >
MP mmx::sparse::convert ( const MP &  P,
typename MP::coeff_t  x,
typename MP::coeff_t  y,
int  ind 
)

function which return the equation of the polynomial P hiding the indice ind and evaluating at x and y.

TMPL void mmx::sparse::copy ( Polynomial r,
const Polynomial a 
)

Copy of a in r.

template<class R >
int mmx::sparse::degree ( const R &  p)

Degree of a polynomial.

template<class R >
int mmx::sparse::degree ( const R &  p,
int  i 
)

Degree of a polynomial with respect to the i th variable..

TMPL void mmx::sparse::diff ( Polynomial r,
const Polynomial p,
int  i 
)

Derivative of p with respect to i th variable put in r.

template<class C , class O >
void mmx::sparse::div ( dual< C, O > &  f,
const C c 
)
inline
template<class C , class O >
void mmx::sparse::div ( dual< C, O > &  r,
const dual< C, O > &  p,
const C c 
)
TMPL void mmx::sparse::div ( Polynomial q,
const Polynomial a,
const Polynomial b 
)
inline
TMPL void mmx::sparse::div ( Polynomial r,
const Polynomial b 
)
inline
TMPL void mmx::sparse::div ( Polynomial f,
const typename Polynomial::Scalar c 
)
inline
TMPL void mmx::sparse::div ( Polynomial r,
const Polynomial p,
const C c 
)
template<class R >
void mmx::sparse::div_rem ( R &  q,
R &  a,
const R &  b0 
)

Divide a in place by b, concidering all the monomials.

TMPL Polynomial::coeff_t mmx::sparse::eval ( const Polynomial p,
const typename Polynomial::coeff_t &  x,
const typename Polynomial::coeff_t &  y 
)

Evaluate the polynomial p for x0=x, x1=y, and the other xi=1.

template<class R , class C , class O , class MONOM , class REP , class X >
void mmx::sparse::eval ( R &  r,
const Polynomial p,
const X x 
)
inline

Evaluate the polynomial p for x0=x, x1=y, and the other xi=1. **/.

template<class T , class MP , class V >
T mmx::sparse::eval ( const MP &  p,
const V &  v 
)
template<class R , class MP , class V >
void mmx::sparse::eval ( R &  r,
const MP &  p,
const V &  v,
unsigned  n 
)
template<class C , class O , class MONOM , class REP , class R , class VCT >
void mmx::sparse::eval_at ( R &  r,
const Polynomial p,
const VCT &  x 
)
TMPL void mmx::sparse::homogenize ( Polynomial r,
const Polynomial p,
const Polynomial v 
)
inline
TMPL void mmx::sparse::homogenize ( Polynomial r,
const Polynomial p,
int  n,
const Polynomial v 
)
inline
template<class POL >
POL::const_iterator mmx::sparse::last_term ( const POL p)
template<class R >
R::coeff_t& mmx::sparse::leadingcoeff ( R &  a)
template<class R >
R::coeff_t mmx::sparse::leadingcoeff ( const R &  a)
template<class R >
int mmx::sparse::lvar ( const R &  p)

Index of the leading variable (of maximal index) of a polynomial.

template<class C , class O >
void mmx::sparse::mul ( dual< C, O > &  res,
const dual< C, O > &  a,
const dual< C, O > &  b 
)
inline
template<class C , class O >
void mmx::sparse::mul ( dual< C, O > &  res,
const dual< C, O > &  a,
const C b 
)
inline
template<class C , class O >
void mmx::sparse::mul ( dual< C, O > &  res,
const C b,
const dual< C, O > &  a 
)
inline
template<class C , class O >
void mmx::sparse::mul ( dual< C, O > &  res,
const monomial_seq< C, O > &  p,
const dual< C, O > &  l 
)

Compute the product p*l where l is a linear form and p a polynomial. The result is the linear form obtained by applying the inverse variables on the polynomial and by keeping the negative exponents.

template<class C , class O >
void mmx::sparse::mul ( monomial_seq< C, O > &  res,
const dual< C, O > &  l,
const monomial_seq< C, O > &  p 
)

Compute the product l*p where l is a linear form and p a polynomial. The result is the polynomial obtained by applying the inverse variables on the polynomial and by keeping the positive exponents.

TMPL void mmx::sparse::mul ( Polynomial r,
const C c 
)

Multiplication of a polynomial by a monomial or a scalar.

TMPL void mmx::sparse::mul ( Polynomial r,
const Polynomial p,
const C c 
)
TMPLX void mmx::sparse::mul ( Polynomial r,
const X c,
const Polynomial p 
)
TMPL void mmx::sparse::mul ( Polynomial r,
const Polynomial a,
const typename Polynomial::monom_t &  m 
)
inline

Multiplication of a polynomial by a monomial or a scalar.

TMPL void mmx::sparse::mul ( Polynomial r,
const typename Polynomial::monom_t &  m 
)
inline

Multiplication of a polynomial by a monomial or a scalar.

TMPL void mmx::sparse::mul ( Polynomial r,
const Polynomial a,
const Polynomial b 
)
inline

Multiplication of two polynomials.

TMPLX void mmx::sparse::mul ( Polynomial r,
const Polynomial a,
const Polynomial b,
const X o 
)
inline

Specialisation for list.

TMPL void mmx::sparse::mul ( Polynomial r,
const Polynomial p 
)
inline
template<class C , class O , class MONOM , class REP , class M >
void mmx::sparse::mul_ext ( Polynomial r,
const Polynomial a,
const M &  m 
)
inline

Multiplication of a polynomial by a monomial or a scalar.

template<class C , class O , class MONOM , class REP , class M >
void mmx::sparse::mul_ext_e ( Polynomial result,
const Polynomial a,
const M &  m 
)
inline
TMPL void mmx::sparse::mul_iterator ( Polynomial r,
typename Polynomial::const_iterator  b,
typename Polynomial::const_iterator  e,
const Polynomial p 
)
inline
template<class R >
unsigned mmx::sparse::nbvar ( const R &  p)

Number of variables of a polynomial.

template<class C , class O >
void mmx::sparse::neg_exponent ( dual< C, O > &  p)
template<class OSTREAM , class C , class O >
OSTREAM& mmx::sparse::print ( OSTREAM &  os,
const dual< C, O > &  P,
const variables V 
)

Output operator.

The inverse variables are denoted by di. The opposite of their exponents is printed.

template<class OS , class C , class O , class MONOM , class REP , class VARIABLES >
OS& mmx::sparse::print ( OS &  os,
const Polynomial P,
const VARIABLES &  V 
)
template<class OS , class C , class O , class MONOM , class REP >
OS& mmx::sparse::print ( OS &  os,
const Polynomial P 
)
template<class T >
void mmx::sparse::print ( const T &  x)
template<class OS , class C , class O , class MONOM , class REP , class VARIABLES >
OS& mmx::sparse::print_as_double ( OS &  os,
const Polynomial P,
const VARIABLES &  V 
)
template<class OSTREAM , class C >
OSTREAM& mmx::sparse::print_dual ( OSTREAM &  os,
const monom< C > &  m,
const variables V 
)
inline
template<class OS , class C , class O , class MONOM , class REP >
OS& mmx::sparse::print_verbatim ( OS &  os,
const Polynomial P 
)
TMPL void mmx::sparse::rem ( Polynomial r,
const Polynomial a,
const Polynomial b 
)
inline
template<class POL , class C >
POL mmx::sparse::scale ( const POL p,
C  a,
int  v 
)

The variables of a "tri-variate" polynomial are multiplied as follows: x0 = a*x0, x1 = b*x1, x2 = c*x2.

TMPL void mmx::sparse::shift ( Polynomial r,
const Polynomial p,
const typename Polynomial::monom_t &  m 
)

Multiply p by a monomial m and put the result in r.

template<class POL , class C >
POL mmx::sparse::shift ( typename POL::const_iterator  monom,
const C a,
int  i 
)

Function applicable only to the polynomials which has three variables. Carry out a change of variable x_i = x_i + a on the multivariable monomial passed as parameter.

template<class C , class O >
void mmx::sparse::sub ( dual< C, O > &  res,
const dual< C, O > &  a,
const dual< C, O > &  b 
)
inline
template<class C , class O >
void mmx::sparse::sub ( dual< C, O > &  res,
const dual< C, O > &  a,
const C b 
)
inline
template<class C , class O >
void mmx::sparse::sub ( dual< C, O > &  res,
const C a,
const dual< C, O > &  b 
)
inline
TMPL void mmx::sparse::sub ( Polynomial result,
const Polynomial p1,
const Polynomial p2 
)
TMPL void mmx::sparse::sub ( Polynomial p,
const Polynomial q 
)
TMPLX void mmx::sparse::sub ( Polynomial r,
const Polynomial q,
const X c 
)
TMPLX void mmx::sparse::sub ( Polynomial r,
const X c,
const Polynomial q 
)
template<class MP , class X >
MP mmx::sparse::subs ( unsigned  var,
const X val,
const MP &  P 
)

Substitute the variable x_(var) by the value val.

template<class MP >
MP mmx::sparse::subs ( const MP &  P,
int  var,
typename MP::coeff_t  val 
)

Substitute the variable x_(var) by the value val.

template<class MP >
MP mmx::sparse::subs ( const MP &  P,
char *  x,
typename MP::coeff_t  val 
)

Substitute the variable x by the value val.

template<class MP >
MP mmx::sparse::swap ( const MP &  P,
int  var_i,
int  var_j 
)

Swap the variable x_(var_i) and x_(var_j) in the polynomial P.

template<class MP >
MP mmx::sparse::swap ( const MP &  P,
char *  x_i,
char *  x_j 
)

Swap the variable x_i and x_j in the polynomial P.

template<class C , class O , class MONOM , class REP , class VARIABLES >
std::string mmx::sparse::to_string ( const Polynomial P,
const VARIABLES &  V 
)
template<class X >
bool mmx::sparse::with_plus_sign ( const X x)
Home