16 #ifndef __APXX_SCALAR_HH
17 #define __APXX_SCALAR_HH
22 #include "ap_scalar.h"
70 void*
operator new (
size_t sz);
71 void*
operator new[] (
size_t sz);
72 void operator delete (
void* p);
73 void operator delete[](
void* p);
129 scalar(
const mpq_class& x);
221 const mpq_class&
get_mpq()
const;
239 mpq_class
to_mpq(mp_rnd_t round,
order& conv)
const;
255 void to_mpfr(mpfr_t x, mp_rnd_t round,
order& conv)
const;
258 operator mpq_class()
const;
261 operator double()
const;
276 void print(FILE* stream=stdout)
const;
Exception raised when an operation is incompatible with a discriminant.
Definition: apxx_scalar.hh:55
bad_discriminant(const std::string &arg)
Definition: apxx_scalar.hh:59
Scalar (ap_scalar_t wrapper).
Definition: apxx_scalar.hh:89
double to_double(mp_rnd_t round, order &conv) const
Returns a double containing the (possibly converted) value of the scalar.
Definition: apxx_scalar_inline.hh:225
scalar & operator=(int x)
Assigns a native integer to *this, setting its type to MPQ.
Definition: apxx_scalar_inline.hh:124
friend bool operator==(const scalar &a, int b)
friend bool operator<=(const scalar &a, const scalar &b)
friend std::ostream & operator<<(std::ostream &os, const scalar &s)
Printing.
friend order cmp(const scalar &a, const scalar &b)
Returns LESS if a<b, GREATER if a>b, EQUAL if a=b (total order).
scalar()
Makes a double scalar equal to 0.0.
Definition: apxx_scalar_inline.hh:56
friend bool operator==(const scalar &a, const scalar &b)
void to_mpfr(mpfr_t x, mp_rnd_t round, order &conv) const
Copies the (possibly converted) value of the scalar into the MPFR.
Definition: apxx_scalar_inline.hh:233
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_scalar_inline.hh:286
double & get_double()
Returns a (modifiable) reference to the double contained in the scalar.
Definition: apxx_scalar_inline.hh:189
friend bool operator>=(const scalar &a, const scalar &b)
void neg()
Negates *this.
Definition: apxx_scalar_inline.hh:416
friend bool operator>=(int a, const scalar &b)
order is_infty() const
Returns LESS if -oo, GREATER if +oo, EQUAL if finite.
Definition: apxx_scalar_inline.hh:295
friend bool operator!=(int a, const scalar &b)
ap_scalar_discr_t get_discr() const
Whether the object wraps a double or a MPQ.
Definition: apxx_scalar_inline.hh:184
scalar operator-() const
Returns the opposite of *this.
Definition: apxx_scalar_inline.hh:421
friend bool operator>(const scalar &a, const scalar &b)
void inv()
Inverses *this. Not exact for double type.
Definition: apxx_scalar_inline.hh:428
order
Returned by ordering functions.
Definition: apxx_scalar.hh:97
@ EQUAL
Means equal or null (depending on context).
Definition: apxx_scalar.hh:99
@ LESS
Means less than, negative, or -oo (depending on context).
Definition: apxx_scalar.hh:98
@ GREATER
Means greater than, positive, or +oo (depending on context).
Definition: apxx_scalar.hh:100
order sgn() const
Returns LESS if negative, GREATER if positive, EQUAL if null.
Definition: apxx_scalar_inline.hh:300
friend bool operator>=(const scalar &a, int b)
const ap_scalar_t * get_ap_scalar_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_scalar_inline.hh:449
friend bool operator<=(int a, const scalar &b)
scalar operator~() const
Returns the inverse of *this. Not exact for double type.
Definition: apxx_scalar_inline.hh:433
friend bool operator!=(const scalar &a, int b)
friend order cmp(const scalar &a, int b)
friend order cmp(int a, const scalar &b)
mpq_class to_mpq(mp_rnd_t round, order &conv) const
Returns a new MPQ containing the (possibly converted) value of the scalar.
Definition: apxx_scalar_inline.hh:217
mpq_class & get_mpq()
Returns a (modifiable) reference to the MPQ contained in the scalar.
Definition: apxx_scalar_inline.hh:201
long hash() const
Returns a hash code.
Definition: apxx_scalar_inline.hh:440
friend bool operator==(int a, const scalar &b)
friend bool operator<=(const scalar &a, int b)
~scalar()
Definition: apxx_scalar_inline.hh:113
friend void swap(scalar &a, scalar &b)
Swaps the contents (type and value) of two scalars.
friend bool operator<(const scalar &a, const scalar &b)
friend bool operator!=(const scalar &a, const scalar &b)
ap_scalar_t c
Structure managed by APRON.
Definition: apxx_scalar.hh:92
Definition: apxx_abstract0.hh:27
A fraction with native int coefficients, to simplify initialisations and assignments.
Definition: apxx_scalar.hh:41
unsigned long den
Denominator.
Definition: apxx_scalar.hh:44
long num
Numerator.
Definition: apxx_scalar.hh:43
frac(long num, unsigned long den=1)
Definition: apxx_scalar.hh:49
Either +oo or -oo, to simplify initialisations and assignments.
Definition: apxx_scalar.hh:30
infty(int sgn=1)
Definition: apxx_scalar.hh:35
int sgn
Sign: >0 for +oo, <0 for -oo.
Definition: apxx_scalar.hh:32
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69