summaryrefslogtreecommitdiff
path: root/gmpxx.h
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2011-05-15 22:04:11 +0200
committerMarc Glisse <marc.glisse@inria.fr>2011-05-15 22:04:11 +0200
commit124aa18e5860108e54ddfe774852e8a344ccdea3 (patch)
treee045ed60740d4c6a655ffe63cf911d792e7980d0 /gmpxx.h
parent0199c12e1673ac82e49256fcd34e90d07ed76dca (diff)
downloadgmp-124aa18e5860108e54ddfe774852e8a344ccdea3.tar.gz
C++: automatically turn c=(a+b)/2 into c=a+b;c/=2, no need for a temporary.
Diffstat (limited to 'gmpxx.h')
-rw-r--r--gmpxx.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/gmpxx.h b/gmpxx.h
index 3aed51d3d..aa66eafc9 100644
--- a/gmpxx.h
+++ b/gmpxx.h
@@ -2181,14 +2181,14 @@ public:
: expr(val1, val2) { }
void eval(typename __gmp_resolve_expr<T>::ptr_type p) const
{
- __gmp_expr<T, T> temp(expr.val1);
- Op::eval(p, temp.__get_mp(), expr.val2);
+ expr.val1.eval(p);
+ Op::eval(p, p, expr.val2);
}
void eval(typename __gmp_resolve_expr<T>::ptr_type p,
mp_bitcnt_t prec) const
{
- __gmp_expr<T, T> temp(expr.val1, prec);
- Op::eval(p, temp.__get_mp(), expr.val2);
+ expr.val1.eval(p, prec);
+ Op::eval(p, p, expr.val2);
}
const val1_type & get_val1() const { return expr.val1; }
const val2_type & get_val2() const { return expr.val2; }
@@ -2208,14 +2208,14 @@ public:
: expr(val1, val2) { }
void eval(typename __gmp_resolve_expr<T>::ptr_type p) const
{
- __gmp_expr<T, T> temp(expr.val2);
- Op::eval(p, expr.val1, temp.__get_mp());
+ expr.val2.eval(p);
+ Op::eval(p, expr.val1, p);
}
void eval(typename __gmp_resolve_expr<T>::ptr_type p,
mp_bitcnt_t prec) const
{
- __gmp_expr<T, T> temp(expr.val2, prec);
- Op::eval(p, expr.val1, temp.__get_mp());
+ expr.val2.eval(p, prec);
+ Op::eval(p, expr.val1, p);
}
const val1_type & get_val1() const { return expr.val1; }
const val2_type & get_val2() const { return expr.val2; }