[Gnucash-changes] add function to compare (order) two numbers
Linas Vepstas
linas at cvs.gnucash.org
Sat Jul 3 23:55:16 EDT 2004
Log Message:
-----------
add function to compare (order) two numbers
Modified Files:
--------------
gnucash/src/engine:
qofmath128.h
qofmath128.c
Revision Data
-------------
Index: qofmath128.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofmath128.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lsrc/engine/qofmath128.h -Lsrc/engine/qofmath128.h -u -r1.3 -r1.4
--- src/engine/qofmath128.h
+++ src/engine/qofmath128.h
@@ -42,6 +42,9 @@
/** Return true of two numbers are equal */
inline gboolean equal128 (qofint128 a, qofint128 b);
+/** Return returns 1 if a>b, -1 if b>a, 0 if a == b */
+inline int cmp128 (qofint128 a, qofint128 b);
+
/** Shift right by one bit (i.e. divide by two) */
inline qofint128 shift128 (qofint128 x);
Index: qofmath128.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofmath128.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -Lsrc/engine/qofmath128.c -Lsrc/engine/qofmath128.c -u -r1.5 -r1.6
--- src/engine/qofmath128.c
+++ src/engine/qofmath128.c
@@ -231,6 +231,28 @@
return 1;
}
+/** Return returns 1 if a>b, -1 if b>a, 0 if a == b */
+inline int
+cmp128 (qofint128 a, qofint128 b)
+{
+ if ((0 == a.isneg) && b.isneg) return 1;
+ if (a.isneg && (0 == b.isneg)) return -1;
+ if (0 == a.isneg)
+ {
+ if (a.hi > b.hi) return 1;
+ if (a.hi < b.hi) return -1;
+ if (a.lo > b.lo) return 1;
+ if (a.lo < b.lo) return -1;
+ return 0;
+ }
+
+ if (a.hi > b.hi) return -1;
+ if (a.hi < b.hi) return 1;
+ if (a.lo > b.lo) return -1;
+ if (a.lo < b.lo) return 1;
+ return 0;
+}
+
/** Return the greatest common factor of two 64-bit numbers */
inline guint64
gcf64(guint64 num, guint64 denom)
More information about the gnucash-changes
mailing list