source file of the Flower Library
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <math.h>
#include <stdlib.h>
return (double)sign_ * num_ / den_;
}
+#ifdef STREAM_SUPPORT
ostream &
operator << (ostream &o, Rational r)
{
- o << r.str ();
+ o << r.string ();
return o;
}
+#endif
+
Rational
Rational::trunc_rat () const
return b;
}
+#if 0
static
int lcm (int a, int b)
{
return abs (a*b / gcd (a,b));
}
+#endif
void
Rational::set_infinite (int s)
return -1;
else if (r.sign_ > s.sign_)
return 1;
- else if (r.infty_b ())
+ else if (r.is_infinity ())
return 0;
else if (r.sign_ == 0)
return 0;
Rational &
Rational::operator += (Rational r)
{
- if (infty_b ())
+ if (is_infinity ())
;
- else if (r.infty_b ())
+ else if (r.is_infinity ())
{
*this = r;
}
Rational::operator *= (Rational r)
{
sign_ *= ::sign (r.sign_);
- if (r.infty_b ())
+ if (r.is_infinity ())
{
sign_ = sign () * 2;
goto exit_func;
}
String
-Rational::str () const
+Rational::to_string () const
{
- if (infty_b ())
+ if (is_infinity ())
{
String s (sign_ > 0 ? "" : "-" );
return String (s + "infinity");
}
- String s = to_str (num ());
+
+ String s = ::to_string (num ());
if (den () != 1 && num ())
- s += "/" + to_str (den ());
+ s += "/" + ::to_string (den ());
return s;
}
{
return r.sign ();
}
+
+bool
+Rational::is_infinity () const
+{
+ return sign_ == 2 || sign_ == -2;
+}