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__
95std::istream&
operator>> (std::istream &, mpfr_ptr);
96std::ostream&
operator<< (std::ostream &, mpfr_srcptr);
109 { mpfr_set_default_rounding_mode(
r);
rnd =
r; }
110 static mpfr_prec_t
get_dprec() {
return mpfr_get_default_prec(); }
112 { mpfr_set_default_prec(p); }
123 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_set(z,
w); }
124 static void eval(mpq_ptr q, mpq_srcptr
r) { mpq_set(q,
r); }
125 static void eval(mpfr_ptr f, mpfr_srcptr g)
131 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_neg(z,
w); }
132 static void eval(mpq_ptr q, mpq_srcptr
r) { mpq_neg(q,
r); }
133 static void eval(mpfr_ptr f, mpfr_srcptr g)
139 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_com(z,
w); }
144 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
145 { mpz_add(z,
w, v); }
147 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
148 { mpz_add_ui(z,
w,
l); }
149 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
150 { mpz_add_ui(z,
w,
l); }
151 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
156 mpz_sub_ui(z,
w, -
l);
158 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
163 mpz_sub_ui(z,
w, -
l);
165 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
168 mpz_init_set_d(temp, d);
172 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
175 mpz_init_set_d(temp, d);
180 static void eval(mpq_ptr q, mpq_srcptr
r, mpq_srcptr s)
181 { mpq_add(q,
r, s); }
183 static void eval(mpq_ptr q, mpq_srcptr
r,
unsigned long int l)
184 { mpq_set(q,
r); mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l); }
185 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr
r)
186 { mpq_set(q,
r); mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l); }
187 static void eval(mpq_ptr q, mpq_srcptr
r,
signed long int l)
191 mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l);
193 mpz_submul_ui(mpq_numref(q), mpq_denref(q), -
l);
195 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr
r)
199 mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l);
201 mpz_submul_ui(mpq_numref(q), mpq_denref(q), -
l);
203 static void eval(mpq_ptr q, mpq_srcptr
r,
double d)
211 static void eval(mpq_ptr q,
double d, mpq_srcptr
r)
220 static void eval(mpq_ptr q, mpq_srcptr
r, mpz_srcptr z)
221 { mpq_set(q,
r); mpz_addmul(mpq_numref(q), mpq_denref(q), z); }
222 static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr
r)
223 { mpq_set(q,
r); mpz_addmul(mpq_numref(q), mpq_denref(q), z); }
225 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
227 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
229 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
231 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
233 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
235 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
237 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
243 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
244 { mpz_sub(z,
w, v); }
246 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
247 { mpz_sub_ui(z,
w,
l); }
248 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
249 { mpz_ui_sub(z,
l,
w); }
250 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
255 mpz_add_ui(z,
w, -
l);
257 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
263 mpz_add_ui(z,
w, -
l);
267 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
270 mpz_init_set_d(temp, d);
274 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
277 mpz_init_set_d(temp, d);
282 static void eval(mpq_ptr q, mpq_srcptr
r, mpq_srcptr s)
283 { mpq_sub(q,
r, s); }
285 static void eval(mpq_ptr q, mpq_srcptr
r,
unsigned long int l)
286 { mpq_set(q,
r); mpz_submul_ui(mpq_numref(q), mpq_denref(q),
l); }
287 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr
r)
288 { mpq_neg(q,
r); mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l); }
289 static void eval(mpq_ptr q, mpq_srcptr
r,
signed long int l)
293 mpz_submul_ui(mpq_numref(q), mpq_denref(q),
l);
295 mpz_addmul_ui(mpq_numref(q), mpq_denref(q), -
l);
297 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr
r)
301 mpz_addmul_ui(mpq_numref(q), mpq_denref(q),
l);
303 mpz_submul_ui(mpq_numref(q), mpq_denref(q), -
l);
305 static void eval(mpq_ptr q, mpq_srcptr
r,
double d)
313 static void eval(mpq_ptr q,
double d, mpq_srcptr
r)
322 static void eval(mpq_ptr q, mpq_srcptr
r, mpz_srcptr z)
323 { mpq_set(q,
r); mpz_submul(mpq_numref(q), mpq_denref(q), z); }
324 static void eval(mpq_ptr q, mpz_srcptr z, mpq_srcptr
r)
325 { mpq_neg(q,
r); mpz_addmul(mpq_numref(q), mpq_denref(q), z); }
327 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
330 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
332 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
334 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
336 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
338 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
340 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
346 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
347 { mpz_mul(z,
w, v); }
349 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
350 { mpz_mul_ui(z,
w,
l); }
351 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
352 { mpz_mul_ui(z,
w,
l); }
353 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
354 { mpz_mul_si (z,
w,
l); }
355 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
356 { mpz_mul_si (z,
w,
l); }
357 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
360 mpz_init_set_d(temp, d);
364 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
367 mpz_init_set_d(temp, d);
372 static void eval(mpq_ptr q, mpq_srcptr
r, mpq_srcptr s)
373 { mpq_mul(q,
r, s); }
375 static void eval(mpq_ptr q, mpq_srcptr
r,
unsigned long int l)
379 mpq_set_ui(temp,
l, 1);
383 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr
r)
387 mpq_set_ui(temp,
l, 1);
391 static void eval(mpq_ptr q, mpq_srcptr
r,
signed long int l)
395 mpq_set_si(temp,
l, 1);
399 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr
r)
403 mpq_set_si(temp,
l, 1);
407 static void eval(mpq_ptr q, mpq_srcptr
r,
double d)
415 static void eval(mpq_ptr q,
double d, mpq_srcptr
r)
424 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
427 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
429 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
431 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
433 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
435 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
437 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
443 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
444 { mpz_tdiv_q(z,
w, v); }
446 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
447 { mpz_tdiv_q_ui(z,
w,
l); }
448 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
452 if (mpz_fits_ulong_p(
w))
453 mpz_set_ui(z,
l / mpz_get_ui(
w));
460 if (mpz_fits_ulong_p(z))
462 mpz_set_ui(z,
l / mpz_get_ui(z));
469 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
472 mpz_tdiv_q_ui(z,
w,
l);
475 mpz_tdiv_q_ui(z,
w, -
l);
479 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
481 if (mpz_fits_slong_p(
w))
482 mpz_set_si(z,
l / mpz_get_si(
w));
487 mpz_set_si (z, (mpz_cmpabs_ui (
w, (
l >= 0 ?
l : -
l)) == 0 ? -1 : 0));
490 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
493 mpz_init_set_d(temp, d);
494 mpz_tdiv_q(z,
w, temp);
497 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
500 mpz_init_set_d(temp, d);
501 mpz_tdiv_q(z, temp,
w);
505 static void eval(mpq_ptr q, mpq_srcptr
r, mpq_srcptr s)
506 { mpq_div(q,
r, s); }
508 static void eval(mpq_ptr q, mpq_srcptr
r,
unsigned long int l)
512 mpq_set_ui(temp,
l, 1);
516 static void eval(mpq_ptr q,
unsigned long int l, mpq_srcptr
r)
520 mpq_set_ui(temp,
l, 1);
524 static void eval(mpq_ptr q, mpq_srcptr
r,
signed long int l)
528 mpq_set_si(temp,
l, 1);
532 static void eval(mpq_ptr q,
signed long int l, mpq_srcptr
r)
536 mpq_set_si(temp,
l, 1);
540 static void eval(mpq_ptr q, mpq_srcptr
r,
double d)
548 static void eval(mpq_ptr q,
double d, mpq_srcptr
r)
557 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
560 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
562 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
564 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
566 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
568 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
570 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
576 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
577 { mpz_tdiv_r(z,
w, v); }
579 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
580 { mpz_tdiv_r_ui(z,
w,
l); }
581 static void eval(mpz_ptr z,
unsigned long int l, mpz_srcptr
w)
585 if (mpz_fits_ulong_p(
w))
586 mpz_set_ui(z,
l % mpz_get_ui(
w));
593 if (mpz_fits_ulong_p(z))
594 mpz_set_ui(z,
l % mpz_get_ui(z));
599 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l)
601 mpz_tdiv_r_ui (z,
w, (
l >= 0 ?
l : -
l));
603 static void eval(mpz_ptr z,
signed long int l, mpz_srcptr
w)
605 if (mpz_fits_slong_p(
w))
606 mpz_set_si(z,
l % mpz_get_si(
w));
611 mpz_set_si (z, mpz_cmpabs_ui (
w, (
l >= 0 ?
l : -
l)) == 0 ? 0 :
l);
614 static void eval(mpz_ptr z, mpz_srcptr
w,
double d)
617 mpz_init_set_d(temp, d);
618 mpz_tdiv_r(z,
w, temp);
621 static void eval(mpz_ptr z,
double d, mpz_srcptr
w)
624 mpz_init_set_d(temp, d);
625 mpz_tdiv_r(z, temp,
w);
632 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
633 { mpz_and(z,
w, v); }
638 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
639 { mpz_ior(z,
w, v); }
644 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v)
645 { mpz_xor(z,
w, v); }
650 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
651 { mpz_mul_2exp(z,
w,
l); }
652 static void eval(mpq_ptr q, mpq_srcptr
r,
unsigned long int l)
653 { mpq_mul_2exp(q,
r,
l); }
654 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
660 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l)
661 { mpz_tdiv_q_2exp(z,
w,
l); }
662 static void eval(mpq_ptr q, mpq_srcptr
r,
unsigned long int l)
663 { mpq_div_2exp(q,
r,
l); }
664 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
670 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) == 0; }
672 static bool eval(mpz_srcptr z,
unsigned long int l)
673 {
return mpz_cmp_ui(z,
l) == 0; }
674 static bool eval(
unsigned long int l, mpz_srcptr z)
675 {
return mpz_cmp_ui(z,
l) == 0; }
676 static bool eval(mpz_srcptr z,
signed long int l)
677 {
return mpz_cmp_si(z,
l) == 0; }
678 static bool eval(
signed long int l, mpz_srcptr z)
679 {
return mpz_cmp_si(z,
l) == 0; }
680 static bool eval(mpz_srcptr z,
double d)
681 {
return mpz_cmp_d(z, d) == 0; }
682 static bool eval(
double d, mpz_srcptr z)
683 {
return mpz_cmp_d(z, d) == 0; }
685 static bool eval(mpq_srcptr q, mpq_srcptr
r)
686 {
return mpq_equal(q,
r) != 0; }
688 static bool eval(mpq_srcptr q,
unsigned long int l)
689 {
return mpq_cmp_ui(q,
l, 1) == 0; }
690 static bool eval(
unsigned long int l, mpq_srcptr q)
691 {
return mpq_cmp_ui(q,
l, 1) == 0; }
692 static bool eval(mpq_srcptr q,
signed long int l)
693 {
return mpq_cmp_si(q,
l, 1) == 0; }
694 static bool eval(
signed long int l, mpq_srcptr q)
695 {
return mpq_cmp_si(q,
l, 1) == 0; }
696 static bool eval(mpq_srcptr q,
double d)
702 b = (mpq_equal(q, temp) != 0);
706 static bool eval(
double d, mpq_srcptr q)
712 b = (mpq_equal(temp, q) != 0);
717 static bool eval(mpfr_srcptr f, mpfr_srcptr g)
718 {
return mpfr_cmp(f, g) == 0; }
720 static bool eval(mpfr_srcptr f,
unsigned long int l)
721 {
return mpfr_cmp_ui(f,
l) == 0; }
722 static bool eval(
unsigned long int l, mpfr_srcptr f)
723 {
return mpfr_cmp_ui(f,
l) == 0; }
724 static bool eval(mpfr_srcptr f,
signed long int l)
725 {
return mpfr_cmp_si(f,
l) == 0; }
726 static bool eval(
signed long int l, mpfr_srcptr f)
727 {
return mpfr_cmp_si(f,
l) == 0; }
728 static bool eval(mpfr_srcptr f,
double d)
729 {
return mpfr_cmp_d(f, d) == 0; }
730 static bool eval(
double d, mpfr_srcptr f)
731 {
return mpfr_cmp_d(f, d) == 0; }
736 static bool eval(mpz_srcptr z, mpz_srcptr
w)
737 {
return mpz_cmp(z,
w) != 0; }
739 static bool eval(mpz_srcptr z,
unsigned long int l)
740 {
return mpz_cmp_ui(z,
l) != 0; }
741 static bool eval(
unsigned long int l, mpz_srcptr z)
742 {
return mpz_cmp_ui(z,
l) != 0; }
743 static bool eval(mpz_srcptr z,
signed long int l)
744 {
return mpz_cmp_si(z,
l) != 0; }
745 static bool eval(
signed long int l, mpz_srcptr z)
746 {
return mpz_cmp_si(z,
l) != 0; }
747 static bool eval(mpz_srcptr z,
double d)
748 {
return mpz_cmp_d(z, d) != 0; }
749 static bool eval(
double d, mpz_srcptr z)
750 {
return mpz_cmp_d(z, d) != 0; }
752 static bool eval(mpq_srcptr q, mpq_srcptr
r)
753 {
return mpq_equal(q,
r) == 0; }
755 static bool eval(mpq_srcptr q,
unsigned long int l)
756 {
return mpq_cmp_ui(q,
l, 1) != 0; }
757 static bool eval(
unsigned long int l, mpq_srcptr q)
758 {
return mpq_cmp_ui(q,
l, 1) != 0; }
759 static bool eval(mpq_srcptr q,
signed long int l)
760 {
return mpq_cmp_si(q,
l, 1) != 0; }
761 static bool eval(
signed long int l, mpq_srcptr q)
762 {
return mpq_cmp_si(q,
l, 1) != 0; }
763 static bool eval(mpq_srcptr q,
double d)
769 b = (mpq_equal(q, temp) == 0);
773 static bool eval(
double d, mpq_srcptr q)
779 b = (mpq_equal(temp, q) == 0);
784 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) != 0; }
786 static bool eval(mpfr_srcptr f,
unsigned long int l)
787 {
return mpfr_cmp_ui(f,
l) != 0; }
788 static bool eval(
unsigned long int l, mpfr_srcptr f)
789 {
return mpfr_cmp_ui(f,
l) != 0; }
790 static bool eval(mpfr_srcptr f,
signed long int l)
791 {
return mpfr_cmp_si(f,
l) != 0; }
792 static bool eval(
signed long int l, mpfr_srcptr f)
793 {
return mpfr_cmp_si(f,
l) != 0; }
794 static bool eval(mpfr_srcptr f,
double d)
795 {
return mpfr_cmp_d(f, d) != 0; }
796 static bool eval(
double d, mpfr_srcptr f)
797 {
return mpfr_cmp_d(f, d) != 0; }
802 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) < 0; }
804 static bool eval(mpz_srcptr z,
unsigned long int l)
805 {
return mpz_cmp_ui(z,
l) < 0; }
806 static bool eval(
unsigned long int l, mpz_srcptr z)
807 {
return mpz_cmp_ui(z,
l) > 0; }
808 static bool eval(mpz_srcptr z,
signed long int l)
809 {
return mpz_cmp_si(z,
l) < 0; }
810 static bool eval(
signed long int l, mpz_srcptr z)
811 {
return mpz_cmp_si(z,
l) > 0; }
812 static bool eval(mpz_srcptr z,
double d)
813 {
return mpz_cmp_d(z, d) < 0; }
814 static bool eval(
double d, mpz_srcptr z)
815 {
return mpz_cmp_d(z, d) > 0; }
817 static bool eval(mpq_srcptr q, mpq_srcptr
r) {
return mpq_cmp(q,
r) < 0; }
819 static bool eval(mpq_srcptr q,
unsigned long int l)
820 {
return mpq_cmp_ui(q,
l, 1) < 0; }
821 static bool eval(
unsigned long int l, mpq_srcptr q)
822 {
return mpq_cmp_ui(q,
l, 1) > 0; }
823 static bool eval(mpq_srcptr q,
signed long int l)
824 {
return mpq_cmp_si(q,
l, 1) < 0; }
825 static bool eval(
signed long int l, mpq_srcptr q)
826 {
return mpq_cmp_si(q,
l, 1) > 0; }
827 static bool eval(mpq_srcptr q,
double d)
833 b = (mpq_cmp(q, temp) < 0);
837 static bool eval(
double d, mpq_srcptr q)
843 b = (mpq_cmp(temp, q) < 0);
848 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) < 0; }
850 static bool eval(mpfr_srcptr f,
unsigned long int l)
851 {
return mpfr_cmp_ui(f,
l) < 0; }
852 static bool eval(
unsigned long int l, mpfr_srcptr f)
853 {
return mpfr_cmp_ui(f,
l) > 0; }
854 static bool eval(mpfr_srcptr f,
signed long int l)
855 {
return mpfr_cmp_si(f,
l) < 0; }
856 static bool eval(
signed long int l, mpfr_srcptr f)
857 {
return mpfr_cmp_si(f,
l) > 0; }
858 static bool eval(mpfr_srcptr f,
double d)
859 {
return mpfr_cmp_d(f, d) < 0; }
860 static bool eval(
double d, mpfr_srcptr f)
861 {
return mpfr_cmp_d(f, d) > 0; }
866 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) <= 0; }
868 static bool eval(mpz_srcptr z,
unsigned long int l)
869 {
return mpz_cmp_ui(z,
l) <= 0; }
870 static bool eval(
unsigned long int l, mpz_srcptr z)
871 {
return mpz_cmp_ui(z,
l) >= 0; }
872 static bool eval(mpz_srcptr z,
signed long int l)
873 {
return mpz_cmp_si(z,
l) <= 0; }
874 static bool eval(
signed long int l, mpz_srcptr z)
875 {
return mpz_cmp_si(z,
l) >= 0; }
876 static bool eval(mpz_srcptr z,
double d)
877 {
return mpz_cmp_d(z, d) <= 0; }
878 static bool eval(
double d, mpz_srcptr z)
879 {
return mpz_cmp_d(z, d) >= 0; }
881 static bool eval(mpq_srcptr q, mpq_srcptr
r) {
return mpq_cmp(q,
r) <= 0; }
883 static bool eval(mpq_srcptr q,
unsigned long int l)
884 {
return mpq_cmp_ui(q,
l, 1) <= 0; }
885 static bool eval(
unsigned long int l, mpq_srcptr q)
886 {
return mpq_cmp_ui(q,
l, 1) >= 0; }
887 static bool eval(mpq_srcptr q,
signed long int l)
888 {
return mpq_cmp_si(q,
l, 1) <= 0; }
889 static bool eval(
signed long int l, mpq_srcptr q)
890 {
return mpq_cmp_si(q,
l, 1) >= 0; }
891 static bool eval(mpq_srcptr q,
double d)
897 b = (mpq_cmp(q, temp) <= 0);
901 static bool eval(
double d, mpq_srcptr q)
907 b = (mpq_cmp(temp, q) <= 0);
912 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) <= 0; }
914 static bool eval(mpfr_srcptr f,
unsigned long int l)
915 {
return mpfr_cmp_ui(f,
l) <= 0; }
916 static bool eval(
unsigned long int l, mpfr_srcptr f)
917 {
return mpfr_cmp_ui(f,
l) >= 0; }
918 static bool eval(mpfr_srcptr f,
signed long int l)
919 {
return mpfr_cmp_si(f,
l) <= 0; }
920 static bool eval(
signed long int l, mpfr_srcptr f)
921 {
return mpfr_cmp_si(f,
l) >= 0; }
922 static bool eval(mpfr_srcptr f,
double d)
923 {
return mpfr_cmp_d(f, d) <= 0; }
924 static bool eval(
double d, mpfr_srcptr f)
925 {
return mpfr_cmp_d(f, d) >= 0; }
930 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) > 0; }
932 static bool eval(mpz_srcptr z,
unsigned long int l)
933 {
return mpz_cmp_ui(z,
l) > 0; }
934 static bool eval(
unsigned long int l, mpz_srcptr z)
935 {
return mpz_cmp_ui(z,
l) < 0; }
936 static bool eval(mpz_srcptr z,
signed long int l)
937 {
return mpz_cmp_si(z,
l) > 0; }
938 static bool eval(
signed long int l, mpz_srcptr z)
939 {
return mpz_cmp_si(z,
l) < 0; }
940 static bool eval(mpz_srcptr z,
double d)
941 {
return mpz_cmp_d(z, d) > 0; }
942 static bool eval(
double d, mpz_srcptr z)
943 {
return mpz_cmp_d(z, d) < 0; }
945 static bool eval(mpq_srcptr q, mpq_srcptr
r) {
return mpq_cmp(q,
r) > 0; }
947 static bool eval(mpq_srcptr q,
unsigned long int l)
948 {
return mpq_cmp_ui(q,
l, 1) > 0; }
949 static bool eval(
unsigned long int l, mpq_srcptr q)
950 {
return mpq_cmp_ui(q,
l, 1) < 0; }
951 static bool eval(mpq_srcptr q,
signed long int l)
952 {
return mpq_cmp_si(q,
l, 1) > 0; }
953 static bool eval(
signed long int l, mpq_srcptr q)
954 {
return mpq_cmp_si(q,
l, 1) < 0; }
955 static bool eval(mpq_srcptr q,
double d)
961 b = (mpq_cmp(q, temp) > 0);
965 static bool eval(
double d, mpq_srcptr q)
971 b = (mpq_cmp(temp, q) > 0);
976 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) > 0; }
978 static bool eval(mpfr_srcptr f,
unsigned long int l)
979 {
return mpfr_cmp_ui(f,
l) > 0; }
980 static bool eval(
unsigned long int l, mpfr_srcptr f)
981 {
return mpfr_cmp_ui(f,
l) < 0; }
982 static bool eval(mpfr_srcptr f,
signed long int l)
983 {
return mpfr_cmp_si(f,
l) > 0; }
984 static bool eval(
signed long int l, mpfr_srcptr f)
985 {
return mpfr_cmp_si(f,
l) < 0; }
986 static bool eval(mpfr_srcptr f,
double d)
987 {
return mpfr_cmp_d(f, d) > 0; }
988 static bool eval(
double d, mpfr_srcptr f)
989 {
return mpfr_cmp_d(f, d) < 0; }
995 static int eval(mpfr_srcptr f, mpfr_srcptr g)
996 {
return mpfr_cmpabs(f, g); }
1001 static bool eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w) >= 0; }
1003 static bool eval(mpz_srcptr z,
unsigned long int l)
1004 {
return mpz_cmp_ui(z,
l) >= 0; }
1005 static bool eval(
unsigned long int l, mpz_srcptr z)
1006 {
return mpz_cmp_ui(z,
l) <= 0; }
1007 static bool eval(mpz_srcptr z,
signed long int l)
1008 {
return mpz_cmp_si(z,
l) >= 0; }
1009 static bool eval(
signed long int l, mpz_srcptr z)
1010 {
return mpz_cmp_si(z,
l) <= 0; }
1011 static bool eval(mpz_srcptr z,
double d)
1012 {
return mpz_cmp_d(z, d) >= 0; }
1013 static bool eval(
double d, mpz_srcptr z)
1014 {
return mpz_cmp_d(z, d) <= 0; }
1016 static bool eval(mpq_srcptr q, mpq_srcptr
r) {
return mpq_cmp(q,
r) >= 0; }
1018 static bool eval(mpq_srcptr q,
unsigned long int l)
1019 {
return mpq_cmp_ui(q,
l, 1) >= 0; }
1020 static bool eval(
unsigned long int l, mpq_srcptr q)
1021 {
return mpq_cmp_ui(q,
l, 1) <= 0; }
1022 static bool eval(mpq_srcptr q,
signed long int l)
1023 {
return mpq_cmp_si(q,
l, 1) >= 0; }
1024 static bool eval(
signed long int l, mpq_srcptr q)
1025 {
return mpq_cmp_si(q,
l, 1) <= 0; }
1026 static bool eval(mpq_srcptr q,
double d)
1032 b = (mpq_cmp(q, temp) >= 0);
1036 static bool eval(
double d, mpq_srcptr q)
1042 b = (mpq_cmp(temp, q) >= 0);
1047 static bool eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g) >= 0; }
1049 static bool eval(mpfr_srcptr f,
unsigned long int l)
1050 {
return mpfr_cmp_ui(f,
l) >= 0; }
1051 static bool eval(
unsigned long int l, mpfr_srcptr f)
1052 {
return mpfr_cmp_ui(f,
l) <= 0; }
1053 static bool eval(mpfr_srcptr f,
signed long int l)
1054 {
return mpfr_cmp_si(f,
l) >= 0; }
1055 static bool eval(
signed long int l, mpfr_srcptr f)
1056 {
return mpfr_cmp_si(f,
l) <= 0; }
1057 static bool eval(mpfr_srcptr f,
double d)
1058 {
return mpfr_cmp_d(f, d) >= 0; }
1059 static bool eval(
double d, mpfr_srcptr f)
1060 {
return mpfr_cmp_d(f, d) <= 0; }
1065 static void eval(mpz_ptr z) { mpz_add_ui(z, z, 1); }
1067 { mpz_add(mpq_numref(q), mpq_numref(q), mpq_denref(q)); }
1073 static void eval(mpz_ptr z) { mpz_sub_ui(z, z, 1); }
1075 { mpz_sub(mpq_numref(q), mpq_numref(q), mpq_denref(q)); }
1081 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_abs(z,
w); }
1082 static void eval(mpq_ptr q, mpq_srcptr
r) { mpq_abs(q,
r); }
1083 static void eval(mpfr_ptr f, mpfr_srcptr g)
1089 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1095 static void eval(mpfr_ptr f, mpfr_srcptr g)
1101 static void eval(mpfr_ptr f, mpfr_srcptr g) { mpfr_trunc(f, g); }
1106 static void eval(mpfr_ptr f, mpfr_srcptr g) { mpfr_floor(f, g); }
1111 static void eval(mpfr_ptr f, mpfr_srcptr g) { mpfr_ceil(f, g); }
1116 static void eval(mpfr_ptr f, mpfr_srcptr g)
1122 static void eval(mpz_ptr z, mpz_srcptr
w) { mpz_sqrt(z,
w); }
1123 static void eval(mpfr_ptr f, mpfr_srcptr g)
1129 static void eval(mpfr_ptr f, mpfr_srcptr g)
1135 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
1137#if MPFR_VERSION_MAJOR >= 4
1147 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1149 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
1151 static void eval(mpfr_ptr f, mpfr_srcptr g,
long int l)
1153 static void eval(mpfr_ptr f, mpfr_srcptr g, mpz_srcptr z)
1155 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr
h)
1157 static void eval(mpfr_ptr f,
unsigned long int l,
unsigned long int h)
1163 static void eval(mpfr_ptr f, mpfr_srcptr g)
1169 static void eval(mpfr_ptr f, mpfr_srcptr g)
1175 static void eval(mpfr_ptr f, mpfr_srcptr g)
1181 static void eval(mpfr_ptr f, mpfr_srcptr g)
1187 static void eval(mpfr_ptr f, mpfr_srcptr g)
1193 static void eval(mpfr_ptr f, mpfr_srcptr g)
1199 static void eval(mpfr_ptr f, mpfr_srcptr g)
1205 static void eval(mpfr_ptr f, mpfr_srcptr g)
1211 static void eval(mpfr_ptr f, mpfr_srcptr g)
1217 static void eval(mpfr_ptr f, mpfr_srcptr g)
1223 static void eval(mpfr_ptr f, mpfr_srcptr g)
1229 static void eval(mpfr_ptr f, mpfr_srcptr g)
1235 static void eval(mpfr_ptr f, mpfr_srcptr g)
1241 static void eval(mpfr_ptr f, mpfr_srcptr g)
1247 static void eval(mpfr_ptr f, mpfr_srcptr g)
1253 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1259 static void eval(mpfr_ptr f, mpfr_srcptr g)
1265 static void eval(mpfr_ptr f, mpfr_srcptr g)
1271 static void eval(mpfr_ptr f, mpfr_srcptr g)
1277 static void eval(mpfr_ptr f, mpfr_srcptr g)
1283 static void eval(mpfr_ptr f, mpfr_srcptr g)
1289 static void eval(mpfr_ptr f, mpfr_srcptr g)
1295 static void eval(mpfr_ptr f, mpfr_srcptr g)
1301 static void eval(mpfr_ptr f, mpfr_srcptr g)
1307 static void eval(mpfr_ptr f, mpfr_srcptr g)
1313 static void eval(mpfr_ptr f,
unsigned long int l)
1319 static void eval(mpfr_ptr f, mpfr_srcptr g)
1325 static void eval(mpfr_ptr f, mpfr_srcptr g)
1331 static void eval(mpfr_ptr f, mpfr_srcptr g)
1337 static void eval(mpfr_ptr f, mpfr_srcptr g)
1343 static void eval(mpfr_ptr f, mpfr_srcptr g)
1349 static void eval(mpfr_ptr f, mpfr_srcptr g)
1356 static void eval(mpfr_ptr f, mpfr_srcptr g)
1358 static void eval(mpfr_ptr f,
unsigned long int l)
1364 static void eval(mpfr_ptr f, mpfr_srcptr g)
1370 static void eval(mpfr_ptr f, mpfr_srcptr g)
1376 static void eval(mpfr_ptr f, mpfr_srcptr g)
1382 static void eval(mpfr_ptr f, mpfr_srcptr g)
1390 static void eval(mpfr_ptr f,
long h, mpfr_srcptr g)
1396 static void eval(mpfr_ptr f, mpfr_srcptr g)
1402 static void eval(mpfr_ptr f, mpfr_srcptr g)
1410 static void eval(mpfr_ptr f,
long h, mpfr_srcptr g)
1416 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1446 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1452 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1458 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1463 static void eval(mpfr_ptr f, mpfr_srcptr g,
unsigned long int l)
1468 static void eval(mpfr_ptr f,
unsigned long int l, mpfr_srcptr g)
1473 static void eval(mpfr_ptr f, mpfr_srcptr g,
signed long int l)
1478 static void eval(mpfr_ptr f,
signed long int l, mpfr_srcptr g)
1483 static void eval(mpfr_ptr f, mpfr_srcptr g,
double d)
1488 static void eval(mpfr_ptr f,
double d, mpfr_srcptr g)
1497 static void eval(mpfr_ptr f, mpfr_srcptr g)
1503 static void eval(mpfr_ptr f, mpfr_srcptr g, mpfr_srcptr
h)
1509 static int eval(mpz_srcptr z) {
return mpz_sgn(z); }
1510 static int eval(mpq_srcptr q) {
return mpq_sgn(q); }
1511 static int eval(mpfr_srcptr f) {
return mpfr_sgn(f); }
1516 static int eval(mpz_srcptr z, mpz_srcptr
w) {
return mpz_cmp(z,
w); }
1518 static int eval(mpz_srcptr z,
unsigned long int l)
1519 {
return mpz_cmp_ui(z,
l); }
1520 static int eval(
unsigned long int l, mpz_srcptr z)
1521 {
return -mpz_cmp_ui(z,
l); }
1522 static int eval(mpz_srcptr z,
signed long int l)
1523 {
return mpz_cmp_si(z,
l); }
1524 static int eval(
signed long int l, mpz_srcptr z)
1525 {
return -mpz_cmp_si(z,
l); }
1526 static int eval(mpz_srcptr z,
double d)
1527 {
return mpz_cmp_d(z, d); }
1528 static int eval(
double d, mpz_srcptr z)
1529 {
return -mpz_cmp_d(z, d); }
1531 static int eval(mpq_srcptr q, mpq_srcptr
r) {
return mpq_cmp(q,
r); }
1533 static int eval(mpq_srcptr q,
unsigned long int l)
1534 {
return mpq_cmp_ui(q,
l, 1); }
1535 static int eval(
unsigned long int l, mpq_srcptr q)
1536 {
return -mpq_cmp_ui(q,
l, 1); }
1537 static int eval(mpq_srcptr q,
signed long int l)
1538 {
return mpq_cmp_si(q,
l, 1); }
1539 static int eval(
signed long int l, mpq_srcptr q)
1540 {
return -mpq_cmp_si(q,
l, 1); }
1541 static int eval(mpq_srcptr q,
double d)
1547 i = mpq_cmp(q, temp);
1551 static int eval(
double d, mpq_srcptr q)
1557 i = mpq_cmp(temp, q);
1562 static int eval(mpfr_srcptr f, mpfr_srcptr g) {
return mpfr_cmp(f, g); }
1564 static int eval(mpfr_srcptr f,
unsigned long int l)
1565 {
return mpfr_cmp_ui(f,
l); }
1566 static int eval(
unsigned long int l, mpfr_srcptr f)
1567 {
return -mpfr_cmp_ui(f,
l); }
1568 static int eval(mpfr_srcptr f,
signed long int l)
1569 {
return mpfr_cmp_si(f,
l); }
1570 static int eval(
signed long int l, mpfr_srcptr f)
1571 {
return -mpfr_cmp_si(f,
l); }
1572 static int eval(mpfr_srcptr f,
double d)
1573 {
return mpfr_cmp_d(f, d); }
1574 static int eval(
double d, mpfr_srcptr f)
1575 {
return -mpfr_cmp_d(f, d); }
1580 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v, mpz_srcptr u)
1581 { mpz_set(z,
w); mpz_addmul(z, v, u); }
1583 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
unsigned long int l)
1584 { mpz_set(z,
w); mpz_addmul_ui(z, v,
l); }
1585 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l, mpz_srcptr v)
1586 { mpz_set(z,
w); mpz_addmul_ui(z, v,
l); }
1587 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
signed long int l)
1591 mpz_addmul_ui(z, v,
l);
1593 mpz_submul_ui(z, v, -
l);
1595 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l, mpz_srcptr v)
1599 mpz_addmul_ui(z, v,
l);
1601 mpz_submul_ui(z, v, -
l);
1603 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
double d)
1606 mpz_init_set_d(temp, d);
1608 mpz_addmul(z, v, temp);
1611 static void eval(mpz_ptr z, mpz_srcptr
w,
double d, mpz_srcptr v)
1614 mpz_init_set_d(temp, d);
1616 mpz_addmul(z, temp, v);
1623 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v, mpz_srcptr u)
1624 { mpz_set(z,
w); mpz_submul(z, v, u); }
1626 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
unsigned long int l)
1627 { mpz_set(z,
w); mpz_submul_ui(z, v,
l); }
1628 static void eval(mpz_ptr z, mpz_srcptr
w,
unsigned long int l, mpz_srcptr v)
1629 { mpz_set(z,
w); mpz_submul_ui(z, v,
l); }
1630 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
signed long int l)
1634 mpz_submul_ui(z, v,
l);
1636 mpz_addmul_ui(z, v, -
l);
1638 static void eval(mpz_ptr z, mpz_srcptr
w,
signed long int l, mpz_srcptr v)
1642 mpz_submul_ui(z, v,
l);
1644 mpz_addmul_ui(z, v, -
l);
1646 static void eval(mpz_ptr z, mpz_srcptr
w, mpz_srcptr v,
double d)
1649 mpz_init_set_d(temp, d);
1651 mpz_submul(z, v, temp);
1654 static void eval(mpz_ptr z, mpz_srcptr
w,
double d, mpz_srcptr v)
1657 mpz_init_set_d(temp, d);
1659 mpz_submul(z, temp, v);
1666 static void eval(mpz_ptr z, gmp_randstate_t s,
unsigned long int l)
1667 { mpz_urandomb(z, s,
l); }
1668 static void eval(mpz_ptr z, gmp_randstate_t s, mpz_srcptr
w)
1669 { mpz_urandomm(z, s,
w); }
1670 static void eval(mpfr_ptr f, gmp_randstate_t s,
unsigned long int prec)
1673 unsigned long int precf = mpfr_get_prec(f);
1674 if (prec == precf) {
1675 mpfr_urandomb(f, s);
1678 mpfr_set_prec(f, prec);
1679 mpfr_urandomb(f, s);
1700 void (*freefunc) (
void *, size_t);
1701 mp_get_memory_functions (
nullptr,
nullptr, &freefunc);
1702 (*freefunc) (
str, std::strlen(
str)+1);
1708 throw std::bad_alloc();
1715template <
class T,
class U>
1726template <
class T,
class U>
1733template <
class T,
class U = T>
1795template <
class T,
class U,
class V>
1809template <
class T,
class Op>
1820template <
class T,
class U,
class Op>
1840template <
class T,
class U>
1842template <
class T,
class U>
1844template <
class T,
class U>
1852#define __GMPP_DECLARE_COMPOUND_OPERATOR(fun) \
1853 template <class T, class U> \
1854 __gmp_expr<value_type, value_type> & fun(const __gmp_expr<T, U> &);
1856#define __GMPN_DECLARE_COMPOUND_OPERATOR(fun) \
1857 __gmp_expr & fun(signed char); \
1858 __gmp_expr & fun(unsigned char); \
1859 __gmp_expr & fun(signed int); \
1860 __gmp_expr & fun(unsigned int); \
1861 __gmp_expr & fun(signed short int); \
1862 __gmp_expr & fun(unsigned short int); \
1863 __gmp_expr & fun(signed long int); \
1864 __gmp_expr & fun(unsigned long int); \
1865 __gmp_expr & fun(float); \
1866 __gmp_expr & fun(double); \
1867 __gmp_expr & fun(long double);
1869#define __GMP_DECLARE_COMPOUND_OPERATOR(fun) \
1870__GMPP_DECLARE_COMPOUND_OPERATOR(fun) \
1871__GMPN_DECLARE_COMPOUND_OPERATOR(fun)
1873#define __GMP_DECLARE_COMPOUND_OPERATOR_UI(fun) \
1874 __gmp_expr & fun(unsigned long int);
1876#define __GMP_DECLARE_INCREMENT_OPERATOR(fun) \
1877 inline __gmp_expr & fun(); \
1878 inline __gmp_expr fun(int);
1890 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
1896 template <
class T,
class U>
1918 if (mpz_init_set_str (mp, s, 0) != 0)
1921 throw std::invalid_argument (
"mpz_set_str");
1926 if (mpz_init_set_str (mp, s, base) != 0)
1929 throw std::invalid_argument (
"mpz_set_str");
1934 if (mpz_init_set_str (mp, s.c_str(), 0) != 0)
1937 throw std::invalid_argument (
"mpz_set_str");
1942 if (mpz_init_set_str(mp, s.c_str(), base) != 0)
1945 throw std::invalid_argument (
"mpz_set_str");
1955 { mpz_set(mp, z.mp);
return *
this; }
1956 template <
class T,
class U>
1967 { mpz_set_si(mp, s);
return *
this; }
1969 { mpz_set_ui(mp, s);
return *
this; }
1972 { mpz_set_si(mp,
l);
return *
this; }
1974 { mpz_set_ui(mp,
l);
return *
this; }
1983 if (mpz_set_str (mp, s, 0) != 0)
1984 throw std::invalid_argument (
"mpz_set_str");
1989 if (mpz_set_str(mp, s.c_str(), 0) != 0)
1990 throw std::invalid_argument (
"mpz_set_str");
1996 {
return mpz_set_str(mp, s, base); }
1998 {
return mpz_set_str(mp, s.c_str(), base); }
2002 return std::string(temp.
c_str());
2011 signed long int get_si()
const {
return mpz_get_si(mp); }
2012 unsigned long int get_ui()
const {
return mpz_get_ui(mp); }
2013 double get_d()
const {
return mpz_get_d(mp); }
2057 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2064 template <
class T,
class U>
2068 __gmp_expr(
signed char c) { mpq_init(mp); mpq_set_si(mp, c, 1); }
2069 __gmp_expr(
unsigned char c) { mpq_init(mp); mpq_set_ui(mp, c, 1); }
2072 __gmp_expr(
unsigned int i) { mpq_init(mp); mpq_set_ui(mp, i, 1); }
2074 __gmp_expr(
signed short int s) { mpq_init(mp); mpq_set_si(mp, s, 1); }
2075 __gmp_expr(
unsigned short int s) { mpq_init(mp); mpq_set_ui(mp, s, 1); }
2087 if (mpq_set_str (mp, s, 0) != 0)
2090 throw std::invalid_argument (
"mpq_set_str");
2096 if (mpq_set_str(mp, s, base) != 0)
2099 throw std::invalid_argument (
"mpq_set_str");
2105 if (mpq_set_str (mp, s.c_str(), 0) != 0)
2108 throw std::invalid_argument (
"mpq_set_str");
2114 if (mpq_set_str (mp, s.c_str(), base) != 0)
2117 throw std::invalid_argument (
"mpq_set_str");
2120 explicit __gmp_expr(mpq_srcptr q) { mpq_init(mp); mpq_set(mp, q); }
2125 mpz_set(mpq_numref(mp), num.
get_mpz_t());
2126 mpz_set(mpq_denref(mp), den.
get_mpz_t());
2133 { mpq_set(mp, q.mp);
return *
this; }
2134 template <
class T,
class U>
2139 { mpq_set_si(mp, c, 1);
return *
this; }
2141 { mpq_set_ui(mp, c, 1);
return *
this; }
2145 { mpq_set_ui(mp, i, 1);
return *
this; }
2148 { mpq_set_si(mp, s, 1);
return *
this; }
2150 { mpq_set_ui(mp, s, 1);
return *
this; }
2153 { mpq_set_si(mp,
l, 1);
return *
this; }
2155 { mpq_set_ui(mp,
l, 1);
return *
this; }
2164 if (mpq_set_str (mp, s, 0) != 0)
2165 throw std::invalid_argument (
"mpq_set_str");
2170 if (mpq_set_str(mp, s.c_str(), 0) != 0)
2171 throw std::invalid_argument (
"mpq_set_str");
2177 {
return mpq_set_str(mp, s, base); }
2179 {
return mpq_set_str(mp, s.c_str(), base); }
2183 return std::string(temp.
c_str());
2192 {
return reinterpret_cast<const mpz_class &
>(*mpq_numref(mp)); }
2194 {
return reinterpret_cast<mpz_class &
>(*mpq_numref(mp)); }
2196 {
return reinterpret_cast<const mpz_class &
>(*mpq_denref(mp)); }
2198 {
return reinterpret_cast<mpz_class &
>(*mpq_denref(mp)); }
2210 double get_d()
const {
return mpq_get_d(mp); }
2237 unsigned long int get_prec()
const {
return mpfr_get_prec(mp); }
2239 void set_prec(
unsigned long int prec) { mpfr_set_prec(mp, prec); }
2249 { mpfr_init2(mp, f.get_prec()); mpfr_set(mp, f.mp,
MpFrC::get_rnd()); }
2252 template <
class T,
class U>
2255 template <
class T,
class U>
2313 throw std::invalid_argument (
"mpfr_set_str");
2318 mpfr_init2(mp, prec);
2322 throw std::invalid_argument (
"mpfr_set_str");
2327 if (mpfr_init_set_str(mp, s.c_str(),
2331 throw std::invalid_argument (
"mpfr_set_str");
2334 __gmp_expr(
const std::string &s,
unsigned long int prec,
int base = 0)
2336 mpfr_init2(mp, prec);
2340 throw std::invalid_argument (
"mpfr_set_str");
2345 { mpfr_init2(mp, mpfr_get_prec(f)); mpfr_set(mp, f,
MpFrC::get_rnd()); }
2354 template <
class T,
class U>
2388 throw std::invalid_argument (
"mpfr_set_str");
2394 throw std::invalid_argument (
"mpfr_set_str");
2403 std::string
get_str(mp_exp_t &expo,
int base = 10,
size_t size = 0)
const
2407 return std::string(temp.
c_str());
2466inline
std::ostream & operator<<
2469 return o << expr.__get_mp();
2472template <
class T,
class U>
2473inline std::ostream &
operator<<
2477 return o << temp.__get_mp();
2484 return i >> expr.__get_mp();
2500 mpz_set(z,
w.get_mpz_t());
2551 mpq_set(q,
r.get_mpq_t());
2608 expr.eval(f, mpfr_get_prec(f));
2624template <
class T,
class Op>
2632 unsigned long int = 0)
const
2634 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2647template <
class T,
class Op>
2657 unsigned long int = 0)
const
2658 { Op::eval(p, expr.
val.__get_mp()); }
2664template <
class T,
class U,
class Op>
2675 unsigned long int = 0)
const
2676 { Op::eval(p, expr.
val); }
2678 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2684template <
class T,
class U,
class Op>
2696 unsigned long int prec)
const
2715template <
class T,
class Op>
2726 : expr(val1, val2) { }
2728 unsigned long int = 0)
const
2729 { Op::eval(p, expr.
val1.__get_mp(), expr.
val2.__get_mp()); }
2734 unsigned long int prec1 = expr.
val1.get_prec(),
2735 prec2 = expr.
val2.get_prec();
2736 return (prec1 > prec2) ? prec1 : prec2;
2743template <
class T,
class U,
class Op>
2753 : expr(val1, val2) { }
2755 unsigned long int = 0)
const
2756 { Op::eval(p, expr.
val1.__get_mp(), expr.
val2); }
2762template <
class T,
class U,
class Op>
2772 : expr(val1, val2) { }
2774 unsigned long int = 0)
const
2775 { Op::eval(p, expr.
val1, expr.
val2.__get_mp()); }
2782template <
class T,
class U,
class V,
class Op>
2793 : expr(val1, val2) { }
2795 unsigned long int = 0)
const
2796 { Op::eval(p, expr.
val1, expr.
val2); }
2799 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
2805template <
class T,
class U,
class V,
class Op>
2816 : expr(val1, val2) { }
2820 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2823 unsigned long int prec)
const
2826 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2832 unsigned long int prec1 = expr.
val1.get_prec(),
2833 prec2 = expr.
val2.get_prec();
2834 return (prec1 > prec2) ? prec1 : prec2;
2838template <
class T,
class U,
class V,
class Op>
2849 : expr(val1, val2) { }
2853 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2856 unsigned long int prec)
const
2859 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2865 unsigned long int prec1 = expr.
val1.get_prec(),
2866 prec2 = expr.
val2.get_prec();
2867 return (prec1 > prec2) ? prec1 : prec2;
2871template <
class T,
class U,
class Op>
2882 : expr(val1, val2) { }
2886 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2889 unsigned long int prec)
const
2892 Op::eval(p, expr.
val1.__get_mp(), temp.__get_mp());
2898 unsigned long int prec1 = expr.
val1.get_prec(),
2899 prec2 = expr.
val2.get_prec();
2900 return (prec1 > prec2) ? prec1 : prec2;
2904template <
class T,
class U,
class Op>
2915 : expr(val1, val2) { }
2919 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2922 unsigned long int prec)
const
2925 Op::eval(p, temp.__get_mp(), expr.
val2.__get_mp());
2931 unsigned long int prec1 = expr.
val1.get_prec(),
2932 prec2 = expr.
val2.get_prec();
2933 return (prec1 > prec2) ? prec1 : prec2;
2940template <
class T,
class U,
class V,
class Op>
2950 : expr(val1, val2) { }
2954 Op::eval(p, temp.__get_mp(), expr.
val2);
2957 unsigned long int prec)
const
2960 Op::eval(p, temp.__get_mp(), expr.
val2);
2967template <
class T,
class U,
class V,
class Op>
2977 : expr(val1, val2) { }
2981 Op::eval(p, expr.
val1, temp.__get_mp());
2984 unsigned long int prec)
const
2987 Op::eval(p, expr.
val1, temp.__get_mp());
2997template <
class T,
class U,
class V,
class W,
class Op>
3008 : expr(val1, val2) { }
3012 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3015 unsigned long int prec)
const
3018 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3024 unsigned long int prec1 = expr.
val1.get_prec(),
3025 prec2 = expr.
val2.get_prec();
3026 return (prec1 > prec2) ? prec1 : prec2;
3030template <
class T,
class U,
class V,
class W,
class Op>
3041 : expr(val1, val2) { }
3045 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3048 unsigned long int prec)
const
3051 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3057 unsigned long int prec1 = expr.
val1.get_prec(),
3058 prec2 = expr.
val2.get_prec();
3059 return (prec1 > prec2) ? prec1 : prec2;
3063template <
class T,
class U,
class V,
class Op>
3074 : expr(val1, val2) { }
3078 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3081 unsigned long int prec)
const
3084 Op::eval(p, temp1.__get_mp(), temp2.__get_mp());
3090 unsigned long int prec1 = expr.
val1.get_prec(),
3091 prec2 = expr.
val2.get_prec();
3092 return (prec1 > prec2) ? prec1 : prec2;
3104#define __GMPZQ_DEFINE_EXPR(eval_fun) \
3107class __gmp_expr<mpq_t, __gmp_binary_expr<mpz_class, mpq_class, eval_fun> > \
3110 typedef mpz_class val1_type; \
3111 typedef mpq_class val2_type; \
3113 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3115 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3116 : expr(val1, val2) { } \
3117 void eval(mpq_ptr q) const \
3118 { eval_fun::eval(q, expr.val1.get_mpz_t(), expr.val2.get_mpq_t()); } \
3119 const val1_type & get_val1() const { return expr.val1; } \
3120 const val2_type & get_val2() const { return expr.val2; } \
3121 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3125class __gmp_expr<mpq_t, __gmp_binary_expr<mpq_class, mpz_class, eval_fun> > \
3128 typedef mpq_class val1_type; \
3129 typedef mpz_class val2_type; \
3131 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3133 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3134 : expr(val1, val2) { } \
3135 void eval(mpq_ptr q) const \
3136 { eval_fun::eval(q, expr.val1.get_mpq_t(), expr.val2.get_mpz_t()); } \
3137 const val1_type & get_val1() const { return expr.val1; } \
3138 const val2_type & get_val2() const { return expr.val2; } \
3139 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3144<mpq_t, __gmp_binary_expr<mpz_class, __gmp_expr<mpq_t, T>, eval_fun> > \
3147 typedef mpz_class val1_type; \
3148 typedef __gmp_expr<mpq_t, T> val2_type; \
3150 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3152 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3153 : expr(val1, val2) { } \
3154 void eval(mpq_ptr q) const \
3156 mpq_class temp(expr.val2); \
3157 eval_fun::eval(q, expr.val1.get_mpz_t(), temp.get_mpq_t()); \
3159 const val1_type & get_val1() const { return expr.val1; } \
3160 const val2_type & get_val2() const { return expr.val2; } \
3161 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3166<mpq_t, __gmp_binary_expr<mpq_class, __gmp_expr<mpz_t, T>, eval_fun> > \
3169 typedef mpq_class val1_type; \
3170 typedef __gmp_expr<mpz_t, T> val2_type; \
3172 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3174 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3175 : expr(val1, val2) { } \
3176 void eval(mpq_ptr q) const \
3178 mpz_class temp(expr.val2); \
3179 eval_fun::eval(q, expr.val1.get_mpq_t(), temp.get_mpz_t()); \
3181 const val1_type & get_val1() const { return expr.val1; } \
3182 const val2_type & get_val2() const { return expr.val2; } \
3183 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3188<mpq_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, mpq_class, eval_fun> > \
3191 typedef __gmp_expr<mpz_t, T> val1_type; \
3192 typedef mpq_class val2_type; \
3194 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3196 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3197 : expr(val1, val2) { } \
3198 void eval(mpq_ptr q) const \
3200 mpz_class temp(expr.val1); \
3201 eval_fun::eval(q, temp.get_mpz_t(), expr.val2.get_mpq_t()); \
3203 const val1_type & get_val1() const { return expr.val1; } \
3204 const val2_type & get_val2() const { return expr.val2; } \
3205 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3210<mpq_t, __gmp_binary_expr<__gmp_expr<mpq_t, T>, mpz_class, eval_fun> > \
3213 typedef __gmp_expr<mpq_t, T> val1_type; \
3214 typedef mpz_class val2_type; \
3216 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3218 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3219 : expr(val1, val2) { } \
3220 void eval(mpq_ptr q) const \
3222 mpq_class temp(expr.val1); \
3223 eval_fun::eval(q, temp.get_mpq_t(), expr.val2.get_mpz_t()); \
3225 const val1_type & get_val1() const { return expr.val1; } \
3226 const val2_type & get_val2() const { return expr.val2; } \
3227 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3230template <class T, class U> \
3231class __gmp_expr<mpq_t, __gmp_binary_expr \
3232<__gmp_expr<mpz_t, T>, __gmp_expr<mpq_t, U>, eval_fun> > \
3235 typedef __gmp_expr<mpz_t, T> val1_type; \
3236 typedef __gmp_expr<mpq_t, U> val2_type; \
3238 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3240 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3241 : expr(val1, val2) { } \
3242 void eval(mpq_ptr q) const \
3244 mpz_class temp1(expr.val1); \
3245 mpq_class temp2(expr.val2); \
3246 eval_fun::eval(q, temp1.get_mpz_t(), temp2.get_mpq_t()); \
3248 const val1_type & get_val1() const { return expr.val1; } \
3249 const val2_type & get_val2() const { return expr.val2; } \
3250 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3253template <class T, class U> \
3254class __gmp_expr<mpq_t, __gmp_binary_expr \
3255<__gmp_expr<mpq_t, T>, __gmp_expr<mpz_t, U>, eval_fun> > \
3258 typedef __gmp_expr<mpq_t, T> val1_type; \
3259 typedef __gmp_expr<mpz_t, U> val2_type; \
3261 __gmp_binary_expr<val1_type, val2_type, eval_fun> expr; \
3263 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3264 : expr(val1, val2) { } \
3265 void eval(mpq_ptr q) const \
3267 mpq_class temp1(expr.val1); \
3268 mpz_class temp2(expr.val2); \
3269 eval_fun::eval(q, temp1.get_mpq_t(), temp2.get_mpz_t()); \
3271 const val1_type & get_val1() const { return expr.val1; } \
3272 const val2_type & get_val2() const { return expr.val2; } \
3273 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3285#define __GMP_DEFINE_TERNARY_EXPR(eval_fun1, eval_fun2, eval_both) \
3288class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3289<mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> >, eval_fun2> > \
3292 typedef mpz_class val1_type; \
3293 typedef __gmp_expr \
3294 <mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> > val2_type; \
3296 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3298 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3299 : expr(val1, val2) { } \
3300 void eval(mpz_ptr z) const \
3302 (z, expr.val1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3303 expr.val2.get_val2().get_mpz_t()); } \
3304 const val1_type & get_val1() const { return expr.val1; } \
3305 const val2_type & get_val2() const { return expr.val2; } \
3306 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3310class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3311<mpz_t, __gmp_binary_expr<mpz_class, T, eval_fun1> >, eval_fun2> > \
3314 typedef mpz_class val1_type; \
3315 typedef __gmp_expr \
3316 <mpz_t, __gmp_binary_expr<mpz_class, T, eval_fun1> > val2_type; \
3318 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3320 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3321 : expr(val1, val2) { } \
3322 void eval(mpz_ptr z) const \
3324 (z, expr.val1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3325 expr.val2.get_val2()); } \
3326 const val1_type & get_val1() const { return expr.val1; } \
3327 const val2_type & get_val2() const { return expr.val2; } \
3328 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3332class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3333<mpz_t, __gmp_binary_expr<T, mpz_class, eval_fun1> >, eval_fun2> > \
3336 typedef mpz_class val1_type; \
3337 typedef __gmp_expr \
3338 <mpz_t, __gmp_binary_expr<T, mpz_class, eval_fun1> > val2_type; \
3340 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3342 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3343 : expr(val1, val2) { } \
3344 void eval(mpz_ptr z) const \
3346 (z, expr.val1.get_mpz_t(), expr.val2.get_val1(), \
3347 expr.val2.get_val2().get_mpz_t()); } \
3348 const val1_type & get_val1() const { return expr.val1; } \
3349 const val2_type & get_val2() const { return expr.val2; } \
3350 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3354class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3355<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr<mpz_t, T>, eval_fun1> >, \
3359 typedef mpz_class val1_type; \
3360 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3361 <mpz_class, __gmp_expr<mpz_t, T>, eval_fun1> > val2_type; \
3363 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3365 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3366 : expr(val1, val2) { } \
3367 void eval(mpz_ptr z) const \
3369 mpz_class temp(expr.val2.get_val2()); \
3371 (z, expr.val1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3372 temp.get_mpz_t()); \
3374 const val1_type & get_val1() const { return expr.val1; } \
3375 const val2_type & get_val2() const { return expr.val2; } \
3376 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3380class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3381<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, mpz_class, eval_fun1> >, \
3385 typedef mpz_class val1_type; \
3386 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3387 <__gmp_expr<mpz_t, T>, mpz_class, eval_fun1> > val2_type; \
3389 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3391 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3392 : expr(val1, val2) { } \
3393 void eval(mpz_ptr z) const \
3395 mpz_class temp(expr.val2.get_val1()); \
3396 eval_both::eval(z, expr.val1.get_mpz_t(), temp.get_mpz_t(), \
3397 expr.val2.get_val2().get_mpz_t()); \
3399 const val1_type & get_val1() const { return expr.val1; } \
3400 const val2_type & get_val2() const { return expr.val2; } \
3401 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3404template <class T, class U> \
3405class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3406<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, U, eval_fun1> >, \
3410 typedef mpz_class val1_type; \
3411 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3412 <__gmp_expr<mpz_t, T>, U, eval_fun1> > val2_type; \
3414 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3416 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3417 : expr(val1, val2) { } \
3418 void eval(mpz_ptr z) const \
3420 mpz_class temp(expr.val2.get_val1()); \
3422 (z, expr.val1.get_mpz_t(), temp.get_mpz_t(), expr.val2.get_val2()); \
3424 const val1_type & get_val1() const { return expr.val1; } \
3425 const val2_type & get_val2() const { return expr.val2; } \
3426 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3429template <class T, class U> \
3430class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3431<mpz_t, __gmp_binary_expr<T, __gmp_expr<mpz_t, U>, eval_fun1> >, \
3435 typedef mpz_class val1_type; \
3436 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3437 <T, __gmp_expr<mpz_t, U>, eval_fun1> > val2_type; \
3439 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3441 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3442 : expr(val1, val2) { } \
3443 void eval(mpz_ptr z) const \
3445 mpz_class temp(expr.val2.get_val2()); \
3447 (z, expr.val1.get_mpz_t(), expr.val2.get_val1(), temp.get_mpz_t()); \
3449 const val1_type & get_val1() const { return expr.val1; } \
3450 const val2_type & get_val2() const { return expr.val2; } \
3451 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3454template <class T, class U> \
3455class __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr \
3456<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, __gmp_expr<mpz_t, U>, \
3457 eval_fun1> >, eval_fun2> > \
3460 typedef mpz_class val1_type; \
3461 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3462 <__gmp_expr<mpz_t, T>, __gmp_expr<mpz_t, U>, eval_fun1> > val2_type; \
3464 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3466 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3467 : expr(val1, val2) { } \
3468 void eval(mpz_ptr z) const \
3470 mpz_class temp1(expr.val2.get_val1()); \
3471 mpz_class temp2(expr.val2.get_val2()); \
3473 (z, expr.val1.get_mpz_t(), temp1.get_mpz_t(), temp2.get_mpz_t()); \
3475 const val1_type & get_val1() const { return expr.val1; } \
3476 const val2_type & get_val2() const { return expr.val2; } \
3477 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3481class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3482 __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> >, \
3486 typedef __gmp_expr<mpz_t, T> val1_type; \
3487 typedef __gmp_expr \
3488 <mpz_t, __gmp_binary_expr<mpz_class, mpz_class, eval_fun1> > val2_type; \
3490 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3492 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3493 : expr(val1, val2) { } \
3494 void eval(mpz_ptr z) const \
3496 mpz_class temp(expr.val1); \
3497 eval_both::eval(z, temp.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3498 expr.val2.get_val2().get_mpz_t()); \
3500 const val1_type & get_val1() const { return expr.val1; } \
3501 const val2_type & get_val2() const { return expr.val2; } \
3502 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3505template <class T, class U> \
3506class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3507 __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, U, eval_fun1> >, \
3511 typedef __gmp_expr<mpz_t, T> val1_type; \
3512 typedef __gmp_expr \
3513 <mpz_t, __gmp_binary_expr<mpz_class, U, eval_fun1> > val2_type; \
3515 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3517 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3518 : expr(val1, val2) { } \
3519 void eval(mpz_ptr z) const \
3521 mpz_class temp(expr.val1); \
3522 eval_both::eval(z, temp.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3523 expr.val2.get_val2()); \
3525 const val1_type & get_val1() const { return expr.val1; } \
3526 const val2_type & get_val2() const { return expr.val2; } \
3527 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3530template <class T, class U> \
3531class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3532 __gmp_expr<mpz_t, __gmp_binary_expr<U, mpz_class, eval_fun1> >, \
3536 typedef __gmp_expr<mpz_t, T> val1_type; \
3537 typedef __gmp_expr \
3538 <mpz_t, __gmp_binary_expr<U, mpz_class, eval_fun1> > val2_type; \
3540 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3542 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3543 : expr(val1, val2) { } \
3544 void eval(mpz_ptr z) const \
3546 mpz_class temp(expr.val1); \
3547 eval_both::eval(z, temp.get_mpz_t(), expr.val2.get_val1(), \
3548 expr.val2.get_val2().get_mpz_t()); \
3550 const val1_type & get_val1() const { return expr.val1; } \
3551 const val2_type & get_val2() const { return expr.val2; } \
3552 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3555template <class T, class U> \
3556class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3557 __gmp_expr<mpz_t, __gmp_binary_expr<mpz_class, __gmp_expr<mpz_t, U>, \
3558 eval_fun1> >, eval_fun2> > \
3561 typedef __gmp_expr<mpz_t, T> val1_type; \
3562 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3563 <mpz_class, __gmp_expr<mpz_t, U>, eval_fun1> > val2_type; \
3565 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3567 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3568 : expr(val1, val2) { } \
3569 void eval(mpz_ptr z) const \
3571 mpz_class temp1(expr.val1); \
3572 mpz_class temp2(expr.val2.get_val2()); \
3574 (z, temp1.get_mpz_t(), expr.val2.get_val1().get_mpz_t(), \
3575 temp2.get_mpz_t()); \
3577 const val1_type & get_val1() const { return expr.val1; } \
3578 const val2_type & get_val2() const { return expr.val2; } \
3579 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3582template <class T, class U> \
3583class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3584 __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, U>, mpz_class, \
3585 eval_fun1> >, eval_fun2> > \
3588 typedef __gmp_expr<mpz_t, T> val1_type; \
3589 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3590 <__gmp_expr<mpz_t, U>, mpz_class, eval_fun1> > val2_type; \
3592 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3594 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3595 : expr(val1, val2) { } \
3596 void eval(mpz_ptr z) const \
3598 mpz_class temp1(expr.val1); \
3599 mpz_class temp2(expr.val2.get_val1()); \
3600 eval_both::eval(z, temp1.get_mpz_t(), temp2.get_mpz_t(), \
3601 expr.val2.get_val2().get_mpz_t()); \
3603 const val1_type & get_val1() const { return expr.val1; } \
3604 const val2_type & get_val2() const { return expr.val2; } \
3605 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3608template <class T, class U, class V> \
3609class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3610 __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, U>, V, \
3611 eval_fun1> >, eval_fun2> > \
3614 typedef __gmp_expr<mpz_t, T> val1_type; \
3615 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3616 <__gmp_expr<mpz_t, U>, V, eval_fun1> > val2_type; \
3618 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3620 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3621 : expr(val1, val2) { } \
3622 void eval(mpz_ptr z) const \
3624 mpz_class temp1(expr.val1); \
3625 mpz_class temp2(expr.val2.get_val1()); \
3627 (z, temp1.get_mpz_t(), temp2.get_mpz_t(), expr.val2.get_val2()); \
3629 const val1_type & get_val1() const { return expr.val1; } \
3630 const val2_type & get_val2() const { return expr.val2; } \
3631 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3634template <class T, class U, class V> \
3635class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3636 __gmp_expr<mpz_t, __gmp_binary_expr<U, __gmp_expr<mpz_t, V>, \
3637 eval_fun1> >, eval_fun2> > \
3640 typedef __gmp_expr<mpz_t, T> val1_type; \
3641 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3642 <U, __gmp_expr<mpz_t, V>, eval_fun1> > val2_type; \
3644 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3646 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3647 : expr(val1, val2) { } \
3648 void eval(mpz_ptr z) const \
3650 mpz_class temp1(expr.val1); \
3651 mpz_class temp2(expr.val2.get_val2()); \
3653 (z, temp1.get_mpz_t(), expr.val2.get_val1(), temp2.get_mpz_t()); \
3655 const val1_type & get_val1() const { return expr.val1; } \
3656 const val2_type & get_val2() const { return expr.val2; } \
3657 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3660template <class T, class U, class V> \
3661class __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, T>, \
3662 __gmp_expr<mpz_t, __gmp_binary_expr<__gmp_expr<mpz_t, U>, \
3663 __gmp_expr<mpz_t, V>, eval_fun1> >, eval_fun2> > \
3666 typedef __gmp_expr<mpz_t, T> val1_type; \
3667 typedef __gmp_expr<mpz_t, __gmp_binary_expr \
3668 <__gmp_expr<mpz_t, U>, __gmp_expr<mpz_t, V>, eval_fun1> > val2_type; \
3670 __gmp_binary_expr<val1_type, val2_type, eval_fun2> expr; \
3672 __gmp_expr(const val1_type &val1, const val2_type &val2) \
3673 : expr(val1, val2) { } \
3674 void eval(mpz_ptr z) const \
3676 mpz_class temp1(expr.val1); \
3677 mpz_class temp2(expr.val2.get_val1()); \
3678 mpz_class temp3(expr.val2.get_val2()); \
3680 (z, temp1.get_mpz_t(), temp2.get_mpz_t(), temp3.get_mpz_t()); \
3682 const val1_type & get_val1() const { return expr.val1; } \
3683 const val2_type & get_val2() const { return expr.val2; } \
3684 unsigned long int get_prec() const { return mpfr_get_default_prec(); } \
3712#define __GMP_DEFINE_VOID_FUNCTION(T, fun, eval_fun) \
3715<T, __gmp_void_expr<eval_fun> > \
3718 return __gmp_expr<T, __gmp_void_expr \
3725#define __GMP_DEFINE_UNARY_FUNCTION(fun, eval_fun) \
3727template <class T, class U> \
3728inline __gmp_expr<T, __gmp_unary_expr<__gmp_expr<T, U>, eval_fun> > \
3729fun(const __gmp_expr<T, U> &expr) \
3731 return __gmp_expr<T, __gmp_unary_expr<__gmp_expr<T, U>, eval_fun> >(expr); \
3736#define __GMP_DEFINE_UNARY_TYPE_FUNCTION(type, fun, eval_fun) \
3738template <class T, class U> \
3739inline type fun(const __gmp_expr<T, U> &expr) \
3741 typename __gmp_resolve_temp<T, T, U>::temp_type temp(expr); \
3742 return eval_fun::eval(temp.__get_mp()); \
3746#define __GMP_DEFINE_UNARY_FUNCTION_UI(T, fun, eval_fun) \
3749<T, __gmp_unary_expr<unsigned long int, eval_fun> > \
3750fun(unsigned long int l) \
3752 return __gmp_expr<T, __gmp_unary_expr \
3753 <unsigned long int, eval_fun> >(l); \
3762#define __GMPP_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3764template <class T, class U, class V, class W> \
3765inline __gmp_expr<typename __gmp_resolve_expr<T, V>::value_type, \
3766__gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, eval_fun> > \
3767fun(const __gmp_expr<T, U> &expr1, const __gmp_expr<V, W> &expr2) \
3769 return __gmp_expr<typename __gmp_resolve_expr<T, V>::value_type, \
3770 __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, eval_fun> > \
3774template <class T, class U> \
3775inline __gmp_expr<typename __gmp_resolve_expr<T, T>::value_type, \
3776__gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<T, U>, eval_fun> > \
3777fun(const __gmp_expr<T, U> &expr1, const __gmp_expr<T, U> &expr2) \
3779 return __gmp_expr<typename __gmp_resolve_expr<T, T>::value_type, \
3780 __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<T, U>, eval_fun> > \
3784#define __GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, bigtype) \
3786template <class T, class U> \
3788<T, __gmp_binary_expr<__gmp_expr<T, U>, bigtype, eval_fun> > \
3789fun(const __gmp_expr<T, U> &expr, type t) \
3792 <T, __gmp_binary_expr<__gmp_expr<T, U>, bigtype, eval_fun> >(expr, t); \
3795template <class T, class U> \
3797<T, __gmp_binary_expr<bigtype, __gmp_expr<T, U>, eval_fun> > \
3798fun(type t, const __gmp_expr<T, U> &expr) \
3801 <T, __gmp_binary_expr<bigtype, __gmp_expr<T, U>, eval_fun> >(t, expr); \
3804#define __GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3805__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, signed long int)
3807#define __GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3808__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, unsigned long int)
3810#define __GMPND_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3811__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, double)
3813#define __GMPNLD_DEFINE_BINARY_FUNCTION(fun, eval_fun, type) \
3814__GMPNN_DEFINE_BINARY_FUNCTION(fun, eval_fun, type, long double)
3816#define __GMPN_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3817__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed char) \
3818__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned char) \
3819__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed int) \
3820__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned int) \
3821__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed short int) \
3822__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned short int) \
3823__GMPNS_DEFINE_BINARY_FUNCTION(fun, eval_fun, signed long int) \
3824__GMPNU_DEFINE_BINARY_FUNCTION(fun, eval_fun, unsigned long int) \
3825__GMPND_DEFINE_BINARY_FUNCTION(fun, eval_fun, float) \
3826__GMPND_DEFINE_BINARY_FUNCTION(fun, eval_fun, double) \
3827__GMPNLD_DEFINE_BINARY_FUNCTION(fun, eval_fun, long double)
3829#define __GMP_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3830__GMPP_DEFINE_BINARY_FUNCTION(fun, eval_fun) \
3831__GMPN_DEFINE_BINARY_FUNCTION(fun, eval_fun)
3835#define __GMP_DEFINE_BINARY_FUNCTION_UI(fun, eval_fun) \
3837template <class T, class U> \
3839<T, __gmp_binary_expr<__gmp_expr<T, U>, unsigned long int, eval_fun> > \
3840fun(const __gmp_expr<T, U> &expr, unsigned long int l) \
3842 return __gmp_expr<T, __gmp_binary_expr \
3843 <__gmp_expr<T, U>, unsigned long int, eval_fun> >(expr, l); \
3847#define __GMP_DEFINE_BINARY_FUNCTION_UI_UI(T, fun, eval_fun) \
3850<T, __gmp_binary_expr<unsigned long int, unsigned long int, eval_fun> > \
3851fun(unsigned long int r, unsigned long int l) \
3853 return __gmp_expr<T, __gmp_binary_expr \
3854 <unsigned long int, unsigned long int, eval_fun> >(r, l); \
3858#define __GMPP_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3860template <class T, class U, class V, class W> \
3861inline type fun(const __gmp_expr<T, U> &expr1, \
3862 const __gmp_expr<V, W> &expr2) \
3864 typedef typename __gmp_resolve_expr<T, V>::value_type eval_type; \
3865 typename __gmp_resolve_temp<eval_type, T, U>::temp_type temp1(expr1); \
3866 typename __gmp_resolve_temp<eval_type, V, W>::temp_type temp2(expr2); \
3867 return eval_fun::eval(temp1.__get_mp(), temp2.__get_mp()); \
3870#define __GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, \
3873template <class T, class U> \
3874inline type fun(const __gmp_expr<T, U> &expr, type2 t) \
3876 typename __gmp_resolve_temp<T, T, U>::temp_type temp(expr); \
3877 return eval_fun::eval(temp.__get_mp(), static_cast<bigtype>(t)); \
3880template <class T, class U> \
3881inline type fun(type2 t, const __gmp_expr<T, U> &expr) \
3883 typename __gmp_resolve_temp<T, T, U>::temp_type temp(expr); \
3884 return eval_fun::eval(static_cast<bigtype>(t), temp.__get_mp()); \
3887#define __GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3888__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, \
3889 type2, signed long int)
3891#define __GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3892__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, \
3893 type2, unsigned long int)
3895#define __GMPND_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3896__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2, double)
3898#define __GMPNLD_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2) \
3899__GMPNN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, type2, long double)
3901#define __GMPN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3902__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed char) \
3903__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned char) \
3904__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed int) \
3905__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned int) \
3906__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed short int) \
3907__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned short int) \
3908__GMPNS_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, signed long int) \
3909__GMPNU_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, unsigned long int) \
3910__GMPND_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, float) \
3911__GMPND_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, double) \
3912__GMPNLD_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun, long double)
3914#define __GMP_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3915__GMPP_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun) \
3916__GMPN_DEFINE_BINARY_TYPE_FUNCTION(type, fun, eval_fun)
3921#define __GMPP_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3923template <class T, class U> \
3924inline type##_class & type##_class::fun(const __gmp_expr<T, U> &expr) \
3926 __gmp_set_expr(mp, __gmp_expr<type##_t, __gmp_binary_expr \
3927 <type##_class, __gmp_expr<T, U>, eval_fun> >(*this, expr)); \
3931#define __GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, \
3934inline type##_class & type##_class::fun(type2 t) \
3936 __gmp_set_expr(mp, __gmp_expr<type##_t, __gmp_binary_expr \
3937 <type##_class, bigtype, eval_fun> >(*this, t)); \
3941#define __GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3942__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, \
3943 type2, signed long int)
3945#define __GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3946__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, \
3947 type2, unsigned long int)
3949#define __GMPND_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3950__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2, double)
3952#define __GMPNLD_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2) \
3953__GMPNN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, type2, long double)
3955#define __GMPN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3956__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed char) \
3957__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned char) \
3958__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed int) \
3959__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned int) \
3960__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed short int) \
3961__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned short int) \
3962__GMPNS_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, signed long int) \
3963__GMPNU_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, unsigned long int) \
3964__GMPND_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, float) \
3965__GMPND_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun, double) \
3968#define __GMP_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3969__GMPP_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun) \
3970__GMPN_DEFINE_COMPOUND_OPERATOR(type, fun, eval_fun)
3972#define __GMPZ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3973__GMP_DEFINE_COMPOUND_OPERATOR(mpz, fun, eval_fun)
3975#define __GMPZZ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3976__GMPP_DEFINE_COMPOUND_OPERATOR(mpz, fun, eval_fun)
3978#define __GMPQ_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3979__GMP_DEFINE_COMPOUND_OPERATOR(mpq, fun, eval_fun)
3981#define __MPFR_DEFINE_COMPOUND_OPERATOR(fun, eval_fun) \
3982__GMP_DEFINE_COMPOUND_OPERATOR(mpfr, fun, eval_fun)
3986#define __GMP_DEFINE_COMPOUND_OPERATOR_UI(type, fun, eval_fun) \
3988inline type##_class & type##_class::fun(unsigned long int l) \
3990 __gmp_set_expr(mp, __gmp_expr<type##_t, __gmp_binary_expr \
3991 <type##_class, unsigned long int, eval_fun> >(*this, l)); \
3995#define __GMPZ_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun) \
3996__GMP_DEFINE_COMPOUND_OPERATOR_UI(mpz, fun, eval_fun)
3998#define __GMPQ_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun) \
3999__GMP_DEFINE_COMPOUND_OPERATOR_UI(mpq, fun, eval_fun)
4001#define __MPFR_DEFINE_COMPOUND_OPERATOR_UI(fun, eval_fun) \
4002__GMP_DEFINE_COMPOUND_OPERATOR_UI(mpfr, fun, eval_fun)
4006#define __GMP_DEFINE_INCREMENT_OPERATOR(type, fun, eval_fun) \
4008inline type##_class & type##_class::fun() \
4010 eval_fun::eval(mp); \
4014inline type##_class type##_class::fun(int) \
4016 type##_class temp(*this); \
4017 eval_fun::eval(mp); \
4021#define __GMPZ_DEFINE_INCREMENT_OPERATOR(fun, eval_fun) \
4022__GMP_DEFINE_INCREMENT_OPERATOR(mpz, fun, eval_fun)
4024#define __GMPQ_DEFINE_INCREMENT_OPERATOR(fun, eval_fun) \
4025__GMP_DEFINE_INCREMENT_OPERATOR(mpq, fun, eval_fun)
4027#define __MPFR_DEFINE_INCREMENT_OPERATOR(fun, eval_fun) \
4028__GMP_DEFINE_INCREMENT_OPERATOR(mpfr, fun, eval_fun)
4194 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
4207 unsigned long int get_prec()
const {
return mpfr_get_default_prec(); }
4218 void eval(mpfr_ptr f,
unsigned long int prec)
const
4223 return mpfr_get_default_prec();
4249 case GMP_RAND_ALG_LC:
4251 gmp_randinit(state, alg, size);
4266 unsigned long int size)
4268 if (f (state, size) == 0)
4269 throw std::length_error (
"gmp_randinit_lc_2exp_size");
4276 void seed(
unsigned long int s) { gmp_randseed_ui(state, s); }
4284 {
return get_z_bits(z.
get_ui()); }
4296#undef __GMPP_DECLARE_COMPOUND_OPERATOR
4297#undef __GMPN_DECLARE_COMPOUND_OPERATOR
4298#undef __GMP_DECLARE_COMPOUND_OPERATOR
4299#undef __GMP_DECLARE_COMPOUND_OPERATOR_UI
4300#undef __GMP_DECLARE_INCREMENT_OPERATOR
4302#undef __GMPZQ_DEFINE_EXPR
4303#undef __GMP_DEFINE_TERNARY_EXPR
4305#undef __GMP_DEFINE_VOID_FUNCTION
4307#undef __GMP_DEFINE_UNARY_FUNCTION
4308#undef __GMP_DEFINE_UNARY_TYPE_FUNCTION
4309#undef __GMP_DEFINE_UNARY_FUNCTION_UI
4311#undef __GMPP_DEFINE_BINARY_FUNCTION
4312#undef __GMPNN_DEFINE_BINARY_FUNCTION
4313#undef __GMPNS_DEFINE_BINARY_FUNCTION
4314#undef __GMPNU_DEFINE_BINARY_FUNCTION
4315#undef __GMPND_DEFINE_BINARY_FUNCTION
4316#undef __GMPNLD_DEFINE_BINARY_FUNCTION
4317#undef __GMPN_DEFINE_BINARY_FUNCTION
4318#undef __GMP_DEFINE_BINARY_FUNCTION
4320#undef __GMP_DEFINE_BINARY_FUNCTION_UI
4322#undef __GMPP_DEFINE_BINARY_TYPE_FUNCTION
4323#undef __GMPNN_DEFINE_BINARY_TYPE_FUNCTION
4324#undef __GMPNS_DEFINE_BINARY_TYPE_FUNCTION
4325#undef __GMPNU_DEFINE_BINARY_TYPE_FUNCTION
4326#undef __GMPND_DEFINE_BINARY_TYPE_FUNCTION
4327#undef __GMPNLD_DEFINE_BINARY_TYPE_FUNCTION
4328#undef __GMPN_DEFINE_BINARY_TYPE_FUNCTION
4329#undef __GMP_DEFINE_BINARY_TYPE_FUNCTION
4331#undef __GMPP_DECLARE_COMPOUND_OPERATOR
4332#undef __GMPN_DECLARE_COMPOUND_OPERATOR
4333#undef __GMP_DECLARE_COMPOUND_OPERATOR
4335#undef __GMP_DECLARE_COMPOUND_OPERATOR_UI
4336#undef __GMP_DECLARE_INCREMENT_OPERATOR
4338#undef __GMPZ_DEFINE_COMPOUND_OPERATOR
4339#undef __GMPZZ_DEFINE_COMPOUND_OPERATOR
4340#undef __GMPZN_DEFINE_COMPOUND_OPERATOR
4341#undef __GMPZNN_DEFINE_COMPOUND_OPERATOR
4342#undef __GMPZNS_DEFINE_COMPOUND_OPERATOR
4343#undef __GMPZNU_DEFINE_COMPOUND_OPERATOR
4344#undef __GMPZND_DEFINE_COMPOUND_OPERATOR
4345#undef __GMPZNLD_DEFINE_COMPOUND_OPERATOR
4347#undef __GMPP_DEFINE_COMPOUND_OPERATOR
4348#undef __GMPNN_DEFINE_COMPOUND_OPERATOR
4349#undef __GMPNS_DEFINE_COMPOUND_OPERATOR
4350#undef __GMPNU_DEFINE_COMPOUND_OPERATOR
4351#undef __GMPND_DEFINE_COMPOUND_OPERATOR
4352#undef __GMPNLD_DEFINE_COMPOUND_OPERATOR
4353#undef __GMPN_DEFINE_COMPOUND_OPERATOR
4354#undef __GMP_DEFINE_COMPOUND_OPERATOR
4356#undef __GMPZ_DEFINE_COMPOUND_OPERATOR
4357#undef __GMPZZ_DEFINE_COMPOUND_OPERATOR
4358#undef __GMPQ_DEFINE_COMPOUND_OPERATOR
4359#undef __MPFR_DEFINE_COMPOUND_OPERATOR
4361#undef __GMP_DEFINE_COMPOUND_OPERATOR_UI
4362#undef __GMPZ_DEFINE_COMPOUND_OPERATOR_UI
4363#undef __GMPQ_DEFINE_COMPOUND_OPERATOR_UI
4364#undef __MPFR_DEFINE_COMPOUND_OPERATOR_UI
4366#undef __GMP_DEFINE_INCREMENT_OPERATOR
4367#undef __GMPZ_DEFINE_INCREMENT_OPERATOR
4368#undef __GMPQ_DEFINE_INCREMENT_OPERATOR
4369#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)
const char * c_str() const
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)