Lines Matching refs:mpreal
130 class mpreal {
142 mpreal();
143 mpreal(const mpreal& u);
144 mpreal(const mpfr_t u);
145 mpreal(const mpf_t u);
146 mpreal(const mpz_t u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
147 mpreal(const mpq_t u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
148 mpreal(const double u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
149 mpreal(const long double u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
150 mpreal(const unsigned long int u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
151 mpreal(const unsigned int u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
152 mpreal(const long int u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
153 mpreal(const int u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
156 mpreal(const uint64_t u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
157 mpreal(const int64_t u, mp_prec_t prec = default_prec, mp_rnd_t mode = default_rnd);
160 mpreal(const char* s, mp_prec_t prec = default_prec, int base = default_base, mp_rnd_t mode = default_rnd);
161 mpreal(const std::string& s, mp_prec_t prec = default_prec, int base = default_base, mp_rnd_t mode = default_rnd);
163 ~mpreal();
172 mpreal& operator=(const mpreal& v);
173 mpreal& operator=(const mpf_t v);
174 mpreal& operator=(const mpz_t v);
175 mpreal& operator=(const mpq_t v);
176 mpreal& operator=(const long double v);
177 mpreal& operator=(const double v);
178 mpreal& operator=(const unsigned long int v);
179 mpreal& operator=(const unsigned int v);
180 mpreal& operator=(const long int v);
181 mpreal& operator=(const int v);
182 mpreal& operator=(const char* s);
185 mpreal& operator+=(const mpreal& v);
186 mpreal& operator+=(const mpf_t v);
187 mpreal& operator+=(const mpz_t v);
188 mpreal& operator+=(const mpq_t v);
189 mpreal& operator+=(const long double u);
190 mpreal& operator+=(const double u);
191 mpreal& operator+=(const unsigned long int u);
192 mpreal& operator+=(const unsigned int u);
193 mpreal& operator+=(const long int u);
194 mpreal& operator+=(const int u);
197 mpreal& operator+=(const int64_t u);
198 mpreal& operator+=(const uint64_t u);
199 mpreal& operator-=(const int64_t u);
200 mpreal& operator-=(const uint64_t u);
201 mpreal& operator*=(const int64_t u);
202 mpreal& operator*=(const uint64_t u);
203 mpreal& operator/=(const int64_t u);
204 mpreal& operator/=(const uint64_t u);
207 const mpreal operator+() const;
208 mpreal& operator++ ();
209 const mpreal operator++ (int);
212 mpreal& operator-=(const mpreal& v);
213 mpreal& operator-=(const mpz_t v);
214 mpreal& operator-=(const mpq_t v);
215 mpreal& operator-=(const long double u);
216 mpreal& operator-=(const double u);
217 mpreal& operator-=(const unsigned long int u);
218 mpreal& operator-=(const unsigned int u);
219 mpreal& operator-=(const long int u);
220 mpreal& operator-=(const int u);
221 const mpreal operator-() const;
222 friend const mpreal operator-(const unsigned long int b, const mpreal& a);
223 friend const mpreal operator-(const unsigned int b, const mpreal& a);
224 friend const mpreal operator-(const long int b, const mpreal& a);
225 friend const mpreal operator-(const int b, const mpreal& a);
226 friend const mpreal operator-(const double b, const mpreal& a);
227 mpreal& operator-- ();
228 const mpreal operator-- (int);
231 mpreal& operator*=(const mpreal& v);
232 mpreal& operator*=(const mpz_t v);
233 mpreal& operator*=(const mpq_t v);
234 mpreal& operator*=(const long double v);
235 mpreal& operator*=(const double v);
236 mpreal& operator*=(const unsigned long int v);
237 mpreal& operator*=(const unsigned int v);
238 mpreal& operator*=(const long int v);
239 mpreal& operator*=(const int v);
242 mpreal& operator/=(const mpreal& v);
243 mpreal& operator/=(const mpz_t v);
244 mpreal& operator/=(const mpq_t v);
245 mpreal& operator/=(const long double v);
246 mpreal& operator/=(const double v);
247 mpreal& operator/=(const unsigned long int v);
248 mpreal& operator/=(const unsigned int v);
249 mpreal& operator/=(const long int v);
250 mpreal& operator/=(const int v);
251 friend const mpreal operator/(const unsigned long int b, const mpreal& a);
252 friend const mpreal operator/(const unsigned int b, const mpreal& a);
253 friend const mpreal operator/(const long int b, const mpreal& a);
254 friend const mpreal operator/(const int b, const mpreal& a);
255 friend const mpreal operator/(const double b, const mpreal& a);
258 mpreal& operator<<=(const unsigned long int u);
259 mpreal& operator<<=(const unsigned int u);
260 mpreal& operator<<=(const long int u);
261 mpreal& operator<<=(const int u);
264 mpreal& operator>>=(const unsigned long int u);
265 mpreal& operator>>=(const unsigned int u);
266 mpreal& operator>>=(const long int u);
267 mpreal& operator>>=(const int u);
270 friend bool operator > (const mpreal& a, const mpreal& b);
271 friend bool operator >= (const mpreal& a, const mpreal& b);
272 friend bool operator < (const mpreal& a, const mpreal& b);
273 friend bool operator <= (const mpreal& a, const mpreal& b);
274 friend bool operator == (const mpreal& a, const mpreal& b);
275 friend bool operator != (const mpreal& a, const mpreal& b);
278 friend bool operator == (const mpreal& a, const unsigned long int b);
279 friend bool operator == (const mpreal& a, const unsigned int b);
280 friend bool operator == (const mpreal& a, const long int b);
281 friend bool operator == (const mpreal& a, const int b);
282 friend bool operator == (const mpreal& a, const long double b);
283 friend bool operator == (const mpreal& a, const double b);
300 // Convert mpreal to string with n significant digits in base b
309 friend const mpreal sqr (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
310 friend const mpreal sqrt(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
311 friend const mpreal sqrt(const unsigned long int v, mp_rnd_t rnd_mode = mpreal::default_rnd);
312 friend const mpreal cbrt(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
313 friend const mpreal root(const mpreal& v, unsigned long int k, mp_rnd_t rnd_mode = mpreal::default_rnd);
314 friend const mpreal pow (const mpreal& a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
315 friend const mpreal pow (const mpreal& a, const mpz_t b, mp_rnd_t rnd_mode = mpreal::default_rnd);
316 friend const mpreal pow (const mpreal& a, const unsigned long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
317 friend const mpreal pow (const mpreal& a, const long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
318 friend const mpreal pow (const unsigned long int a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
319 friend const mpreal pow (const unsigned long int a, const unsigned long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
320 friend const mpreal fabs(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
322 friend const mpreal abs(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
323 friend const mpreal dim(const mpreal& a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
324 friend inline const mpreal mul_2ui(const mpreal& v, unsigned long int k, mp_rnd_t rnd_mode = mpreal::default_rnd);
325 friend inline const mpreal mul_2si(const mpreal& v, long int k, mp_rnd_t rnd_mode = mpreal::default_rnd);
326 friend inline const mpreal div_2ui(const mpreal& v, unsigned long int k, mp_rnd_t rnd_mode = mpreal::default_rnd);
327 friend inline const mpreal div_2si(const mpreal& v, long int k, mp_rnd_t rnd_mode = mpreal::default_rnd);
328 friend int cmpabs(const mpreal& a,const mpreal& b);
330 friend const mpreal log (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
331 friend const mpreal log2 (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
332 friend const mpreal log10(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
333 friend const mpreal exp (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
334 friend const mpreal exp2 (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
335 friend const mpreal exp10(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
336 friend const mpreal log1p(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
337 friend const mpreal expm1(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
339 friend const mpreal cos(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
340 friend const mpreal sin(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
341 friend const mpreal tan(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
342 friend const mpreal sec(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
343 friend const mpreal csc(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
344 friend const mpreal cot(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
345 friend int sin_cos(mpreal& s, mpreal& c, const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
347 friend const mpreal acos (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
348 friend const mpreal asin (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
349 friend const mpreal atan (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
350 friend const mpreal atan2 (const mpreal& y, const mpreal& x, mp_rnd_t rnd_mode = mpreal::default_rnd);
351 friend const mpreal acot (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
352 friend const mpreal asec (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
353 friend const mpreal acsc (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
355 friend const mpreal cosh (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
356 friend const mpreal sinh (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
357 friend const mpreal tanh (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
358 friend const mpreal sech (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
359 friend const mpreal csch (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
360 friend const mprealmpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
361 friend const mpreal acosh (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
362 friend const mpreal asinh (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
363 friend const mpreal atanh (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
364 friend const mpreal acoth (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
365 friend const mpreal asech (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
366 friend const mpreal acsch (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
368 friend const mpreal hypot (const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode = mpreal::default_rnd);
370 friend const mpreal fac_ui (unsigned long int v, mp_prec_t prec = mpreal::default_prec, mp_rnd_t rnd_mode = mpreal::default_rnd);
371 friend const mpreal eint (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
373 friend const mpreal gamma (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
374 friend const mpreal lngamma (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
375 friend const mpreal lgamma (const mpreal& v, int *signp = 0, mp_rnd_t rnd_mode = mpreal::default_rnd);
376 friend const mpreal zeta (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
377 friend const mpreal erf (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
378 friend const mpreal erfc (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
379 friend const mpreal besselj0 (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
380 friend const mpreal besselj1 (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
381 friend const mpreal besseljn (long n, const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
382 friend const mpreal bessely0 (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
383 friend const mpreal bessely1 (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
384 friend const mpreal besselyn (long n, const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
385 friend const mpreal fma (const mpreal& v1, const mpreal& v2, const mpreal& v3, mp_rnd_t rnd_mode = mpreal::default_rnd);
386 friend const mpreal fms (const mpreal& v1, const mpreal& v2, const mpreal& v3, mp_rnd_t rnd_mode = mpreal::default_rnd);
387 friend const mpreal agm (const mpreal& v1, const mpreal& v2, mp_rnd_t rnd_mode = mpreal::default_rnd);
388 friend const mpreal sum (const mpreal tab[], unsigned long int n, mp_rnd_t rnd_mode = mpreal::default_rnd);
389 friend int sgn(const mpreal& v); // -1 or +1
393 friend int sinh_cosh(mpreal& s, mpreal& c, const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
394 friend const mpreal li2(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
395 friend const mpreal fmod (const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode = mpreal::default_rnd);
396 friend const mpreal rec_sqrt(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
401 friend const mpreal digamma(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
402 friend const mpreal ai(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
403 friend const mpreal urandom (gmp_randstate_t& state,mp_rnd_t rnd_mode = mpreal::default_rnd); // use gmp_randinit_default() to init state, gmp_randclear() to clear
404 friend bool isregular(const mpreal& v);
411 friend const mpreal random(unsigned int seed = 0);
414 friend const mpreal frexp(const mpreal& v, mp_exp_t* exp);
415 friend const mpreal ldexp(const mpreal& v, mp_exp_t exp);
417 // Splits mpreal value into fractional and integer parts.
419 friend const mpreal modf(const mpreal& v, mpreal& n);
423 friend const mpreal const_log2 (mp_prec_t prec = mpreal::default_prec, mp_rnd_t rnd_mode = mpreal::default_rnd);
424 friend const mpreal const_pi (mp_prec_t prec = mpreal::default_prec, mp_rnd_t rnd_mode = mpreal::default_rnd);
425 friend const mpreal const_euler (mp_prec_t prec = mpreal::default_prec, mp_rnd_t rnd_mode = mpreal::default_rnd);
426 friend const mpreal const_catalan (mp_prec_t prec = mpreal::default_prec, mp_rnd_t rnd_mode = mpreal::default_rnd);
428 friend const mpreal const_infinity(int sign = 1, mp_prec_t prec = mpreal::default_prec, mp_rnd_t rnd_mode = mpreal::default_rnd);
431 friend std::ostream& operator<<(std::ostream& os, const mpreal& v);
432 friend std::istream& operator>>(std::istream& is, mpreal& v);
435 friend const mpreal rint (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
436 friend const mpreal ceil (const mpreal& v);
437 friend const mpreal floor(const mpreal& v);
438 friend const mpreal round(const mpreal& v);
439 friend const mpreal trunc(const mpreal& v);
440 friend const mpreal rint_ceil (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
441 friend const mpreal rint_floor(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
442 friend const mpreal rint_round(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
443 friend const mpreal rint_trunc(const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
444 friend const mpreal frac (const mpreal& v, mp_rnd_t rnd_mode = mpreal::default_rnd);
445 friend const mpreal remainder (const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode = mpreal::default_rnd);
446 friend const mpreal remquo (long* q, const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode = mpreal::default_rnd);
449 friend const mpreal nexttoward (const mpreal& x, const mpreal& y);
450 friend const mpreal nextabove (const mpreal& x);
451 friend const mpreal nextbelow (const mpreal& x);
454 friend const mpreal urandomb (gmp_randstate_t& state);
458 friend const mpreal random2 (mp_size_t size, mp_exp_t exp);
462 friend bool isnan (const mpreal& v);
463 friend bool isinf (const mpreal& v);
464 friend bool isfinite(const mpreal& v);
466 friend bool isnum(const mpreal& v);
467 friend bool iszero(const mpreal& v);
468 friend bool isint(const mpreal& v);
474 // Aliases for get_prec(), set_prec() - needed for compatibility with std::complex<mpreal> interface
475 inline mpreal& setPrecision(int Precision, mp_rnd_t RoundingMode = (mpfr_get_default_rounding_mode)());
478 // Set mpreal to +/- inf, NaN, +/-0
479 mpreal& setInf (int Sign = +1);
480 mpreal& setNan ();
481 mpreal& setZero (int Sign = +1);
482 mpreal& setSign (int Sign, mp_rnd_t RoundingMode = (mpfr_get_default_rounding_mode)());
511 // Efficient swapping of two mpreal values
512 friend void swap(mpreal& x, mpreal& y);
516 friend const mpreal fmax(const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode = default_rnd);
517 friend const mpreal fmin(const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode = default_rnd);
536 // mpfr::mpreal=<DebugView> ; Show value only
537 // mpfr::mpreal=<DebugView>, <mp[0]._mpfr_prec,u>bits ; Show value & precision
557 template <> struct result_type<mpreal> {typedef mpreal type;};
558 template <> struct result_type<mpz_t> {typedef mpreal type;};
559 template <> struct result_type<mpq_t> {typedef mpreal type;};
560 template <> struct result_type<long double> {typedef mpreal type;};
561 template <> struct result_type<double> {typedef mpreal type;};
562 template <> struct result_type<unsigned long int> {typedef mpreal type;};
563 template <> struct result_type<unsigned int> {typedef mpreal type;};
564 template <> struct result_type<long int> {typedef mpreal type;};
565 template <> struct result_type<int> {typedef mpreal type;};
568 template <> struct result_type<int64_t > {typedef mpreal type;};
569 template <> struct result_type<uint64_t > {typedef mpreal type;};
576 operator+(const mpreal& lhs, const Rhs& rhs){ return mpreal(lhs) += rhs; }
580 operator+(const Lhs& lhs, const mpreal& rhs){ return mpreal(rhs) += lhs; }
585 operator-(const mpreal& lhs, const Rhs& rhs){ return mpreal(lhs) -= rhs; }
589 operator-(const Lhs& lhs, const mpreal& rhs){ return mpreal(lhs) -= rhs; }
594 operator*(const mpreal& lhs, const Rhs& rhs){ return mpreal(lhs) *= rhs; }
598 operator*(const Lhs& lhs, const mpreal& rhs){ return mpreal(rhs) *= lhs; }
603 operator/(const mpreal& lhs, const Rhs& rhs){ return mpreal(lhs) /= rhs; }
607 operator/(const Lhs& lhs, const mpreal& rhs){ return mpreal(lhs) /= rhs; }
611 const mpreal sqrt(const unsigned int v, mp_rnd_t rnd_mode = mpreal::default_rnd);
612 const mpreal sqrt(const long int v, mp_rnd_t rnd_mode = mpreal::default_rnd);
613 const mpreal sqrt(const int v, mp_rnd_t rnd_mode = mpreal::default_rnd);
614 const mpreal sqrt(const long double v, mp_rnd_t rnd_mode = mpreal::default_rnd);
615 const mpreal sqrt(const double v, mp_rnd_t rnd_mode = mpreal::default_rnd);
619 const mpreal pow(const mpreal& a, const unsigned int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
620 const mpreal pow(const mpreal& a, const int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
621 const mpreal pow(const mpreal& a, const long double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
622 const mpreal pow(const mpreal& a, const double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
624 const mpreal pow(const unsigned int a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
625 const mpreal pow(const long int a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
626 const mpreal pow(const int a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
627 const mpreal pow(const long double a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
628 const mpreal pow(const double a, const mpreal& b, mp_rnd_t rnd_mode = mpreal::default_rnd);
630 const mpreal pow(const unsigned long int a, const unsigned int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
631 const mpreal pow(const unsigned long int a, const long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
632 const mpreal pow(const unsigned long int a, const int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
633 const mpreal pow(const unsigned long int a, const long double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
634 const mpreal pow(const unsigned long int a, const double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
636 const mpreal pow(const unsigned int a, const unsigned long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
637 const mpreal pow(const unsigned int a, const unsigned int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
638 const mpreal pow(const unsigned int a, const long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
639 const mpreal pow(const unsigned int a, const int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
640 const mpreal pow(const unsigned int a, const long double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
641 const mpreal pow(const unsigned int a, const double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
643 const mpreal pow(const long int a, const unsigned long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
644 const mpreal pow(const long int a, const unsigned int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
645 const mpreal pow(const long int a, const long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
646 const mpreal pow(const long int a, const int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
647 const mpreal pow(const long int a, const long double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
648 const mpreal pow(const long int a, const double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
650 const mpreal pow(const int a, const unsigned long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
651 const mpreal pow(const int a, const unsigned int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
652 const mpreal pow(const int a, const long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
653 const mpreal pow(const int a, const int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
654 const mpreal pow(const int a, const long double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
655 const mpreal pow(const int a, const double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
657 const mpreal pow(const long double a, const long double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
658 const mpreal pow(const long double a, const unsigned long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
659 const mpreal pow(const long double a, const unsigned int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
660 const mpreal pow(const long double a, const long int b, mp_rnd_t rnd_mode = mpreal
661 const mpreal pow(const long double a, const int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
663 const mpreal pow(const double a, const double b, mp_rnd_t rnd_mode = mpreal::default_rnd);
664 const mpreal pow(const double a, const unsigned long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
665 const mpreal pow(const double a, const unsigned int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
666 const mpreal pow(const double a, const long int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
667 const mpreal pow(const double a, const int b, mp_rnd_t rnd_mode = mpreal::default_rnd);
672 inline const mpreal machine_epsilon(mp_prec_t prec = mpreal::get_default_prec());
675 inline const mpreal machine_epsilon(const mpreal& x);
677 inline const mpreal mpreal_min(mp_prec_t prec = mpreal::get_default_prec());
678 inline const mpreal mpreal_max(mp_prec_t prec = mpreal::get_default_prec());
679 inline bool isEqualFuzzy(const mpreal& a, const mpreal& b, const mpreal& eps);
680 inline bool isEqualUlps(const mpreal& a, const mpreal& b, int maxUlps);
692 const mpreal (max)(const mpreal& x, const mpreal& y);
693 const mpreal (min)(const mpreal& x, const mpreal& y);
701 inline mpreal& mpreal::operator=(const mpreal& v)
714 inline mpreal& mpreal::operator=(const mpf_t v)
722 inline mpreal& mpreal::operator=(const mpz_t v)
730 inline mpreal& mpreal::operator=(const mpq_t v)
738 inline mpreal& mpreal::operator=(const long double v)
746 inline mpreal& mpreal::operator=(const double v)
760 inline mpreal& mpreal::operator=(const unsigned long int v)
768 inline mpreal& mpreal::operator=(const unsigned int v)
776 inline mpreal& mpreal::operator=(const long int v)
784 inline mpreal& mpreal::operator=(const int v)
794 inline mpreal& mpreal::operator+=(const mpreal& v)
801 inline mpreal& mpreal::operator+=(const mpf_t u)
803 *this += mpreal(u);
808 inline mpreal& mpreal::operator+=(const mpz_t u)
815 inline mpreal& mpreal::operator+=(const mpq_t u)
822 inline mpreal& mpreal::operator+= (const long double u)
824 *this += mpreal(u);
829 inline mpreal& mpreal::operator+= (const double u)
834 *this += mpreal(u);
841 inline mpreal& mpreal::operator+=(const unsigned long int u)
848 inline mpreal& mpreal::operator+=(const unsigned int u)
855 inline mpreal& mpreal::operator+=(const long int u)
862 inline mpreal& mpreal::operator+=(const int u)
870 inline mpreal& mpreal::operator+=(const int64_t u){ *this += mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
871 inline mpreal& mpreal::operator+=(const uint64_t u){ *this += mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
872 inline mpreal& mpreal::operator-=(const int64_t u){ *this -= mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
873 inline mpreal& mpreal::operator-=(const uint64_t u){ *this -= mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
874 inline mpreal& mpreal::operator*=(const int64_t u){ *this *= mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
875 inline mpreal& mpreal::operator*=(const uint64_t u){ *this *= mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
876 inline mpreal& mpreal::operator/=(const int64_t u){ *this /= mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
877 inline mpreal& mpreal::operator/=(const uint64_t u){ *this /= mpreal(u); MPREAL_MSVC_DEBUGVIEW_CODE; return *this; }
880 inline const mpreal mpreal::operator+()const { return mpreal(*this); }
882 inline const mpreal operator+(const mpreal& a, const mpreal& b)
885 if(a.get_prec()>b.get_prec()) return mpreal(a) += b;
886 else return mpreal(b) += a;
889 inline mpreal& mpreal::operator++()
894 inline const mpreal mpreal::operator++ (int)
896 mpreal x(*this);
901 inline mpreal& mpreal::operator--()
906 inline const mpreal mpreal::operator-- (int)
908 mpreal x(*this);
915 inline mpreal& mpreal::operator-= (const mpreal& v)
922 inline mpreal& mpreal::operator-=(const mpz_t v)
929 inline mpreal& mpreal::operator-=(const mpq_t v)
936 inline mpreal& mpreal::operator-=(const long double v)
938 *this -= mpreal(v);
943 inline mpreal& mpreal::operator-=(const double v)
948 *this -= mpreal(v);
955 inline mpreal& mpreal::operator-=(const unsigned long int v)
962 inline mpreal& mpreal::operator-=(const unsigned int v)
969 inline mpreal& mpreal::operator-=(const long int v)
976 inline mpreal& mpreal::operator-=(const int v)
983 inline const mpreal mpreal::operator-()const
985 mpreal u(*this);
990 inline const mpreal operator-(const mpreal& a, const mpreal& b)
995 return mpreal(a) -= b;
997 mpreal x(a);
1003 inline const mpreal operator-(const double b, const mpreal& a)
1006 mpreal x(a);
1007 mpfr_d_sub(x.mp,b,a.mp,mpreal::default_rnd);
1010 return mpreal(b) -= a;
1014 inline const mpreal operator-(const unsigned long int b, const mpreal& a)
1016 mpreal x(a);
1017 mpfr_ui_sub(x.mp,b,a.mp,mpreal::default_rnd);
1021 inline const mpreal operator-(const unsigned int b, const mpreal& a)
1023 mpreal x(a);
1024 mpfr_ui_sub(x.mp,b,a.mp,mpreal::default_rnd);
1028 inline const mpreal operator-(const long int b, const mpreal& a)
1030 mpreal x(a);
1031 mpfr_si_sub(x.mp,b,a.mp,mpreal::default_rnd);
1035 inline const mpreal operator-(const int b, const mpreal& a)
1037 mpreal x(a);
1038 mpfr_si_sub(x.mp,b,a.mp,mpreal::default_rnd);
1044 inline mpreal& mpreal::operator*= (const mpreal& v)
1051 inline mpreal& mpreal::operator*=(const mpz_t v)
1058 inline mpreal& mpreal::operator*=(const mpq_t v)
1065 inline mpreal& mpreal::operator*=(const long double v)
1067 *this *= mpreal(v);
1072 inline mpreal& mpreal::operator*=(const double v)
1077 *this *= mpreal(v);
1084 inline mpreal& mpreal::operator*=(const unsigned long int v)
1091 inline mpreal& mpreal::operator*=(const unsigned int v)
1098 inline mpreal& mpreal::operator*=(const long int v)
1105 inline mpreal& mpreal::operator*=(const int v)
1112 inline const mpreal operator*(const mpreal& a, const mpreal& b)
1115 if(a.getPrecision() >= b.getPrecision()) return mpreal(a) *= b;
1116 else return mpreal(b) *= a;
1121 inline mpreal& mpreal::operator/=(const mpreal& v)
1128 inline mpreal& mpreal::operator/=(const mpz_t v)
1135 inline mpreal& mpreal::operator/=(const mpq_t v)
1142 inline mpreal& mpreal::operator/=(const long double v)
1144 *this /= mpreal(v);
1149 inline mpreal& mpreal::operator/=(const double v)
1154 *this /= mpreal(v);
1160 inline mpreal& mpreal::operator/=(const unsigned long int v)
1167 inline mpreal& mpreal::operator/=(const unsigned int v)
1174 inline mpreal& mpreal::operator/=(const long int v)
1181 inline mpreal& mpreal::operator/=(const int v)
1188 inline const mpreal operator/(const mpreal& a, const mpreal& b)
1193 return mpreal(a) /= b;
1196 mpreal x(a);
1202 inline const mpreal operator/(const unsigned long int b, const mpreal& a)
1204 mpreal x(a);
1205 mpfr_ui_div(x.mp,b,a.mp,mpreal::default_rnd);
1209 inline const mpreal operator/(const unsigned int b, const mpreal& a)
1211 mpreal x(a);
1212 mpfr_ui_div(x.mp,b,a.mp,mpreal::default_rnd);
1216 inline const mpreal operator/(const long int b, const mpreal& a)
1218 mpreal x(a);
1219 mpfr_si_div(x.mp,b,a.mp,mpreal::default_rnd);
1223 inline const mpreal operator/(const int b, const mpreal& a)
1225 mpreal x(a);
1226 mpfr_si_div(x.mp,b,a.mp,mpreal::default_rnd);
1230 inline const mpreal operator/(const double b, const mpreal& a)
1233 mpreal x(a);
1234 mpfr_d_div(x.mp,b,a.mp,mpreal::default_rnd);
1237 return mpreal(b) /= a;
1243 inline mpreal& mpreal::operator<<=(const unsigned long int u)
1250 inline mpreal& mpreal::operator<<=(const unsigned int u)
1257 inline mpreal& mpreal::operator<<=(const long int u)
1264 inline mpreal& mpreal::operator<<=(const int u)
1271 inline mpreal& mpreal::operator>>=(const unsigned long int u)
1278 inline mpreal& mpreal::operator>>=(const unsigned int u)
1285 inline mpreal& mpreal::operator>>=(const long int u)
1292 inline mpreal& mpreal::operator>>=(const int u)
1299 inline const mpreal operator<<(const mpreal& v, const unsigned long int k)
1304 inline const mpreal operator<<(const mpreal& v, const unsigned int k)
1309 inline const mpreal operator<<(const mpreal& v, const long int k)
1314 inline const mpreal operator<<(const mpreal& v, const int k)
1319 inline const mpreal operator>>(const mpreal& v, const unsigned long int k)
1324 inline const mpreal operator>>(const mpreal& v, const long int k)
1329 inline const mpreal operator>>(const mpreal& v, const unsigned int k)
1334 inline const mpreal operator>>(const mpreal& v, const int k)
1340 inline const mpreal mul_2ui(const mpreal& v, unsigned long int k, mp_rnd_t rnd_mode)
1342 mpreal x(v);
1348 mpreal mul_2si(const mpreal& v, long int k, mp_rnd_t rnd_mode)
1350 mpreal x(v);
1355 inline const mpreal div_2ui(const mpreal& v, unsigned long int k, mp_rnd_t rnd_mode)
1357 mpreal x(v);
1362 inline const mpreal div_2si(const mpreal& v, long int k, mp_rnd_t rnd_mode)
1364 mpreal x(v);
1371 inline bool operator > (const mpreal& a, const mpreal& b){ return (mpfr_greater_p(a.mp,b.mp) !=0); }
1372 inline bool operator >= (const mpreal& a, const mpreal& b){ return (mpfr_greaterequal_p(a.mp,b.mp) !=0); }
1373 inline bool operator < (const mpreal& a, const mpreal& b){ return (mpfr_less_p(a.mp,b.mp) !=0); }
1374 inline bool operator <= (const mpreal& a, const mpreal& b){ return (mpfr_lessequal_p(a.mp,b.mp) !=0); }
1375 inline bool operator == (const mpreal& a, const mpreal& b){ return (mpfr_equal_p(a.mp,b.mp) !=0); }
1376 inline bool operator != (const mpreal& a, const mpreal& b){ return (mpfr_lessgreater_p(a.mp,b.mp) !=0); }
1378 inline bool operator == (const mpreal& a, const unsigned long int b ){ return (mpfr_cmp_ui(a.mp,b) == 0); }
1379 inline bool operator == (const mpreal& a, const unsigned int b ){ return (mpfr_cmp_ui(a.mp,b) == 0); }
1380 inline bool operator == (const mpreal& a, const long int b ){ return (mpfr_cmp_si(a.mp,b) == 0); }
1381 inline bool operator == (const mpreal& a, const int b ){ return (mpfr_cmp_si(a.mp,b) == 0); }
1382 inline bool operator == (const mpreal& a, const long double b ){ return (mpfr_cmp_ld(a.mp,b) == 0); }
1383 inline bool operator == (const mpreal& a, const double b ){ return (mpfr_cmp_d(a.mp,b) == 0); }
1386 inline bool isnan (const mpreal& v){ return (mpfr_nan_p(v.mp) != 0); }
1387 inline bool isinf (const mpreal& v){ return (mpfr_inf_p(v.mp) != 0); }
1388 inline bool isfinite(const mpreal& v){ return (mpfr_number_p(v.mp) != 0); }
1389 inline bool iszero (const mpreal& v){ return (mpfr_zero_p(v.mp) != 0); }
1390 inline bool isint (const mpreal& v){ return (mpfr_integer_p(v.mp) != 0); }
1393 inline bool isregular(const mpreal& v){ return (mpfr_regular_p(v.mp));}
1398 inline long mpreal::toLong() const { return mpfr_get_si(mp,GMP_RNDZ); }
1399 inline unsigned long mpreal::toULong() const { return mpfr_get_ui(mp,GMP_RNDZ); }
1400 inline double mpreal::toDouble() const { return mpfr_get_d(mp,default_rnd); }
1401 inline long double mpreal::toLDouble() const { return mpfr_get_ld(mp,default_rnd); }
1404 inline int64_t mpreal::toInt64() const{ return mpfr_get_sj(mp,GMP_RNDZ); }
1405 inline uint64_t mpreal::toUInt64() const{ return mpfr_get_uj(mp,GMP_RNDZ); }
1408 inline ::mpfr_ptr mpreal::mpfr_ptr() { return mp; }
1409 inline ::mpfr_srcptr mpreal::mpfr_srcptr() const { return const_cast< ::mpfr_srcptr >(mp); }
1436 inline int sgn(const mpreal& v)
1442 inline mpreal& mpreal::setSign(int sign, mp_rnd_t RoundingMode)
1449 inline int mpreal::getPrecision() const
1454 inline mpreal& mpreal::setPrecision(int Precision, mp_rnd_t RoundingMode)
1461 inline mpreal& mpreal::setInf(int sign)
1468 inline mpreal& mpreal::setNan()
1475 inline mpreal& mpreal::setZero(int sign)
1482 inline mp_prec_t mpreal::get_prec() const
1487 inline void mpreal::set_prec(mp_prec_t prec, mp_rnd_t rnd_mode)
1493 inline mp_exp_t mpreal::get_exp ()
1498 inline int mpreal::set_exp (mp_exp_t e)
1505 inline const mpreal frexp(const mpreal& v, mp_exp_t* exp)
1507 mpreal x(v);
1513 inline const mpreal ldexp(const mpreal& v, mp_exp_t exp)
1515 mpreal x(v);
1518 mpfr_mul_2si(x.mp,x.mp,exp,mpreal::default_rnd);
1522 inline const mpreal machine_epsilon(mp_prec_t prec)
1526 return machine_epsilon(mpreal(1,prec));
1529 inline const mpreal machine_epsilon(const mpreal& x)
1539 inline const mpreal mpreal_min(mp_prec_t prec)
1543 return mpreal(1,prec) << mpreal::get_emin()-1;
1546 inline const mpreal mpreal_max(mp_prec_t prec)
1552 return mpreal(1,prec) << mpreal::get_emax()-1;
1555 inline bool isEqualUlps(const mpreal& a, const mpreal& b, int maxUlps)
1563 inline bool isEqualFuzzy(const mpreal& a, const mpreal& b, const mpreal& eps)
1568 inline bool isEqualFuzzy(const mpreal& a, const mpreal& b)
1573 inline const mpreal modf(const mpreal& v, mpreal& n)
1575 mpreal frac(v);
1578 mpfr_frac(frac.mp,frac.mp,mpreal::default_rnd);
1583 inline int mpreal::check_range (int t, mp_rnd_t rnd_mode)
1588 inline int mpreal::subnormalize (int t,mp_rnd_t rnd_mode)
1595 inline mp_exp_t mpreal::get_emin (void)
1600 inline int mpreal::set_emin (mp_exp_t exp)
1605 inline mp_exp_t mpreal::get_emax (void)
1610 inline int mpreal::set_emax (mp_exp_t exp)
1615 inline mp_exp_t mpreal::get_emin_min (void)
1620 inline mp_exp_t mpreal::get_emin_max (void)
1625 inline mp_exp_t mpreal::get_emax_min (void)
1630 inline mp_exp_t mpreal::get_emax_max (void)
1638 inline const mpreal sqr(const mpreal& v, mp_rnd_t rnd_mode)
1640 mpreal x(v);
1645 inline const mpreal sqrt(const mpreal& v, mp_rnd_t rnd_mode)
1647 mpreal x(v);
1652 inline const mpreal sqrt(const unsigned long int v, mp_rnd_t rnd_mode)
1654 mpreal x;
1659 inline const mpreal sqrt(const unsigned int v, mp_rnd_t rnd_mode)
1664 inline const mpreal sqrt(const long int v, mp_rnd_t rnd_mode)
1667 else return mpreal().setNan(); // NaN
1670 inline const mpreal sqrt(const int v, mp_rnd_t rnd_mode)
1673 else return mpreal().setNan(); // NaN
1676 inline const mpreal sqrt(const long double v, mp_rnd_t rnd_mode)
1678 return sqrt(mpreal(v),rnd_mode);
1681 inline const mpreal sqrt(const double v, mp_rnd_t rnd_mode)
1683 return sqrt(mpreal(v),rnd_mode);
1686 inline const mpreal cbrt(const mpreal& v, mp_rnd_t rnd_mode)
1688 mpreal x(v);
1693 inline const mpreal root(const mpreal& v, unsigned long int k, mp_rnd_t rnd_mode)
1695 mpreal x(v);
1700 inline const mpreal fabs(const mpreal& v, mp_rnd_t rnd_mode)
1702 mpreal x(v);
1707 inline const mpreal abs(const mpreal& v, mp_rnd_t rnd_mode)
1709 mpreal x(v);
1714 inline const mpreal dim(const mpreal& a, const mpreal& b, mp_rnd_t rnd_mode)
1716 mpreal x(a);
1721 inline int cmpabs(const mpreal& a,const mpreal& b)
1726 inline const mpreal log (const mpreal& v, mp_rnd_t rnd_mode)
1728 mpreal x(v);
1733 inline const mpreal log2(const mpreal& v, mp_rnd_t rnd_mode)
1735 mpreal x(v);
1740 inline const mpreal log10(const mpreal& v, mp_rnd_t rnd_mode)
1742 mpreal x(v);
1747 inline const mpreal exp(const mpreal& v, mp_rnd_t rnd_mode)
1749 mpreal x(v);
1754 inline const mpreal exp2(const mpreal& v, mp_rnd_t rnd_mode)
1756 mpreal x(v);
1761 inline const mpreal exp10(const mpreal& v, mp_rnd_t rnd_mode)
1763 mpreal x(v);
1768 inline const mpreal cos(const mpreal& v, mp_rnd_t rnd_mode)
1770 mpreal x(v);
1775 inline const mpreal sin(const mpreal& v, mp_rnd_t rnd_mode)
1777 mpreal x(v);
1782 inline const mpreal tan(const mpreal& v, mp_rnd_t rnd_mode)
1784 mpreal x(v);
1789 inline const mpreal sec(const mpreal& v, mp_rnd_t rnd_mode)
1791 mpreal x(v);
1796 inline const mpreal csc(const mpreal& v, mp_rnd_t rnd_mode)
1798 mpreal x(v);
1803 inline const mpreal cot(const mpreal& v, mp_rnd_t rnd_mode)
1805 mpreal x(v);
1810 inline int sin_cos(mpreal& s, mpreal& c, const mpreal& v, mp_rnd_t rnd_mode)
1815 inline const mpreal acos (const mpreal& v, mp_rnd_t rnd_mode)
1817 mpreal x(v);
1822 inline const mpreal asin (const mpreal& v, mp_rnd_t rnd_mode)
1824 mpreal x(v);
1829 inline const mpreal atan (const mpreal& v, mp_rnd_t rnd_mode)
1831 mpreal x(v);
1836 inline const mpreal acot (const mpreal& v, mp_rnd_t rnd_mode)
1841 inline const mpreal asec (const mpreal& v, mp_rnd_t rnd_mode)
1846 inline const mpreal acsc (const mpreal& v, mp_rnd_t rnd_mode)
1851 inline const mpreal acoth (const mpreal& v, mp_rnd_t rnd_mode)
1856 inline const mpreal asech (const mpreal& v, mp_rnd_t rnd_mode)
1861 inline const mpreal acsch (const mpreal& v, mp_rnd_t rnd_mode)
1866 inline const mpreal atan2 (const mpreal& y, const mpreal& x, mp_rnd_t rnd_mode)
1868 mpreal a;
1881 inline const mpreal cosh (const mpreal& v, mp_rnd_t rnd_mode)
1883 mpreal x(v);
1888 inline const mpreal sinh (const mpreal& v, mp_rnd_t rnd_mode)
1890 mpreal x(v);
1895 inline const mpreal tanh (const mpreal& v, mp_rnd_t rnd_mode)
1897 mpreal x(v);
1902 inline const mpreal sech (const mpreal& v, mp_rnd_t rnd_mode)
1904 mpreal x(v);
1909 inline const mpreal csch (const mpreal& v, mp_rnd_t rnd_mode)
1911 mpreal x(v);
1916 inline const mpreal coth (const mpreal& v, mp_rnd_t rnd_mode)
1918 mpreal x(v);
1923 inline const mpreal acosh (const mpreal& v, mp_rnd_t rnd_mode)
1925 mpreal x(v);
1930 inline const mpreal asinh (const mpreal& v, mp_rnd_t rnd_mode)
1932 mpreal x(v);
1937 inline const mpreal atanh (const mpreal& v, mp_rnd_t rnd_mode)
1939 mpreal x(v);
1944 inline const mpreal hypot (const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode)
1946 mpreal a;
1959 inline const mpreal remainder (const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode)
1961 mpreal a;
1974 inline const mpreal fac_ui (unsigned long int v, mp_prec_t prec, mp_rnd_t rnd_mode)
1976 mpreal x(0,prec);
1981 inline const mpreal log1p (const mpreal& v, mp_rnd_t rnd_mode)
1983 mpreal x(v);
1988 inline const mpreal expm1 (const mpreal& v, mp_rnd_t rnd_mode)
1990 mpreal x(v);
1995 inline const mpreal eint (const mpreal& v, mp_rnd_t rnd_mode)
1997 mpreal x(v);
2002 inline const mpreal gamma (const mpreal& x, mp_rnd_t rnd_mode)
2004 mpreal FunctionValue(x);
2013 inline const mpreal lngamma (const mpreal& v, mp_rnd_t rnd_mode)
2015 mpreal x(v);
2020 inline const mpreal lgamma (const mpreal& v, int *signp, mp_rnd_t rnd_mode)
2022 mpreal x(v);
2033 inline const mpreal zeta (const mpreal& v, mp_rnd_t rnd_mode)
2035 mpreal x(v);
2040 inline const mpreal erf (const mpreal& v, mp_rnd_t rnd_mode)
2042 mpreal x(v);
2047 inline const mpreal erfc (const mpreal& v, mp_rnd_t rnd_mode)
2049 mpreal x(v);
2054 inline const mpreal besselj0 (const mpreal& v, mp_rnd_t rnd_mode)
2056 mpreal x(v);
2061 inline const mpreal besselj1 (const mpreal& v, mp_rnd_t rnd_mode)
2063 mpreal x(v);
2068 inline const mpreal besseljn (long n, const mpreal& v, mp_rnd_t rnd_mode)
2070 mpreal x(v);
2075 inline const mprealmpreal& v, mp_rnd_t rnd_mode)
2077 mpreal x(v);
2082 inline const mpreal bessely1 (const mpreal& v, mp_rnd_t rnd_mode)
2084 mpreal x(v);
2089 inline const mpreal besselyn (long n, const mpreal& v, mp_rnd_t rnd_mode)
2091 mpreal x(v);
2100 inline int sinh_cosh(mpreal& s, mpreal& c, const mpreal& v, mp_rnd_t rnd_mode)
2105 inline const mpreal li2(const mpreal& v, mp_rnd_t rnd_mode)
2107 mpreal x(v);
2112 inline const mpreal fmod (const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode)
2114 mpreal a;
2127 inline const mpreal rec_sqrt(const mpreal& v, mp_rnd_t rnd_mode)
2129 mpreal x(v);
2139 inline const mpreal digamma(const mpreal& v, mp_rnd_t rnd_mode)
2141 mpreal x(v);
2146 inline const mpreal ai(const mpreal& v, mp_rnd_t rnd_mode)
2148 mpreal x(v);
2157 inline const mpreal const_log2 (mp_prec_t prec, mp_rnd_t rnd_mode)
2159 mpreal x;
2165 inline const mpreal const_pi (mp_prec_t prec, mp_rnd_t rnd_mode)
2167 mpreal x;
2173 inline const mpreal const_euler (mp_prec_t prec, mp_rnd_t rnd_mode)
2175 mpreal x;
2181 inline const mpreal const_catalan (mp_prec_t prec, mp_rnd_t rnd_mode)
2183 mpreal x;
2189 inline const mpreal const_infinity (int sign, mp_prec_t prec, mp_rnd_t rnd_mode)
2191 mpreal x;
2199 inline const mpreal rint(const mpreal& v, mp_rnd_t rnd_mode)
2201 mpreal x(v);
2206 inline const mpreal ceil(const mpreal& v)
2208 mpreal x(v);
2214 inline const mpreal floor(const mpreal& v)
2216 mpreal x(v);
2221 inline const mpreal round(const mpreal& v)
2223 mpreal x(v);
2228 inline const mpreal trunc(const mpreal& v)
2230 mpreal x(v);
2235 inline const mpreal rint_ceil (const mpreal& v, mp_rnd_t rnd_mode)
2237 mpreal x(v);
2242 inline const mpreal rint_floor(const mpreal& v, mp_rnd_t rnd_mode)
2244 mpreal x(v);
2249 inline const mpreal rint_round(const mpreal& v, mp_rnd_t rnd_mode)
2251 mpreal x(v);
2256 inline const mpreal rint_trunc(const mpreal& v, mp_rnd_t rnd_mode)
2258 mpreal x(v);
2263 inline const mpreal frac (const mpreal& v, mp_rnd_t rnd_mode)
2265 mpreal x(v);
2272 inline void swap(mpreal& a, mpreal& b)
2277 inline const mpreal (max)(const mpreal& x, const mpreal& y)
2282 inline const mpreal (min)(const mpreal& x, const mpreal& y)
2287 inline const mpreal fmax(const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode)
2289 mpreal a;
2294 inline const mpreal fmin(const mpreal& x, const mpreal& y, mp_rnd_t rnd_mode)
2296 mpreal a;
2301 inline const mpreal nexttoward (const mpreal& x, const mpreal& y)
2303 mpreal a(x);
2308 inline const mpreal nextabove (const mpreal& x)
2310 mpreal a(x);
2315 inline const mpreal nextbelow (const mpreal& x)
2317 mpreal a(x);
2322 inline const mpreal urandomb (gmp_randstate_t& state)
2324 mpreal x;
2331 inline const mpreal urandom (gmp_randstate_t& state, mp_rnd_t rnd_mode)
2333 mpreal x;
2340 inline const mpreal random2 (mp_size_t size, mp_exp_t exp)
2342 mpreal x;
2352 inline const mpreal random(unsigned int seed)
2371 return mpfr::mpreal(std::rand()/(double)RAND_MAX);
2378 inline void mpreal::set_default_prec(mp_prec_t prec)
2384 inline mp_prec_t mpreal::get_default_prec()
2389 inline void mpreal::set_default_base(int base)
2394 inline int mpreal::get_default_base()
2399 inline void mpreal::set_default_rnd(mp_rnd_t rnd_mode)
2405 inline mp_rnd_t mpreal::get_default_rnd()
2410 inline void mpreal::set_double_bits(int dbits)
2415 inline int mpreal::get_double_bits()
2420 inline bool mpreal::fits_in_bits(double x, int n)
2427 inline const mpreal pow(const mpreal& a, const mpreal& b, mp_rnd_t rnd_mode)
2429 mpreal x(a);
2434 inline const mpreal pow(const mpreal& a, const mpz_t b, mp_rnd_t rnd_mode)
2436 mpreal x(a);
2441 inline const mpreal pow(const mpreal& a, const unsigned long int b, mp_rnd_t rnd_mode)
2443 mpreal x(a);
2448 inline const mpreal pow(const mpreal& a, const unsigned int b, mp_rnd_t rnd_mode)
2453 inline const mpreal pow(const mpreal& a, const long int b, mp_rnd_t rnd_mode)
2455 mpreal x(a);
2460 inline const mpreal pow(const mpreal& a, const int b, mp_rnd_t rnd_mode)
2465 inline const mpreal pow(const mpreal& a, const long double b, mp_rnd_t rnd_mode)
2467 return pow(a,mpreal(b),rnd_mode);
2470 inline const mpreal pow(const mpreal& a, const double b, mp_rnd_t rnd_mode)
2472 return pow(a,mpreal(b),rnd_mode);
2475 inline const mpreal pow(const unsigned long int a, const mpreal& b, mp_rnd_t rnd_mode)
2477 mpreal x(a);
2482 inline const mpreal pow(const unsigned int a, const mpreal& b, mp_rnd_t rnd_mode)
2487 inline const mpreal pow(const long int a, const mpreal& b, mp_rnd_t rnd_mode)
2490 else return pow(mpreal(a),b,rnd_mode);
2493 inline const mpreal pow(const int a, const mpreal& b, mp_rnd_t rnd_mode)
2496 else return pow(mpreal(a),b,rnd_mode);
2499 inline const mpreal pow(const long double a, const mpreal& b, mp_rnd_t rnd_mode)
2501 return pow(mpreal(a),b,rnd_mode);
2504 inline const mpreal pow(const double a, const mpreal& b, mp_rnd_t rnd_mode)
2506 return pow(mpreal(a),b,rnd_mode);
2510 inline const mpreal pow(const unsigned long int a, const unsigned long int b, mp_rnd_t rnd_mode)
2512 mpreal x(a);
2517 inline const mpreal pow(const unsigned long int a, const unsigned int b, mp_rnd_t rnd_mode)
2522 inline const mpreal pow(const unsigned long int a, const long int b, mp_rnd_t rnd_mode)
2525 else return pow(a,mpreal(b),rnd_mode); //mpfr_ui_pow
2528 inline const mpreal pow(const unsigned long int a, const int b, mp_rnd_t rnd_mode)
2531 else return pow(a,mpreal(b),rnd_mode); //mpfr_ui_pow
2534 inline const mpreal pow(const unsigned long int a, const long double b, mp_rnd_t rnd_mode)
2536 return pow(a,mpreal(b),rnd_mode); //mpfr_ui_pow
2539 inline const mpreal pow(const unsigned long int a, const double b, mp_rnd_t rnd_mode)
2541 return pow(a,mpreal(b),rnd_mode); //mpfr_ui_pow
2545 inline const mpreal pow(const unsigned int a, const unsigned long int b, mp_rnd_t rnd_mode)
2550 inline const mpreal pow(const unsigned int a, const unsigned int b, mp_rnd_t rnd_mode)
2555 inline const mpreal pow(const unsigned int a, const long int b, mp_rnd_t rnd_mode)
2558 else return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2561 inline const mpreal pow(const unsigned int a, const int b, mp_rnd_t rnd_mode)
2564 else return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2567 inline const mpreal pow(const unsigned int a, const long double b, mp_rnd_t rnd_mode)
2569 return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2572 inline const mpreal pow(const unsigned int a, const double b, mp_rnd_t rnd_mode)
2574 return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2578 inline const mpreal pow(const long int a, const unsigned long int b, mp_rnd_t rnd_mode)
2581 else return pow(mpreal(a),b,rnd_mode); //mpfr_pow_ui
2584 inline const mpreal pow(const long int a, const unsigned int b, mp_rnd_t rnd_mode)
2587 else return pow(mpreal(a),static_cast<unsigned long int>(b),rnd_mode); //mpfr_pow_ui
2590 inline const mpreal pow(const long int a, const long int b, mp_rnd_t rnd_mode)
2595 else return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2597 return pow(mpreal(a),b,rnd_mode); // mpfr_pow_si
2601 inline const mpreal pow(const long int a, const int b, mp_rnd_t rnd_mode)
2606 else return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2608 return pow(mpreal(a),static_cast<long int>(b),rnd_mode); // mpfr_pow_si
2612 inline const mpreal pow(const long int a, const long double b, mp_rnd_t rnd_mode)
2614 if (a>=0) return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2615 else return pow(mpreal(a),mpreal(b),rnd_mode); //mpfr_pow
2618 inline const mpreal pow(const long int a, const double b, mp_rnd_t rnd_mode)
2620 if (a>=0) return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2621 else return pow(mpreal(a),mpreal(b),rnd_mode); //mpfr_pow
2625 inline const mpreal pow(const int a, const unsigned long int b, mp_rnd_t rnd_mode)
2628 else return pow(mpreal(a),b,rnd_mode); //mpfr_pow_ui
2631 inline const mpreal pow(const int a, const unsigned int b, mp_rnd_t rnd_mode)
2634 else return pow(mpreal(a),static_cast<unsigned long int>(b),rnd_mode); //mpfr_pow_ui
2637 inline const mpreal pow(const int a, const long int b, mp_rnd_t rnd_mode)
2642 else return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2644 return pow(mpreal(a),b,rnd_mode); // mpfr_pow_si
2648 inline const mpreal pow(const int a, const int b, mp_rnd_t rnd_mode)
2653 else return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2655 return pow(mpreal(a),static_cast<long int>(b),rnd_mode); // mpfr_pow_si
2659 inline const mpreal pow(const int a, const long double b, mp_rnd_t rnd_mode)
2661 if (a>=0) return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2662 else return pow(mpreal(a),mpreal(b),rnd_mode); //mpfr_pow
2665 inline const mpreal pow(const int a, const double b, mp_rnd_t rnd_mode)
2667 if (a>=0) return pow(static_cast<unsigned long int>(a),mpreal(b),rnd_mode); //mpfr_ui_pow
2668 else return pow(mpreal(a),mpreal(b),rnd_mode); //mpfr_pow
2672 inline const mpreal pow(const long double a, const long double b, mp_rnd_t rnd_mode)
2674 return pow(mpreal(a),mpreal(b),rnd_mode);
2677 inline const mpreal pow(const long double a, const unsigned long int b, mp_rnd_t rnd_mode)
2679 return pow(mpreal(a),b,rnd_mode); //mpfr_pow_ui
2682 inline const mpreal pow(const long double a, const unsigned int b, mp_rnd_t rnd_mode)
2684 return pow(mpreal(a),static_cast<unsigned long int>(b),rnd_mode); //mpfr_pow_ui
2687 inline const mpreal pow(const long double a, const long int b, mp_rnd_t rnd_mode)
2689 return pow(mpreal(a),b,rnd_mode); // mpfr_pow_si
2692 inline const mpreal pow(const long double a, const int b, mp_rnd_t rnd_mode)
2694 return pow(mpreal(a),static_cast<long int>(b),rnd_mode); // mpfr_pow_si
2697 inline const mpreal pow(const double a, const double b, mp_rnd_t rnd_mode)
2699 return pow(mpreal(a),mpreal(b),rnd_mode);
2702 inline const mpreal pow(const double a, const unsigned long int b, mp_rnd_t rnd_mode)
2704 return pow(mpreal(a),b,rnd_mode); // mpfr_pow_ui
2707 mpreal pow(const double a, const unsigned int b, mp_rnd_t rnd_mode)
2709 return pow(mpreal(a),static_cast<unsigned long int>(b),rnd_mode); // mpfr_pow_ui
2712 inline const mpreal pow(const double a, const long int b, mp_rnd_t rnd_mode)
2714 return pow(mpreal(a),b,rnd_mode); // mpfr_pow_si
2717 inline const mpreal pow(const double a, const int b, mp_rnd_t rnd_mode)
2719 return pow(mpreal(a),static_cast<long int>(b),rnd_mode); // mpfr_pow_si
2723 // Explicit specialization of std::swap for mpreal numbers
2729 inline void swap(mpfr::mpreal& x, mpfr::mpreal& y)