19inline dim::dim(ap_dim_t d) : d(d)
 
   22inline dim::dim(
const environment& e, 
const var& v)
 
   24  ap_dim_t d = ap_environment_dim_of_var(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()),
 
   27    throw std::invalid_argument(
"apron::dim::dim(const environment&, const var&) invalid variable name");
 
   34  return ap_texpr_is_unop(op);
 
 
   39  return ap_texpr_is_binop(op);
 
 
   47inline void texpr0::init_from(ap_texpr0_t* x)
 
   53inline texpr0::texpr0(ap_texpr0_t* x)
 
   56inline texpr0::texpr0(
const builder& x)
 
   57{ init_from(ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t()))); }
 
   59inline texpr0::texpr0(
const const_iterator& x)
 
   60{ init_from(ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t()))); }
 
   62inline texpr0::texpr0(
const texpr0& x)
 
   63{ init_from(ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(&x.l))); }
 
   68inline texpr0::texpr0(
const linexpr0& l)
 
   69{ init_from(ap_texpr0_from_linexpr0(
const_cast<ap_linexpr0_t*
>(l.get_ap_linexpr0_t()))); }
 
   74inline texpr0::texpr0(
const texpr0& x, 
const dimchange& d, 
bool add)
 
   77    init_from(ap_texpr0_add_dimensions(
const_cast<ap_texpr0_t*
>(&x.l),
 
   78                                       const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t())));
 
   80    init_from(ap_texpr0_remove_dimensions(
const_cast<ap_texpr0_t*
>(&x.l),
 
   81                                          const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t())));
 
   84inline texpr0::texpr0(
const texpr0& x, 
const dimperm& d)
 
   86  init_from(ap_texpr0_permute_dimensions(
const_cast<ap_texpr0_t*
>(&x.l),
 
   87                                         const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t())));
 
   90inline texpr0::texpr0(
const texpr0& x, ap_dim_t dim, 
const texpr0& dst)
 
   92  init_from(ap_texpr0_substitute(
const_cast<ap_texpr0_t*
>(&x.l),
 
   93                                 dim, 
const_cast<ap_texpr0_t*
>(&dst.l)));
 
  102inline texpr0::~texpr0()
 
  114inline texpr0& texpr0::operator= (
const builder& x)
 
  117  ap_texpr0_t* c = ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t()));
 
  123inline texpr0& texpr0::operator= (
const texpr0& x)
 
  126  ap_texpr0_t* c = ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(&x.l));
 
  132inline texpr0& texpr0::operator= (
const const_iterator& x)
 
  135  ap_texpr0_t* c = ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t()));
 
  141inline texpr0& texpr0::operator= (
const linexpr0& x)
 
  144  init_from(ap_texpr0_from_linexpr0(
const_cast<ap_linexpr0_t*
>(x.get_ap_linexpr0_t())));
 
  152inline std::ostream& 
