mirror of
https://github.com/Z3Prover/z3
synced 2025-06-03 04:41:21 +00:00
Compilation fix.
gcc 4.3.2 (on debian 5) did not like the definitions of gcd and abs in class rational, so I moved them outside of the class. Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
parent
83f88917a8
commit
d1376343c7
1 changed files with 22 additions and 16 deletions
|
@ -331,22 +331,13 @@ public:
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend inline rational gcd(rational const & r1, rational const & r2) {
|
friend inline rational gcd(rational const & r1, rational const & r2);
|
||||||
rational result;
|
|
||||||
m().gcd(r1.m_val, r2.m_val, result.m_val);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// extended Euclid:
|
// extended Euclid:
|
||||||
// r1*a + r2*b = gcd
|
// r1*a + r2*b = gcd
|
||||||
//
|
//
|
||||||
friend inline rational gcd(rational const & r1, rational const & r2, rational & a, rational & b) {
|
friend inline rational gcd(rational const & r1, rational const & r2, rational & a, rational & b);
|
||||||
rational result;
|
|
||||||
m().gcd(r1.m_val, r2.m_val, a.m_val, b.m_val, result.m_val);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
friend inline rational lcm(rational const & r1, rational const & r2) {
|
friend inline rational lcm(rational const & r1, rational const & r2) {
|
||||||
rational result;
|
rational result;
|
||||||
|
@ -378,11 +369,7 @@ public:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend inline rational abs(rational const & r) {
|
friend inline rational abs(rational const & r);
|
||||||
rational result(r);
|
|
||||||
m().abs(result.m_val);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
rational to_rational() const { return *this; }
|
rational to_rational() const { return *this; }
|
||||||
|
|
||||||
|
@ -446,5 +433,24 @@ inline rational power(rational const & r, unsigned p) {
|
||||||
return r.expt(p);
|
return r.expt(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline rational abs(rational const & r) {
|
||||||
|
rational result(r);
|
||||||
|
rational::m().abs(result.m_val);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline rational gcd(rational const & r1, rational const & r2) {
|
||||||
|
rational result;
|
||||||
|
rational::m().gcd(r1.m_val, r2.m_val, result.m_val);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline rational gcd(rational const & r1, rational const & r2, rational & a, rational & b) {
|
||||||
|
rational result;
|
||||||
|
rational::m().gcd(r1.m_val, r2.m_val, a.m_val, b.m_val, result.m_val);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* _RATIONAL_H_ */
|
#endif /* _RATIONAL_H_ */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue