|
|
/* This library do operations on polinomials where their coefficients are in field F
The polynomial P(x) = p0 + p1 * x + p2 * x^2 + p3 * x^3, ... is represented by the array [ p0, p1, p2, p3, ... ] */
class PolField { constructor (F) { this.F = F; }
_reduce(a) { let i = a.length-1; while ((i>=0) && (this.F.isZero(a[i])) ) i--; return (i < a.length-1) ? a.slice(0, i+1) : a; }
add(a, b) { const maxGrade = Math.max(a.length, b.length); const res = new Array(maxGrade); for (let i=0; i<maxGrade; i++) { res[i] = this.F.add(a[i], b[i]); } return this._reduce(res); }
sub(a, b) { throw new Error("Not Implementted"); }
mul(a, b) { throw new Error("Not Implementted"); }
div(a, b) { throw new Error("Not Implementted"); }
lagrange(points) { throw new Error("Not Implementted"); } }
module.exports = PolField;
|