operator<< (std::ostream& os, 
const texpr0& s)
 
  154  return os << s.root();
 
 
  157inline void texpr0::print(
char** name_of_dim, FILE* stream)
 const 
  159  root().print(name_of_dim,stream);
 
  166inline bool texpr0::is_zero()
 const 
  168  return root().is_zero();
 
  171inline bool texpr0::equal(
const texpr0& x)
 const 
  173  return root().equal(x);
 
  176inline size_t texpr0::depth()
 const 
  178  return root().depth();
 
  181inline size_t texpr0::size()
 const 
  183  return root().size();
 
  186inline ap_dim_t texpr0::max_dim()
 const 
  188  return root().max_dim();
 
  191inline bool texpr0::has_dim(ap_dim_t d)
 const 
  193  return root().has_dim(d);
 
  196inline std::vector<ap_dim_t> texpr0::dimlist()
 const 
  198  return root().dimlist();
 
  201inline bool texpr0::is_interval_cst()
 const 
  203  return root().is_interval_cst();
 
  206inline bool texpr0::is_interval_linear()
 const 
  208  return root().is_interval_linear();
 
  211inline bool texpr0::is_interval_polynomial()
 const 
  213  return root().is_interval_polynomial();
 
  216inline bool texpr0::is_interval_polyfrac()
 const 
  218  return root().is_interval_polyfrac();
 
  221inline bool texpr0::is_scalar()
 const 
  223  return root().is_scalar();
 
  230inline void texpr0::substitute(ap_dim_t dim, 
const texpr0& dst)
 
  232  ap_texpr0_substitute_with(&l,dim,
const_cast<ap_texpr0_t*
>(&dst.l));
 
  236inline interval texpr0::eval(manager& m, 
const abstract0& a, ap_scalar_discr_t discr,
 
  240  if (!pexact) pexact = &b;
 
  242    ap_eval_texpr0(m.get_ap_manager_t(),
 
  243                   const_cast<ap_abstract0_t*
>(a.get_ap_abstract0_t()),
 
  244                   const_cast<ap_texpr0_t*
>(l),
 
  248inline linexpr0 texpr0::intlinearize(manager& m, 
const abstract0& a, ap_scalar_discr_t discr,
 
  249                                     bool quasilinearize, 
bool* pexact)
 const 
  252  if (!pexact) pexact = &b;
 
  254    ap_intlinearize_texpr0(m.get_ap_manager_t(),
 
  255                           const_cast<ap_abstract0_t*
>(a.get_ap_abstract0_t()),
 
  256                           const_cast<ap_texpr0_t*
>(l),
 
  257                           pexact, discr, quasilinearize);
 
  261inline long texpr0::hash()
 const 
  263  return ap_texpr0_hash(
const_cast<ap_texpr0_t*
>(&l));
 
  272inline void texpr0::add_dimensions(
const dimchange& d)
 
  274  ap_texpr0_add_dimensions_with(&l, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  278inline void texpr0::remove_dimensions(
const dimchange& d)
 
  280  ap_texpr0_remove_dimensions_with(&l, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  283inline void texpr0::permute_dimensions(
const dimperm& d)
 
  285  ap_texpr0_permute_dimensions_with(&l, 
const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
  293inline ap_texpr0_t* texpr0::get_ap_texpr0_t()
 
  298inline const ap_texpr0_t* texpr0::get_ap_texpr0_t()
 const 
  315inline texpr0::const_iterator texpr0::root()
 const 
  317  return const_iterator(
const_cast<ap_texpr0_t*
>(&l));
 
  320inline texpr0::const_iterator::const_iterator(ap_texpr0_t* l) : l(l)
 
  324inline texpr0::const_iterator::const_iterator(
const texpr0& e)
 
  325  : l(const_cast<ap_texpr0_t*>(e.get_ap_texpr0_t()))
 
  328inline texpr0::const_iterator::const_iterator(
const const_iterator& i) : l(i.l)
 
  335inline ap_texpr_discr_t texpr0::const_iterator::get_discr()
 const 
  340inline const coeff& texpr0::const_iterator::get_coeff()
 const 
  342  if (l->discr!=AP_TEXPR_CST) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::get_coeff()"));
 
  343  return reinterpret_cast<coeff&
>(l->val.cst);
 
  346inline ap_dim_t texpr0::const_iterator::get_dim()
 const 
  348  if (l->discr!=AP_TEXPR_DIM) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::get_dim()"));
 
  352inline ap_texpr_op_t texpr0::const_iterator::get_op()
 const 
  354  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::get_op()"));
 
  355  return l->val.node->op;
 
  358inline ap_texpr_rtype_t texpr0::const_iterator::get_rtype()
 const 
  360  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::get_type()"));
 
  361  return l->val.node->type;
 
  364inline ap_texpr_rdir_t texpr0::const_iterator::get_rdir()
 const 
  366  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::get_dir()"));
 
  367  return l->val.node->dir;
 
  374inline texpr0::const_iterator& texpr0::const_iterator::operator=(
const const_iterator& i)
 
  380inline texpr0::const_iterator texpr0::const_iterator::child()
 const 
  382  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::child()"));
 
  383  if (!l->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr0::const_iterator::child()"));
 
  384  return l->val.node->exprA;
 
  387inline texpr0::const_iterator texpr0::const_iterator::left()
 const 
  389  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::left()"));
 
  390  if (!l->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr0::const_iterator::left()"));
 
  391  return l->val.node->exprA;
 
  394inline texpr0::const_iterator texpr0::const_iterator::right()
 const 
  396  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::const_iterator::right()"));
 
  397  if (!l->val.node->exprB) 
throw(std::out_of_range(
"apron::texpr0::const_iterator::right()"));
 
  398  return l->val.node->exprB;
 
  406                                std::vector<std::string>* names);
 
  408inline std::ostream& 
operator<< (std::ostream& os, 
const texpr0::const_iterator& s)
 
 
  414inline void texpr0::const_iterator::print(
char** name_of_dim, FILE* stream)
 const 
  416  ap_texpr0_fprint(stream, 
const_cast<ap_texpr0_t*
>(l), name_of_dim);
 
  423inline bool texpr0::const_iterator::is_zero()
 const 
  425  return l->discr==AP_TEXPR_CST && ap_coeff_zero(&
const_cast<ap_texpr0_t*
>(l)->val.cst);
 
  428inline bool texpr0::const_iterator::equal(
const texpr0& x)
 const 
  430  return ap_texpr0_equal(
const_cast<ap_texpr0_t*
>(l),
 
  431                         const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t()));
 
  434inline size_t texpr0::const_iterator::depth()
 const 
  436  return ap_texpr0_depth(
const_cast<ap_texpr0_t*
>(l));
 
  439inline size_t texpr0::const_iterator::size()
 const 
  441  return ap_texpr0_size(
const_cast<ap_texpr0_t*
>(l));
 
  444inline ap_dim_t texpr0::const_iterator::max_dim()
 const 
  446  return ap_texpr0_max_dim(
const_cast<ap_texpr0_t*
>(l));
 
  449inline bool texpr0::const_iterator::has_dim(ap_dim_t d)
 const 
  451  return ap_texpr0_has_dim(
const_cast<ap_texpr0_t*
>(l), d);
 
  454inline std::vector<ap_dim_t> texpr0::const_iterator::dimlist()
 const 
  456  ap_dim_t* d = ap_texpr0_dimlist(
const_cast<ap_texpr0_t*
>(l));
 
  458  for (i=0; d[i]!=AP_DIM_MAX; i++) ;
 
  459  std::vector<ap_dim_t> r = std::vector<ap_dim_t>(i,0);
 
  460  for (i=0; d[i]!=AP_DIM_MAX; i++) r[i] = d[i];
 
  465inline bool texpr0::const_iterator::is_interval_cst()
 const 
  467  return ap_texpr0_is_interval_cst(
const_cast<ap_texpr0_t*
>(l));
 
  470inline bool texpr0::const_iterator::is_interval_linear()
 const 
  472  return ap_texpr0_is_interval_linear(
const_cast<ap_texpr0_t*
>(l));
 
  475inline bool texpr0::const_iterator::is_interval_polynomial()
 const 
  477  return ap_texpr0_is_interval_polynomial(
const_cast<ap_texpr0_t*
>(l));
 
  480inline bool texpr0::const_iterator::is_interval_polyfrac()
 const 
  482  return ap_texpr0_is_interval_polyfrac(
const_cast<ap_texpr0_t*
>(l));
 
  485inline bool texpr0::const_iterator::is_scalar()
 const 
  487  return ap_texpr0_is_scalar(
const_cast<ap_texpr0_t*
>(l));
 
  494inline ap_texpr0_t* texpr0::const_iterator::get_ap_texpr0_t()
 
  499inline const ap_texpr0_t* texpr0::const_iterator::get_ap_texpr0_t()
 const 
  508inline texpr0::iterator texpr0::root()
 
  510  return iterator(*
this);
 
  513inline texpr0::iterator::iterator(ap_texpr0_t* l)
 
  514  : texpr0::const_iterator(l)
 
  518inline texpr0::iterator::iterator(texpr0& e)
 
  519  : texpr0::const_iterator(e.get_ap_texpr0_t())
 
  522inline texpr0::iterator::iterator(
const iterator& i)
 
  523  : texpr0::const_iterator(i)
 
  531inline texpr0::iterator& texpr0::iterator::operator= (
const builder& c)
 
  533  ap_texpr0_t* cc = ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(c.get_ap_texpr0_t()));
 
  544inline coeff& texpr0::iterator::get_coeff()
 const 
  546  if (l->discr!=AP_TEXPR_CST) 
throw(bad_discriminant(
"apron::texpr0::iterator::get_coeff()"));
 
  547  return reinterpret_cast<coeff&
>(l->val.cst);
 
  550inline ap_dim_t& texpr0::iterator::get_dim()
 const 
  552  if (l->discr!=AP_TEXPR_DIM) 
throw(bad_discriminant(
"apron::texpr0::iterator::get_dim()"));
 
  556inline ap_texpr_op_t& texpr0::iterator::get_op()
 const 
  558  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::iterator::get_op()"));
 
  559  return l->val.node->op;
 
  562inline ap_texpr_rtype_t& texpr0::iterator::get_rtype()
 const 
  564  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::iterator::get_type()"));
 
  565  return l->val.node->type;
 
  568inline ap_texpr_rdir_t& texpr0::iterator::get_rdir()
 const 
  570  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::iterator::get_dir()"));
 
  571  return l->val.node->dir;
 
  578inline texpr0::iterator& texpr0::iterator::operator=(
const iterator& i)
 
  584inline texpr0::iterator texpr0::iterator::child()
 const 
  586  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::iterator::child()"));
 
  587  if (!l->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr0::iterator::child()"));
 
  588  return l->val.node->exprA;
 
  591inline texpr0::iterator texpr0::iterator::left()
 const 
  593  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::iterator::left()"));
 
  594  if (!l->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr0::iterator::left()"));
 
  595  return l->val.node->exprA;
 
  598inline texpr0::iterator texpr0::iterator::right()
 const 
  600  if (l->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr0::iterator::right()"));
 
  601  if (!l->val.node->exprB) 
throw(std::out_of_range(
"apron::texpr0::iterator::right()"));
 
  602  return l->val.node->exprB;
 
  609inline ap_texpr0_t* texpr0::iterator::get_ap_texpr0_t()
 
  614inline const ap_texpr0_t* texpr0::iterator::get_ap_texpr0_t()
 const 
  626inline void texpr0::builder::init_from(ap_texpr0_t* x)
 
  629  case AP_TEXPR_DIM:  l = ap_texpr0_dim(x->val.dim); 
break;
 
  630  case AP_TEXPR_CST:  l = ap_texpr0_cst(
const_cast<ap_coeff_t*
>(&x->val.cst)); 
break;
 
  632    l = ap_texpr0_node(x->val.node->op,
 
  633                       x->val.node->type, x->val.node->dir,
 
  634                       x->val.node->exprA, x->val.node->exprB);
 
  636  default: 
throw std::invalid_argument(
"apron::texpr0::builder::init_from(ap_texpr0_t*) invalid discriminant");
 
  640inline texpr0::builder::builder(ap_texpr0_t* x)
 
  645inline texpr0::builder::builder(
const builder& x)
 
  650inline texpr0::builder::builder(
const const_iterator& x)
 
  652  init_from(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t()));
 
  655inline texpr0::builder::builder(
const texpr0& x)
 
  657  init_from(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t()));
 
  660inline texpr0::builder::builder(
const coeff& x)
 
  661  : l(ap_texpr0_cst(const_cast<ap_coeff_t*>(x.get_ap_coeff_t())))
 
  664inline texpr0::builder::builder(
const scalar& x)
 
  665  : l(ap_texpr0_cst_scalar(const_cast<ap_scalar_t*>(x.get_ap_scalar_t())))
 
  668inline texpr0::builder::builder(
const mpq_class& x)
 
  669  : l(ap_texpr0_cst_scalar_mpq(const_cast<mpq_class&>(x).get_mpq_t()))
 
  672inline texpr0::builder::builder(mpfr_t x)
 
  673  : l(ap_texpr0_cst_scalar_mpfr(x))
 
  676inline texpr0::builder::builder(
int x)
 
  677  : l(ap_texpr0_cst_scalar_int(x))
 
  680inline texpr0::builder::builder(
long x)
 
  681  : l(ap_texpr0_cst_scalar_int(x))
 
  684inline texpr0::builder::builder(
double x)
 
  685  : l(ap_texpr0_cst_scalar_double(x))
 
  688inline texpr0::builder::builder(
const frac& x)
 
  689  : l(ap_texpr0_cst_scalar_frac(x.num, x.den))
 
  692inline texpr0::builder::builder(
const interval& x)
 
  693  : l(ap_texpr0_cst_interval(const_cast<ap_interval_t*>(x.get_ap_interval_t())))
 
  696inline texpr0::builder::builder(
const scalar& inf, 
const scalar& sup)
 
  697  : l(ap_texpr0_cst_interval_scalar(const_cast<ap_scalar_t*>(inf.get_ap_scalar_t()),
 
  698                                    const_cast<ap_scalar_t*>(sup.get_ap_scalar_t())))
 
  701inline texpr0::builder::builder(
const mpq_class& inf, 
const mpq_class& sup)
 
  702  : l(ap_texpr0_cst_interval_mpq(const_cast<mpq_class&>(inf).get_mpq_t(),
 
  703                                 const_cast<mpq_class&>(sup).get_mpq_t()))
 
  706inline texpr0::builder::builder(mpfr_t inf, mpfr_t sup)
 
  707  : l(ap_texpr0_cst_interval_mpfr(inf,sup))
 
  710inline texpr0::builder::builder(
int inf, 
int sup)
 
  711  : l(ap_texpr0_cst_interval_int(inf, sup))
 
  714inline texpr0::builder::builder(
long inf, 
long sup)
 
  715  : l(ap_texpr0_cst_interval_int(inf, sup))
 
  718inline texpr0::builder::builder(
double inf, 
double sup)
 
  719  : l(ap_texpr0_cst_interval_double(inf, sup))
 
  722inline texpr0::builder::builder(
const frac& inf, 
const frac& sup)
 
  723  : l(ap_texpr0_cst_interval_frac(inf.num, inf.den, sup.num, sup.den))
 
  726inline texpr0::builder::builder(top t)
 
  727  : l(ap_texpr0_cst_interval_top())
 
  730inline texpr0::builder::builder(dim d)
 
  731  : l(ap_texpr0_dim(d.d))
 
  734inline texpr0::builder::builder(ap_texpr_op_t op, 
const builder& argA, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
 
  736  if (!ap_texpr_is_unop(op))
 
  737    throw std::invalid_argument(
"apron::texpr0::builder::builder(ap_texpr_op_t, const builder&, ap_texpr_rtype_t, ap_texpr_rdir_t) not a unary operator");
 
  738  l = ap_texpr0_unop(op,
 
  739                     const_cast<ap_texpr0_t*
>(argA.l),
 
  743inline texpr0::builder::builder(ap_texpr_op_t op, 
const builder& argA, 
const builder& argB, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
 
  745  if (!ap_texpr_is_binop(op))
 
  746    throw std::invalid_argument(
"apron::texpr0::builder::builder(ap_texpr_op_t, const builder&, const builder&, ap_texpr_rtype_t, ap_texpr_rdir_t) not a binary operator");
 
  747  l = ap_texpr0_binop(op,
 
  748                      const_cast<ap_texpr0_t*
>(argA.l),
 
  749                      const_cast<ap_texpr0_t*
>(argB.l),
 
  756inline texpr0::builder 
unary(ap_texpr_op_t op, 
const texpr0::builder& a,
 
  757                             ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  758                             ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  760  return texpr0::builder(op, a, rtype, rdir);
 
 
  763inline texpr0::builder 
binary(ap_texpr_op_t op, 
const texpr0::builder& a, 
const texpr0::builder& b,
 
  764                              ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  765                              ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  767  return texpr0::builder(op, a, b, rtype, rdir);
 
 
  771inline texpr0::builder 
add(
const texpr0::builder& a, 
const texpr0::builder& b,
 
  772                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  773                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  775  return texpr0::builder(AP_TEXPR_ADD, a, b, rtype, rdir);
 
 
  778inline texpr0::builder 
sub(
const texpr0::builder& a, 
const texpr0::builder& b,
 
  779                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  780                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  782  return texpr0::builder(AP_TEXPR_SUB, a, b, rtype, rdir);
 
 
  785inline texpr0::builder 
mul(
const texpr0::builder& a, 
const texpr0::builder& b,
 
  786                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  787                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  789  return texpr0::builder(AP_TEXPR_MUL, a, b, rtype, rdir);
 
 
  792inline texpr0::builder 
div(
const texpr0::builder& a, 
const texpr0::builder& b,
 
  793                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  794                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  796  return texpr0::builder(AP_TEXPR_DIV, a, b, rtype, rdir);
 
 
  799inline texpr0::builder 
mod(
const texpr0::builder& a, 
const texpr0::builder& b,
 
  800                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  801                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  803  return texpr0::builder(AP_TEXPR_MOD, a, b, rtype, rdir);
 
 
  806inline texpr0::builder 
pow(
const texpr0::builder& a, 
const texpr0::builder& b,
 
  807                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  808                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  810  return texpr0::builder(AP_TEXPR_POW, a, b, rtype, rdir);
 
 
  813inline texpr0::builder 
neg(
const texpr0::builder& a,
 
  814                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  815                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  817  return texpr0::builder(AP_TEXPR_NEG, a, rtype, rdir);
 
 
  820inline texpr0::builder 
cast(
const texpr0::builder& a, ap_texpr_rtype_t rtype,
 
  821                            ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  823  return texpr0::builder(AP_TEXPR_CAST, a, rtype, rdir);
 
 
  826inline texpr0::builder 
floor(
const texpr0::builder& a)
 
  828  return texpr0::builder(AP_TEXPR_CAST, a, AP_RTYPE_INT, AP_RDIR_DOWN);
 
 
  831inline texpr0::builder 
ceil(
const texpr0::builder& a)
 
  833  return texpr0::builder(AP_TEXPR_CAST, a, AP_RTYPE_INT, AP_RDIR_UP);
 
 
  836inline texpr0::builder 
trunc(
const texpr0::builder& a)
 
  838  return texpr0::builder(AP_TEXPR_CAST, a, AP_RTYPE_INT, AP_RDIR_ZERO);
 
 
  841inline texpr0::builder 
sqrt(
const texpr0::builder& a,
 
  842                            ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  843                            ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  845  return texpr0::builder(AP_TEXPR_SQRT, a, rtype, rdir);
 
 
  848inline texpr0::builder 
operator+(
const texpr0::builder& a)
 
 
  853inline texpr0::builder 
operator-(
const texpr0::builder& a)
 
 
  858inline texpr0::builder 
operator+(
const texpr0::builder& a, 
const texpr0::builder& b)
 
 
  863inline texpr0::builder 
operator-(
const texpr0::builder& a, 
const texpr0::builder& b)
 
 
  868inline texpr0::builder 
operator*(
const texpr0::builder& a, 
const texpr0::builder& b)
 
 
  873inline texpr0::builder 
operator/(
const texpr0::builder& a, 
const texpr0::builder& b)
 
 
  878inline texpr0::builder 
operator%(
const texpr0::builder& a, 
const texpr0::builder& b)
 
 
  883inline texpr0::builder 
operator^(
const texpr0::builder& a, 
const texpr0::builder& b)
 
 
  892inline texpr0::builder::~builder()
 
  895  case AP_TEXPR_CST:  ap_coeff_clear(&l->val.cst); 
break;
 
  896  case AP_TEXPR_DIM:  
break;
 
  897  case AP_TEXPR_NODE: free(l->val.node); 
break;
 
  898  default: assert(
false);
 
  903inline bool texpr0::builder::is_zero()
 const 
  905  return l->discr==AP_TEXPR_CST && ap_coeff_zero(&
const_cast<ap_texpr0_t*
>(l)->val.cst);
 
  912inline ap_texpr0_t* texpr0::builder::get_ap_texpr0_t()
 
  917inline const ap_texpr0_t* texpr0::builder::get_ap_texpr0_t()
 const 
std::vector< std::string > * get_varname(std::basic_ostream< charT, Traits > &os)
Definition apxx_dimension_inline.hh:43
bool is_binop(ap_texpr_op_t op)
Definition apxx_texpr0_inline.hh:37
texpr0::builder floor(const texpr0::builder &a)
Definition apxx_texpr0_inline.hh:826
texpr0::builder trunc(const texpr0::builder &a)
Definition apxx_texpr0_inline.hh:836
texpr0::builder sqrt(const texpr0::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:841
texpr0::builder sub(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:778
texpr0::builder operator/(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_texpr0_inline.hh:873
texpr0::builder div(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:792
texpr0::builder cast(const texpr0::builder &a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:820
texpr0::builder binary(ap_texpr_op_t op, const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:763
texpr0::builder pow(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:806
texpr0::builder add(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:771
texpr0::builder operator%(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_texpr0_inline.hh:878
texpr0::builder unary(ap_texpr_op_t op, const texpr0::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:756
texpr0::builder operator^(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_texpr0_inline.hh:883
std::ostream & operator<<(std::ostream &os, const texpr0 &s)
Definition apxx_texpr0_inline.hh:152
void apxx_texpr0_ostream(std::ostream &os, ap_texpr0_t *a, std::vector< std::string > *names)
texpr0::builder operator*(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_texpr0_inline.hh:868
texpr0::builder mod(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:799
texpr0::builder operator+(const texpr0::builder &a)
Definition apxx_texpr0_inline.hh:848
texpr0::builder operator-(const texpr0::builder &a)
Definition apxx_texpr0_inline.hh:853
texpr0::builder neg(const texpr0::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:813
texpr0::builder ceil(const texpr0::builder &a)
Definition apxx_texpr0_inline.hh:831
bool is_unop(ap_texpr_op_t op)
Definition apxx_texpr0_inline.hh:32
texpr0::builder mul(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr0_inline.hh:785