Polynomial Long Division Implement polynomial long division, an algorithm that divides two polynomials and gets the quotient and remainder:

(12x^3 - 5x^2 + 3x - 1) / (x^2 - 5) = 12x - 5 R 63x - 26

In your programs, you will represent polynomials as an array, with the constant term on the tail. for example, x^5 - 3x^4 + 2x^2 - x + 1 will become [1, -3, 0, 2, -1, 1].

The long division function you are going to write will return two values: the quotient and the remainder. You do not need to handle numerical imprecisions and arithmetic errors. Do not use math library to do your job, however, you may make your function able to deal with symbolic values. Shortest code wins.

EXAMPLE: div([12, -5, 3, -1], [1, 0, -5]) == ([12, -5], [63, -26])
J, 94

f=:&gt;@(0&amp;{)
d=:0{[%~0{[:f]
D=:4 :'x((1}.([:f])-((#@]{.[)f)*d);([:&gt;1{]),d)^:(&gt;:((#f y)-(#x)))y'


eg.

(1 0 _5) D (12 _5 3 _1;'')
63 _26 | 12  _5


Explanation of some snippets, given that a: (12 -5 3 -1) and b: (1 0 -5)

length of a:

#a
4


make a and b same order by appending zeroes to b:

(#a) {. b
1 0 -5 0


divide higher powers (first elements) of a, b:

(0{a) % (0{b)
12


multiply b by that and subtract it from a:

a - 12*b
12 0 _60


repeat n times b = f(a,b):

a f^:n b