UNPKG

algebrite

Version:

Computer Algebra System in Coffeescript

45 lines (28 loc) 461 B
# Divide rational numbers # # Input: tos-2 dividend # # tos-1 divisor # # Output: quotient on stack qdiv = -> save() p2 = pop() p1 = pop() # zero? if (MZERO(p2.q.a)) stop("divide by zero") if (MZERO(p1.q.a)) push(zero) restore() return aa = mmul(p1.q.a, p2.q.b) bb = mmul(p1.q.b, p2.q.a) c = mgcd(aa, bb) c = makeSignSameAs(c,bb) p1 = new U() p1.k = NUM p1.q.a = mdiv(aa, c) p1.q.b = mdiv(bb, c) push(p1) restore()