--[[ Rational Arithmetic Test (Core) H. Conrad Cunningham, Professor Computer and Information Science University of Mississippi Developed for CSci 450/503, Organization of Programming Languages, Fall 2016 1234567890123456789012345678901234567890123456789012345678901234567890 2016-09-11: Prototyped --]] RATIONAL_CORE = "rationalCore" local ratco = require("rational") local makeRat, numer, denom, showRat, negRat, addRat, subRat, mulRat, divRat, eqRat, neqRat, ltRat, leqRat, gtRat, geqRat = ratco.makeRat, ratco.numer, ratco.denom, ratco.showRat, ratco.negRat, ratco.addRat, ratco.subRat, ratco.mulRat, ratco.divRat, ratco.eqRat, ratco.neqRat, ratco.ltRat, ratco.leqRat, ratco.gtRat, ratco.geqRat local x = makeRat(3,6) print("x = " .. showRat(x)) local y = makeRat(4,8) print("y = " .. showRat(y)) local z = makeRat(8,-4) print("z = " .. showRat(z)) print("x + y = " .. showRat(addRat(x,y))) print("x - y = " .. showRat(subRat(x,y))) print("x * y = " .. showRat(mulRat(x,y))) print("x / y = " .. showRat(divRat(x,y))) print("x + z = " .. showRat(addRat(x,z))) print("-x = " .. showRat(negRat(x))) print("-z = " .. showRat(negRat(z))) print("x == x = " .. tostring(eqRat(x,x))) print("x == y = " .. tostring(eqRat(x,y))) print("x == z = " .. tostring(eqRat(x,z))) print("x ~= x = " .. tostring(neqRat(x,x))) print("x ~= y = " .. tostring(neqRat(x,y))) print("x ~= z = " .. tostring(neqRat(x,z))) print("x < x = " .. tostring(ltRat(x,x))) print("x < y = " .. tostring(ltRat(x,y))) print("x < z = " .. tostring(ltRat(x,z))) print("x <= x = " .. tostring(leqRat(x,x))) print("x <= y = " .. tostring(leqRat(x,y))) print("x <= z = " .. tostring(leqRat(x,z))) print("x > x = " .. tostring(gtRat(x,x))) print("x > y = " .. tostring(gtRat(x,y))) print("x > z = " .. tostring(gtRat(x,z))) print("x >= x = " .. tostring(geqRat(x,x))) print("x >= y = " .. tostring(geqRat(x,y))) print("x >= z = " .. tostring(geqRat(x,z))) print("Forced error: makeRat(3,0): ") print(showRat(makeRat(x,0)))