Node:C++ Interface Floats, Next:, Previous:C++ Interface Rationals, Up:C++ Class Interface



C++ Interface Floats

When an expression requires the use of temporary intermediate mpf_class values, like f=g*h+x*y, those temporaries will have the same precision as the destination f. Explicit constructors can be used if this doesn't suit.

mpf_class::mpf_class (type op) Function
mpf_class::mpf_class (type op, unsigned long prec) Function
Construct an mpf_class. Any standard C++ type can be used, except long long and long double, and any of the GMP C++ classes can be used.

If prec is given, the initial precision is that value, in bits. If prec is not given, then the initial precision is determined by the type of op given. An mpz_class, mpq_class, string, or C++ builtin type will give the default mpf precision (see Initializing Floats). An mpf_class or expression will give the precision of that value. The precision of a binary expression is the higher of the two operands.

mpf_class f(1.5);        // default precision
mpf_class f(1.5, 500);   // 500 bits (at least)
mpf_class f(x);          // precision of x
mpf_class f(abs(x));     // precision of x
mpf_class f(-g, 1000);   // 1000 bits (at least)
mpf_class f(x+y);        // greater of precisions of x and y

mpf_class abs (mpf_class op) Function
mpf_class ceil (mpf_class op) Function
int cmp (mpf_class op1, type op2) Function
int cmp (type op1, mpf_class op2) Function
mpf_class floor (mpf_class op) Function
mpf_class hypot (mpf_class op1, mpf_class op2) Function
double mpf_class::get_d (void) Function
long mpf_class::get_si (void) Function
unsigned long mpf_class::get_ui (void) Function
bool mpf_class::fits_sint_p (void) Function
bool mpf_class::fits_slong_p (void) Function
bool mpf_class::fits_sshort_p (void) Function
bool mpf_class::fits_uint_p (void) Function
bool mpf_class::fits_ulong_p (void) Function
bool mpf_class::fits_ushort_p (void) Function
int sgn (mpf_class op) Function
mpf_class sqrt (mpf_class op) Function
mpf_class trunc (mpf_class op) Function
These functions provide a C++ class interface to the corresponding GMP C routines.

cmp can be used with any of the classes or the standard C++ types, except long long and long double.

The accuracy provided by hypot is not currently guaranteed.

unsigned long int mpf_class::get_prec () Function
void mpf_class::set_prec (unsigned long prec) Function
void mpf_class::set_prec_raw (unsigned long prec) Function
Get or set the current precision of an mpf_class.

The restrictions described for mpf_set_prec_raw (see Initializing Floats) apply to mpf_class::set_prec_raw. Note in particular that the mpf_class must be restored to it's allocated precision before being destroyed. This must be done by application code, there's no automatic mechanism for it.