The JavaScript code example demonstrates how to program a polynomial class with synthetic division and print the result in a clean format.
<!DOCTYPE html> <html> <head> <title>XoaX.net's Javascript</title> </head> <body> <script type="text/javascript" src="SyntheticDivision.js"></script> </body> </html>
function CPolynomial(daCoeff) {
this.mdaCoeff = new Array(daCoeff.length);
for (var iPower = 0; iPower < daCoeff.length; ++iPower) {
this.mdaCoeff[iPower] = daCoeff[iPower];
}
this.mfnDisplay = function() {
// Assume a non-constant polynomial
if (this.mdaCoeff.length > 1) {
// Assume the leading coeffient is nonzero
var sPoly = ((this.mdaCoeff[this.mdaCoeff.length - 1] < 0) ? "-":"");
sPoly += AbsTerm(this.mdaCoeff[this.mdaCoeff.length - 1], this.mdaCoeff.length - 1);
for (var iPower = this.mdaCoeff.length - 2; iPower >= 0; --iPower) {
if (this.mdaCoeff[iPower] > 0) {
sPoly += " + " + AbsTerm(this.mdaCoeff[iPower], iPower);
} else if (this.mdaCoeff[iPower] < 0) {
sPoly += " - " + AbsTerm(this.mdaCoeff[iPower], iPower);
}
}
document.writeln(sPoly);
}
}
this.SynDiv = function(dDivisor) {
var daQ = new Array(daCoeff.length - 1);
daQ[daCoeff.length - 2] = daCoeff[daCoeff.length - 1];
for (var iPower = daCoeff.length - 2; iPower > 0; --iPower) {
daQ[iPower - 1] = daCoeff[iPower] + dDivisor*daQ[iPower];
}
var dRemainder = daCoeff[0] + dDivisor*daQ[0];
return new CSynDivResult(new CPolynomial([-dDivisor, 1]), new CPolynomial(daQ), dRemainder);
}
}
function CSynDivResult (qD, qQ, dR) {
this.mqD = qD;
this.mqQ = qQ;
this.mdR = dR;
this.mfnDisplay = function() {
document.writeln("(");
this.mqD.mfnDisplay();
document.writeln(")");
document.writeln("(");
this.mqQ.mfnDisplay();
document.writeln(")");
if (this.mdR != 0) {
document.writeln(((this.mdR > 0)?" + ":" - ")+Math.abs(this.mdR));
}
document.writeln("<br />");
}
}
function AbsTerm(dC, iExp) {
var sTerm = "";
// Do not display zero terms
if (dC != 0) {
if (Math.abs(dC) != 1 || iExp == 0) {
// Print the positive coeffient
sTerm += Math.abs(dC);
}
if (iExp > 1) {
sTerm += "x<sup>" + iExp +"</sup>";
} else if (iExp == 1) {
sTerm += "x";
}
}
return sTerm;
}
var daCoeff = [1.0, -4.0, 6.0, -4.0, -1.0];
var qP = new CPolynomial(daCoeff);
qP.mfnDisplay();
document.writeln(" = ");
var qResult = qP.SynDiv(1);
qResult.mfnDisplay();© 20072025 XoaX.net LLC. All rights reserved.