## CGAL::MP_Float

### Definition

An object of the class MP_Float is able to represent a floating point value with arbitrary precision. This number type has the property that additions, subtractions and multiplications are computed exactly, as well as the construction from a double. Division and square root are computed approximately, so we suggest that you use rationals using Quotient<MP_Float> when you need exact divisions.

Note on the implementation : although the mantissa length is basically only limited by the available memory, the exponent is currently represented by a double, which can overflow in some circumstances. We plan to also have a multiprecision exponent to fix this issue.

#include <CGAL/MP_Float.h>

### Is Model for the Concept

FieldNumberType

### Creation

MP_Float m;
| introduces an uninitialized variable m.
MP_Float m ( MP_Float);
| copy constructor.
MP_Float m ( int i);
| introduces the integral value i.
MP_Float m ( double d);
| introduces the floating point value d.

### Operations

std::ostream& | std::ostream& out << m
|  | writes a double approximation of m to the ostream out.
std::istream& | std::istream& in >> & m
|  | reads a double from in, then converts it to an MP_Float.

### Implementation

The implementation of MP_Float is simple but provides a quadratic complexity for multiplications. This can be a problem for large operands. For faster implementations of the same functionality with large integral values, you may want to consider using GMP or LEDA instead.