28inline void interval::init()
30 c.inf = ap_scalar_alloc();
31 c.sup = ap_scalar_alloc();
34inline interval::interval(ap_interval_t* i)
40inline interval::interval()
45inline interval::interval(
const interval& x)
48 ap_interval_set(&c,
const_cast<ap_interval_t*
>(&x.c));
51inline interval::interval(
const scalar& inf,
const scalar& sup)
54 ap_interval_set_scalar(&c,
55 const_cast<ap_scalar_t*
>(inf.get_ap_scalar_t()),
56 const_cast<ap_scalar_t*
>(sup.get_ap_scalar_t()));
59inline interval::interval(
int inf,
int sup)
62 ap_interval_set_int(&c, inf, sup);
65inline interval::interval(
long inf,
long sup)
68 ap_interval_set_int(&c, inf, sup);
71inline interval::interval(
double inf,
double sup)
74 ap_interval_set_double(&c, inf, sup);
77inline interval::interval(
const frac& inf,
const frac& sup)
80 ap_interval_set_frac(&c, inf.num, inf.den, sup.num, sup.den);
83inline interval::interval(
const mpq_class& inf,
const mpq_class& sup)
86 ap_interval_set_mpq(&c,
87 const_cast<mpq_class&
>(inf).get_mpq_t(),
88 const_cast<mpq_class&
>(sup).get_mpq_t());
91inline interval::interval(mpfr_t inf, mpfr_t sup)
94 ap_interval_set_mpfr(&c,inf,sup);
97inline interval::interval(top t)
100 ap_interval_set_top(&c);
103inline interval::interval(bottom t)
106 ap_interval_set_bottom(&c);
113inline interval::~interval()
115 ap_scalar_free(c.inf);
116ap_scalar_free(c.sup);
125inline interval& interval::operator= (
const interval& x)
127 ap_interval_set(&c,
const_cast<ap_interval_t*
>(&x.c));
131inline interval& interval::operator= (top t)
133 ap_interval_set_top(&c);
137inline interval& interval::operator= (bottom t)
139 ap_interval_set_bottom(&c);
146inline interval& interval::set(
const interval& x)
148 ap_interval_set(&c,
const_cast<ap_interval_t*
>(&x.c));
152inline interval& interval::set(
const scalar& inf,
const scalar& sup)
154 ap_interval_set_scalar(&c,
155 const_cast<ap_scalar_t*
>(inf.get_ap_scalar_t()),
156 const_cast<ap_scalar_t*
>(sup.get_ap_scalar_t()));
160inline interval& interval::set(
int inf,
int sup)
162 ap_interval_set_int(&c, inf, sup);
166inline interval& interval::set(
long inf,
long sup)
168 ap_interval_set_int(&c, inf, sup);
172inline interval& interval::set(
double inf,
double sup)
174 ap_interval_set_double(&c, inf, sup);
178inline interval& interval::set(
const frac& inf,
const frac& sup)
180 ap_interval_set_frac(&c, inf.num, inf.den, sup.num, sup.den);
184inline interval& interval::set(
const mpq_class& inf,
const mpq_class& sup)
186 ap_interval_set_mpq(&c,
187 const_cast<mpq_class&
>(inf).get_mpq_t(),
188 const_cast<mpq_class&
>(sup).get_mpq_t());
192inline interval& interval::set(mpfr_t inf, mpfr_t sup)
194 ap_interval_set_mpfr(&c,inf,sup);
198inline interval& interval::set(top t)
200 ap_interval_set_top(&c);
204inline interval& interval::set(bottom t)
206 ap_interval_set_bottom(&c);
213inline void swap(interval& a, interval &b)
215 ap_interval_swap(&a.c, &b.c);
222inline scalar& interval::get_inf()
224 return reinterpret_cast<scalar&
>(*c.inf);
227inline scalar& interval::get_sup()
229 return reinterpret_cast<scalar&
>(*c.sup);
232inline const scalar& interval::get_inf()
const
234 return reinterpret_cast<const scalar&
>(*c.inf);
237inline const scalar& interval::get_sup()
const
239 return reinterpret_cast<const scalar&
>(*c.sup);
246inline std::ostream&
operator<< (std::ostream& os,
const interval& s)
248 return os <<
'[' << s.get_inf() <<
',' << s.get_sup() <<
']';
251inline void interval::print(FILE* stream)
const
253 ap_interval_fprint(stream,
const_cast<ap_interval_t*
>(&c));
260inline bool interval::is_top()
const
262 return ap_interval_is_top(
const_cast<ap_interval_t*
>(&c));
265inline bool interval::is_bottom()
const
267 return ap_interval_is_bottom(
const_cast<ap_interval_t*
>(&c));
272 return ap_interval_is_leq(
const_cast<ap_interval_t*
>(&a.c),
273 const_cast<ap_interval_t*
>(&b.c));
278 return ap_interval_is_leq(
const_cast<ap_interval_t*
>(&b.c),
279 const_cast<ap_interval_t*
>(&a.c));
282inline bool operator< (
const interval&a,
const interval &b)
284 return ap_interval_cmp(
const_cast<ap_interval_t*
>(&a.c),
285 const_cast<ap_interval_t*
>(&b.c)) == -1;
288inline bool operator> (
const interval&a,
const interval &b)
290 return ap_interval_cmp(
const_cast<ap_interval_t*
>(&a.c),
291 const_cast<ap_interval_t*
>(&b.c)) == 1;
296 return ap_interval_equal(
const_cast<ap_interval_t*
>(&a.c),
297 const_cast<ap_interval_t*
>(&b.c));
302 return !ap_interval_equal(
const_cast<ap_interval_t*
>(&a.c),
303 const_cast<ap_interval_t*
>(&b.c));
306inline interval::order
cmp (
const interval&a,
const interval &b)
308 return (interval::order)ap_interval_cmp(
const_cast<ap_interval_t*
>(&a.c),
309 const_cast<ap_interval_t*
>(&b.c));
316inline void interval::neg()
318 ap_interval_neg(&c, &c);
321inline interval interval::operator- ()
const
328inline long interval::hash()
const
330 return ap_interval_hash(
const_cast<ap_interval_t*
>(&c));
336inline const ap_interval_t* interval::get_ap_interval_t()
const
341inline ap_interval_t* interval::get_ap_interval_t()
355inline interval_array::interval_array(
size_t size, ap_interval_t** c)
363inline interval_array::interval_array(
size_t size)
364 : sz(size), c(ap_interval_array_alloc(size))
367inline interval_array::interval_array(
const interval_array &x)
368 : sz(x.sz), c(ap_interval_array_alloc(x.sz))
370 for (
size_t i=0;i<sz;i++)
371 ap_interval_set(c[i], x.c[i]);
374inline interval_array::interval_array(
const std::vector<interval>& x)
375 : sz(x.size()), c(ap_interval_array_alloc(x.size()))
377 for (
size_t i=0;i<sz;i++)
378 ap_interval_set(c[i],
const_cast<ap_interval_t*
>(x[i].get_ap_interval_t()));
381inline interval_array::interval_array(
size_t size,
const interval x[])
382 : sz(size), c(ap_interval_array_alloc(size))
384 for (
size_t i=0;i<size;i++)
385 ap_interval_set(c[i],
const_cast<ap_interval_t*
>(x[i].get_ap_interval_t()));
393inline interval_array::~interval_array()
395 ap_interval_array_free(c, sz);
402inline interval_array& interval_array::operator= (
const interval_array &x)
406 ap_interval_array_free(c, sz);
408 c = ap_interval_array_alloc(sz);
410 for (
size_t i=0;i<sz;i++)
411 ap_interval_set(c[i], x.c[i]);
416inline interval_array& interval_array::operator= (
const std::vector<interval>& x)
418 if (sz != x.size()) {
419 ap_interval_array_free(c, sz);
421 c = ap_interval_array_alloc(sz);
423 for (
size_t i=0;i<sz;i++)
424 ap_interval_set(c[i],
const_cast<ap_interval_t*
>(x[i].get_ap_interval_t()));
428inline interval_array& interval_array::operator= (
const interval x[])
430 for (
size_t i=0;i<sz;i++)
431 ap_interval_set(c[i],
const_cast<ap_interval_t*
>(x[i].get_ap_interval_t()));
439inline interval_array::operator std::vector<interval>()
const
441 std::vector<interval> v = std::vector<interval>(sz);
442 for (
size_t i=0;i<sz;i++)
443 ap_interval_set(v[i].get_ap_interval_t(), c[i]);
451inline std::ostream&
operator<< (std::ostream& os,
const interval_array& s)
454 for (
size_t i=0;i<s.sz;i++)
455 os << s.get(i) <<
" ";
459inline void interval_array::print(FILE* stream)
const
461 fprintf(stream,
"{ " );
462 for (
size_t i=0;i<sz;i++) {
463 ap_interval_fprint(stream,
const_cast<ap_interval_t*
>(c[i]));
464 fprintf(stream,
" ");
473inline size_t interval_array::size()
const
476inline interval** interval_array::contents()
477{
return reinterpret_cast<interval**
>(c); }
479inline interval& interval_array::get(
size_t i)
481 if (i >= sz)
throw std::out_of_range(
"apron::interval_array::get(size_t)");
482 return reinterpret_cast<interval&
>(*c[i]);
485inline const interval& interval_array::get(
size_t i)
const
487 if (i >= sz)
throw std::out_of_range(
"apron::interval_array::get(size_t)");
488 return reinterpret_cast<interval&
>(*c[i]);
491inline interval& interval_array::operator[](
size_t i)
493 return reinterpret_cast<interval&
>(*c[i]);
496inline const interval& interval_array::operator[](
size_t i)
const
498 return reinterpret_cast<interval&
>(*c[i]);
505inline const ap_interval_t *
const * interval_array::get_ap_interval_t_array()
const
510inline ap_interval_t** interval_array::get_ap_interval_t_array()
bool operator<=(const interval &a, const interval &b)
Definition apxx_interval_inline.hh:270
std::ostream & operator<<(std::ostream &os, const interval &s)
Definition apxx_interval_inline.hh:246
bool operator==(const interval &a, const interval &b)
Definition apxx_interval_inline.hh:294
bool operator>(const interval &a, const interval &b)
Definition apxx_interval_inline.hh:288
interval::order cmp(const interval &a, const interval &b)
Definition apxx_interval_inline.hh:306
bool operator>=(const interval &a, const interval &b)
Definition apxx_interval_inline.hh:276
bool operator<(const interval &a, const interval &b)
Definition apxx_interval_inline.hh:282
void swap(interval &a, interval &b)
Definition apxx_interval_inline.hh:213
bool operator!=(const interval &a, const interval &b)
Definition apxx_interval_inline.hh:300