Floating point numbers

### 1.Floatings

#### 1.1.C++ interface

Floating point numbers of arbitrarily large size are available through the class floating defined in floating.hpp. This class is a simple wrapper to the class mpfr_t of the MPFR library.

 ```#include using namespace mmx; void main () { floating<> a (2), b (3); mmout << a * b << "\n"; }```

The precision can be set thanks to the global variable mmx_bit_precision.

Lower and upper certified approximates can be obtained as follows:

 ```typedef rounding_helper >::UV Up; typedef rounding_helper >::DV Down; mmout << Up::sqrt (floating<> (2)) << "\n"; mmout << Down::sqrt (floating<> (2)) << "\n";```

#### 1.2.Mathemagix interface

The above floating type is glued to Mathemagix as Floating. Default bit-precision can be modified by setting the variable bit_precision.

 Mmx] use "numerix"; type_mode? := true;

 Mmx] a: Floating == 1.0 : Mmx] exp a : Mmx] sin a : Mmx] 1 / 0.0 : Mmx] bit_precision := 128 : Mmx] exp 1.0 : ### 2.Intervals

#### 2.1.C++ interface

Interval are implemented within the class interval defined in interval.hpp.

 ```#include #include using namespace mmx; typedef interval > Interval; void main () { Interval a (2), b (3.0, 3.1); mmout << a * b << "\n"; }```

#### 2.2.Mathemagix interface

The above interval type is glued to Mathemagix as Interval. Classical scientific notation are used for pretty printing intervals.

 Mmx] a == interval (0.999, 1) : Mmx] exp a :  : Mmx] lower a : Mmx] upper a : ### 3.Complex numbers

#### 3.1.C++ interface

Complex numbers are available through the class complex defined in complex.hpp. Over double one must include numerix/complex_double.hpp.

 ```#include using namespace mmx; typedef complex Complex; void main () { Complex a (2), b (3.0, 0.1); mmout << a * b << "\n"; }```

#### 3.2.Mathemagix interface

The above complex type is glued to Mathemagix as Complex.

 Mmx] I == complex (0, 1) : Mmx] I * I : Mmx] 1 / (1 + I) : Mmx] I == complex (0 :> Floating, 1 :> Floating) : Mmx] exp I : ### 4.Balls

#### 4.1.C++ interface

Balls are implemented in the class ball defined in ball.hpp.

 ```#include using namespace mmx; typedef ball > Ball; void main () { Ball a (2), b (3.0, 0.1); mmout << a * b << "\n"; }```

#### 4.2.Mathemagix interface

The above ball type is glued to Mathemagix as Ball.

 Mmx] a : Ball (Floating, Floating) == ball (3.0, 0.1) Mmx] [ center a, radius a ] Mmx] M (n) == if n = 0 then ball 2.0 else if n = 1 then ball (-4.0) else 111 - 1130 / M (n-1) + 3000 / (M(n-1) * M(n-2));

 Mmx] for n in 1 .. 15 do mmout << n << " " << M n << lf;  ```                        ```  Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License. If you don't have this file, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.