RosettaCodeData/Task/Polynomial-long-division/Pluto/polynomial-long-division.pluto
2026-04-30 12:34:36 -04:00

30 lines
747 B
Text

require "poly"
local function ldiv(p1, p2)
local num = p1:toarray():reverse()
local den = p2:toarray():reverse()
local result = {}
local base = #num - #den
while base >= 0 do
local res = num:back() / den:back()
result:insert(res)
num = num:slice(1, #num - 1)
for i = 1, #den - 1 do
num[base + i] -= res * den[i]
end
base -= 1
end
local quot = poly.of(result)
local rem = poly.of(num)
return {quot, rem}
end
local num = poly.of({1, -12, 0, -42})
local den = poly.of({1, -3})
local res = ldiv(num, den)
print("Dividing polynomials:")
print($"N = {num}")
print($"D = {den}")
print("---------------------")
print($"Q = {res[1]}")
print($"R = {res[2]}")