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