September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,6 @@
|
|||
(1) -> monicDivide(x^3-12*x^2-42,x-3,'x)
|
||||
|
||||
2
|
||||
(1) [quotient = x - 9x - 27,remainder = - 123]
|
||||
|
||||
Type: Record(quotient: Polynomial(Integer),remainder: Polynomial(Integer))
|
||||
|
|
@ -1,20 +1,20 @@
|
|||
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)
|
||||
0.to(n.len.min(gd)-1).each { |i|
|
||||
{ |i|
|
||||
n[i] -= (rd[i] * piv)
|
||||
}
|
||||
} << ^(n.len `min` gd)
|
||||
n.shift
|
||||
}
|
||||
}, n)
|
||||
}
|
||||
|
||||
|
||||
return([0], rn)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
fcn polyLongDivision(a,b){ // (a0 + a1x + a2x^2 + a3x^3 ...)
|
||||
_assert_(degree(b)>=0,"degree(%s) < 0".fmt(b));
|
||||
q:=List.createLong(a.len(),0.0);
|
||||
while((ad:=degree(a)) >= (bd:=degree(b))){
|
||||
z,d,m := ad-bd, List.createLong(z,0.0).extend(b), a[ad]/b[bd];;
|
||||
q[z]=m;
|
||||
d,a = d.apply('*(m)), a.zipWith('-,d);
|
||||
}
|
||||
return(q,a); // may have trailing zero elements
|
||||
}
|
||||
fcn degree(v){ // -1,0,..len(v)-1, -1 if v==0
|
||||
v.len() - v.copy().reverse().filter1n('!=(0)) - 1;
|
||||
}
|
||||
fcn polyString(terms){ // (a0,a1,a2...)-->"a0 + a1x + a2x^2 ..."
|
||||
str:=[0..].zipWith('wrap(n,a){ if(a) "+ %sx^%s ".fmt(a,n) else "" },terms)
|
||||
.pump(String)
|
||||
.replace("x^0 "," ").replace(" 1x"," x").replace("x^1 ","x ")
|
||||
.replace("+ -", "- ");
|
||||
if(not str) return(" "); // all zeros
|
||||
if(str[0]=="+") str[1,*]; // leave leading space
|
||||
else String("-",str[2,*]);
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
q,r:=polyLongDivision(T(-42.0, 0.0, -12.0, 1.0),T(-3.0, 1.0));
|
||||
println("Quotient = ",polyString(q));
|
||||
println("Remainder = ",polyString(r));
|
||||
Loading…
Add table
Add a link
Reference in a new issue