fixed Rat.inv
authorhaftmann
Mon, 03 Sep 2007 08:01:35 +0200
changeset 24521 9565ac68c3cd
parent 24520 40b220403257
child 24522 ec3e5c1a0479
fixed Rat.inv
src/Tools/rat.ML
--- a/src/Tools/rat.ML	Sun Sep 02 23:36:21 2007 +0200
+++ b/src/Tools/rat.ML	Mon Sep 03 08:01:35 2007 +0200
@@ -93,8 +93,10 @@
 
 fun neg (Rat (p, q)) = Rat (Integer.neg p, q);
 
-fun inv (Rat (p, 0)) = raise DIVZERO
-  | inv (Rat (p, q)) = Rat (q, p);
+fun inv (Rat (p, q)) = case Integer.sign p
+ of LESS => Rat (Integer.neg q, Integer.neg p)
+  | EQAUL => raise DIVZERO
+  | GREATER => Rat (q, p);
 
 fun rounddown (Rat (p, q)) = Rat (Integer.div p q, 1);