22inline void* use_malloc::operator 
new(
size_t sz)
 
   25  if (!x) 
throw std::bad_alloc();
 
   29inline void* use_malloc::operator 
new[](
size_t sz)
 
   32  if (!x) 
throw std::bad_alloc();
 
   36inline void use_malloc::operator 
delete(
void* p)
 
   41inline void use_malloc::operator 
delete[](
void* p)
 
   56inline scalar::scalar() 
 
   58  ap_scalar_init(&c, AP_SCALAR_DOUBLE); 
 
   61inline scalar::scalar(
int x)
 
   63  ap_scalar_init(&c, AP_SCALAR_MPQ); 
 
   64  ap_scalar_set_int(&c, x); 
 
   67inline scalar::scalar(
long x)
 
   69  ap_scalar_init(&c, AP_SCALAR_MPQ); 
 
   70  ap_scalar_set_int(&c, x); 
 
   73inline scalar::scalar(
double x)
 
   75  ap_scalar_init(&c, AP_SCALAR_DOUBLE); 
 
   76  ap_scalar_set_double(&c, x); 
 
   79inline scalar::scalar(
const frac& x)
 
   81  ap_scalar_init(&c, AP_SCALAR_MPQ); 
 
   82  ap_scalar_set_frac(&c, x.num, x.den); 
 
   85inline scalar::scalar(infty x)
 
   87  ap_scalar_init(&c, AP_SCALAR_DOUBLE); 
 
   88  ap_scalar_set_infty(&c, x.sgn); 
 
   91inline scalar::scalar(
const mpq_class& x) 
 
   93  ap_scalar_init(&c, AP_SCALAR_MPQ); 
 
   94  ap_scalar_set_mpq(&c, 
const_cast<mpq_class&
>(x).get_mpq_t());
 
   97inline scalar::scalar(mpfr_t x) 
 
   99  ap_scalar_init(&c, AP_SCALAR_MPFR); 
 
  100  ap_scalar_set_mpfr(&c,x);
 
  103inline scalar::scalar(
const scalar& x) 
 
  105  ap_scalar_init(&c, x.c.discr); 
 
  106  ap_scalar_set(&c, 
const_cast<ap_scalar_t*
>(&x.c)); 
 
  113inline scalar::~scalar() 
 
  124inline scalar& scalar::operator= (
int x)
 
  126  ap_scalar_set_int(&c, x); 
 
  130inline scalar& scalar::operator= (
long x)
 
  132  ap_scalar_set_int(&c, x); 
 
  136inline scalar& scalar::operator= (
double x)    
 
  138  ap_scalar_set_double(&c, x); 
 
  142inline scalar& scalar::operator= (
const frac& x)
 
  144  ap_scalar_set_frac(&c, x.num, x.den); 
 
  148inline scalar& scalar::operator= (infty x)
 
  150  ap_scalar_set_infty(&c, x.sgn); 
 
  154inline scalar& scalar::operator= (
const mpq_class& x)
 
  156  ap_scalar_set_mpq(&c, 
const_cast<mpq_class&
>(x).get_mpq_t()); 
 
  160inline scalar& scalar::operator= (mpfr_t x)
 
  162  ap_scalar_set_mpfr(&c, x);
 
  166inline scalar& scalar::operator= (
const scalar& x)
 
  168  ap_scalar_set(&c, 
const_cast<ap_scalar_t*
>(&x.c)); 
 
  175inline void swap(scalar& a, scalar &b)
 
  177  ap_scalar_swap(&a.c, &b.c); 
 
 
  184inline ap_scalar_discr_t scalar::get_discr()
 const 
  189inline double& scalar::get_double()
 
  191  if (c.discr!=AP_SCALAR_DOUBLE) 
throw(bad_discriminant(
"apron::scalar::get_double()"));
 
  195inline const double& scalar::get_double()
 const 
  197  if (c.discr!=AP_SCALAR_DOUBLE) 
throw(bad_discriminant(
"apron::scalar::get_double()"));
 
  201inline mpq_class& scalar::get_mpq()
 
  203  if (c.discr!=AP_SCALAR_MPQ) 
throw(bad_discriminant(
"apron::scalar::get_mpq()"));
 
  204  return reinterpret_cast<mpq_class&
>(*c.val.mpq);
 
  207inline const mpq_class& scalar::get_mpq()
 const 
  209  if (c.discr!=AP_SCALAR_MPQ) 
throw(bad_discriminant(
"apron::scalar::get_mpq()"));
 
  210  return reinterpret_cast<mpq_class&
>(*c.val.mpq);
 
  217inline mpq_class scalar::to_mpq(mp_rnd_t round, order& conv)
 const 
  220  int o = ap_mpq_set_scalar(r.get_mpq_t(), 
const_cast<ap_scalar_t*
>(&c), round);
 
  221  conv = (o>0) ? GREATER : (o<0) ? LESS : EQUAL;
 
  225inline double scalar::to_double(mp_rnd_t round, order& conv)
 const 
  228  int o = ap_double_set_scalar(&r, 
const_cast<ap_scalar_t*
>(&c), round);
 
  229  conv = (o>0) ? GREATER : (o<0) ? LESS : EQUAL;
 
  233inline void scalar::to_mpfr(mpfr_t r, mp_rnd_t round, order& conv)
 const 
  235  int o = ap_mpfr_set_scalar(r, 
const_cast<ap_scalar_t*
>(&c), round);
 
  236  conv = (o>0) ? GREATER : (o<0) ? LESS : EQUAL;
 
  239inline scalar::operator mpq_class()
 const 
  242  return to_mpq(GMP_RNDN, c);
 
  245inline scalar::operator double()
 const 
  248  return to_double(GMP_RNDN, c);
 
  255inline std::ostream& 
