68#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 91)
69#error gmpxx.h requires g++ version 2.91 (egcs 1.1.2) or higher
73#ifdef __GMP_PLUSPLUS__
74#ifndef __GMPFR_PLUSPLUS__
75#error gmpfrxx.h cannot be used together with gmpxx.h
79#ifndef __GMP_PLUSPLUS__
80#define __GMP_PLUSPLUS__
81#define __GMPFR_PLUSPLUS__
94std::istream&
operator>> (std::istream &, mpfr_ptr);
95std::ostream&
operator<< (std::ostream &, mpfr_srcptr);
108 { mpfr_set_default_rounding_mode(r);
rnd = r; }
109 static mpfr_prec_t
get_dprec() {
return mpfr_get_default_prec(); }
111 { mpfr_set_default_prec(p); }
122 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_set(z,
w); }
123 static void eval(mpq_ptr q, mpq_srcptr r) { mpq_set(q, r); }
124 static void eval(mpfr_ptr f, mpfr_srcptr g)
130 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_neg(z,
w); }
131 static void eval(mpq_ptr q, mpq_srcptr r) { mpq_neg(q, r); }
132 static void eval(mpfr_ptr f, mpfr_srcptr g)
138 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_com(z,
w); }
143 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
144 { mpz_add(z,
w, v); }
146 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
147 { mpz_add_ui(z,
w,
l); }
148 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
149 { mpz_add_ui(z,
w,
l); }
150 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
155 mpz_sub_ui(z,
w, -
l);
157 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
162 mpz_sub_ui(z,
w, -
l);
164 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
167 mpz_init_set_d(temp, d);
171 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
174 mpz_init_set_d(temp, d);
179 static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
180 { mpq_add(q, r, s); }
182 static void eval(mpq_ptr q, mpq_srcptr r,
unsigned long int l)
183 { mpq_set(q, r); mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l); }
184 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr r)
185 { mpq_set(q, r); mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l); }
186 static void eval(mpq_ptr q, mpq_srcptr r,
signed long int l)
190 mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l);
192 mpz_submul_ui(mpq_numref(q), mpq_denref(q), -
l);
194 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr r)
198 mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l);
200 mpz_submul_ui(mpq_numref(q), mpq_denref(q), -
l);
202 static void eval(mpq_ptr q, mpq_srcptr r,
double d)
210 static void eval(mpq_ptr q,
double d, mpq_srcptr r)
219 static void eval(mpq_ptr q, mpq_srcptr r, mpz_srcptr z)
220 { mpq_set(q, r); mpz_addmul(mpq_numref(q), mpq_denref(q), z); }
221 static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr r)
222 { mpq_set(q, r); mpz_addmul(mpq_numref(q), mpq_denref(q), z); }
224 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
226 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
228 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
230 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
232 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
234 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
236 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
242 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
243 { mpz_sub(z,
w, v); }
245 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
246 { mpz_sub_ui(z,
w,
l); }
247 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
248 { mpz_ui_sub(z,
l,
w); }
249 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
254 mpz_add_ui(z,
w, -
l);
256 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
262 mpz_add_ui(z,
w, -
l);
266 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
269 mpz_init_set_d(temp, d);
273 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
276 mpz_init_set_d(temp, d);
281 static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
282 { mpq_sub(q, r, s); }
284 static void eval(mpq_ptr q, mpq_srcptr r,
unsigned long int l)
285 { mpq_set(q, r); mpz_submul_ui(mpq_numref(q), mpq_denref(q),
l); }
286 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr r)
287 { mpq_neg(q, r); mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l); }
288 static void eval(mpq_ptr q, mpq_srcptr r,
signed long int l)
292 mpz_submul_ui(mpq_numref(q), mpq_denref(q),
l);
294 mpz_addmul_ui(mpq_numref(q), mpq_denref(q), -
l);
296 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr r)
300 mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l);
302 mpz_submul_ui(mpq_numref(q), mpq_denref(q), -
l);
304 static void eval(mpq_ptr q, mpq_srcptr r,
double d)
312 static void eval(mpq_ptr q,
double d, mpq_srcptr r)
321 static void eval(mpq_ptr q, mpq_srcptr r, mpz_srcptr z)
322 { mpq_set(q, r); mpz_submul(mpq_numref(q), mpq_denref(q), z); }
323 static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr r)
324 { mpq_neg(q, r); mpz_addmul(mpq_numref(q), mpq_denref(q), z); }
326 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
329 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
331 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
333 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
335 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
337 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
339 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
345 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
346 { mpz_mul(z,
w, v); }
348 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
349 { mpz_mul_ui(z,
w,
l); }
350 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
351 { mpz_mul_ui(z,
w,
l); }
352 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
353 { mpz_mul_si (z,
w,
l); }
354 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
355 { mpz_mul_si (z,
w,
l); }
356 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
359 mpz_init_set_d(temp, d);
363 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
366 mpz_init_set_d(temp, d);
371 static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
372 { mpq_mul(q, r, s); }
374 static void eval(mpq_ptr q, mpq_srcptr r,
unsigned long int l)
378 mpq_set_ui(temp,
l, 1);
382 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr r)
386 mpq_set_ui(temp,
l, 1);
390 static void eval(mpq_ptr q, mpq_srcptr r,
signed long int l)
394 mpq_set_si(temp,
l, 1);
398 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr r)
402 mpq_set_si(temp,
l, 1);
406 static void eval(mpq_ptr q, mpq_srcptr r,
double d)
414 static void eval(mpq_ptr q,
double d, mpq_srcptr r)
423 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
426 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
428 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
430 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
432 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
434 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
436 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
442 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
443 { mpz_tdiv_q(z,
w, v); }
445 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
446 { mpz_tdiv_q_ui(z,
w,
l); }
447 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
451 if (mpz_fits_ulong_p(
w))
452 mpz_set_ui(z,
l / mpz_get_ui(
w));
459 if (mpz_fits_ulong_p(z))
461 mpz_set_ui(z,
l / mpz_get_ui(z));
468 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
471 mpz_tdiv_q_ui(z,
w,
l);
474 mpz_tdiv_q_ui(z,
w, -
l);
478 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
480 if (mpz_fits_slong_p(
w))
481 mpz_set_si(z,
l / mpz_get_si(
w));
486 mpz_set_si (z, (mpz_cmpabs_ui (
w, (
l >= 0 ?
l : -
l)) == 0 ? -1 : 0));
489 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
492 mpz_init_set_d(temp, d);
493 mpz_tdiv_q(z,
w, temp);
496 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
499 mpz_init_set_d(temp, d);
500 mpz_tdiv_q(z, temp,
w);
504 static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
505 { mpq_div(q, r, s); }
507 static void eval(mpq_ptr q, mpq_srcptr r,
unsigned long int l)
511 mpq_set_ui(temp,
l, 1);
515 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr r)
519 mpq_set_ui(temp,
l, 1);
523 static void eval(mpq_ptr q, mpq_srcptr r,
signed long int l)
527 mpq_set_si(temp,
l, 1);
531 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr r)
535 mpq_set_si(temp,
l, 1);
539 static void eval(mpq_ptr q, mpq_srcptr r,
double d)
547 static void eval(mpq_ptr q,
double d, mpq_srcptr r)
556 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
559 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
561 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
563 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
565 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
567 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
569 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
575 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
576 { mpz_tdiv_r(z,
w, v); }
578 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
579 { mpz_tdiv_r_ui(z,
w,
l); }
580 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
584 if (mpz_fits_ulong_p(
w))
585 mpz_set_ui(z,
l % mpz_get_ui(
w));
592 if (mpz_fits_ulong_p(z))
593 mpz_set_ui(z,
l % mpz_get_ui(z));
598 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
600 mpz_tdiv_r_ui (z,
w, (
l >= 0 ?
l : -
l));
602 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
604 if (mpz_fits_slong_p(
w))
605 mpz_set_si(z,
l % mpz_get_si(
w));
610 mpz_set_si (z, mpz_cmpabs_ui (
w, (
l >= 0 ?
l : -
l)) == 0 ? 0 :
l);
613 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
616 mpz_init_set_d(temp, d);
617 mpz_tdiv_r(z,
w, temp);
620 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
623 mpz_init_set_d(temp, d);
624 mpz_tdiv_r(z, temp,
w);
631 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
632 { mpz_and(z,
w, v); }
637 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
638 { mpz_ior(z,
w, v); }
643 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
644 { mpz_xor(z,
w, v); }
649 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
650 { mpz_mul_2exp(z,
w,
l); }
651 static void eval(mpq_ptr q, mpq_srcptr r,
unsigned long int l)
652 { mpq_mul_2exp(q, r,
l); }
653 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
659 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
660 { mpz_tdiv_q_2exp(z,
w,
l); }
661 static void eval(mpq_ptr q, mpq_srcptr r,
unsigned long int l)
662 { mpq_div_2exp(q, r,
l); }
663 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
669 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) == 0; }
671 static bool eval(mpz_srcptr z,
unsigned long int l)
672 {
return mpz_cmp_ui(z,
l) == 0; }
673 static bool eval(
unsigned long int l, mpz_srcptr z)
674 {
return mpz_cmp_ui(z,
l) == 0; }
675 static bool eval(mpz_srcptr z,
signed long int l)
676 {
return mpz_cmp_si(z,
l) == 0; }
677 static bool eval(
signed long int l, mpz_srcptr z)
678 {
return mpz_cmp_si(z,
l) == 0; }
679 static bool eval(mpz_srcptr z,
double d)
680 {
return mpz_cmp_d(z, d) == 0; }
681 static bool eval(
double d, mpz_srcptr z)
682 {
return mpz_cmp_d(z, d) == 0; }
684 static bool eval(mpq_srcptr q, mpq_srcptr r)
685 {
return mpq_equal(q, r) != 0; }
687 static bool eval(mpq_srcptr q,
unsigned long int l)
688 {
return mpq_cmp_ui(q,
l, 1) == 0; }
689 static bool eval(
unsigned long int l, mpq_srcptr q)
690 {
return mpq_cmp_ui(q,
l, 1) == 0; }
691 static bool eval(mpq_srcptr q,
signed long int l)
692 {
return mpq_cmp_si(q,
l, 1) == 0; }
693 static bool eval(
signed long int l, mpq_srcptr q)
694 {
return mpq_cmp_si(q,
l, 1) == 0; }
695 static bool eval(mpq_srcptr q,
double d)
701 b = (mpq_equal(q, temp) != 0);
705 static bool eval(
double d, mpq_srcptr q)
711 b = (mpq_equal(temp, q) != 0);
716 static bool eval(mpfr_srcptr f, mpfr_srcptr g)
717 {
return mpfr_cmp(f, g) == 0; }
719 static bool eval(mpfr_srcptr f,
unsigned long int l)
720 {
return mpfr_cmp_ui(f,
l) == 0; }
721 static bool eval(
unsigned long int l, mpfr_srcptr f)
722 {
return mpfr_cmp_ui(f,
l) == 0; }
723 static bool eval(mpfr_srcptr f,
signed long int l)
724 {
return mpfr_cmp_si(f,
l) == 0; }
725 static bool eval(
signed long int l, mpfr_srcptr f)
726 {
return mpfr_cmp_si(f,
l) == 0; }
727 static bool eval(mpfr_srcptr f,
double d)
728 {
return mpfr_cmp_d(f, d) == 0; }
729 static bool eval(
double d, mpfr_srcptr f)
730 {
return mpfr_cmp_d(f, d) == 0; }
735 static bool eval(mpz_srcptr z, mpz_srcptr
w)
736 {
return mpz_cmp(z,
w) != 0; }
738 static bool eval(mpz_srcptr z,
unsigned long int l)
739 {
return mpz_cmp_ui(z,
l) != 0; }
740 static bool eval(
unsigned long int l, mpz_srcptr z)
741 {
return mpz_cmp_ui(z,
l) != 0; }
742 static bool eval(mpz_srcptr z,
signed long int l)
743 {
return mpz_cmp_si(z,
l) != 0; }
744 static bool eval(
signed long int l, mpz_srcptr z)
745 {
return mpz_cmp_si(z,
l) != 0; }
746 static bool eval(mpz_srcptr z,
double d)
747 {
return mpz_cmp_d(z, d) != 0; }
748 static bool eval(
double d, mpz_srcptr z)
749 {
return mpz_cmp_d(z, d) != 0; }
751 static bool eval(mpq_srcptr q, mpq_srcptr r)
752 {
return mpq_equal(q, r) == 0; }
754 static bool eval(mpq_srcptr q,
unsigned long int l)
755 {
return mpq_cmp_ui(q,
l, 1) != 0; }
756 static bool eval(
unsigned long int l, mpq_srcptr q)
757 {
return mpq_cmp_ui(q,
l, 1) != 0; }
758 static bool eval(mpq_srcptr q,
signed long int l)
759 {
return mpq_cmp_si(q,
l, 1) != 0; }
760 static bool eval(
signed long int l, mpq_srcptr q)
761 {
return mpq_cmp_si(q,
l, 1) != 0; }
762 static bool eval(mpq_srcptr q,
double d)
768 b = (mpq_equal(q, temp) == 0);
772 static bool eval(
double d, mpq_srcptr q)
778 b = (mpq_equal(temp, q) == 0);
783 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) != 0; }
785 static bool eval(mpfr_srcptr f,
unsigned long int l)
786 {
return mpfr_cmp_ui(f,
l) != 0; }
787 static bool eval(
unsigned long int l, mpfr_srcptr f)
788 {
return mpfr_cmp_ui(f,
l) != 0; }
789 static bool eval(mpfr_srcptr f,
signed long int l)
790 {
return mpfr_cmp_si(f,
l) != 0; }
791 static bool eval(
signed long int l, mpfr_srcptr f)
792 {
return mpfr_cmp_si(f,
l) != 0; }
793 static bool eval(mpfr_srcptr f,
double d)
794 {
return mpfr_cmp_d(f, d) != 0; }
795 static bool eval(
double d, mpfr_srcptr f)
796 {
return mpfr_cmp_d(f, d) != 0; }
801 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) < 0; }
803 static bool eval(mpz_srcptr z,
unsigned long int l)
804 {
return mpz_cmp_ui(z,
l) < 0; }
805 static bool eval(
unsigned long int l, mpz_srcptr z)
806 {
return mpz_cmp_ui(z,
l) > 0; }
807 static bool eval(mpz_srcptr z,
signed long int l)
808 {
return mpz_cmp_si(z,
l) < 0; }
809 static bool eval(
signed long int l, mpz_srcptr z)
810 {
return mpz_cmp_si(z,
l) > 0; }
811 static bool eval(mpz_srcptr z,
double d)
812 {
return mpz_cmp_d(z, d) < 0; }
813 static bool eval(
double d, mpz_srcptr z)
814 {
return mpz_cmp_d(z, d) > 0; }
816 static bool eval(mpq_srcptr q, mpq_srcptr r) {
return mpq_cmp(q, r) < 0; }
818 static bool eval(mpq_srcptr q,
unsigned long int l)
819 {
return mpq_cmp_ui(q,
l, 1) < 0; }
820 static bool eval(
unsigned long int l, mpq_srcptr q)
821 {
return mpq_cmp_ui(q,
l, 1) > 0; }
822 static bool eval(mpq_srcptr q,
signed long int l)
823 {
return mpq_cmp_si(q,
l, 1) < 0; }
824 static bool eval(
signed long int l, mpq_srcptr q)
825 {
return mpq_cmp_si(q,
l, 1) > 0; }
826 static bool eval(mpq_srcptr q,
double d)
832 b = (mpq_cmp(q, temp) < 0);
836 static bool eval(
double d, mpq_srcptr q)
842 b = (mpq_cmp(temp, q) < 0);
847 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) < 0; }
849 static bool eval(mpfr_srcptr f,
unsigned long int l)
850 {
return mpfr_cmp_ui(f,
l) < 0; }
851 static bool eval(
unsigned long int l, mpfr_srcptr f)
852 {
return mpfr_cmp_ui(f,
l) > 0; }
853 static bool eval(mpfr_srcptr f,
signed long int l)
854 {
return mpfr_cmp_si(f,
l) < 0; }
855 static bool eval(
signed long int l, mpfr_srcptr f)
856 {
return mpfr_cmp_si(f,
l) > 0; }
857 static bool eval(mpfr_srcptr f,
double d)
858 {
return mpfr_cmp_d(f, d) < 0; }
859 static bool eval(
double d, mpfr_srcptr f)
860 {
return mpfr_cmp_d(f, d) > 0; }
865 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) <= 0; }
867 static bool eval(mpz_srcptr z,
unsigned long int l)
868 {
return mpz_cmp_ui(z,
l) <= 0; }
869 static bool eval(
unsigned long int l, mpz_srcptr z)
870 {
return mpz_cmp_ui(z,
l) >= 0; }
871 static bool eval(mpz_srcptr z,
signed long int l)
872 {
return mpz_cmp_si(z,
l) <= 0; }
873 static bool eval(
signed long int l, mpz_srcptr z)
874 {
return mpz_cmp_si(z,
l) >= 0; }
875 static bool eval(mpz_srcptr z,
double d)
876 {
return mpz_cmp_d(z, d) <= 0; }
877 static bool eval(
double d, mpz_srcptr z)
878 {
return mpz_cmp_d(z, d) >= 0; }
880 static bool eval(mpq_srcptr q, mpq_srcptr r) {
return mpq_cmp(q, r) <= 0; }
882 static bool eval(mpq_srcptr q,
unsigned long int l)
883 {
return mpq_cmp_ui(q,
l, 1) <= 0; }
884 static bool eval(
unsigned long int l, mpq_srcptr q)
885 {
return mpq_cmp_ui(q,
l, 1) >= 0; }
886 static bool eval(mpq_srcptr q,
signed long int l)
887 {
return mpq_cmp_si(q,
l, 1) <= 0; }
888 static bool eval(
signed long int l, mpq_srcptr q)
889 {
return mpq_cmp_si(q,
l, 1) >= 0; }
890 static bool eval(mpq_srcptr q,
double d)
896 b = (mpq_cmp(q, temp) <= 0);
900 static bool eval(
double d, mpq_srcptr q)
906 b = (mpq_cmp(temp, q) <= 0);
911 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) <= 0; }
913 static bool eval(mpfr_srcptr f,
unsigned long int l)
914 {
return mpfr_cmp_ui(f,
l) <= 0; }
915 static bool eval(
unsigned long int l, mpfr_srcptr f)
916 {
return mpfr_cmp_ui(f,
l) >= 0; }
917 static bool eval(mpfr_srcptr f,
signed long int l)
918 {
return mpfr_cmp_si(f,
l) <= 0; }
919 static bool eval(
signed long int l, mpfr_srcptr f)
920 {
return mpfr_cmp_si(f,
l) >= 0; }
921 static bool eval(mpfr_srcptr f,
double d)
922 {
return mpfr_cmp_d(f, d) <= 0; }
923 static bool eval(
double d, mpfr_srcptr f)
924 {
return mpfr_cmp_d(f, d) >= 0; }
929 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) > 0; }
931 static bool eval(mpz_srcptr z,
unsigned long int l)
932 {
return mpz_cmp_ui(z,
l) > 0; }
933 static bool eval(
unsigned long int l, mpz_srcptr z)
934 {
return mpz_cmp_ui(z,
l) < 0; }
935 static bool eval(mpz_srcptr z,
signed long int l)
936 {
return mpz_cmp_si(z,
l) > 0; }
937 static bool eval(
signed long int l, mpz_srcptr z)
938 {
return mpz_cmp_si(z,
l) < 0; }
939 static bool eval(mpz_srcptr z,
double d)
940 {
return mpz_cmp_d(z, d) > 0; }
941 static bool eval(
double d, mpz_srcptr z)
942 {
return mpz_cmp_d(z, d) < 0; }
944 static bool eval(mpq_srcptr q, mpq_srcptr r) {
return mpq_cmp(q, r) > 0; }
946 static bool eval(mpq_srcptr q,
unsigned long int l)
947 {
return mpq_cmp_ui(q,
l, 1) > 0; }
948 static bool eval(
unsigned long int l, mpq_srcptr q)
949 {
return mpq_cmp_ui(q,
l, 1) < 0; }
950 static bool eval(mpq_srcptr q,
signed long int l)
951 {
return mpq_cmp_si(q,
l, 1) > 0; }
952 static bool eval(
signed long int l, mpq_srcptr q)
953 {
return mpq_cmp_si(q,
l, 1) < 0; }
954 static bool eval(mpq_srcptr q,
double d)
960 b = (mpq_cmp(q, temp) > 0);
964 static bool eval(
double d, mpq_srcptr q)
970 b = (mpq_cmp(temp, q) > 0);
975 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) > 0; }
977 static bool eval(mpfr_srcptr f,
unsigned long int l)
978 {
return mpfr_cmp_ui(f,
l) > 0; }
979 static bool eval(
unsigned long int l, mpfr_srcptr f)
980 {
return mpfr_cmp_ui(f,
l) < 0; }
981 static bool eval(mpfr_srcptr f,
signed long int l)
982 {
return mpfr_cmp_si(f,
l) > 0; }
983 static bool eval(
signed long int l, mpfr_srcptr f)
984 {
return mpfr_cmp_si(f,
l) < 0; }
985 static bool eval(mpfr_srcptr f,
double d)
986 {
return mpfr_cmp_d(f, d) > 0; }
987 static bool eval(
double d, mpfr_srcptr f)
988 {
return mpfr_cmp_d(f, d) < 0; }
994 static int eval(mpfr_srcptr f, mpfr_srcptr g)
995 {
return mpfr_cmpabs(f, g); }
1000 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) >= 0; }
1002 static bool eval(mpz_srcptr z,
unsigned long int l)
1003 {
return mpz_cmp_ui(z,
l) >= 0; }
1004 static bool eval(
unsigned long int l, mpz_srcptr z)
1005 {
return mpz_cmp_ui(z,
l) <= 0; }
1006 static bool eval(mpz_srcptr z,
signed long int l)
1007 {
return mpz_cmp_si(z,
l) >= 0; }
1008 static bool eval(
signed long int l, mpz_srcptr z)
1009 {
return mpz_cmp_si(z,
l) <= 0; }
1010 static bool eval(mpz_srcptr z,
double d)
1011 {
return mpz_cmp_d(z, d) >= 0; }
1012 static bool eval(
double d, mpz_srcptr z)
1013 {
return mpz_cmp_d(z, d) <= 0; }
1015 static bool eval(mpq_srcptr q, mpq_srcptr r) {
return mpq_cmp(q, r) >= 0; }
1017 static bool eval(mpq_srcptr q,
unsigned long int l)
1018 {
return mpq_cmp_ui(q,
l, 1) >= 0; }
1019 static bool eval(
unsigned long int l, mpq_srcptr q)
1020 {
return mpq_cmp_ui(q,
l, 1) <= 0; }
1021 static bool eval(mpq_srcptr q,
signed long int l)
1022 {
return mpq_cmp_si(q,
l, 1) >= 0; }
1023 static bool eval(
signed long int l, mpq_srcptr q)
1024 {
return mpq_cmp_si(q,
l, 1) <= 0; }
1025 static bool eval(mpq_srcptr q,
double d)
1031 b = (mpq_cmp(q, temp) >= 0);
1035 static bool eval(
double d, mpq_srcptr q)
1041 b = (mpq_cmp(temp, q) >= 0);
1046 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) >= 0; }
1048 static bool eval(mpfr_srcptr f,
unsigned long int l)
1049 {
return mpfr_cmp_ui(f,
l) >= 0; }
1050 static bool eval(
unsigned long int l, mpfr_srcptr f)
1051 {
return mpfr_cmp_ui(f,
l) <= 0; }
1052 static bool eval(mpfr_srcptr f,
signed long int l)
1053 {
return mpfr_cmp_si(f,
l) >= 0; }
1054 static bool eval(
signed long int l, mpfr_srcptr f)
1055 {
return mpfr_cmp_si(f,
l) <= 0; }
1056 static bool eval(mpfr_srcptr f,
double d)
1057 {
return mpfr_cmp_d(f, d) >= 0; }
1058 static bool eval(
double d, mpfr_srcptr f)
1059 {
return mpfr_cmp_d(f, d) <= 0; }
1064 static void eval(mpz_ptr z) { mpz_add_ui(z, z, 1); }
1066 { mpz_add(mpq_numref(q), mpq_numref(q), mpq_denref(q)); }
1072 static void eval(mpz_ptr z) { mpz_sub_ui(z, z, 1); }
1074 { mpz_sub(mpq_numref(q), mpq_numref(q), mpq_denref(q)); }
1080 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_abs(z,
w); }
1081 static void eval(mpq_ptr q, mpq_srcptr r) { mpq_abs(q, r); }
1082 static void eval(mpfr_ptr f, mpfr_srcptr g)
1088 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1094 static void eval(mpfr_ptr f, mpfr_srcptr g)
1100 static void eval(mpfr_ptr f, mpfr_srcptr g) { mpfr_trunc(f, g); }
1105 static void eval(mpfr_ptr f, mpfr_srcptr g) { mpfr_floor(f, g); }
1110 static void eval(mpfr_ptr f, mpfr_srcptr g) { mpfr_ceil(f, g); }
1115 static void eval(mpfr_ptr f, mpfr_srcptr g)
1121 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_sqrt(z,
w); }
1122 static void eval(mpfr_ptr f, mpfr_srcptr g)
1128 static void eval(mpfr_ptr f, mpfr_srcptr g)
1134 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
1136#if MPFR_VERSION_MAJOR >= 4
1146 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1148 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
1150 static void eval(mpfr_ptr f, mpfr_srcptr g,
long int l)
1152 static void eval(mpfr_ptr f, mpfr_srcptr g, mpz_srcptr z)
1154 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr
h)
1156 static void eval(mpfr_ptr f,
unsigned long int l,
unsigned long int h)
1162 static void eval(mpfr_ptr f, mpfr_srcptr g)
1168 static void eval(mpfr_ptr f, mpfr_srcptr g)
1174 static void eval(mpfr_ptr f, mpfr_srcptr g)
1180 static void eval(mpfr_ptr f, mpfr_srcptr g)
1186 static void eval(mpfr_ptr f, mpfr_srcptr g)
1192 static void eval(mpfr_ptr f, mpfr_srcptr g)
1198 static void eval(mpfr_ptr f, mpfr_srcptr g)
1204 static void eval(mpfr_ptr f, mpfr_srcptr g)
1210 static void eval(mpfr_ptr f, mpfr_srcptr g)
1216 static void eval(mpfr_ptr f, mpfr_srcptr g)
1222 static void eval(mpfr_ptr f, mpfr_srcptr g)
1228 static void eval(mpfr_ptr f, mpfr_srcptr g)
1234 static void eval(mpfr_ptr f, mpfr_srcptr g)
1240 static void eval(mpfr_ptr f, mpfr_srcptr g)
1246 static void eval(mpfr_ptr f, mpfr_srcptr g)
1252 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1258 static void eval(mpfr_ptr f, mpfr_srcptr g)
1264 static void eval(mpfr_ptr f, mpfr_srcptr g)
1270 static void eval(mpfr_ptr f, mpfr_srcptr g)
1276 static void eval(mpfr_ptr f, mpfr_srcptr g)
1282 static void eval(mpfr_ptr f, mpfr_srcptr g)
1288 static void eval(mpfr_ptr f, mpfr_srcptr g)
1294 static void eval(mpfr_ptr f, mpfr_srcptr g)
1300 static void eval(mpfr_ptr f, mpfr_srcptr g)
1306 static void eval(mpfr_ptr f, mpfr_srcptr g)
1312 static void eval(mpfr_ptr f,
unsigned long int l)
1318 static void eval(mpfr_ptr f, mpfr_srcptr g)
1324 static void eval(mpfr_ptr f, mpfr_srcptr g)
1330 static void eval(mpfr_ptr f, mpfr_srcptr g)
1336 static void eval(mpfr_ptr f, mpfr_srcptr g)
1342 static void eval(mpfr_ptr f, mpfr_srcptr g)
1348 static void eval(mpfr_ptr f, mpfr_srcptr g)
1355 static void eval(mpfr_ptr f, mpfr_srcptr g)
1357 static void eval(mpfr_ptr f,
unsigned long int l)
1363 static void eval(mpfr_ptr f, mpfr_srcptr g)
1369 static void eval(mpfr_ptr f, mpfr_srcptr g)
1375 static void eval(mpfr_ptr f, mpfr_srcptr g)
1381 static void eval(mpfr_ptr f, mpfr_srcptr g)
1389 static void eval(mpfr_ptr f,
long h, mpfr_srcptr g)
1395 static void eval(mpfr_ptr f, mpfr_srcptr g)
1401 static void eval(mpfr_ptr f, mpfr_srcptr g)
1409 static void eval(mpfr_ptr f,
long h, mpfr_srcptr g)
1415 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1445 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1451 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1457 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1462 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
1467 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
1472 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
1477 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
1482 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
1487 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
1496 static void eval(mpfr_ptr f, mpfr_srcptr g)
1502 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1508 static int eval(mpz_srcptr z) {
return mpz_sgn(z); }
1509 static int eval(mpq_srcptr q) {
return mpq_sgn(q); }
1510 static int eval(mpfr_srcptr f) {
return mpfr_sgn(f); }
1515 static int eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w); }
1517 static int eval(mpz_srcptr z,
unsigned long int l)
1518 {
return mpz_cmp_ui(z,
l); }
1519 static int eval(
unsigned long int l, mpz_srcptr z)
1520 {
return -mpz_cmp_ui(z,
l); }
1521 static int eval(mpz_srcptr z,
signed long int l)
1522 {
return mpz_cmp_si(z,
l); }
1523 static int eval(
signed long int l, mpz_srcptr z)
1524 {
return -mpz_cmp_si(z,
l); }
1525 static int eval(mpz_srcptr z,
double d)
1526 {
return mpz_cmp_d(z, d); }
1527 static int eval(
double d, mpz_srcptr z)
1528 {
return -mpz_cmp_d(z, d); }
1530 static int eval(mpq_srcptr q, mpq_srcptr r) {
return mpq_cmp(q, r); }
1532 static int eval(mpq_srcptr q,
unsigned long int l)
1533 {
return mpq_cmp_ui(q,
l, 1); }
1534 static int eval(
unsigned long int l, mpq_srcptr q)
1535 {
return -mpq_cmp_ui(q,
l, 1); }
1536 static int eval(mpq_srcptr q,
signed long int l)
1537 {
return mpq_cmp_si(q,
l, 1); }
1538 static int eval(
signed long int l, mpq_srcptr q)
1539 {
return -mpq_cmp_si(q,
l, 1); }
1540 static int eval(mpq_srcptr q,
double d)
1546 i = mpq_cmp(q, temp);
1550 static int eval(
double d, mpq_srcptr q)
1556 i = mpq_cmp(temp, q);
1561 static int eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g); }
1563 static int eval(mpfr_srcptr f,
unsigned long int l)
1564 {
return mpfr_cmp_ui(f,
l); }
1565 static int eval(
unsigned long int l, mpfr_srcptr f)
1566 {
return -mpfr_cmp_ui(f,
l); }
1567 static int eval(mpfr_srcptr f,
signed long int l)
1568 {
return mpfr_cmp_si(f,
l); }
1569 static int eval(
signed long int l, mpfr_srcptr f)
1570 {
return -mpfr_cmp_si(f,
l); }
1571 static int eval(mpfr_srcptr f,
double d)
1572 {
return mpfr_cmp_d(f, d); }
1573 static int eval(
double d, mpfr_srcptr f)
1574 {
return -mpfr_cmp_d(f, d); }
1579 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v, mpz_srcptr u)
1580 { mpz_set(z,
w); mpz_addmul(z, v, u); }
1582 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
unsigned long int l)
1583 { mpz_set(z,
w); mpz_addmul_ui(z, v,
l); }
1584 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l, mpz_srcptr v)
1585 { mpz_set(z,
w); mpz_addmul_ui(z, v,
l); }
1586 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
signed long int l)
1590 mpz_addmul_ui(z, v,
l);
1592 mpz_submul_ui(z, v, -
l);
1594 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l, mpz_srcptr v)
1598 mpz_addmul_ui(z, v,
l);
1600 mpz_submul_ui(z, v, -
l);
1602 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
double d)
1605 mpz_init_set_d(temp, d);
1607 mpz_addmul(z, v, temp);
1610 static void eval(mpz_ptr z, mpz_srcptr
w,
double d, mpz_srcptr v)
1613 mpz_init_set_d(temp, d);
1615 mpz_addmul(z, temp, v);
1622 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v, mpz_srcptr u)
1623 { mpz_set(z,
w); mpz_submul(z, v, u); }
1625 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
unsigned long int l)
1626 { mpz_set(z,
w); mpz_submul_ui(z, v,
l); }
1627 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l, mpz_srcptr v)
1628 { mpz_set(z,
w); mpz_submul_ui(z, v,
l); }
1629 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
signed long int l)
1633 mpz_submul_ui(z, v,
l);
1635 mpz_addmul_ui(z, v, -
l);
1637 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l, mpz_srcptr v)
1641 mpz_submul_ui(z, v,
l);
1643 mpz_addmul_ui(z, v, -
l);
1645 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
double d)
1648 mpz_init_set_d(temp, d);
1650 mpz_submul(z, v, temp);
1653 static void eval(mpz_ptr z, mpz_srcptr
w,
double d, mpz_srcptr v)
1656 mpz_init_set_d(temp, d);
1658 mpz_submul(z, temp, v);
1665 static void eval(mpz_ptr z, gmp_randstate_t s,
unsigned long int l)
1666 { mpz_urandomb(z, s,
l); }
1667 static void eval(mpz_ptr z, gmp_randstate_t s, mpz_srcptr
w)
1668 { mpz_urandomm(z, s,
w); }
1669 static void eval(mpfr_ptr f, gmp_randstate_t s,
unsigned long int prec)
1672 unsigned long int precf = mpfr_get_prec(f);
1673 if (prec == precf) {
1674 mpfr_urandomb(f, s);
1677 mpfr_set_prec(f, prec);
1678 mpfr_urandomb(f, s);
1696 void (*freefunc) (
void *, size_t);
1697 mp_get_memory_functions (
nullptr,
nullptr, &freefunc);
1698 (*freefunc) (
str, std::strlen(
str)+1);
1704template <
class T,
class U>
1715template <
class T,
class U>
1722template <
class T,
class U = T>
1784template <
class T,
class U,
class V>
1798template <
class T,
class Op>
1809template <
class T,
class U,
class Op>
1829template <
class T,
class U>
1831template <
class T,
class U>
1833template <
class T,
class U>
1841#define __GMPP_DECLARE_COMPOUND_OPERATOR(fun) \
1842 template <class T, class U> \
1843 __gmp_expr<value_type, value_type> & fun(const __gmp_expr<T, U> &);
1845#define __GMPN_DECLARE_COMPOUND_OPERATOR(fun) \
1846 __gmp_expr & fun(signed char); \
1847 __gmp_expr & fun(unsigned char); \
1848 __gmp_expr & fun(signed int); \
1849 __gmp_expr & fun(unsigned int); \
1850 __gmp_expr & fun(signed short int); \
1851 __gmp_expr & fun(unsigned short int); \
1852 __gmp_expr & fun(signed long int); \
1853 __gmp_expr & fun(unsigned long int); \
1854 __gmp_expr & fun(float); \
1855 __gmp_expr & fun(double); \
1856 __gmp_expr & fun(long double);
1858#define __GMP_DECLARE_COMPOUND_OPERATOR(fun) \
1859__GMPP_DECLARE_COMPOUND_OPERATOR(fun) \
1860__GMPN_DECLARE_COMPOUND_OPERATOR(fun)
1862#define __GMP_DECLARE_COMPOUND_OPERATOR_UI(fun) \
1863 __gmp_expr & fun(unsigned long int);
1865#define __GMP_DECLARE_INCREMENT_OPERATOR(fun) \
1866 inline __gmp_expr & fun(); \
1867 inline __gmp_expr fun(int);
1879 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
1885 template <
class T,
class U>
1907 if (mpz_init_set_str (mp, s, 0) != 0)
1910 throw std::invalid_argument (
"mpz_set_str");
1915 if (mpz_init_set_str (mp, s, base) != 0)
1918 throw std::invalid_argument (
"mpz_set_str");
1923 if (mpz_init_set_str (mp, s.c_str(), 0) != 0)
1926 throw std::invalid_argument (
"mpz_set_str");
1931 if (mpz_init_set_str(mp, s.c_str(), base) != 0)
1934 throw std::invalid_argument (
"mpz_set_str");
1944 { mpz_set(mp, z.mp);
return *
this; }
1945 template <
class T,
class U>
1956 { mpz_set_si(mp, s);
return *
this; }
1958 { mpz_set_ui(mp, s);
return *
this; }
1961 { mpz_set_si(mp,
l);
return *
this; }
1963 { mpz_set_ui(mp,
l);
return *
this; }
1972 if (mpz_set_str (mp, s, 0) != 0)
1973 throw std::invalid_argument (
"mpz_set_str");
1978 if (mpz_set_str(mp, s.c_str(), 0) != 0)
1979 throw std::invalid_argument (
"mpz_set_str");
1985 {
return mpz_set_str(mp, s, base); }
1987 {
return mpz_set_str(mp, s.c_str(), base); }
1991 return std::string(temp.
str);
2000 signed long int get_si()
const {
return mpz_get_si(mp); }
2001 unsigned long int get_ui()
const {
return mpz_get_ui(mp); }
2002 double get_d()
const {
return mpz_get_d(mp); }
2046 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2053 template <
class T,
class U>
2057 __gmp_expr(
signed char c) { mpq_init(mp); mpq_set_si(mp, c, 1); }
2058 __gmp_expr(
unsigned char c) { mpq_init(mp); mpq_set_ui(mp, c, 1); }
2061 __gmp_expr(
unsigned int i) { mpq_init(mp); mpq_set_ui(mp, i, 1); }
2063 __gmp_expr(
signed short int s) { mpq_init(mp); mpq_set_si(mp, s, 1); }
2064 __gmp_expr(
unsigned short int s) { mpq_init(mp); mpq_set_ui(mp, s, 1); }
2076 if (mpq_set_str (mp, s, 0) != 0)
2079 throw std::invalid_argument (
"mpq_set_str");
2085 if (mpq_set_str(mp, s, base) != 0)
2088 throw std::invalid_argument (
"mpq_set_str");
2094 if (mpq_set_str (mp, s.c_str(), 0) != 0)
2097 throw std::invalid_argument (
"mpq_set_str");
2103 if (mpq_set_str (mp, s.c_str(), base) != 0)
2106 throw std::invalid_argument (
"mpq_set_str");
2109 explicit __gmp_expr(mpq_srcptr q) { mpq_init(mp); mpq_set(mp, q); }
2114 mpz_set(mpq_numref(mp), num.
get_mpz_t());
2115 mpz_set(mpq_denref(mp), den.
get_mpz_t());
2122 { mpq_set(mp, q.mp);
return *
this; }
2123 template <
class T,
class U>
2128 { mpq_set_si(mp, c, 1);
return *
this; }
2130 { mpq_set_ui(mp, c, 1);
return *
this; }
2134 { mpq_set_ui(mp, i, 1);
return *
this; }
2137 { mpq_set_si(mp, s, 1);
return *
this; }
2139 { mpq_set_ui(mp, s, 1);
return *
this; }
2142 { mpq_set_si(mp,
l, 1);
return *
this; }
2144 { mpq_set_ui(mp,
l, 1);
return *
this; }
2153 if (mpq_set_str (mp, s, 0) != 0)
2154 throw std::invalid_argument (
"mpq_set_str");
2159 if (mpq_set_str(mp, s.c_str(), 0) != 0)
2160 throw std::invalid_argument (
"mpq_set_str");
2166 {
return mpq_set_str(mp, s, base); }
2168 {
return mpq_set_str(mp, s.c_str(), base); }
2172 return std::string(temp.
str);
2181 {
return reinterpret_cast<const mpz_class &
>(*mpq_numref(mp)); }
2183 {
return reinterpret_cast<mpz_class &
>(*mpq_numref(mp)); }
2185 {
return reinterpret_cast<const mpz_class &
>(*mpq_denref(mp)); }
2187 {
return reinterpret_cast<mpz_class &
>(*mpq_denref(mp)); }
2199 double get_d()
const {
return mpq_get_d(mp); }
2226 unsigned long int get_prec()
const {
return mpfr_get_prec(mp); }
2228 void set_prec(
unsigned long int prec) { mpfr_set_prec(mp, prec); }
2238 { mpfr_init2(mp, f.get_prec()); mpfr_set(mp, f.mp,
MpFrC::get_rnd()); }
2241 template <
class T,
class U>
2244 template <
class T,
class U>
2302 throw std::invalid_argument (
"mpfr_set_str");
2307 mpfr_init2(mp, prec);
2311 throw std::invalid_argument (
"mpfr_set_str");
2316 if (mpfr_init_set_str(mp, s.c_str(),
2320 throw std::invalid_argument (
"mpfr_set_str");
2323 __gmp_expr(
const std::string &s,
unsigned long int prec,
int base = 0)
2325 mpfr_init2(mp, prec);
2329 throw std::invalid_argument (
"mpfr_set_str");
2334 { mpfr_init2(mp, mpfr_get_prec(f)); mpfr_set(mp, f,
MpFrC::get_rnd()); }
2343 template <
class T,
class U>
2377 throw std::invalid_argument (
"mpfr_set_str");
2383 throw std::invalid_argument (
"mpfr_set_str");
2392 std::string
get_str(mp_exp_t &expo,
int base = 10,
size_t size = 0)
const
2396 return std::string(temp.
str);
2455inline
std::ostream & operator<<
2458 return o << expr.__get_mp();
2461template <
class T,
class U>
2462inline std::ostream &
operator<<
2466 return o << temp.__get_mp();
2473 return i >> expr.__get_mp();
2489 mpz_set(z,
w.get_mpz_t());
2597 expr.eval(f, mpfr_get_prec(f));
2613template <
class T,
class Op>
2621 unsigned long int = 0)
const
2623 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2636template <
class T,
class Op>
2646 unsigned long int = 0)
const
2647 { Op::eval(p, expr.
val.__get_mp()); }
2653template <
class T,
class U,
class Op>
2664 unsigned long int = 0)
const
2665 { Op::eval(p, expr.
val); }
2667 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2673template <
class T,
class U,
class Op>
2685 unsigned long int prec)
const
2704template <
class T,
class Op>
2715 : expr(val1, val2) { }
2717 unsigned long int = 0)
const
2718 { Op::eval(p, expr.
val1.__get_mp(), expr.
val2.__get_mp()); }
2723 unsigned long int prec1 = expr.
val1.get_prec(),
2724 prec2 = expr.
val2.get_prec();
2725 return (prec1 > prec2) ? prec1 : prec2;
2732template <
class T,
class U,
class Op>
2742 : expr(val1, val2) { }
2744 unsigned long int = 0)
const
2745 { Op::eval(p, expr.
val1.__get_mp(), expr.
val2); }
2751template <
class T,
class U,
class Op>
2761 : expr(val1, val2) { }
2763 unsigned long int = 0)
const
2764 { Op::eval(p, expr.
val1, expr.
val2.__get_mp()); }
2771template <
class T,
class U,
class V,
class Op>
2782 : expr(val1, val2) { }
2784 unsigned long int = 0)
const
2785 { Op::eval(p, expr.
val1, expr.
val2); }
2788 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2794template <
class T,
class U,
class V,
class Op>
2805 : expr(val1, val2) { }
2809 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2812 unsigned long int prec)
const
2815 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2821 unsigned long int prec1 = expr.
val1.get_prec(),
2822 prec2 = expr.
val2.get_prec();
2823 return (prec1 > prec2) ? prec1 : prec2;
2827template <
class T,
class U,
class V,
class Op>
2838 : expr(val1, val2) { }
2842 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2845 unsigned long int prec)
const
2848 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2854 unsigned long int prec1 = expr.
val1.get_prec(),
2855 prec2 = expr.
val2.get_prec();
2856 return (prec1 > prec2) ? prec1 : prec2;
2860template <
class T,
class U,
class Op>
2871 : expr(val1, val2) { }
2875 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2878 unsigned long int prec)
const
2881 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2887 unsigned long int prec1 = expr.
val1.get_prec(),
2888 prec2 = expr.
val2.get_prec();
2889 return (prec1 > prec2) ? prec1 : prec2;
2893template <
class T,
class U,
class Op>
2904 : expr(val1, val2) { }
2908 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2911 unsigned long int prec)
const
2914 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2920 unsigned long int prec1 = expr.
val1.get_prec(),
2921 prec2 = expr.
val2.get_prec();
2922 return (prec1 > prec2) ? prec1 : prec2;
2929template <
class T,
class U,
class V,
class Op>
2939 : expr(val1, val2) { }
2943 Op::eval(p, temp.__get_mp(), expr.
val2);
2946 unsigned long int prec)
const
2949 Op::eval(p, temp.__get_mp(), expr.
val2);
2956template <
class T,
class U,
class V,
class Op>
2966 : expr(val1, val2) { }
2970 Op::eval(p, expr.
val1, temp.__get_mp());
2973 unsigned long int prec)
const
2976 Op::eval(p, expr.
val1, temp.__get_mp());
2986template <
class T,
class U,
class V,
class W,
class Op>
2997 : expr(val1, val2) { }
3001 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3004 unsigned long int prec)
const
3007 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3013 unsigned long int prec1 = expr.
val1.get_prec(),
3014 prec2 = expr.
val2.get_prec();
3015 return (prec1 > prec2) ? prec1 : prec2;
3019template <
class T,
class U,
class V,
class W,
class Op>
3030 : expr(val1, val2) { }
3034 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3037 unsigned long int prec)
const
3040 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3046 unsigned long int prec1 = expr.
val1.get_prec(),
3047 prec2 = expr.
val2.get_prec();
3048 return (prec1 > prec2) ? prec1 : prec2;
3052template <
class T,
class U,
class V,
class Op>
3063 : expr(val1, val2) { }
3067 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3070 unsigned long int prec)
const
3073 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3079 unsigned long int prec1 = expr.
val1.get_prec(),
3080 prec2 = expr.
val2.get_prec();
3081 return (prec1 > prec2) ? prec1 : prec2;
3093#define __GMPZQ_DEFINE_EXPR(eval_fun) \
3096class __gmp_expr<mpq_t, __gmp_binary_expr<mpz_class, mpq_class, eval_fun> > \
3099 typedef mpz_class val1_type; \
3100 typedef mpq_class val2_type; \
3102 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3104 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3105 : expr(val1, val2) { } \
3106 void eval(mpq_ptr q) const \
3107 { eval_fun::eval(q, expr.val1.get_mpz_t(), expr.val2.get_mpq_t()); } \
3108 const val1_type & get_val1() const { return expr.val1; } \
3109 const val2_type & get_val2() const { return expr.val2; } \
3110 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3114class __gmp_expr<mpq_t, __gmp_binary_expr<mpq_class, mpz_class, eval_fun> > \
3117 typedef mpq_class val1_type; \
3118 typedef mpz_class val2_type; \
3120 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3122 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3123 : expr(val1, val2) { } \
3124 void eval(mpq_ptr q) const \
3125 { eval_fun::eval(q, expr.val1.get_mpq_t(), expr.val2.get_mpz_t()); } \
3126 const val1_type & get_val1() const { return expr.val1; } \
3127 const val2_type & get_val2() const { return expr.val2; } \
3128 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3133<mpq_t, __gmp_binary_expr<mpz_class, __gmp_expr<mpq_t, T>, eval_fun> > \
3136 typedef mpz_class val1_type; \
3137 typedef __gmp_expr<mpq_t, T> val2_type; \
3139 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3141 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3142 : expr(val1, val2) { } \
3143 void eval(mpq_ptr q) const \
3145 mpq_class temp(expr.val2); \
3146 eval_fun::eval(q, expr.val1.get_mpz_t(), temp.get_mpq_t()); \
3148 const val1_type & get_val1() const { return expr.val1; } \
3149 const val2_type & get_val2() const { return expr.val2; } \
3150 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3155<mpq_t, __gmp_binary_expr<mpq_class, __gmp_expr<mpz_t, T>, eval_fun> > \
3158 typedef mpq_class val1_type; \
3159 typedef __gmp_expr<mpz_t, T> val2_type; \
3161 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3163 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3164 : expr(val1, val2) { } \
3165 void eval(mpq_ptr q) const \
3167 mpz_class temp(expr.val2); \
3168 eval_fun::eval(q, expr.val1.get_mpq_t(), temp.get_mpz_t()); \
3170 const val1_type & get_val1() const { return expr.val1; } \
3171 const val2_type & get_val2() const { return expr.val2; } \
3172 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3177<mpq_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, mpq_class, eval_fun> > \
3180 typedef __gmp_expr<mpz_t, T> val1_type; \
3181 typedef mpq_class val2_type; \
3183 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3185 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3186 : expr(val1, val2) { } \
3187 void eval(mpq_ptr q) const \
3189 mpz_class temp(expr.val1); \
3190 eval_fun::eval(q, temp.get_mpz_t(), expr.val2.get_mpq_t()); \
3192 const val1_type & get_val1() const { return expr.val1; } \
3193 const val2_type & get_val2() const { return expr.val2; } \
3194 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3199<mpq_t, __gmp_binary_expr<__gmp_expr<mpq_t, T>, mpz_class, eval_fun> > \
3202 typedef __gmp_expr<mpq_t, T> val1_type; \
3203 typedef mpz_class val2_type; \
3205 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3207 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3208 : expr(val1, val2) { } \
3209 void eval(mpq_ptr q) const \
3211 mpq_class temp(expr.val1); \
3212 eval_fun::eval(q, temp.get_mpq_t(), expr.val2.get_mpz_t()); \
3214 const val1_type & get_val1() const { return expr.val1; } \
3215 const val2_type & get_val2() const { return expr.val2; } \
3216 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3219template <class T, class U> \
3220class __gmp_expr<mpq_t, __gmp_binary_expr \
3221<__gmp_expr<mpz_t, T>, __gmp_expr<mpq_t, U>, eval_fun> > \
3224 typedef __gmp_expr<mpz_t, T> val1_type; \
3225 typedef __gmp_expr<mpq_t, U> val2_type; \
3227 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3229 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3230 : expr(val1, val2) { } \
3231 void eval(mpq_ptr q) const \
3233 mpz_class temp1(expr.val1); \
3234 mpq_class temp2(expr.val2); \
3235 eval_fun::eval(q, temp1.get_mpz_t(), temp2.get_mpq_t()); \
3237 const val1_type & get_val1() const { return expr.val1; } \
3238 const val2_type & get_val2() const { return expr.val2; } \
3239 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3242template <class T, class U> \
3243class __gmp_expr<mpq_t, __gmp_binary_expr \
3244<__gmp_expr<mpq_t, T>, __gmp_expr<mpz_t, U>, eval_fun> > \
3247 typedef __gmp_expr<mpq_t, T> val1_type; \
3248 typedef __gmp_expr<mpz_t, U> val2_type; \
3250 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3252 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3253 : expr(val1, val2) { } \
3254 void eval(mpq_ptr q) const \
3256 mpq_class temp1(expr.val1); \
3257 mpz_class temp2(expr.val2); \
3258 eval_fun::eval(q, temp1.get_mpq_t(), temp2.get_mpz_t()); \
3260 const val1_type & get_val1() const { return expr.val1; } \
3261 const val2_type & get_val2() const { return expr.val2; } \
3262 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3274#define __GMP_DEFINE_TERNARY_EXPR(eval_fun1, eval_fun2, eval_both) \
3277class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3278<mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> >, eval_fun2> > \
3281 typedef mpz_class val1_type; \
3282 typedef __gmp_expr \
3283 <mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> > val2_type; \
3285 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3287 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3288 : expr(val1, val2) { } \
3289 void eval(mpz_ptr z) const \
3291 (z, expr.val1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3292 expr.val2.get_val2().get_mpz_t()); } \
3293 const val1_type & get_val1() const { return expr.val1; } \
3294 const val2_type & get_val2() const { return expr.val2; } \
3295 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3299class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3300<mpz_t, __gmp_binary_expr<mpz_class, T, eval_fun1> >, eval_fun2> > \
3303 typedef mpz_class val1_type; \
3304 typedef __gmp_expr \
3305 <mpz_t, __gmp_binary_expr<mpz_class, T, eval_fun1> > val2_type; \
3307 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3309 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3310 : expr(val1, val2) { } \
3311 void eval(mpz_ptr z) const \
3313 (z, expr.val1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3314 expr.val2.get_val2()); } \
3315 const val1_type & get_val1() const { return expr.val1; } \
3316 const val2_type & get_val2() const { return expr.val2; } \
3317 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3321class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3322<mpz_t, __gmp_binary_expr<T, mpz_class, eval_fun1> >, eval_fun2> > \
3325 typedef mpz_class val1_type; \
3326 typedef __gmp_expr \
3327 <mpz_t, __gmp_binary_expr<T, mpz_class, eval_fun1> > val2_type; \
3329 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3331 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3332 : expr(val1, val2) { } \
3333 void eval(mpz_ptr z) const \
3335 (z, expr.val1.get_mpz_t(), expr.val2.get_val1(), \
3336 expr.val2.get_val2().get_mpz_t()); } \
3337 const val1_type & get_val1() const { return expr.val1; } \
3338 const val2_type & get_val2() const { return expr.val2; } \
3339 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3343class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3344<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr<mpz_t, T>, eval_fun1> >, \
3348 typedef mpz_class val1_type; \
3349 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3350 <mpz_class, __gmp_expr<mpz_t, T>, eval_fun1> > val2_type; \
3352 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3354 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3355 : expr(val1, val2) { } \
3356 void eval(mpz_ptr z) const \
3358 mpz_class temp(expr.val2.get_val2()); \
3360 (z, expr.val1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3361 temp.get_mpz_t()); \
3363 const val1_type & get_val1() const { return expr.val1; } \
3364 const val2_type & get_val2() const { return expr.val2; } \
3365 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3369class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3370<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, mpz_class, eval_fun1> >, \
3374 typedef mpz_class val1_type; \
3375 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3376 <__gmp_expr<mpz_t, T>, mpz_class, eval_fun1> > val2_type; \
3378 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3380 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3381 : expr(val1, val2) { } \
3382 void eval(mpz_ptr z) const \
3384 mpz_class temp(expr.val2.get_val1()); \
3385 eval_both::eval(z, expr.val1.get_mpz_t(), temp.get_mpz_t(), \
3386 expr.val2.get_val2().get_mpz_t()); \
3388 const val1_type & get_val1() const { return expr.val1; } \
3389 const val2_type & get_val2() const { return expr.val2; } \
3390 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3393template <class T, class U> \
3394class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3395<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, U, eval_fun1> >, \
3399 typedef mpz_class val1_type; \
3400 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3401 <__gmp_expr<mpz_t, T>, U, eval_fun1> > val2_type; \
3403 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3405 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3406 : expr(val1, val2) { } \
3407 void eval(mpz_ptr z) const \
3409 mpz_class temp(expr.val2.get_val1()); \
3411 (z, expr.val1.get_mpz_t(), temp.get_mpz_t(), expr.val2.get_val2()); \
3413 const val1_type & get_val1() const { return expr.val1; } \
3414 const val2_type & get_val2() const { return expr.val2; } \
3415 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3418template <class T, class U> \
3419class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3420<mpz_t, __gmp_binary_expr<T, __gmp_expr<mpz_t, U>, eval_fun1> >, \
3424 typedef mpz_class val1_type; \
3425 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3426 <T, __gmp_expr<mpz_t, U>, eval_fun1> > val2_type; \
3428 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3430 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3431 : expr(val1, val2) { } \
3432 void eval(mpz_ptr z) const \
3434 mpz_class temp(expr.val2.get_val2()); \
3436 (z, expr.val1.get_mpz_t(), expr.val2.get_val1(), temp.get_mpz_t()); \
3438 const val1_type & get_val1() const { return expr.val1; } \
3439 const val2_type & get_val2() const { return expr.val2; } \
3440 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3443template <class T, class U> \
3444class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3445<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, __gmp_expr<mpz_t, U>, \
3446 eval_fun1> >, eval_fun2> > \
3449 typedef mpz_class val1_type; \
3450 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3451 <__gmp_expr<mpz_t, T>, __gmp_expr<mpz_t, U>, eval_fun1> > val2_type; \
3453 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3455 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3456 : expr(val1, val2) { } \
3457 void eval(mpz_ptr z) const \
3459 mpz_class temp1(expr.val2.get_val1()); \
3460 mpz_class temp2(expr.val2.get_val2()); \
3462 (z, expr.val1.get_mpz_t(), temp1.get_mpz_t(), temp2.get_mpz_t()); \
3464 const val1_type & get_val1() const { return expr.val1; } \
3465 const val2_type & get_val2() const { return expr.val2; } \
3466 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3470class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3471 __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> >, \
3475 typedef __gmp_expr<mpz_t, T> val1_type; \
3476 typedef __gmp_expr \
3477 <mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> > val2_type; \
3479 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3481 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3482 : expr(val1, val2) { } \
3483 void eval(mpz_ptr z) const \
3485 mpz_class temp(expr.val1); \
3486 eval_both::eval(z, temp.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3487 expr.val2.get_val2().get_mpz_t()); \
3489 const val1_type & get_val1() const { return expr.val1; } \
3490 const val2_type & get_val2() const { return expr.val2; } \
3491 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3494template <class T, class U> \
3495class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3496 __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, U, eval_fun1> >, \
3500 typedef __gmp_expr<mpz_t, T> val1_type; \
3501 typedef __gmp_expr \
3502 <mpz_t, __gmp_binary_expr<mpz_class, U, eval_fun1> > val2_type; \
3504 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3506 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3507 : expr(val1, val2) { } \
3508 void eval(mpz_ptr z) const \
3510 mpz_class temp(expr.val1); \
3511 eval_both::eval(z, temp.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3512 expr.val2.get_val2()); \
3514 const val1_type & get_val1() const { return expr.val1; } \
3515 const val2_type & get_val2() const { return expr.val2; } \
3516 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3519template <class T, class U> \
3520class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3521 __gmp_expr<mpz_t, __gmp_binary_expr<U, mpz_class, eval_fun1> >, \
3525 typedef __gmp_expr<mpz_t, T> val1_type; \
3526 typedef __gmp_expr \
3527 <mpz_t, __gmp_binary_expr<U, mpz_class, eval_fun1> > val2_type; \
3529 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3531 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3532 : expr(val1, val2) { } \
3533 void eval(mpz_ptr z) const \
3535 mpz_class temp(expr.val1); \
3536 eval_both::eval(z, temp.get_mpz_t(), expr.val2.get_val1(), \
3537 expr.val2.get_val2().get_mpz_t()); \
3539 const val1_type & get_val1() const { return expr.val1; } \
3540 const val2_type & get_val2() const { return expr.val2; } \
3541 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3544template <class T, class U> \
3545class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3546 __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr<mpz_t, U>, \
3547 eval_fun1> >, eval_fun2> > \
3550 typedef __gmp_expr<mpz_t, T> val1_type; \
3551 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3552 <mpz_class, __gmp_expr<mpz_t, U>, eval_fun1> > val2_type; \
3554 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3556 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3557 : expr(val1, val2) { } \
3558 void eval(mpz_ptr z) const \
3560 mpz_class temp1(expr.val1); \
3561 mpz_class temp2(expr.val2.get_val2()); \
3563 (z, temp1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3564 temp2.get_mpz_t()); \
3566 const val1_type & get_val1() const { return expr.val1; } \
3567 const val2_type & get_val2() const { return expr.val2; } \
3568 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3571template <class T, class U> \
3572class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3573 __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, U>, mpz_class, \
3574 eval_fun1> >, eval_fun2> > \
3577 typedef __gmp_expr<mpz_t, T> val1_type; \
3578 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3579 <__gmp_expr<mpz_t, U>, mpz_class, eval_fun1> > val2_type; \
3581 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3583 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3584 : expr(val1, val2) { } \
3585 void eval(mpz_ptr z) const \
3587 mpz_class temp1(expr.val1); \
3588 mpz_class temp2(expr.val2.get_val1()); \
3589 eval_both::eval(z, temp1.get_mpz_t(), temp2.get_mpz_t(), \
3590 expr.val2.get_val2().get_mpz_t()); \
3592 const val1_type & get_val1() const { return expr.val1; } \
3593 const val2_type & get_val2() const { return expr.val2; } \
3594 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3597template <class T, class U, class V> \
3598class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3599 __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, U>, V, \
3600 eval_fun1> >, eval_fun2> > \
3603 typedef __gmp_expr<mpz_t, T> val1_type; \
3604 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3605 <__gmp_expr<mpz_t, U>, V, eval_fun1> > val2_type; \
3607 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3609 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3610 : expr(val1, val2) { } \
3611 void eval(mpz_ptr z) const \
3613 mpz_class temp1(expr.val1); \
3614 mpz_class temp2(expr.val2.get_val1()); \
3616 (z, temp1.get_mpz_t(), temp2.get_mpz_t(), expr.val2.get_val2()); \
3618 const val1_type & get_val1() const { return expr.val1; } \
3619 const val2_type & get_val2() const { return expr.val2; } \
3620 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3623template <class T, class U, class V> \
3624class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3625 __gmp_expr<mpz_t, __gmp_binary_expr<U, __gmp_expr<mpz_t, V>, \
3626 eval_fun1> >, eval_fun2> > \
3629 typedef __gmp_expr<mpz_t, T> val1_type; \
3630 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3631 <U, __gmp_expr<mpz_t, V>, eval_fun1> > val2_type; \
3633 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3635 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3636 : expr(val1, val2) { } \
3637 void eval(mpz_ptr z) const \
3639 mpz_class temp1(expr.val1); \
3640 mpz_class temp2(expr.val2.get_val2()); \
3642 (z, temp1.get_mpz_t(), expr.val2.get_val1(), temp2.get_mpz_t()); \
3644 const val1_type & get_val1() const { return expr.val1; } \
3645 const val2_type & get_val2() const { return expr.val2; } \
3646 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3649template <class T, class U, class V> \
3650class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3651 __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, U>, \
3652 __gmp_expr<mpz_t, V>, eval_fun1> >, eval_fun2> > \
3655 typedef __gmp_expr<mpz_t, T> val1_type; \
3656 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3657 <__gmp_expr<mpz_t, U>, __gmp_expr<mpz_t, V>, eval_fun1> > val2_type; \
3659 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3661 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3662 : expr(val1, val2) { } \
3663 void eval(mpz_ptr z) const \
3665 mpz_class temp1(expr.val1); \
3666 mpz_class temp2(expr.val2.get_val1()); \
3667 mpz_class temp3(expr.val2.get_val2()); \
3669 (z, temp1.get_mpz_t(), temp2.get_mpz_t(), temp3.get_mpz_t()); \
3671 const val1_type & get_val1() const { return expr.val1; } \
3672 const val2_type & get_val2() const { return expr.val2; } \
3673 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3701#define __GMP_DEFINE_VOID_FUNCTION(T, fun, eval_fun) \
3704<T, __gmp_void_expr<eval_fun> > \
3707 return __gmp_expr<T, __gmp_void_expr \
3714#define __GMP_DEFINE_UNARY_FUNCTION(fun, eval_fun) \
3716template <class T, class U> \
3717inline __gmp_expr<T, __gmp_unary_expr<__gmp_expr<T, U>, eval_fun> > \
3718fun(const __gmp_expr<T, U> &expr) \
3720 return __gmp_expr<T, __gmp_unary_expr<__gmp_expr<T, U>, eval_fun> >(expr); \
3725#define __GMP_DEFINE_UNARY_TYPE_FUNCTION(type, fun, eval_fun) \
3727template <class T, class U> \
3728inline type fun(const __gmp_expr<T, U> &expr) \
3730 typename __gmp_resolve_temp<T, T, U>::temp_type temp(expr); \
3731 return eval_fun::eval(temp.__get_mp()); \
3735#define __GMP_DEFINE_UNARY_FUNCTION_UI(T, fun, eval_fun) \
3738<T, __gmp_unary_expr<unsigned long int, eval_fun> > \
3739fun(unsigned long int l) \
3741 return __gmp_expr<T, __gmp_unary_expr \
3742 <unsigned long int, eval_fun> >(l); \
3751#define __GMPP_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3753template <class T, class U, class V, class W> \
3754inline __gmp_expr<typename __gmp_resolve_expr<T, V>::value_type, \
3755__gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, eval_fun> > \
3756fun(const __gmp_expr<T, U> &expr1, const __gmp_expr<V, W> &expr2) \
3758 return __gmp_expr<typename __gmp_resolve_expr<T, V>::value_type, \
3759 __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, eval_fun> > \
3763template <class T, class U> \
3764inline __gmp_expr<typename __gmp_resolve_expr<T, T>::value_type, \
3765__gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<T, U>, eval_fun> > \
3766fun(const __gmp_expr<T, U> &expr1, const __gmp_expr<T, U> &expr2) \
3768 return __gmp_expr<typename __gmp_resolve_expr<T, T>::value_type, \
3769 __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<T, U>, eval_fun> > \
3773#define __GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, bigtype) \
3775template <class T, class U> \
3777<T, __gmp_binary_expr<__gmp_expr<T, U>, bigtype, eval_fun> > \
3778fun(const __gmp_expr<T, U> &expr, type t) \
3781 <T, __gmp_binary_expr<__gmp_expr<T, U>, bigtype, eval_fun> >(expr, t); \
3784template <class T, class U> \
3786<T, __gmp_binary_expr<bigtype, __gmp_expr<T, U>, eval_fun> > \
3787fun(type t, const __gmp_expr<T, U> &expr) \
3790 <T, __gmp_binary_expr<bigtype, __gmp_expr<T, U>, eval_fun> >(t, expr); \
3793#define __GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3794__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, signed long int)
3796#define __GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3797__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, unsigned long int)
3799#define __GMPND_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3800__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, double)
3802#define __GMPNLD_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3803__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, long double)
3805#define __GMPN_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3806__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed char) \
3807__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned char) \
3808__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed int) \
3809__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned int) \
3810__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed short int) \
3811__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned short int) \
3812__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed long int) \
3813__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned long int) \
3814__GMPND_DEFINE_BINARY_FUNCTION(fun, eval_fun, float) \
3815__GMPND_DEFINE_BINARY_FUNCTION(fun, eval_fun, double) \
3816__GMPNLD_DEFINE_BINARY_FUNCTION(fun, eval_fun, long double)
3818#define __GMP_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3819__GMPP_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3820__GMPN_DEFINE_BINARY_FUNCTION(fun, eval_fun)
3824#define __GMP_DEFINE_BINARY_FUNCTION_UI(fun, eval_fun) \
3826template <class T, class U> \
3828<T, __gmp_binary_expr<__gmp_expr<T, U>, unsigned long int, eval_fun> > \
3829fun(const __gmp_expr<T, U> &expr, unsigned long int l) \
3831 return __gmp_expr<T, __gmp_binary_expr \
3832 <__gmp_expr<T, U>, unsigned long int, eval_fun> >(expr, l); \
3836#define __GMP_DEFINE_BINARY_FUNCTION_UI_UI(T, fun, eval_fun) \
3839<T, __gmp_binary_expr<unsigned long int, unsigned long int, eval_fun> > \
3840fun(unsigned long int r, unsigned long int l) \
3842 return __gmp_expr<T, __gmp_binary_expr \
3843 <unsigned long int, unsigned long int, eval_fun> >(r, l); \
3847#define __GMPP_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3849template <class T, class U, class V, class W> \
3850inline type fun(const __gmp_expr<T, U> &expr1, \
3851 const __gmp_expr<V, W> &expr2) \
3853 typedef typename __gmp_resolve_expr<T, V>::value_type eval_type; \
3854 typename __gmp_resolve_temp<eval_type, T, U>::temp_type temp1(expr1); \
3855 typename __gmp_resolve_temp<eval_type, V, W>::temp_type temp2(expr2); \
3856 return eval_fun::eval(temp1.__get_mp(), temp2.__get_mp()); \
3859#define __GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, \
3862template <class T, class U> \
3863inline type fun(const __gmp_expr<T, U> &expr, type2 t) \
3865 typename __gmp_resolve_temp<T, T, U>::temp_type temp(expr); \
3866 return eval_fun::eval(temp.__get_mp(), static_cast<bigtype>(t)); \
3869template <class T, class U> \
3870inline type fun(type2 t, const __gmp_expr<T, U> &expr) \
3872 typename __gmp_resolve_temp<T, T, U>::temp_type temp(expr); \
3873 return eval_fun::eval(static_cast<bigtype>(t), temp.__get_mp()); \
3876#define __GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3877__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, \
3878 type2, signed long int)
3880#define __GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3881__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, \
3882 type2, unsigned long int)
3884#define __GMPND_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3885__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2, double)
3887#define __GMPNLD_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3888__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2, long double)
3890#define __GMPN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3891__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed char) \
3892__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned char) \
3893__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed int) \
3894__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned int) \
3895__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed short int) \
3896__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned short int) \
3897__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed long int) \
3898__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned long int) \
3899__GMPND_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, float) \
3900__GMPND_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, double) \
3901__GMPNLD_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, long double)
3903#define __GMP_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3904__GMPP_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3905__GMPN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun)
3910#define __GMPP_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3912template <class T, class U> \
3913inline type##_class & type##_class::fun(const __gmp_expr<T, U> &expr) \
3915 __gmp_set_expr(mp, __gmp_expr<type##_t, __gmp_binary_expr \
3916 <type##_class, __gmp_expr<T, U>, eval_fun> >(*this, expr)); \
3920#define __GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, \
3923inline type##_class & type##_class::fun(type2 t) \
3925 __gmp_set_expr(mp, __gmp_expr<type##_t, __gmp_binary_expr \
3926 <type##_class, bigtype, eval_fun> >(*this, t)); \
3930#define __GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3931__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, \
3932 type2, signed long int)
3934#define __GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3935__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, \
3936 type2, unsigned long int)
3938#define __GMPND_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3939__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2, double)
3941#define __GMPNLD_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3942__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2, long double)
3944#define __GMPN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3945__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed char) \
3946__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned char) \
3947__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed int) \
3948__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned int) \
3949__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed short int) \
3950__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned short int) \
3951__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed long int) \
3952__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned long int) \
3953__GMPND_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, float) \
3954__GMPND_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, double) \
3957#define __GMP_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3958__GMPP_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3959__GMPN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun)
3961#define __GMPZ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3962__GMP_DEFINE_COMPOUND_OPERATOR(mpz, fun, eval_fun)
3964#define __GMPZZ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3965__GMPP_DEFINE_COMPOUND_OPERATOR(mpz, fun, eval_fun)
3967#define __GMPQ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3968__GMP_DEFINE_COMPOUND_OPERATOR(mpq, fun, eval_fun)
3970#define __MPFR_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3971__GMP_DEFINE_COMPOUND_OPERATOR(mpfr, fun, eval_fun)
3975#define __GMP_DEFINE_COMPOUND_OPERATOR_UI(type, fun, eval_fun) \
3977inline type##_class & type##_class::fun(unsigned long int l) \
3979 __gmp_set_expr(mp, __gmp_expr<type##_t, __gmp_binary_expr \
3980 <type##_class, unsigned long int, eval_fun> >(*this, l)); \
3984#define __GMPZ_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun) \
3985__GMP_DEFINE_COMPOUND_OPERATOR_UI(mpz, fun, eval_fun)
3987#define __GMPQ_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun) \
3988__GMP_DEFINE_COMPOUND_OPERATOR_UI(mpq, fun, eval_fun)
3990#define __MPFR_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun) \
3991__GMP_DEFINE_COMPOUND_OPERATOR_UI(mpfr, fun, eval_fun)
3995#define __GMP_DEFINE_INCREMENT_OPERATOR(type, fun, eval_fun) \
3997inline type##_class & type##_class::fun() \
3999 eval_fun::eval(mp); \
4003inline type##_class type##_class::fun(int) \
4005 type##_class temp(*this); \
4006 eval_fun::eval(mp); \
4010#define __GMPZ_DEFINE_INCREMENT_OPERATOR(fun, eval_fun) \
4011__GMP_DEFINE_INCREMENT_OPERATOR(mpz, fun, eval_fun)
4013#define __GMPQ_DEFINE_INCREMENT_OPERATOR(fun, eval_fun) \
4014__GMP_DEFINE_INCREMENT_OPERATOR(mpq, fun, eval_fun)
4016#define __MPFR_DEFINE_INCREMENT_OPERATOR(fun, eval_fun) \
4017__GMP_DEFINE_INCREMENT_OPERATOR(mpfr, fun, eval_fun)
4183 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
4196 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
4207 void eval(mpfr_ptr f,
unsigned long int prec)
const
4212 return mpfr_get_default_prec();
4238 case GMP_RAND_ALG_LC:
4240 gmp_randinit(state, alg, size);
4250 mpz_class z,
unsigned long int l1,
unsigned long int l2)
4255 unsigned long int size)
4257 if (f (state, size) == 0)
4258 throw std::length_error (
"gmp_randinit_lc_2exp_size");
4265 void seed(
unsigned long int s) { gmp_randseed_ui(state, s); }
4273 {
return get_z_bits(z.
get_ui()); }
4285#undef __GMPP_DECLARE_COMPOUND_OPERATOR
4286#undef __GMPN_DECLARE_COMPOUND_OPERATOR
4287#undef __GMP_DECLARE_COMPOUND_OPERATOR
4288#undef __GMP_DECLARE_COMPOUND_OPERATOR_UI
4289#undef __GMP_DECLARE_INCREMENT_OPERATOR
4291#undef __GMPZQ_DEFINE_EXPR
4292#undef __GMP_DEFINE_TERNARY_EXPR
4294#undef __GMP_DEFINE_VOID_FUNCTION
4296#undef __GMP_DEFINE_UNARY_FUNCTION
4297#undef __GMP_DEFINE_UNARY_TYPE_FUNCTION
4298#undef __GMP_DEFINE_UNARY_FUNCTION_UI
4300#undef __GMPP_DEFINE_BINARY_FUNCTION
4301#undef __GMPNN_DEFINE_BINARY_FUNCTION
4302#undef __GMPNS_DEFINE_BINARY_FUNCTION
4303#undef __GMPNU_DEFINE_BINARY_FUNCTION
4304#undef __GMPND_DEFINE_BINARY_FUNCTION
4305#undef __GMPNLD_DEFINE_BINARY_FUNCTION
4306#undef __GMPN_DEFINE_BINARY_FUNCTION
4307#undef __GMP_DEFINE_BINARY_FUNCTION
4309#undef __GMP_DEFINE_BINARY_FUNCTION_UI
4311#undef __GMPP_DEFINE_BINARY_TYPE_FUNCTION
4312#undef __GMPNN_DEFINE_BINARY_TYPE_FUNCTION
4313#undef __GMPNS_DEFINE_BINARY_TYPE_FUNCTION
4314#undef __GMPNU_DEFINE_BINARY_TYPE_FUNCTION
4315#undef __GMPND_DEFINE_BINARY_TYPE_FUNCTION
4316#undef __GMPNLD_DEFINE_BINARY_TYPE_FUNCTION
4317#undef __GMPN_DEFINE_BINARY_TYPE_FUNCTION
4318#undef __GMP_DEFINE_BINARY_TYPE_FUNCTION
4320#undef __GMPP_DECLARE_COMPOUND_OPERATOR
4321#undef __GMPN_DECLARE_COMPOUND_OPERATOR
4322#undef __GMP_DECLARE_COMPOUND_OPERATOR
4324#undef __GMP_DECLARE_COMPOUND_OPERATOR_UI
4325#undef __GMP_DECLARE_INCREMENT_OPERATOR
4327#undef __GMPZ_DEFINE_COMPOUND_OPERATOR
4328#undef __GMPZZ_DEFINE_COMPOUND_OPERATOR
4329#undef __GMPZN_DEFINE_COMPOUND_OPERATOR
4330#undef __GMPZNN_DEFINE_COMPOUND_OPERATOR
4331#undef __GMPZNS_DEFINE_COMPOUND_OPERATOR
4332#undef __GMPZNU_DEFINE_COMPOUND_OPERATOR
4333#undef __GMPZND_DEFINE_COMPOUND_OPERATOR
4334#undef __GMPZNLD_DEFINE_COMPOUND_OPERATOR
4336#undef __GMPP_DEFINE_COMPOUND_OPERATOR
4337#undef __GMPNN_DEFINE_COMPOUND_OPERATOR
4338#undef __GMPNS_DEFINE_COMPOUND_OPERATOR
4339#undef __GMPNU_DEFINE_COMPOUND_OPERATOR
4340#undef __GMPND_DEFINE_COMPOUND_OPERATOR
4341#undef __GMPNLD_DEFINE_COMPOUND_OPERATOR
4342#undef __GMPN_DEFINE_COMPOUND_OPERATOR
4343#undef __GMP_DEFINE_COMPOUND_OPERATOR
4345#undef __GMPZ_DEFINE_COMPOUND_OPERATOR
4346#undef __GMPZZ_DEFINE_COMPOUND_OPERATOR
4347#undef __GMPQ_DEFINE_COMPOUND_OPERATOR
4348#undef __MPFR_DEFINE_COMPOUND_OPERATOR
4350#undef __GMP_DEFINE_COMPOUND_OPERATOR_UI
4351#undef __GMPZ_DEFINE_COMPOUND_OPERATOR_UI
4352#undef __GMPQ_DEFINE_COMPOUND_OPERATOR_UI
4353#undef __MPFR_DEFINE_COMPOUND_OPERATOR_UI
4355#undef __GMP_DEFINE_INCREMENT_OPERATOR
4356#undef __GMPZ_DEFINE_INCREMENT_OPERATOR
4357#undef __GMPQ_DEFINE_INCREMENT_OPERATOR
4358#undef __MPFR_DEFINE_INCREMENT_OPERATOR
static void set_dprec(mpfr_prec_t p=53)
static mpfr_prec_t get_dprec()
static void set_base(int b=10)
static void set_rnd(mpfr_rnd_t r=GMP_RNDN)
static mpfr_rnd_t get_rnd()
__gmp_expr(const val1_type &val1, const val2_type &val2)
const val2_type & get_val2() const
__gmp_binary_expr< val1_type, val2_type, Op > expr
unsigned long int get_prec() const
const val1_type & get_val1() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int=0) const
__gmp_expr(const val1_type &val1, const val2_type &val2)
const val1_type & get_val1() const
const val2_type & get_val2() const
unsigned long int get_prec() const
__gmp_binary_expr< val1_type, val2_type, Op > expr
__gmp_expr< T, T > val2_type
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int=0) const
const val2_type & get_val2() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
__gmp_expr(const val1_type &val1, const val2_type &val2)
unsigned long int get_prec() const
__gmp_binary_expr< val1_type, val2_type, Op > expr
const val1_type & get_val1() const
__gmp_expr< T, V > val2_type
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
__gmp_expr(const val1_type &val1, const val2_type &val2)
const val1_type & get_val1() const
__gmp_expr< T, T > val1_type
__gmp_binary_expr< val1_type, val2_type, Op > expr
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int=0) const
const val2_type & get_val2() const
unsigned long int get_prec() const
__gmp_expr(const val1_type &val1, const val2_type &val2)
__gmp_expr< T, T > val1_type
const val2_type & get_val2() const
__gmp_binary_expr< val1_type, val2_type, Op > expr
const val1_type & get_val1() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int=0) const
unsigned long int get_prec() const
__gmp_expr< T, T > val2_type
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
__gmp_expr< T, T > val1_type
const val1_type & get_val1() const
__gmp_expr< U, V > val2_type
__gmp_expr(const val1_type &val1, const val2_type &val2)
const val2_type & get_val2() const
unsigned long int get_prec() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
__gmp_binary_expr< val1_type, val2_type, Op > expr
__gmp_expr< T, T > val1_type
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
__gmp_expr(const val1_type &val1, const val2_type &val2)
__gmp_binary_expr< val1_type, val2_type, Op > expr
const val1_type & get_val1() const
__gmp_expr< T, U > val2_type
unsigned long int get_prec() const
const val2_type & get_val2() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
__gmp_binary_expr< val1_type, val2_type, Op > expr
__gmp_expr(const val1_type &val1, const val2_type &val2)
__gmp_expr< T, U > val1_type
const val2_type & get_val2() const
unsigned long int get_prec() const
const val1_type & get_val1() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
const val2_type & get_val2() const
const val1_type & get_val1() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
__gmp_expr< V, W > val2_type
__gmp_binary_expr< val1_type, val2_type, Op > expr
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
__gmp_expr< T, U > val1_type
__gmp_expr(const val1_type &val1, const val2_type &val2)
unsigned long int get_prec() const
unsigned long int get_prec() const
__gmp_expr< T, U > val1_type
__gmp_expr< T, T > val2_type
const val1_type & get_val1() const
__gmp_binary_expr< val1_type, val2_type, Op > expr
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
__gmp_expr(const val1_type &val1, const val2_type &val2)
const val2_type & get_val2() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
__gmp_expr< T, V > val2_type
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
const val1_type & get_val1() const
const val2_type & get_val2() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
unsigned long int get_prec() const
__gmp_expr(const val1_type &val1, const val2_type &val2)
__gmp_expr< T, U > val1_type
__gmp_binary_expr< val1_type, val2_type, Op > expr
__gmp_expr< U, V > val1_type
__gmp_binary_expr< val1_type, val2_type, Op > expr
const val2_type & get_val2() const
__gmp_expr(const val1_type &val1, const val2_type &val2)
__gmp_expr< T, T > val2_type
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
unsigned long int get_prec() const
const val1_type & get_val1() const
__gmp_expr(const val1_type &val1, const val2_type &val2)
__gmp_binary_expr< val1_type, val2_type, Op > expr
__gmp_expr< U, V > val1_type
const val2_type & get_val2() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
__gmp_expr< T, W > val2_type
unsigned long int get_prec() const
const val1_type & get_val1() const
__gmp_unary_expr< val_type, Op > expr
__gmp_expr(const val_type &val)
unsigned long int get_prec() const
const val_type & get_val() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int=0) const
__gmp_unary_expr< val_type, Op > expr
const val_type & get_val() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int=0) const
unsigned long int get_prec() const
__gmp_expr< T, T > val_type
__gmp_expr(const val_type &val)
__gmp_expr< T, U > val_type
__gmp_unary_expr< val_type, Op > expr
const val_type & get_val() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p) const
unsigned long int get_prec() const
__gmp_expr(const val_type &val)
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int prec) const
__gmp_void_expr< Op > expr
unsigned long int get_prec() const
void eval(typename __gmp_resolve_expr< T >::ptr_type p, unsigned long int=0) const
unsigned long int get_prec() const
__gmp_expr(gmp_randstate_t s, unsigned long int l)
__gmp_randstate_struct * state
void eval(mpfr_ptr f, unsigned long int prec) const
int set_str(const std::string &s, int base)
__gmp_expr(unsigned long int l)
__gmp_expr(const std::string &s)
int set_str(const char *s, int base)
__gmp_expr(const __gmp_expr &f)
__gmp_expr(signed short int s, unsigned long int prec)
__gmp_expr & operator=(const __gmp_expr &f)
void prec_round(unsigned long int prec)
__gmp_expr(mpfr_srcptr f, unsigned long int prec)
__gmp_expr(const __gmp_expr< T, U > &expr, unsigned long int prec)
__gmp_expr(signed long int l)
__gmp_expr(const __gmp_expr &f, unsigned long int prec)
__gmp_expr(signed char c)
__gmp_expr(unsigned char c, unsigned long int prec)
__gmp_expr< value_type, value_type > & operator=(const __gmp_expr< T, U > &expr)
__gmp_expr & operator=(const std::string &s)
__gmp_expr(unsigned short int s)
signed long int get_si() const
__gmp_expr(unsigned int i)
__gmp_expr(signed char c, unsigned long int prec)
__gmp_expr(signed short int s)
bool fits_slong_p() const
__gmp_expr(const std::string &s, unsigned long int prec, int base=0)
__gmp_expr & operator=(unsigned char c)
__gmp_expr & operator=(unsigned long int l)
__gmp_expr & operator=(signed int i)
unsigned long int get_ui() const
mpfr_srcptr get_mpfr_t() const
unsigned long int get_prec() const
__gmp_expr(unsigned long int l, unsigned long int prec)
void set_prec(unsigned long int prec)
__gmp_expr(signed int i, unsigned long int prec)
__gmp_expr & operator=(signed long int l)
__gmp_expr(unsigned int i, unsigned long int prec)
std::string get_str(mp_exp_t &expo, int base=10, size_t size=0) const
bool fits_ulong_p() const
__gmp_expr & operator=(unsigned short int s)
__gmp_expr(unsigned short int s, unsigned long int prec)
__gmp_expr & operator=(double d)
__gmp_expr(const char *s, unsigned long int prec, int base=0)
__gmp_expr(unsigned char c)
void set_prec_raw(unsigned long int prec)
mpfr_srcptr __get_mp() const
__gmp_expr & operator=(unsigned int i)
__gmp_expr(const __gmp_expr< T, U > &expr)
__gmp_expr & operator=(signed short int s)
__gmp_expr & operator=(signed char c)
__gmp_expr(double d, unsigned long int prec)
__gmp_expr(signed long int l, unsigned long int prec)
bool fits_sshort_p() const
__gmp_expr & operator=(const char *s)
__gmp_expr(mpfr_srcptr f)
__gmp_expr(const char *s)
bool fits_ushort_p() const
__gmp_expr & operator=(float f)
__gmp_expr(float f, unsigned long int prec)
__gmp_expr(const char *s, int base)
__gmp_expr(unsigned short int s)
__gmp_expr & operator=(float f)
__gmp_expr< value_type, value_type > & operator=(const __gmp_expr< T, U > &expr)
const mpz_class & get_num() const
__gmp_expr & operator=(unsigned long int l)
__gmp_expr(signed short int s)
__gmp_expr & operator=(signed char c)
__gmp_expr & operator=(signed int i)
__gmp_expr(signed long int l)
const mpz_class & get_den() const
__gmp_expr(const std::string &s, int base)
mpz_srcptr get_num_mpz_t() const
__gmp_expr & operator=(unsigned char c)
__gmp_expr & operator=(signed short int s)
__gmp_expr(unsigned long int l)
mpq_srcptr get_mpq_t() const
__gmp_expr(unsigned int i)
mpz_srcptr get_den_mpz_t() const
__gmp_expr & operator=(const std::string &s)
__gmp_expr(const __gmp_expr< T, U > &expr)
int set_str(const char *s, int base)
__gmp_expr & operator=(double d)
__gmp_expr(const __gmp_expr &q)
unsigned long int get_prec() const
__gmp_expr & operator=(const char *s)
__gmp_expr(unsigned char c)
mpq_srcptr __get_mp() const
__gmp_expr & operator=(unsigned short int s)
std::string get_str(int base=10) const
__gmp_expr & operator=(signed long int l)
__gmp_expr(signed char c)
__gmp_expr(const std::string &s)
__gmp_expr & operator=(unsigned int i)
__gmp_expr & operator=(const __gmp_expr &q)
__gmp_expr(const mpz_class &num, const mpz_class &den)
int set_str(const std::string &s, int base)
__gmp_expr(const char *s)
unsigned long int get_prec() const
__gmp_expr(gmp_randstate_t s, unsigned long int l)
void eval(mpz_ptr z) const
__gmp_randstate_struct * state
__gmp_expr(gmp_randstate_t s, const mpz_class &z)
__gmp_randstate_struct * state
void eval(mpz_ptr z) const
unsigned long int get_prec() const
int set_str(const std::string &s, int base)
__gmp_expr & operator=(unsigned short int s)
signed long int get_si() const
__gmp_expr(signed char c)
mpz_srcptr get_mpz_t() const
__gmp_expr(unsigned char c)
__gmp_expr & operator=(signed char c)
__gmp_expr(const char *s)
__gmp_expr & operator=(unsigned int i)
__gmp_expr(const char *s, int base)
std::string get_str(int base=10) const
__gmp_expr & operator=(const __gmp_expr &z)
__gmp_expr & operator=(float f)
bool fits_sshort_p() const
__gmp_expr(const __gmp_expr &z)
__gmp_expr(const std::string &s)
__gmp_expr(unsigned long int l)
__gmp_expr(unsigned short int s)
bool fits_slong_p() const
__gmp_expr(unsigned int i)
__gmp_expr(const __gmp_expr< T, U > &expr)
__gmp_expr< value_type, value_type > & operator=(const __gmp_expr< T, U > &expr)
unsigned long int get_ui() const
__gmp_expr & operator=(unsigned long int l)
__gmp_expr & operator=(unsigned char c)
bool fits_ushort_p() const
__gmp_expr(signed long int l)
__gmp_expr(signed short int s)
__gmp_expr & operator=(signed int i)
__gmp_expr & operator=(const std::string &s)
__gmp_expr(const std::string &s, int base)
__gmp_expr & operator=(signed short int s)
__gmp_expr & operator=(double d)
int set_str(const char *s, int base)
bool fits_ulong_p() const
__gmp_expr & operator=(const char *s)
unsigned long int get_prec() const
mpz_srcptr __get_mp() const
__gmp_expr & operator=(signed long int l)
__gmp_expr< mpz_t, __gmp_urandomb_value > get_z_bits(const mpz_class &z)
__gmp_expr< mpz_t, __gmp_urandomm_value > get_z_range(const mpz_class &z)
void operator=(const gmp_randclass &)
__gmp_expr< mpfr_t, __gmp_urandomb_value > get_f(unsigned long int prec=0)
gmp_randclass(gmp_randalg_t alg, unsigned long int size)
gmp_randclass(__gmp_randinit_default_t *f)
gmp_randclass(const gmp_randclass &)
gmp_randclass(__gmp_randinit_lc_2exp_t *f, mpz_class z, unsigned long int l1, unsigned long int l2)
void seed(const mpz_class &z)
__gmp_expr< mpz_t, __gmp_urandomb_value > get_z_bits(unsigned long int l)
gmp_randclass(__gmp_randinit_lc_2exp_size_t *f, unsigned long int size)
void seed(unsigned long int s)
istream & operator>>(istream &s, mpfr_ptr a)
void mpz_set_mpfr(mpz_ptr w, mpfr_srcptr u)
void mpq_set_mpfr(mpq_ptr w, mpfr_srcptr u)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_log10_function > > log10(const __gmp_expr< T, U > &expr)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_hypot_function > > hypot(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
#define __GMPZQ_DEFINE_EXPR(eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_cot_function > > cot(const __gmp_expr< T, U > &expr)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_jn_function > > jn(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_sec_function > > sec(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_log2_function > > log2(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_y1_function > > y1(const __gmp_expr< T, U > &expr)
#define __GMP_DEFINE_BINARY_FUNCTION_UI_UI(T, fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_csch_function > > csch(const __gmp_expr< T, U > &expr)
void __gmp_randinit_lc_2exp_t(gmp_randstate_t, mpz_srcptr, unsigned long int, unsigned long int)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_cos_function > > cos(const __gmp_expr< T, U > &expr)
__gmp_expr< mpfr_t, __gmp_void_expr< __gmp_const_pi_function > > const_pi()
int cmpabs(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_yn_function > > yn(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
__gmp_expr< mpfr_t, __gmp_void_expr< __gmp_const_euler_function > > const_euler()
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_sqr_function > > sqr(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_frac_function > > frac(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_acos_function > > acos(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_sech_function > > sech(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_exp_function > > exp(const __gmp_expr< T, U > &expr)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_max_function > > max(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
void __gmp_set_expr(mpz_ptr, const __gmp_expr< T, U > &)
__gmp_expr< mpfr_t, __gmp_unary_expr< unsigned long int, __gmp_zeta_function > > zeta_ui(unsigned long int l)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_dim_function > > dim(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_exp2_function > > exp2(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_asin_function > > asin(const __gmp_expr< T, U > &expr)
#define __GMPZ_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun)
#define __GMPP_DECLARE_COMPOUND_OPERATOR(fun)
#define __GMP_DEFINE_BINARY_FUNCTION(fun, eval_fun)
__gmp_expr< mpfr_t, __gmp_unary_expr< unsigned long int, __gmp_fac_ui_function > > fac_ui(unsigned long int l)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_log_function > > log(const __gmp_expr< T, U > &expr)
__gmp_expr< mpfr_t, __gmp_void_expr< __gmp_const_catalan_function > > const_catalan()
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_cosh_function > > cosh(const __gmp_expr< T, U > &expr)
#define __GMP_DECLARE_COMPOUND_OPERATOR(fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_erf_function > > erf(const __gmp_expr< T, U > &expr)
#define __MPFR_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_sin_function > > sin(const __gmp_expr< T, U > &expr)
__gmp_expr< mpfr_t, __gmp_void_expr< __gmp_const_log2_function > > const_log2()
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_erfc_function > > erfc(const __gmp_expr< T, U > &expr)
#define __GMP_DECLARE_COMPOUND_OPERATOR_UI(fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_acosh_function > > acosh(const __gmp_expr< T, U > &expr)
#define __GMPQ_DEFINE_INCREMENT_OPERATOR(fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_floor_function > > floor(const __gmp_expr< T, U > &expr)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_remainder_function > > remainder(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_sqrt_function > > sqrt(const __gmp_expr< T, U > &expr)
void mpz_set_mpfr(mpz_ptr w, mpfr_srcptr u)
#define __GMP_DEFINE_TERNARY_EXPR(eval_fun1, eval_fun2, eval_both)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_abs_function > > abs(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_tanh_function > > tanh(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_csc_function > > csc(const __gmp_expr< T, U > &expr)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_atan2_function > > atan2(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_atan_function > > atan(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_tan_function > > tan(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_atanh_function > > atanh(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_zeta_function > > zeta(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_coth_function > > coth(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_log1p_function > > log1p(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_gamma_function > > gamma(const __gmp_expr< T, U > &expr)
#define __GMP_DEFINE_UNARY_FUNCTION_UI(T, fun, eval_fun)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_min_function > > min(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
void mpq_set_mpfr(mpq_ptr w, mpfr_srcptr u)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_agm_function > > agm(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
#define __GMPZ_DEFINE_INCREMENT_OPERATOR(fun, eval_fun)
#define __MPFR_DEFINE_COMPOUND_OPERATOR(fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_cbrt_function > > cbrt(const __gmp_expr< T, U > &expr)
#define __GMP_DEFINE_UNARY_TYPE_FUNCTION(type, fun, eval_fun)
#define __GMPZZ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun)
#define __GMPQ_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_j0_function > > j0(const __gmp_expr< T, U > &expr)
#define __GMP_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_ceil_function > > ceil(const __gmp_expr< T, U > &expr)
#define __GMPQ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_y0_function > > y0(const __gmp_expr< T, U > &expr)
std::istream & operator>>(std::istream &, mpfr_ptr)
__gmp_expr< typename __gmp_resolve_expr< T, V >::value_type, __gmp_binary_expr< __gmp_expr< T, U >, __gmp_expr< V, W >, __gmp_pow_function > > pow(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
__gmp_expr< T, __gmp_binary_expr< __gmp_expr< T, U >, unsigned long int, __gmp_root_function > > root(const __gmp_expr< T, U > &expr, unsigned long int l)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_trunc_function > > trunc(const __gmp_expr< T, U > &expr)
#define __GMPZ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun)
__gmp_expr< mpfr_t, __gmp_binary_expr< unsigned long int, unsigned long int, __gmp_pow_function > > pow_ui(unsigned long int r, unsigned long int l)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_asinh_function > > asinh(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_j1_function > > j1(const __gmp_expr< T, U > &expr)
std::ostream & operator<<(std::ostream &, mpfr_srcptr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_rint_function > > rint(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_sinh_function > > sinh(const __gmp_expr< T, U > &expr)
#define __GMP_DEFINE_VOID_FUNCTION(T, fun, eval_fun)
int __gmp_randinit_lc_2exp_size_t(gmp_randstate_t, unsigned long int)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_expm1_function > > expm1(const __gmp_expr< T, U > &expr)
#define __MPFR_DEFINE_INCREMENT_OPERATOR(fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_lngamma_function > > lngamma(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_eint_function > > eint(const __gmp_expr< T, U > &expr)
int cmp(const __gmp_expr< T, U > &expr1, const __gmp_expr< V, W > &expr2)
#define __GMP_DEFINE_UNARY_FUNCTION(fun, eval_fun)
#define __GMP_DECLARE_INCREMENT_OPERATOR(fun)
int sgn(const __gmp_expr< T, U > &expr)
void __gmp_randinit_default_t(gmp_randstate_t)
#define __GMP_DEFINE_BINARY_FUNCTION_UI(fun, eval_fun)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_lgamma_function > > lgamma(const __gmp_expr< T, U > &expr)
__gmp_expr< T, __gmp_unary_expr< __gmp_expr< T, U >, __gmp_exp10_function > > exp10(const __gmp_expr< T, U > &expr)
int mpfr_d_sub(mpfr_ptr z, double a, mpfr_srcptr x, mpfr_rnd_t r)
int mpfr_mul_d(mpfr_ptr z, mpfr_srcptr x, double a, mpfr_rnd_t r)
int mpfr_div_d(mpfr_ptr z, mpfr_srcptr x, double a, mpfr_rnd_t r)
int mpfr_add_d(mpfr_ptr z, mpfr_srcptr x, double a, mpfr_rnd_t r)
int mpfr_d_div(mpfr_ptr z, double a, mpfr_srcptr x, mpfr_rnd_t r)
int mpfr_sub_d(mpfr_ptr z, mpfr_srcptr x, double a, mpfr_rnd_t r)
static void eval(mpz_ptr z, mpz_srcptr w)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpq_ptr q, mpq_srcptr r)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
__gmp_alloc_cstring(char *s)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static void eval(mpz_ptr z, mpz_srcptr w, double d)
static void eval(mpfr_ptr f, double d, mpfr_srcptr g)
static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, double d)
static void eval(mpz_ptr z, signed long int l, mpz_srcptr w)
static void eval(mpq_ptr q, signed long int l, mpq_srcptr r)
static void eval(mpfr_ptr f, mpfr_srcptr g, signed long int l)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w)
static void eval(mpq_ptr q, mpq_srcptr r, double d)
static void eval(mpz_ptr z, double d, mpz_srcptr w)
static void eval(mpfr_ptr f, unsigned long int l, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r)
static void eval(mpq_ptr q, mpq_srcptr r, signed long int l)
static void eval(mpq_ptr q, double d, mpq_srcptr r)
static void eval(mpz_ptr z, mpz_srcptr w, signed long int l)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l)
static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
static void eval(mpfr_ptr f, signed long int l, mpfr_srcptr g)
static bool eval(mpq_srcptr q, unsigned long int l)
static bool eval(mpz_srcptr z, signed long int l)
static bool eval(double d, mpfr_srcptr f)
static bool eval(mpz_srcptr z, double d)
static bool eval(signed long int l, mpq_srcptr q)
static bool eval(double d, mpq_srcptr q)
static bool eval(unsigned long int l, mpq_srcptr q)
static bool eval(mpq_srcptr q, mpq_srcptr r)
static bool eval(signed long int l, mpz_srcptr z)
static bool eval(double d, mpz_srcptr z)
static bool eval(mpfr_srcptr f, double d)
static bool eval(mpq_srcptr q, double d)
static bool eval(unsigned long int l, mpfr_srcptr f)
static bool eval(mpfr_srcptr f, signed long int l)
static bool eval(mpz_srcptr z, unsigned long int l)
static bool eval(mpfr_srcptr f, unsigned long int l)
static bool eval(mpz_srcptr z, mpz_srcptr w)
static bool eval(signed long int l, mpfr_srcptr f)
static bool eval(mpfr_srcptr f, mpfr_srcptr g)
static bool eval(mpq_srcptr q, signed long int l)
static bool eval(unsigned long int l, mpz_srcptr z)
__gmp_resolve_ref< U >::ref_type val2
__gmp_resolve_ref< T >::ref_type val1
__gmp_binary_expr(const T &v1, const U &v2)
static bool eval(signed long int l, mpq_srcptr q)
static bool eval(mpfr_srcptr f, double d)
static bool eval(signed long int l, mpz_srcptr z)
static bool eval(mpz_srcptr z, signed long int l)
static bool eval(mpq_srcptr q, double d)
static bool eval(signed long int l, mpfr_srcptr f)
static bool eval(double d, mpfr_srcptr f)
static bool eval(unsigned long int l, mpfr_srcptr f)
static bool eval(mpq_srcptr q, mpq_srcptr r)
static bool eval(mpfr_srcptr f, unsigned long int l)
static bool eval(double d, mpq_srcptr q)
static bool eval(mpz_srcptr z, unsigned long int l)
static bool eval(mpfr_srcptr f, mpfr_srcptr g)
static bool eval(mpfr_srcptr f, signed long int l)
static bool eval(mpq_srcptr q, signed long int l)
static bool eval(mpz_srcptr z, double d)
static bool eval(unsigned long int l, mpq_srcptr q)
static bool eval(mpq_srcptr q, unsigned long int l)
static bool eval(double d, mpz_srcptr z)
static bool eval(mpz_srcptr z, mpz_srcptr w)
static bool eval(unsigned long int l, mpz_srcptr z)
static bool eval(mpfr_srcptr f, double d)
static bool eval(signed long int l, mpq_srcptr q)
static bool eval(signed long int l, mpz_srcptr z)
static bool eval(mpq_srcptr q, signed long int l)
static bool eval(mpfr_srcptr f, mpfr_srcptr g)
static bool eval(mpq_srcptr q, double d)
static bool eval(mpz_srcptr z, double d)
static bool eval(mpz_srcptr z, mpz_srcptr w)
static bool eval(mpz_srcptr z, unsigned long int l)
static bool eval(unsigned long int l, mpz_srcptr z)
static bool eval(signed long int l, mpfr_srcptr f)
static bool eval(mpq_srcptr q, mpq_srcptr r)
static bool eval(mpfr_srcptr f, unsigned long int l)
static bool eval(double d, mpq_srcptr q)
static bool eval(unsigned long int l, mpq_srcptr q)
static bool eval(mpfr_srcptr f, signed long int l)
static bool eval(mpz_srcptr z, signed long int l)
static bool eval(double d, mpz_srcptr z)
static bool eval(unsigned long int l, mpfr_srcptr f)
static bool eval(mpq_srcptr q, unsigned long int l)
static bool eval(double d, mpfr_srcptr f)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static bool eval(unsigned long int l, mpfr_srcptr f)
static bool eval(mpfr_srcptr f, unsigned long int l)
static bool eval(mpz_srcptr z, double d)
static bool eval(double d, mpq_srcptr q)
static bool eval(mpz_srcptr z, signed long int l)
static bool eval(signed long int l, mpq_srcptr q)
static bool eval(signed long int l, mpz_srcptr z)
static bool eval(mpq_srcptr q, mpq_srcptr r)
static bool eval(mpfr_srcptr f, double d)
static bool eval(mpq_srcptr q, double d)
static bool eval(double d, mpz_srcptr z)
static bool eval(mpq_srcptr q, unsigned long int l)
static bool eval(double d, mpfr_srcptr f)
static bool eval(unsigned long int l, mpq_srcptr q)
static bool eval(mpq_srcptr q, signed long int l)
static bool eval(mpz_srcptr z, unsigned long int l)
static bool eval(unsigned long int l, mpz_srcptr z)
static bool eval(mpz_srcptr z, mpz_srcptr w)
static bool eval(mpfr_srcptr f, signed long int l)
static bool eval(signed long int l, mpfr_srcptr f)
static bool eval(mpfr_srcptr f, mpfr_srcptr g)
static bool eval(mpfr_srcptr f, unsigned long int l)
static bool eval(signed long int l, mpz_srcptr z)
static bool eval(double d, mpz_srcptr z)
static bool eval(mpq_srcptr q, double d)
static bool eval(mpfr_srcptr f, mpfr_srcptr g)
static bool eval(double d, mpq_srcptr q)
static bool eval(mpfr_srcptr f, double d)
static bool eval(mpq_srcptr q, unsigned long int l)
static bool eval(mpz_srcptr z, mpz_srcptr w)
static bool eval(mpq_srcptr q, signed long int l)
static bool eval(unsigned long int l, mpfr_srcptr f)
static bool eval(unsigned long int l, mpz_srcptr z)
static bool eval(mpfr_srcptr f, signed long int l)
static bool eval(mpq_srcptr q, mpq_srcptr r)
static bool eval(signed long int l, mpq_srcptr q)
static bool eval(mpz_srcptr z, unsigned long int l)
static bool eval(mpz_srcptr z, signed long int l)
static bool eval(double d, mpfr_srcptr f)
static bool eval(unsigned long int l, mpq_srcptr q)
static bool eval(signed long int l, mpfr_srcptr f)
static bool eval(mpz_srcptr z, double d)
static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpq_ptr q, signed long int l, mpq_srcptr r)
static void eval(mpfr_ptr f, mpfr_srcptr g, signed long int l)
static void eval(mpq_ptr q, double d, mpq_srcptr r)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static void eval(mpfr_ptr f, signed long int l, mpfr_srcptr g)
static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w)
static void eval(mpfr_ptr f, mpfr_srcptr g, double d)
static void eval(mpq_ptr q, mpq_srcptr r, mpz_srcptr z)
static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr r)
static void eval(mpz_ptr z, mpz_srcptr w, double d)
static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
static void eval(mpz_ptr z, double d, mpz_srcptr w)
static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r)
static void eval(mpfr_ptr f, double d, mpfr_srcptr g)
static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpq_ptr q, mpq_srcptr r, signed long int l)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l)
static void eval(mpfr_ptr f, unsigned long int l, mpfr_srcptr g)
static void eval(mpq_ptr q, mpq_srcptr r, double d)
static void eval(mpz_ptr z, signed long int l, mpz_srcptr w)
static void eval(mpz_ptr z, mpz_srcptr w, signed long int l)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w)
static void eval(mpz_ptr z, signed long int l, mpz_srcptr w)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l)
static void eval(mpz_ptr z, mpz_srcptr w, signed long int l)
static void eval(mpz_ptr z, mpz_srcptr w, double d)
static void eval(mpz_ptr z, double d, mpz_srcptr w)
static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
static void eval(mpz_ptr z, double d, mpz_srcptr w)
static void eval(mpz_ptr z, mpz_srcptr w, double d)
static void eval(mpq_ptr q, signed long int l, mpq_srcptr r)
static void eval(mpq_ptr q, double d, mpq_srcptr r)
static void eval(mpfr_ptr f, double d, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, unsigned long int l, mpfr_srcptr g)
static void eval(mpq_ptr q, mpq_srcptr r, signed long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, double d)
static void eval(mpq_ptr q, mpq_srcptr r, double d)
static void eval(mpz_ptr z, mpz_srcptr w, signed long int l)
static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l)
static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w)
static void eval(mpz_ptr z, signed long int l, mpz_srcptr w)
static void eval(mpfr_ptr f, signed long int l, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, signed long int l)
static bool eval(mpz_srcptr z, mpz_srcptr w)
static bool eval(unsigned long int l, mpfr_srcptr f)
static bool eval(mpq_srcptr q, unsigned long int l)
static bool eval(signed long int l, mpq_srcptr q)
static bool eval(double d, mpq_srcptr q)
static bool eval(double d, mpz_srcptr z)
static bool eval(mpfr_srcptr f, unsigned long int l)
static bool eval(mpfr_srcptr f, signed long int l)
static bool eval(mpfr_srcptr f, mpfr_srcptr g)
static bool eval(mpq_srcptr q, mpq_srcptr r)
static bool eval(signed long int l, mpz_srcptr z)
static bool eval(signed long int l, mpfr_srcptr f)
static bool eval(double d, mpfr_srcptr f)
static bool eval(unsigned long int l, mpq_srcptr q)
static bool eval(mpz_srcptr z, signed long int l)
static bool eval(mpq_srcptr q, double d)
static bool eval(mpfr_srcptr f, double d)
static bool eval(mpq_srcptr q, signed long int l)
static bool eval(unsigned long int l, mpz_srcptr z)
static bool eval(mpz_srcptr z, unsigned long int l)
static bool eval(mpz_srcptr z, double d)
static void eval(mpq_ptr q, mpq_srcptr r, double d)
static void eval(mpz_ptr z, mpz_srcptr w, double d)
static void eval(mpq_ptr q, signed long int l, mpq_srcptr r)
static void eval(mpfr_ptr f, signed long int l, mpfr_srcptr g)
static void eval(mpz_ptr z, signed long int l, mpz_srcptr w)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static void eval(mpfr_ptr f, unsigned long int l, mpfr_srcptr g)
static void eval(mpq_ptr q, mpq_srcptr r, mpz_srcptr z)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l)
static void eval(mpz_ptr z, unsigned long int l, mpz_srcptr w)
static void eval(mpq_ptr q, mpq_srcptr r, signed long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l)
static void eval(mpq_ptr q, unsigned long int l, mpq_srcptr r)
static void eval(mpz_ptr z, double d, mpz_srcptr w)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, mpfr_srcptr g, signed long int l)
static void eval(mpq_ptr q, double d, mpq_srcptr r)
static void eval(mpfr_ptr f, mpfr_srcptr g, double d)
static void eval(mpfr_ptr f, double d, mpfr_srcptr g)
static void eval(mpq_ptr q, mpq_srcptr r, mpq_srcptr s)
static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr r)
static void eval(mpz_ptr z, mpz_srcptr w, signed long int l)
static void eval(mpq_ptr q, mpq_srcptr r, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static int eval(mpfr_srcptr f, double d)
static int eval(mpq_srcptr q, signed long int l)
static int eval(mpfr_srcptr f, unsigned long int l)
static int eval(unsigned long int l, mpfr_srcptr f)
static int eval(mpfr_srcptr f, signed long int l)
static int eval(mpz_srcptr z, unsigned long int l)
static int eval(signed long int l, mpfr_srcptr f)
static int eval(mpz_srcptr z, signed long int l)
static int eval(signed long int l, mpq_srcptr q)
static int eval(mpfr_srcptr f, mpfr_srcptr g)
static int eval(mpq_srcptr q, unsigned long int l)
static int eval(mpz_srcptr z, double d)
static int eval(mpq_srcptr q, mpq_srcptr r)
static int eval(mpz_srcptr z, mpz_srcptr w)
static int eval(unsigned long int l, mpq_srcptr q)
static int eval(mpq_srcptr q, double d)
static int eval(double d, mpq_srcptr q)
static int eval(double d, mpz_srcptr z)
static int eval(unsigned long int l, mpz_srcptr z)
static int eval(double d, mpfr_srcptr f)
static int eval(signed long int l, mpz_srcptr z)
static int eval(mpfr_srcptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f)
static void eval(mpfr_ptr f)
static void eval(mpfr_ptr f)
static void eval(mpfr_ptr f)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, double d)
static void eval(mpfr_ptr f, double d, mpfr_srcptr g)
static void eval(mpfr_ptr f, unsigned long int l, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, signed long int l, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, signed long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, long h, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, mpfr_srcptr g, long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpz_srcptr z)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpfr_ptr f, unsigned long int l, unsigned long int h)
static void eval(mpfr_ptr f, unsigned long int l, mpfr_srcptr h)
static void eval(mpz_ptr z, gmp_randstate_t s, unsigned long int l)
static void eval(mpz_ptr z, gmp_randstate_t s, mpz_srcptr w)
static void eval(mpfr_ptr f, gmp_randstate_t s, unsigned long int prec)
static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr h)
const __gmp_expr< T, U > & ref_type
const __gmp_expr< T, T > & temp_type
__gmp_expr< T, T > temp_type
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static int eval(mpq_srcptr q)
static int eval(mpz_srcptr z)
static int eval(mpfr_srcptr f)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpz_ptr z, mpz_srcptr w)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, double d)
static void eval(mpz_ptr z, mpz_srcptr w, signed long int l, mpz_srcptr v)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, signed long int l)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, unsigned long int l)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, mpz_srcptr u)
static void eval(mpz_ptr z, mpz_srcptr w, double d, mpz_srcptr v)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l, mpz_srcptr v)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, double d)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, mpz_srcptr u)
static void eval(mpz_ptr z, mpz_srcptr w, double d, mpz_srcptr v)
static void eval(mpz_ptr z, mpz_srcptr w, unsigned long int l, mpz_srcptr v)
static void eval(mpz_ptr z, mpz_srcptr w, signed long int l, mpz_srcptr v)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, unsigned long int l)
static void eval(mpz_ptr z, mpz_srcptr w, mpz_srcptr v, signed long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpz_ptr z, mpz_srcptr w)
static void eval(mpq_ptr q)
static void eval(mpz_ptr z)
static void eval(mpfr_ptr f)
__gmp_unary_expr(const T &v)
__gmp_resolve_ref< T >::ref_type val
static void eval(mpz_ptr z)
static void eval(mpq_ptr q)
static void eval(mpfr_ptr f)
static void eval(mpq_ptr q, mpq_srcptr r)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpz_ptr z, mpz_srcptr w)
static void eval(mpz_ptr z, mpz_srcptr w)
static void eval(mpq_ptr q, mpq_srcptr r)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, mpfr_srcptr g)
static void eval(mpfr_ptr f, long h, mpfr_srcptr g)
static void eval(mpfr_ptr f, unsigned long int l)
static void eval(mpfr_ptr f, mpfr_srcptr g)