30 lines
747 B
Text
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]}")
|