[gcalctool] 0^0 = 1



commit 508fb91a020642735670fb44c4eda031751b2dc1
Author: Robert Ancell <robert ancell gmail com>
Date:   Sun Dec 20 17:12:10 2009 +1100

    0^0 = 1

 ChangeLog      |    4 ++++
 src/mp.c       |    6 ++++++
 src/unittest.c |    1 +
 3 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 68c85ed..2ff94d3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,10 @@
 gcalctool change history.
 =========================
 
+2009-12-20 Robert Ancell <robert ancell gmail com>
+
+    * Make 0^0 = 1 (Bug #605011)
+
 2009-12-17 Robert Ancell <robert ancell gmail com>
 
     * Make Ctrl+W a shortcut to quit
diff --git a/src/mp.c b/src/mp.c
index 52ad07c..bd0e963 100644
--- a/src/mp.c
+++ b/src/mp.c
@@ -1843,6 +1843,12 @@ mp_xpowy_integer(const MPNumber *x, int n, MPNumber *z)
         return;
     }
 
+    /* x^0 = 1 */
+    if (n == 0) {
+        mp_set_from_integer(1, z);
+        return;
+    }
+
     /* 0^n = 0 */
     if (mp_is_zero(x)) {
         mp_set_from_integer(0, z);
diff --git a/src/unittest.c b/src/unittest.c
index 2286258..0f3988d 100644
--- a/src/unittest.c
+++ b/src/unittest.c
@@ -251,6 +251,7 @@ test_parser()
     test("2²", "4", 0);
     test("2³", "8", 0);
     test("2¹�", "1024", 0);
+    test("0^0", "1", 0);
     test("2^0", "1", 0);
     test("2^1", "2", 0);
     test("2^2", "4", 0);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]