Polynomial long division

func poly_long_div(rn, rd) {
 
    var n = rn.map{_}
    var gd = rd.len
 
    if (n.len >= gd) {
        return(gather {
            while (n.len >= gd) {
                var piv = n[0]/rd[0]
                take(piv)
                { |i|
                    n[i] -= (rd[i] * piv)
                } << ^(n.len `min` gd)
                n.shift
            }
        }, n)
    }
 
    return([0], rn)
}

Example:

Output:

Last updated

Was this helpful?