]> git.donarmstrong.com Git - lilypond.git/commitdiff
bugfix: return HUGE_VAL for infinite rational.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 20 Dec 2006 00:49:07 +0000 (01:49 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 20 Dec 2006 00:49:07 +0000 (01:49 +0100)
flower/rational.cc

index a0c0d22410e235726eeee037b760fee1f7dcaef9..7816905ea2c33baa732d25d5769ac9b1211a46e5 100644 (file)
@@ -9,6 +9,7 @@
 #include "rational.hh"
 
 #include <cmath>
+#include <cassert>
 #include <cstdlib>
 using namespace std;
 
@@ -17,7 +18,17 @@ using namespace std;
 
 Rational::operator double () const
 {
-  return ((double)sign_) * num_ / den_;
+  if (sign_==-1 || sign_ == 1)
+    return ((double)sign_) * num_ / den_;
+
+  if (sign_ == -2)
+    return -HUGE_VAL;
+  else if (sign_ == 2)
+    return HUGE_VAL;
+  else
+    assert (false);
+
+  return 0.0;
 }
 
 Rational::operator bool () const