Logo  0.95.0-final
Finite Element Embedded Library and Language in C++
Feel++ Feel++ on Github Feel++ community
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mpfr.hpp
1 // C++ Interface for MPFR
2 // NR 21-11-00 (first steps in C++...)
3 // NR 23-02-04 (next steps in C++...)
4 
5 #ifndef _MPFR_CLASS_H_
6 #define _MPFR_CLASS_H_
7 
8 #include <cstdio>
9 
10 // To be able to use the C++ string
11 using namespace std;
12 #ifdef __GNUC__
13 #include <string>
14 #define String string
15 #else
16 //#include <string_iso_SUNWCC.h>
17 #endif
18 
19 #include <iostream>
20 #include <cmath>
21 
22 
23 #include <gmp.h>
24 #include <mpfr.h>
25 #include <feel/feelcore/mpfr-impl.hpp>
26 
27 #ifndef _GIVARO_REF_COUNTER_H_
28 #define _GIVARO_REF_COUNTER_H_
29 // ==================================================================== //
30 // Definition of the Counter class, Counter
31 // (c) copyright GIVARO 1994, 2009
32 // author: Th. Gautier
33 // version : 2.7
34 // date: 1995
35 // This class definition objects to handle reference
36 // counter for memory allocation (eg array0).
37 // ====================================================================
38 #include <cstddef>
39 
40 namespace Feel
41 {
42 namespace mpfr
43 {
44 class RefCounter
45 {
46 public:
47  // Cstor and Dstor
48  inline RefCounter( long l = 0 ) : counter( l ) {}
49  //inline RefCounter( const RefCounter& ) : counter(C.counter) {}
50  inline ~RefCounter() {}
51 
52  // Return the value
53  inline long getvalue() const
54  {
55  return counter ;
56  }
57  inline long val() const
58  {
59  return counter ;
60  }
61  // Return a ref to the counter
62  inline long& refvalue()
63  {
64  return counter ;
65  }
66  // Increments the counter and returns the new value
67  inline long incr()
68  {
69  return ++counter ;
70  }
71  // Decrements the value and returns the new value
72  inline long decr()
73  {
74  return --counter ;
75  }
76 
77 protected:
78  long counter ;
79 } ;
80 
81 #endif
82 // ==================================================================== //
83 // End of definition of the Counter class, Counter
84 // ==================================================================== //
85 
86 
87 #define UNAFFECTED_INEXACT_FLAG 500
88 #define EXACT_FLAG 0
89 #define INEXACT_FLAG 25
90 class InexactFlag
91 {
92 public:
93  // Cstor and Dstor
94  inline InexactFlag( int l = UNAFFECTED_INEXACT_FLAG ) : inexact_flag( l ) {}
95  inline ~InexactFlag() {}
96 
97  // Return the value
98  inline int getvalue() const
99  {
100  return inexact_flag ;
101  }
102  inline int val() const
103  {
104  return inexact_flag ;
105  }
106  // Return a ref to the inexact_flag
107  inline int& refvalue()
108  {
109  return inexact_flag ;
110  }
111 
112 protected:
113  int inexact_flag ;
114 } ;
115 
116 
117 
118 // Rounding modes
119 typedef mp_rnd_t RoundingMode;
120 static const RoundingMode RoundUp=mp_rnd_t( GMP_RNDU );
121 static const RoundingMode RoundDown=mp_rnd_t( GMP_RNDD );
122 static const RoundingMode RoundNearest=mp_rnd_t( GMP_RNDN );
123 static const RoundingMode RoundToZero=mp_rnd_t( GMP_RNDZ );
124 
125 
126 class MpfrClass
127 {
128 
129 protected:
130  mpfr_t mpfr_rep; // representation of the real in a mpfr format
131  // Precision
132  typedef mp_prec_t PrecisionType;
133  InexactFlag *inexact;
134  RefCounter *nbref;
135  // Current default precision
136  static PrecisionType &CurrPrecision;
137  // Current default rounding mode
138  static RoundingMode &CurrRndMode;
139 
140 public:
141  // constructors and destructors
142  MpfrClass ();
143  MpfrClass ( double d,
144  RoundingMode rnd = CurrRndMode,
145  PrecisionType prec = CurrPrecision );
146  MpfrClass ( long double d,
147  RoundingMode rnd = CurrRndMode,
148  PrecisionType prec = CurrPrecision );
149  MpfrClass ( int i,
150  RoundingMode rnd = CurrRndMode,
151  PrecisionType prec = CurrPrecision );
152  MpfrClass ( unsigned int i,
153  RoundingMode rnd = CurrRndMode,
154  PrecisionType prec = CurrPrecision );
155  MpfrClass ( long int i,
156  RoundingMode rnd = CurrRndMode,
157  PrecisionType prec = CurrPrecision );
158  MpfrClass ( unsigned long int i,
159  RoundingMode rnd = CurrRndMode,
160  PrecisionType prec = CurrPrecision );
161  MpfrClass( string s );
162  MpfrClass ( mpz_srcptr z,
163  RoundingMode rnd = CurrRndMode,
164  PrecisionType prec = CurrPrecision );
165  MpfrClass ( mpq_srcptr q,
166  RoundingMode rnd = CurrRndMode,
167  PrecisionType prec = CurrPrecision );
168  MpfrClass ( mpfr_t r,
169  RoundingMode rnd = CurrRndMode,
170  PrecisionType prec = CurrPrecision );
171  MpfrClass ( const MpfrClass& r );
172  ~MpfrClass ();
173 
174  // Assignment and copy operators
175  MpfrClass& operator = ( const MpfrClass& r );
176  MpfrClass& copy ( const MpfrClass& r,
177  RoundingMode rnd = CurrRndMode,
178  PrecisionType prec = CurrPrecision );
179 
180  // Is equal to zero?
181  friend bool iszero( const MpfrClass& r )
182  {
183  return ( ( MPFR_IS_NAN( r.mpfr_rep ) != 0 ) && ( MPFR_NOTZERO( r.mpfr_rep ) != 0 ) );
184  }
185  friend bool isinf( const MpfrClass& r )
186  {
187  return ( mpfr_inf_p( r.mpfr_rep ) != 0 );
188  }
189  friend bool isnan( const MpfrClass& r )
190  {
191  return ( mpfr_nan_p( r.mpfr_rep ) != 0 );
192  }
193  friend bool isnumber( const MpfrClass& r )
194  {
195  return ( mpfr_number_p( r.mpfr_rep ) != 0 );
196  }
197  friend int sign( const MpfrClass& r )
198  {
199  return ( MPFR_SIGN( r.mpfr_rep ) );
200  }
201 
202  // Precision and rounding mode
203  static void SetDefaultPrecision ( PrecisionType newprec );
204  void SetPrecision ( PrecisionType newprec );
205  const static PrecisionType GetDefaultPrecision ();
206  PrecisionType GetPrecision () const;
207  static void SetDefaultRndMode ( RoundingMode newrndmode );
208  static const RoundingMode GetDefaultRndMode ();
209 
210  // Changing the precision: should be in place or not? In place
211  // => to round not in place, copy and round
212  void ChangePrec ( RoundingMode rnd = CurrRndMode,
213  PrecisionType prec = CurrPrecision );
214 
215  // Rounding in the direction of rnd2 when the result is computed
216  // in the direction of rnd1, with a number of wrong bits given as argument.
217  // Should be in place or not? In place
218  int CanRound ( mp_prec_t nb_wrong_bits, RoundingMode rnd1 = CurrRndMode,
219  RoundingMode rnd2 = CurrRndMode,
220  PrecisionType prec = CurrPrecision );
221 
222  // "Constants" (but they depend on the precision and the rounding mode)
223  static MpfrClass Pi( RoundingMode rnd = CurrRndMode,
224  PrecisionType prec = CurrPrecision ) ;
225  static MpfrClass Log2( RoundingMode rnd = CurrRndMode,
226  PrecisionType prec = CurrPrecision ) ;
227  static MpfrClass Euler( RoundingMode rnd = CurrRndMode,
228  PrecisionType prec = CurrPrecision ) ;
229 
230  // Comparison operators
231  friend int compare ( const MpfrClass& r1, const MpfrClass& r2 );
232  friend int compare ( const MpfrClass& r1, const double r2 );
233  friend int compare ( const MpfrClass& r1, const int r2 );
234  friend int compare ( const MpfrClass& r1, const unsigned int r2 );
235  friend int compare ( const MpfrClass& r1, const long int r2 );
236  friend int compare ( const MpfrClass& r1, const unsigned long int r2 );
237 
238 
239  // Arithmetic operators
240  // Philosophy: are members only the operations between MpfrClass
241  //static MpfrClass& operator+ (const MpfrClass& r1, const MpfrClass& r2) ;
242  MpfrClass operator+ ( const MpfrClass& r ) const;
243  friend MpfrClass operator+ ( const MpfrClass& r1, const double r2 ) ;
244  friend MpfrClass operator+ ( const MpfrClass& r1, const int r2 ) ;
245  friend MpfrClass operator+ ( const MpfrClass& r1, const unsigned int r2 ) ;
246  friend MpfrClass operator+ ( const MpfrClass& r1, const long int r2 ) ;
247  friend MpfrClass operator+ ( const MpfrClass& r1, const unsigned long int r2 ) ;
248  friend MpfrClass operator+ ( const MpfrClass& r1, const mpz_srcptr r2 ) ;
249  friend MpfrClass operator+ ( const MpfrClass& r1, const mpq_srcptr r2 ) ;
250  friend MpfrClass operator+ ( const double r1, const MpfrClass& r2 ) ;
251  friend MpfrClass operator+ ( const int r1, const MpfrClass& r2 ) ;
252  friend MpfrClass operator+ ( const unsigned int r1, const MpfrClass& r2 ) ;
253  friend MpfrClass operator+ ( const long int r1, const MpfrClass& r2 ) ;
254  friend MpfrClass operator+ ( const unsigned long int r1, const MpfrClass& r2 ) ;
255  friend MpfrClass operator+ ( const mpz_srcptr r1, const MpfrClass& r2 ) ;
256  friend MpfrClass operator+ ( const mpq_srcptr r1, const MpfrClass& r2 ) ;
257  MpfrClass& operator+= ( const MpfrClass& r ) ;
258  MpfrClass& operator+= ( const double r ) ;
259  MpfrClass& operator+= ( const int r ) ;
260  MpfrClass& operator+= ( const unsigned int r ) ;
261  MpfrClass& operator+= ( const long int r ) ;
262  MpfrClass& operator+= ( const unsigned long int r ) ;
263  MpfrClass& operator+= ( const mpz_srcptr r ) ;
264  MpfrClass& operator+= ( const mpq_srcptr r ) ;
265  static void add ( MpfrClass& res,
266  const MpfrClass& r1, const MpfrClass& r2,
267  RoundingMode rnd = CurrRndMode );
268 
269  //static MpfrClass& operator- (const MpfrClass& r1, const MpfrClass& r2);
270  MpfrClass operator- ( const MpfrClass& r ) const;
271  friend MpfrClass operator- ( const MpfrClass& r1, const double r2 ) ;
272  friend MpfrClass operator- ( const MpfrClass& r1, const int r2 );
273  friend MpfrClass operator- ( const MpfrClass& r1, const unsigned int r2 );
274  friend MpfrClass operator- ( const MpfrClass& r1, const long int r2 );
275  friend MpfrClass operator- ( const MpfrClass& r1, const unsigned long int r2 );
276  friend MpfrClass operator- ( const MpfrClass& r1, const mpz_srcptr r2 );
277  friend MpfrClass operator- ( const MpfrClass& r1, const mpq_srcptr r2 );
278  friend MpfrClass operator- ( const double r1, const MpfrClass& r2 );
279  friend MpfrClass operator- ( const int r1, const MpfrClass& r2 );
280  friend MpfrClass operator- ( const unsigned int r1, const MpfrClass& r2 );
281  friend MpfrClass operator- ( const long int r1, const MpfrClass& r2 );
282  friend MpfrClass operator- ( const unsigned long int r1, const MpfrClass& r2 );
283  friend MpfrClass operator- ( const mpz_srcptr r1, const MpfrClass& r2 );
284  friend MpfrClass operator- ( const mpq_srcptr r1, const MpfrClass& r2 );
285  MpfrClass operator- () const;
286  MpfrClass& operator-= ( const MpfrClass& r ) ;
287  MpfrClass& operator-= ( const double r ) ;
288  MpfrClass& operator-= ( const int r ) ;
289  MpfrClass& operator-= ( const long int r ) ;
290  MpfrClass& operator-= ( const unsigned int r ) ;
291  MpfrClass& operator-= ( const unsigned long int r ) ;
292  MpfrClass& operator-= ( const mpz_srcptr r ) ;
293  MpfrClass& operator-= ( const mpq_srcptr r ) ;
294  static void neg ( MpfrClass& res,
295  const MpfrClass& r,
296  RoundingMode rnd = CurrRndMode );
297  static void sub ( MpfrClass& res,
298  const MpfrClass& r1, const MpfrClass& r2,
299  RoundingMode rnd = CurrRndMode );
300 
301  //static MpfrClass& operator* (const MpfrClass& r1, const MpfrClass& r2) ;
302  MpfrClass operator* ( const MpfrClass& r ) const;
303  friend MpfrClass operator* ( const MpfrClass& r1, const double r2 ) ;
304  friend MpfrClass operator* ( const MpfrClass& r1, const int r2 ) ;
305  friend MpfrClass operator* ( const MpfrClass& r1, const unsigned int r2 ) ;
306  friend MpfrClass operator* ( const MpfrClass& r1, const long int r2 ) ;
307  friend MpfrClass operator* ( const MpfrClass& r1, const unsigned long int r2 ) ;
308  friend MpfrClass operator* ( const MpfrClass& r1, const mpz_srcptr r2 ) ;
309  friend MpfrClass operator* ( const MpfrClass& r1, const mpq_srcptr r2 ) ;
310  friend MpfrClass operator* ( const double r1, const MpfrClass& r2 );
311  friend MpfrClass operator* ( const int r1, const MpfrClass& r2 );
312  friend MpfrClass operator* ( const unsigned int r1, const MpfrClass& r2 );
313  friend MpfrClass operator* ( const long int r1, const MpfrClass& r2 );
314  friend MpfrClass operator* ( const unsigned long int r1, const MpfrClass& r2 );
315  friend MpfrClass operator* ( const mpz_srcptr r1, const MpfrClass& r2 );
316  friend MpfrClass operator* ( const mpq_srcptr r1, const MpfrClass& r2 );
317  MpfrClass& operator*= ( const MpfrClass& r ) ;
318  MpfrClass& operator*= ( const double r ) ;
319  MpfrClass& operator*= ( const int r ) ;
320  MpfrClass& operator*= ( const unsigned int r ) ;
321  MpfrClass& operator*= ( const long int r ) ;
322  MpfrClass& operator*= ( const unsigned long int r ) ;
323  MpfrClass& operator*= ( const mpz_srcptr r ) ;
324  MpfrClass& operator*= ( const mpq_srcptr r ) ;
325  static void mul ( MpfrClass& res,
326  const MpfrClass& r1, const MpfrClass& r2,
327  RoundingMode rnd = CurrRndMode );
328 
329  //static MpfrClass& operator/ (const MpfrClass& r1, const MpfrClass& r2) const;
330  MpfrClass operator/ ( const MpfrClass& r ) const;
331  friend MpfrClass operator/ ( const MpfrClass& r1, const double r2 ) ;
332  friend MpfrClass operator/ ( const MpfrClass& r1, const int r2 ) ;
333  friend MpfrClass operator/ ( const MpfrClass& r1, const unsigned int r2 ) ;
334  friend MpfrClass operator/ ( const MpfrClass& r1, const long int r2 ) ;
335  friend MpfrClass operator/ ( const MpfrClass& r1, const unsigned long int r2 ) ;
336  friend MpfrClass operator/ ( const MpfrClass& r1, const mpz_srcptr r2 ) ;
337  friend MpfrClass operator/ ( const MpfrClass& r1, const mpq_srcptr r2 ) ;
338  friend MpfrClass operator/ ( const double r1, const MpfrClass& r2 ) ;
339  friend MpfrClass operator/ ( const int r1, const MpfrClass& r2 ) ;
340  friend MpfrClass operator/ ( const unsigned int r1, const MpfrClass& r2 ) ;
341  friend MpfrClass operator/ ( const long int r1, const MpfrClass& r2 ) ;
342  friend MpfrClass operator/ ( const unsigned long int r1, const MpfrClass& r2 ) ;
343  friend MpfrClass operator/ ( const mpz_srcptr r1, const MpfrClass& r2 ) ;
344  friend MpfrClass operator/ ( const mpq_srcptr r1, const MpfrClass& r2 ) ;
345  MpfrClass& operator/= ( const MpfrClass& r ) ;
346  MpfrClass& operator/= ( const double r ) ;
347  MpfrClass& operator/= ( const int r ) ;
348  MpfrClass& operator/= ( const unsigned int r ) ;
349  MpfrClass& operator/= ( const long int r ) ;
350  MpfrClass& operator/= ( const unsigned long int r ) ;
351  MpfrClass& operator/= ( const mpz_srcptr r ) ;
352  MpfrClass& operator/= ( const mpq_srcptr r ) ;
353  static void div ( MpfrClass& res,
354  const MpfrClass& r1, const MpfrClass& r2,
355  RoundingMode rnd = CurrRndMode );
356 
357  static void fma ( MpfrClass& res,
358  const MpfrClass& r1, const MpfrClass& r2,
359  const MpfrClass& r3,
360  RoundingMode rnd = CurrRndMode );
361 
362 
363  // Input/Output
364  ostream& put( ostream& o,
365  RoundingMode rnd = CurrRndMode,
366  PrecisionType prec = CurrPrecision,
367  int base = 10,
368  int nb_digits = 0 ) const;
369  //PrecisionType prec = PrecisionType(0) ) const;
370  friend istream& operator >> ( istream &i, MpfrClass& r );
371  friend ostream& operator << ( ostream &o, const MpfrClass& r );
372 
373 
374 
375  // Mathematical functions: exp, sin...
376  void random ( PrecisionType prec = CurrPrecision );
377 
378  friend MpfrClass abs ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
379  friend MpfrClass agm ( const MpfrClass& r1, const MpfrClass& r2, RoundingMode rnd = CurrRndMode );
380  friend MpfrClass sqrt ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
381 
382  friend MpfrClass exp ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
383  friend MpfrClass expm1 ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
384  friend MpfrClass exp2 ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
385  friend MpfrClass log ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
386  friend MpfrClass log2 ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
387  friend MpfrClass log10 ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
388  friend MpfrClass log1p ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
389 
390  friend MpfrClass sin ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
391  friend MpfrClass cos ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
392  friend void sin_cos ( MpfrClass& res_sin, MpfrClass& res_cos,
393  const MpfrClass& r, RoundingMode rnd = CurrRndMode );
394  friend MpfrClass tan ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
395 
396  friend MpfrClass acos ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
397  friend MpfrClass asin ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
398  friend MpfrClass atan ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
399 
400  friend MpfrClass cosh ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
401  friend MpfrClass sinh ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
402  friend MpfrClass tanh ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
403 
404  friend MpfrClass atanh ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
405  friend MpfrClass acosh ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
406  friend MpfrClass asinh ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
407 
408  MpfrClass pow ( const unsigned long int e, RoundingMode rnd = CurrRndMode ) const;
409  MpfrClass pow ( const long int e, RoundingMode rnd = CurrRndMode ) const;
410  MpfrClass pow ( const MpfrClass& e, RoundingMode rnd = CurrRndMode ) const;
411  friend MpfrClass cbrt ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
412  friend MpfrClass gamma ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
413  friend MpfrClass erf ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
414  friend MpfrClass factorial ( const unsigned long int e, RoundingMode rnd = CurrRndMode );
415  friend MpfrClass hypot ( const MpfrClass& r1, const MpfrClass& r2, RoundingMode rnd = CurrRndMode );
416  friend MpfrClass zeta ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
417  //end mathematical functions
418 
419 
420  // The four rounding modes as in IEEE-754 arithmetic and the fractional part
421  friend MpfrClass round ( const MpfrClass& r );
422  friend MpfrClass floor ( const MpfrClass& r );
423  friend MpfrClass trunc ( const MpfrClass& r );
424  friend MpfrClass ceil ( const MpfrClass& r );
425  friend MpfrClass frac ( const MpfrClass& r );
426 
427  friend long int to_int ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
428  friend unsigned long int to_uint ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
429  friend double to_double ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
430  friend long double to_ldouble ( const MpfrClass& r, RoundingMode rnd = CurrRndMode );
431 
432  operator int() const
433  {
434  return to_int( *this );
435  }
436  operator long int() const
437  {
438  return to_int( *this );
439  }
440  operator unsigned long int() const
441  {
442  return to_uint( *this );
443  }
444  operator double() const
445  {
446  return to_double( *this );
447  }
448  operator real96_type() const
449  {
450  return to_ldouble( *this );
451  }
452 
453  friend MpfrClass reldiff ( const MpfrClass& r1, const MpfrClass& r2,
454  RoundingMode rnd = CurrRndMode );
455  friend MpfrClass nextabove ( const MpfrClass& r );
456  friend MpfrClass nextbelow ( const MpfrClass& r );
457  friend MpfrClass nexttoward ( const MpfrClass& r, const MpfrClass& dir );
458 };
459 
460 template<typename T>
461 inline
462 MpfrClass pow( MpfrClass const& mp1, T const& t2 )
463 {
464  return mp1.pow( t2 );
465 }
466 
467 //--------------------------
468 // Comparison operators
469 //--------------------------
470 bool operator == ( const MpfrClass& r1, const MpfrClass& r2 );
471 bool operator == ( const MpfrClass& r1, const double r2 );
472 bool operator == ( const MpfrClass& r1, const int r2 );
473 bool operator == ( const MpfrClass& r1, const unsigned int r2 );
474 bool operator == ( const MpfrClass& r1, const long int r2 );
475 bool operator == ( const MpfrClass& r1, const unsigned long int r2 );
476 bool operator == ( const double r1, const MpfrClass& r2 );
477 bool operator == ( const int r1, const MpfrClass& r2 );
478 bool operator == ( const unsigned int r1, const MpfrClass& r2 );
479 bool operator == ( const long int r1, const MpfrClass& r2 );
480 bool operator == ( const unsigned long int r1, const MpfrClass& r2 );
481 
482 bool operator != ( const MpfrClass& r1, const MpfrClass& r2 );
483 bool operator != ( const MpfrClass& r1, const double r2 );
484 bool operator != ( const MpfrClass& r1, const int r2 );
485 bool operator != ( const MpfrClass& r1, const unsigned int r2 );
486 bool operator != ( const MpfrClass& r1, const long int r2 );
487 bool operator != ( const MpfrClass& r1, const unsigned long int r2 );
488 bool operator != ( const double r1, const MpfrClass& r2 );
489 bool operator != ( const int r1, const MpfrClass& r2 );
490 bool operator != ( const unsigned int r1, const MpfrClass& r2 );
491 bool operator != ( const long int r1, const MpfrClass& r2 );
492 bool operator != ( const unsigned long int r1, const MpfrClass& r2 );
493 
494 bool operator < ( const MpfrClass& r1, const MpfrClass& r2 );
495 bool operator < ( const MpfrClass& r1, const double r2 );
496 bool operator < ( const MpfrClass& r1, const int r2 );
497 bool operator < ( const MpfrClass& r1, const unsigned int r2 );
498 bool operator < ( const MpfrClass& r1, const long int r2 );
499 bool operator < ( const MpfrClass& r1, const unsigned long int r2 );
500 bool operator < ( const double r1, const MpfrClass& r2 );
501 bool operator < ( const int r1, const MpfrClass& r2 );
502 bool operator < ( const unsigned int r1, const MpfrClass& r2 );
503 bool operator < ( const long int r1, const MpfrClass& r2 );
504 bool operator < ( const unsigned long int r1, const MpfrClass& r2 );
505 
506 bool operator <= ( const MpfrClass& r1, const MpfrClass& r2 );
507 bool operator <= ( const MpfrClass& r1, const double r2 );
508 bool operator <= ( const MpfrClass& r1, const int r2 );
509 bool operator <= ( const MpfrClass& r1, const unsigned int r2 );
510 bool operator <= ( const MpfrClass& r1, const long int r2 );
511 bool operator <= ( const MpfrClass& r1, const unsigned long int r2 );
512 bool operator <= ( const double r1, const MpfrClass& r2 );
513 bool operator <= ( const int r1, const MpfrClass& r2 );
514 bool operator <= ( const unsigned int r1, const MpfrClass& r2 );
515 bool operator <= ( const long int r1, const MpfrClass& r2 );
516 bool operator <= ( const unsigned long int r1, const MpfrClass& r2 );
517 
518 bool operator > ( const MpfrClass& r1, const MpfrClass& r2 );
519 bool operator > ( const MpfrClass& r1, const double r2 );
520 bool operator > ( const MpfrClass& r1, const int r2 );
521 bool operator > ( const MpfrClass& r1, const unsigned int r2 );
522 bool operator > ( const MpfrClass& r1, const long int r2 );
523 bool operator > ( const MpfrClass& r1, const unsigned long int r2 );
524 bool operator > ( const double r1, const MpfrClass& r2 );
525 bool operator > ( const int r1, const MpfrClass& r2 );
526 bool operator > ( const unsigned int r1, const MpfrClass& r2 );
527 bool operator > ( const long int r1, const MpfrClass& r2 );
528 bool operator > ( const unsigned long int r1, const MpfrClass& r2 );
529 
530 bool operator >= ( const MpfrClass& r1, const MpfrClass& r2 );
531 bool operator >= ( const MpfrClass& r1, const double r2 );
532 bool operator >= ( const MpfrClass& r1, const int r2 );
533 bool operator >= ( const MpfrClass& r1, const unsigned int r2 );
534 bool operator >= ( const MpfrClass& r1, const long int r2 );
535 bool operator >= ( const MpfrClass& r1, const unsigned long int r2 );
536 bool operator >= ( const double r1, const MpfrClass& r2 );
537 bool operator >= ( const int r1, const MpfrClass& r2 );
538 bool operator >= ( const unsigned int r1, const MpfrClass& r2 );
539 bool operator >= ( const long int r1, const MpfrClass& r2 );
540 bool operator >= ( const unsigned long int r1, const MpfrClass& r2 );
541 
542 MpfrClass min ( const MpfrClass& a, const MpfrClass& b );
543 MpfrClass max ( const MpfrClass& a, const MpfrClass& b );
544 } // mp
545 } // Feel
546 #endif // _MPFR_CLASS_H_
547 
548 
549 
550 
bool operator>=(const BareEdge &e1, const BareEdge &e2)
Definition: bareitems.hpp:380
bool operator==(const BareEdge &p1, const BareEdge &p2)
Definition: bareitems.hpp:360
Expr< Val< typename mpl::if_< boost::is_arithmetic< ExprT1 >, mpl::identity< Cst< ExprT1 > >, mpl::identity< ExprT1 > >::type::type > > val(ExprT1 const &__e1)
precompute expression tensor
Definition: val.hpp:304
bool operator!=(const BareEdge &p1, const BareEdge &p2)
Definition: bareitems.hpp:350
bool operator<=(const BareEdge &e1, const BareEdge &e2)
Definition: bareitems.hpp:400
Elements & operator=(Elements const &e)
Definition: elements.hpp:335
bool operator<(const BareEdge &e1, const BareEdge &e2)
Definition: bareitems.hpp:390
bool operator>(const BareEdge &e1, const BareEdge &e2)
Definition: bareitems.hpp:370

Generated on Sun Dec 22 2013 13:11:08 for Feel++ by doxygen 1.8.5