Core JavaScript

Synthetic Division

The JavaScript code example demonstrates how to program a polynomial class with synthetic division and print the result in a clean format.

SyntheticDivision.html

<!DOCTYPE html>
<html>
<head>
  <title>XoaX.net's Javascript</title>
</head>
<body>
  <script type="text/javascript" src="SyntheticDivision.js"></script>
</body>
</html>

SyntheticDivision.js

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();
 

Output

 
 

© 2007–2025 XoaX.net LLC. All rights reserved.