operator<< (std::ostream& os, 
const scalar& s)
 
  257  int i = ap_scalar_infty(
const_cast<ap_scalar_t*
>(&s.c));
 
  258  if (i>0) 
return os << 
"+oo";
 
  259  if (i<0) 
return os << 
"-oo";
 
  261  case AP_SCALAR_DOUBLE: 
return os << s.c.val.dbl;
 
  262  case AP_SCALAR_MPQ:    
return os << s.c.val.mpq;
 
  265      double d = mpfr_get_d(s.c.val.mpfr,GMP_RNDU);
 
  266      if (!mpfr_cmp_d(s.c.val.mpfr,d)) 
return os << d;
 
  268      char* tmp = mpfr_get_str(NULL,&e,10,os.precision(),s.c.val.mpfr,GMP_RNDU);
 
  269      if (tmp[0]==
'-' || tmp[0]==
'+') {
 
  270        os << tmp[0] << 
"." << tmp+1;
 
  271        if (e>0) os << 
"e+" << e;
 
  272        if (e<0) os << 
"e" << e;
 
  276        if (e>0) os << 
"e+" << e;
 
  277        if (e<0) os << 
"e" << e;
 
 
  286inline void scalar::print(FILE* stream)
 const  
  288  ap_scalar_fprint(stream, 
const_cast<ap_scalar_t*
>(&c)); 
 
  295inline scalar::order scalar::is_infty()
 const 
  297  return (order) ap_scalar_infty(
const_cast<ap_scalar_t*
>(&c));
 
  300inline scalar::order scalar::sgn ()
 const  
  302  return (order) ap_scalar_sgn(
const_cast<ap_scalar_t*
>(&c));
 
  306inline scalar::order 
cmp(
const scalar& a, 
const scalar& b)         
 
  308  return (scalar::order) ap_scalar_cmp(
const_cast<ap_scalar_t*
>(&a.c), 
const_cast<ap_scalar_t*
>(&b.c));
 
 
  313  return ap_scalar_cmp(
const_cast<ap_scalar_t*
>(&a.c), 
const_cast<ap_scalar_t*
>(&b.c))>=0;
 
 
  318  return ap_scalar_cmp(
const_cast<ap_scalar_t*
>(&a.c), 
const_cast<ap_scalar_t*
>(&b.c))<=0;
 
 
  323  return ap_scalar_cmp(
const_cast<ap_scalar_t*
>(&a.c), 
const_cast<ap_scalar_t*
>(&b.c))>0;
 
 
  328  return ap_scalar_cmp(
const_cast<ap_scalar_t*
>(&a.c), 
const_cast<ap_scalar_t*
>(&b.c))<0;
 
 
  333  return ap_scalar_equal(
const_cast<ap_scalar_t*
>(&a.c), 
const_cast<ap_scalar_t*
>(&b.c));
 
 
  338  return  !ap_scalar_equal(
const_cast<ap_scalar_t*
>(&a.c), 
const_cast<ap_scalar_t*
>(&b.c)); 
 
 
  342inline scalar::order 
cmp(
const scalar& a, 
int b)         
 
  344  return (scalar::order) ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&a.c), b); 
 
 
  349  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&a.c), b)>=0;
 
 
  354  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&a.c), b)<=0;
 
 
  359  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&a.c), b)>0;
 
 
  364  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&a.c), b)<0;
 
 
  369  return ap_scalar_equal_int(
const_cast<ap_scalar_t*
>(&a.c), b); 
 
 
  374  return  !ap_scalar_equal_int(
const_cast<ap_scalar_t*
>(&a.c), b); 
 
 
  377inline scalar::order 
cmp(
int a, 
const scalar& b)         
 
  379  return (scalar::order) ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&b.c), a); 
 
 
  384  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&b.c), a)<=0;
 
 
  389  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&b.c), a)>=0;
 
 
  394  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&b.c), a)<0;
 
 
  399  return ap_scalar_cmp_int(
const_cast<ap_scalar_t*
>(&b.c), a)>0;
 
 
  404  return ap_scalar_equal_int(
const_cast<ap_scalar_t*
>(&b.c), a); 
 
 
  409  return  !ap_scalar_equal_int(
const_cast<ap_scalar_t*
>(&b.c), a); 
 
 
  416inline void scalar::neg()
 
  418  ap_scalar_neg(&c, &c); 
 
  421inline scalar scalar::operator- ()
 const 
  428inline void scalar::inv() 
 
  430  ap_scalar_inv(&c, &c); 
 
  433inline scalar scalar::operator~ ()
 const 
  440inline long scalar::hash()
 const 
  442  return ap_scalar_hash(
const_cast<ap_scalar_t*
>(&c)); 
 
  449inline const ap_scalar_t* scalar::get_ap_scalar_t()
 const 
  454inline ap_scalar_t* scalar::get_ap_scalar_t()
 
std::ostream & operator<<(std::ostream &os, const scalar &s)
Definition apxx_scalar_inline.hh:255
bool operator<=(const scalar &a, const scalar &b)
Definition apxx_scalar_inline.hh:316
bool operator==(const scalar &a, const scalar &b)
Definition apxx_scalar_inline.hh:331
scalar::order cmp(const scalar &a, const scalar &b)
Definition apxx_scalar_inline.hh:306
bool operator>=(const scalar &a, const scalar &b)
Definition apxx_scalar_inline.hh:311
bool operator>(const scalar &a, const scalar &b)
Definition apxx_scalar_inline.hh:321
void swap(scalar &a, scalar &b)
Definition apxx_scalar_inline.hh:175
bool operator<(const scalar &a, const scalar &b)
Definition apxx_scalar_inline.hh:326
bool operator!=(const scalar &a, const scalar &b)
Definition apxx_scalar_inline.hh:336