From 074172a069d77888f232d44660b72e07579296ae Mon Sep 17 00:00:00 2001 From: qunyanm Date: Fri, 1 Apr 2016 14:36:56 -0700 Subject: Fix issue 148. The results for sign comparison for BigRational.CompareTo was wrong. --- Binaries/DafnyRuntime.cs | 8 ++++---- Test/dafny4/Bug148.dfy | 25 +++++++++++++++++++++++++ Test/dafny4/Bug148.dfy.expect | 17 +++++++++++++++++ 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 Test/dafny4/Bug148.dfy create mode 100644 Test/dafny4/Bug148.dfy.expect diff --git a/Binaries/DafnyRuntime.cs b/Binaries/DafnyRuntime.cs index 3002d832..587d5159 100644 --- a/Binaries/DafnyRuntime.cs +++ b/Binaries/DafnyRuntime.cs @@ -1253,13 +1253,13 @@ namespace Dafny int asign = this.num.Sign; int bsign = that.num.Sign; if (asign < 0 && 0 <= bsign) { - return 1; + return -1; } else if (asign <= 0 && 0 < bsign) { - return 1; - } else if (bsign < 0 && 0 <= asign) { return -1; + } else if (bsign < 0 && 0 <= asign) { + return 1; } else if (bsign <= 0 && 0 < asign) { - return -1; + return 1; } BigInteger aa, bb, dd; Normalize(this, that, out aa, out bb, out dd); diff --git a/Test/dafny4/Bug148.dfy b/Test/dafny4/Bug148.dfy new file mode 100644 index 00000000..b7a08952 --- /dev/null +++ b/Test/dafny4/Bug148.dfy @@ -0,0 +1,25 @@ +// RUN: %dafny /compile:3 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +method Main() +{ + var zero : real := 0.0; + var three : real := 3.0; + var fifteen : real := 15.0; + var negone : real := -1.0; + var negthree : real := -3.0; + + print zero <= fifteen, "\n"; // true + print fifteen <= zero, "\n"; // false + print negone <= zero, "\n"; // true + print zero <= negone, "\n"; // false + print negone <= fifteen, "\n"; // true + print fifteen <= negone, "\n"; // false + + print zero >= fifteen, "\n"; // false + print fifteen >= zero, "\n"; // true + print negone >= zero, "\n"; // false + print zero >= negone, "\n"; // true + print negone >= fifteen, "\n"; // false + print fifteen >= negone, "\n"; // true +} diff --git a/Test/dafny4/Bug148.dfy.expect b/Test/dafny4/Bug148.dfy.expect new file mode 100644 index 00000000..7acfb169 --- /dev/null +++ b/Test/dafny4/Bug148.dfy.expect @@ -0,0 +1,17 @@ + +Dafny program verifier finished with 2 verified, 0 errors +Program compiled successfully +Running... + +True +False +True +False +True +False +False +True +False +True +False +True -- cgit v1.2.3