equal
deleted
inserted
replaced
39 in ((p1 * (m div q1), p2 * (m div q2)), m) end; |
39 in ((p1 * (m div q1), p2 * (m div q2)), m) end; |
40 |
40 |
41 exception DIVZERO; |
41 exception DIVZERO; |
42 |
42 |
43 fun rat_of_quotient (p, q) = |
43 fun rat_of_quotient (p, q) = |
44 let val m = PolyML.IntInf.gcd (p, q) |
44 let |
45 in Rat (p div m, q div m) end handle Div => raise DIVZERO; |
45 val m = PolyML.IntInf.gcd (p, q); |
|
46 val (p', q') = (p div m, q div m) handle Div => raise DIVZERO; |
|
47 in Rat (if q' < 0 then (~ p', ~ q') else (p', q')) end |
46 |
48 |
47 fun quotient_of_rat (Rat r) = r; |
49 fun quotient_of_rat (Rat r) = r; |
48 |
50 |
49 fun rat_of_int i = Rat (i, 1); |
51 fun rat_of_int i = Rat (i, 1); |
50 |
52 |