diff --git a/src/Numerics.Tests/PolynomialTests.cs b/src/Numerics.Tests/PolynomialTests.cs
index 53c02817..2a45d7f0 100644
--- a/src/Numerics.Tests/PolynomialTests.cs
+++ b/src/Numerics.Tests/PolynomialTests.cs
@@ -69,7 +69,7 @@ namespace MathNet.Numerics.UnitTests
Assert.AreEqual(expected.Length, p_res.CoefficientCount, "length mismatch");
for (int k = 0; k < p_res.CoefficientCount; k++)
{
- Assert.AreEqual(expected[k], p_res.Coeffs[k], "idx: " + k + " mismatch");
+ Assert.AreEqual(expected[k], p_res.Coefficients[k], "idx: " + k + " mismatch");
}
}
}
@@ -92,7 +92,7 @@ namespace MathNet.Numerics.UnitTests
Assert.AreEqual(expected.Length, p_res.CoefficientCount, "length mismatch");
for (int k = 0; k < p_res.CoefficientCount; k++)
{
- Assert.AreEqual(expected[k], p_res.Coeffs[k], "idx: " + k + " mismatch");
+ Assert.AreEqual(expected[k], p_res.Coefficients[k], "idx: " + k + " mismatch");
}
}
}
@@ -128,7 +128,7 @@ namespace MathNet.Numerics.UnitTests
Assert.AreEqual(p_tar.CoefficientCount, p_res.CoefficientCount, "length mismatch");
for (int k = 0; k < p_res.CoefficientCount; k++)
{
- Assert.AreEqual(p_tar.Coeffs[k], p_res.Coeffs[k], msg);
+ Assert.AreEqual(p_tar.Coefficients[k], p_res.Coefficients[k], msg);
}
}
}
@@ -165,7 +165,7 @@ namespace MathNet.Numerics.UnitTests
Assert.AreEqual(p_tar.CoefficientCount, p_res.CoefficientCount, "length mismatch");
for (int k = 0; k < p_res.CoefficientCount; k++)
{
- Assert.AreEqual(p_tar.Coeffs[k], p_res.Coeffs[k], msg);
+ Assert.AreEqual(p_tar.Coefficients[k], p_res.Coefficients[k], msg);
}
}
}
@@ -201,7 +201,7 @@ namespace MathNet.Numerics.UnitTests
Assert.AreEqual(p_tar.CoefficientCount, p_res.CoefficientCount, "length mismatch");
for (int k = 0; k < p_res.CoefficientCount; k++)
{
- Assert.AreEqual(p_tar.Coeffs[k], p_res.Coeffs[k], msg);
+ Assert.AreEqual(p_tar.Coefficients[k], p_res.Coefficients[k], msg);
}
}
}
@@ -362,7 +362,7 @@ namespace MathNet.Numerics.UnitTests
Assert.AreEqual(p_tar.Length, p_res.CoefficientCount, "length mismatch");
for (int k = 0; k < p_res.CoefficientCount; k++)
{
- Assert.AreEqual(p_tar[k], p_res.Coeffs[k], msg);
+ Assert.AreEqual(p_tar[k], p_res.Coefficients[k], msg);
}
}
@@ -371,7 +371,7 @@ namespace MathNet.Numerics.UnitTests
Assert.AreEqual(p_tar.CoefficientCount, p_res.CoefficientCount, "length mismatch");
for (int k = 0; k < p_res.CoefficientCount; k++)
{
- Assert.AreEqual(p_tar.Coeffs[k], p_res.Coeffs[k], msg);
+ Assert.AreEqual(p_tar.Coefficients[k], p_res.Coefficients[k], msg);
}
}
}
diff --git a/src/Numerics/Polynomial.cs b/src/Numerics/Polynomial.cs
index 9ded9cea..1ed00007 100644
--- a/src/Numerics/Polynomial.cs
+++ b/src/Numerics/Polynomial.cs
@@ -17,7 +17,7 @@ namespace MathNet.Numerics
///
/// The coefficients of the polynomial in a
///
- public double[] Coeffs { get; set; }
+ public double[] Coefficients { get; set; }
///
/// Only needed for the ToString method
@@ -31,7 +31,7 @@ namespace MathNet.Numerics
{
get
{
- return (Coeffs == null ? 0 : Coeffs.Length);
+ return (Coefficients == null ? 0 : Coefficients.Length);
}
}
@@ -43,14 +43,14 @@ namespace MathNet.Numerics
{
get
{
- if (Coeffs == null)
+ if (Coefficients == null)
{
return -1;
}
- for (int i = Coeffs.Length - 1; i >= 0; i--)
+ for (int i = Coefficients.Length - 1; i >= 0; i--)
{
- if (Coeffs[i] != 0.0)
+ if (Coefficients[i] != 0.0)
{
return i;
}
@@ -70,45 +70,44 @@ namespace MathNet.Numerics
{
throw new ArgumentOutOfRangeException("n must be postive");
}
- Coeffs = new double[n];
+ Coefficients = new double[n];
}
-
///
/// make Polynomial: e.G 3.0 = 3.0 + 0 x^1 + 0 x^2
///
- /// just the "x^0" part
- public Polynomial(double coeff)
+ /// just the "x^0" part
+ public Polynomial(double coefficient)
{
- this.Coeffs = new double[1];
- Coeffs[0] = coeff;
+ Coefficients = new double[1];
+ Coefficients[0] = coefficient;
}
///
/// make Polynomial: e.G new double[] {5, 0, 2} = "5 + 0 x^1 + 2 x^2"
///
- /// Polynomial coefficiens as enumerable
- public Polynomial(IEnumerable coeffs)
+ /// Polynomial coefficients as enumerable
+ public Polynomial(IEnumerable coefficients)
{
- if (coeffs == null)
+ if (coefficients == null)
{
- throw new ArgumentNullException("coeffs");
+ throw new ArgumentNullException(nameof(coefficients));
}
- this.Coeffs = coeffs.ToArray();
+ Coefficients = coefficients.ToArray();
}
///
/// make Polynomial: e.G new double[] {5, 0, 2} = "5 + 0 x^1 + 2 x^2"
///
- /// Polynomial coefficiens as array
- public Polynomial(double[] coeffs)
+ /// Polynomial coefficients as array
+ public Polynomial(double[] coefficients)
{
- if (coeffs == null)
+ if (coefficients == null)
{
- throw new ArgumentNullException("coeffs");
+ throw new ArgumentNullException(nameof(coefficients));
}
- this.Coeffs = new double[coeffs.Length];
- Array.Copy(coeffs, this.Coeffs, coeffs.Length);
+ Coefficients = new double[coefficients.Length];
+ Array.Copy(coefficients, Coefficients, coefficients.Length);
}
///
@@ -120,30 +119,27 @@ namespace MathNet.Numerics
return;
int i = CoefficientCount - 1;
- while (i >= 0 && Coeffs[i] == 0.0)
+ while (i >= 0 && Coefficients[i] == 0.0)
i--;
if (i < 0)
- Coeffs = new double[1] { 0.0 };
+ Coefficients = new[] { 0.0 };
else if (i == 0)
- Coeffs = new double[1] { Coeffs[0] };
+ Coefficients = new[] { Coefficients[0] };
else
{
var hold = new double[i+1];
- Array.Copy(Coeffs, hold, i+1);
- Coeffs = hold;
+ Array.Copy(Coefficients, hold, i+1);
+ Coefficients = hold;
}
}
-
- #region Data Interaction
-
///
/// Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k
///
public static Polynomial Fit(double[] x, double[] y, int order, DirectRegressionMethod method = DirectRegressionMethod.QR)
{
- var pArr = MathNet.Numerics.Fit.Polynomial(x, y, order, method);
+ var pArr = Numerics.Fit.Polynomial(x, y, order, method);
return new Polynomial(pArr);
}
@@ -153,7 +149,7 @@ namespace MathNet.Numerics
/// The location where to evaluate the polynomial at.
public double Evaluate(double z)
{
- return MathNet.Numerics.Evaluate.Polynomial(z, Coeffs);
+ return Numerics.Evaluate.Polynomial(z, Coefficients);
}
///
@@ -162,32 +158,30 @@ namespace MathNet.Numerics
/// The locations where to evaluate the polynomial at.
public IEnumerable Evaluate(IEnumerable z)
{
- var Lst = new List();
+ var result = new List();
foreach (var item in z)
{
- Lst.Add(Evaluate(item));
+ result.Add(Evaluate(item));
}
- return Lst;
- }
- #endregion
+ return result;
+ }
- #region diff/int
public Polynomial Differentiate()
{
-
- if (Coeffs.Length == 0)
+ if (Coefficients.Length == 0)
{
return null;
}
- var t = this.Clone() as Polynomial;
+ var t = Clone() as Polynomial;
t.Trim();
- var cNew = new double[t.Coeffs.Length - 1];
- for (int i = 1; i < t.Coeffs.Length; i++)
+ var cNew = new double[t.Coefficients.Length - 1];
+ for (int i = 1; i < t.Coefficients.Length; i++)
{
- cNew[i-1] = t.Coeffs[i] * i;
+ cNew[i-1] = t.Coefficients[i] * i;
}
+
var p = new Polynomial(cNew);
p.Trim();
return p;
@@ -195,30 +189,26 @@ namespace MathNet.Numerics
public Polynomial Integrate()
{
- var t = this.Clone() as Polynomial;
+ var t = Clone() as Polynomial;
t.Trim();
- var cNew = new double[t.Coeffs.Length + 1];
+ var cNew = new double[t.Coefficients.Length + 1];
for (int i = 1; i < cNew.Length; i++)
{
- cNew[i] = t.Coeffs[i-1] / i;
+ cNew[i] = t.Coefficients[i - 1] / i;
}
+
var p = new Polynomial(cNew);
p.Trim();
return p;
}
- #endregion
-
- #region Operators
-
-
///
/// multiplies a Polynomial by a Polynomial using convolution [ASINCO.libs.subfun.conv(a.Coeffs, b.Coeffs)]
///
/// left Polynomial
/// right Polynomial
/// resulting Polynomial
- public static Polynomial operator *( Polynomial a, Polynomial b)
+ public static Polynomial operator *(Polynomial a, Polynomial b)
{
var aa = a.Clone() as Polynomial;
var bb = b.Clone() as Polynomial;
@@ -226,12 +216,12 @@ namespace MathNet.Numerics
//a.Trim();
//b.Trim();
- double[] ret = conv(aa.Coeffs, bb.Coeffs);
- Polynomial ret_p = new Polynomial(ret);
+ double[] ret = Convolution(aa.Coefficients, bb.Coefficients);
+ Polynomial result = new Polynomial(ret);
//ret_p.Trim();
- return (ret_p);
+ return result;
}
@@ -241,13 +231,12 @@ namespace MathNet.Numerics
/// left Polynomial
/// scalar value
/// resulting Polynomial
- public static Polynomial operator *( Polynomial a, double k)
+ public static Polynomial operator *(Polynomial a, double k)
{
var aa = a.Clone() as Polynomial;
-
- for (int ii = 0; ii < aa.Coeffs.Length; ii++)
- aa.Coeffs[ii] *= k;
+ for (int ii = 0; ii < aa.Coefficients.Length; ii++)
+ aa.Coefficients[ii] *= k;
return aa;
}
@@ -258,11 +247,11 @@ namespace MathNet.Numerics
/// left Polynomial
/// scalar value
/// resulting Polynomial
- public static Polynomial operator +( Polynomial a, double k)
+ public static Polynomial operator +(Polynomial a, double k)
{
var aa = a.Clone() as Polynomial;
- aa.Coeffs[0] += k;
+ aa.Coefficients[0] += k;
return aa;
}
@@ -272,11 +261,11 @@ namespace MathNet.Numerics
/// left Polynomial
/// scalar value
/// resulting Polynomial
- public static Polynomial operator -( Polynomial a, double k)
+ public static Polynomial operator -(Polynomial a, double k)
{
var aa = a.Clone() as Polynomial;
- a.Coeffs[0] -= k;
+ a.Coefficients[0] -= k;
return aa;
}
@@ -286,12 +275,12 @@ namespace MathNet.Numerics
/// left Polynomial
/// scalar value
/// resulting Polynomial
- public static Polynomial operator /( Polynomial a, double k)
+ public static Polynomial operator /(Polynomial a, double k)
{
var aa = a.Clone() as Polynomial;
- for (int ii = 0; ii < aa.Coeffs.Length; ii++)
- aa.Coeffs[ii] /= k;
+ for (int ii = 0; ii < aa.Coefficients.Length; ii++)
+ aa.Coefficients[ii] /= k;
return aa;
}
@@ -302,7 +291,7 @@ namespace MathNet.Numerics
/// left Polynomial
/// right Polynomial
/// resulting Polynomial
- public static Polynomial operator +( Polynomial a, Polynomial b)
+ public static Polynomial operator +(Polynomial a, Polynomial b)
{
return Add(a, b);
}
@@ -313,7 +302,7 @@ namespace MathNet.Numerics
/// left Polynomial
/// right Polynomial
/// resulting Polynomial
- public static Polynomial operator -( Polynomial a, Polynomial b)
+ public static Polynomial operator -(Polynomial a, Polynomial b)
{
return Substract(a, b);
}
@@ -324,25 +313,26 @@ namespace MathNet.Numerics
/// a vector of complex numbers with the roots
public Complex[] GetRoots()
{
- DenseMatrix A = this.GetEigValMatrix();
- Complex[] c_vec;
+ DenseMatrix A = GetEigValMatrix();
+ Complex[] roots;
if (A == null)
{
- if (Coeffs.Length < 2)
+ if (Coefficients.Length < 2)
{
- var val = Coeffs.Length == 1 ? Coeffs[0] : Double.NaN;
- c_vec = new Complex[1] { val };
+ var val = Coefficients.Length == 1 ? Coefficients[0] : Double.NaN;
+ roots = new Complex[] { val };
}
else
- c_vec = new Complex[1] { new Complex(-Coeffs[0] / Coeffs[1], 0) };
+ roots = new[] { new Complex(-Coefficients[0] / Coefficients[1], 0) };
}
else
{
Evd eigen = A.Evd(Symmetricity.Asymmetric);
- c_vec = eigen.EigenValues.ToArray();
+ roots = eigen.EigenValues.ToArray();
}
- return c_vec;
+
+ return roots;
}
///
@@ -352,26 +342,28 @@ namespace MathNet.Numerics
/// this matrix is similar to the companion matrix of this polynomial, in such a way, that it's transpose is the columnflip of the companion matrix
public DenseMatrix GetEigValMatrix()
{
- Polynomial pLoc = new Polynomial(this.Coeffs);
+ Polynomial pLoc = new Polynomial(Coefficients);
pLoc.Trim();
- int n = pLoc.Coeffs.Length - 1;
+ int n = pLoc.Coefficients.Length - 1;
if (n < 2)
+ {
return null;
+ }
+ double a0 = pLoc.Coefficients[n];
double[] p = new double[n];
-
- double a0 = pLoc.Coeffs[n];
-
for (int ii = n - 1; ii >= 0; ii--)
- p[ii] = -pLoc.Coeffs[ii] / a0;
+ {
+ p[ii] = -pLoc.Coefficients[ii] / a0;
+ }
DenseMatrix A0 = DenseMatrix.CreateDiagonal(n - 1, n - 1, 1.0);
DenseMatrix A = new DenseMatrix(n);
A.SetSubMatrix(1, 0, A0);
-
A.SetRow(0, p.Reverse().ToArray());
+
return A;
}
@@ -381,24 +373,24 @@ namespace MathNet.Numerics
/// left Polynomial
/// right Polynomial
/// resulting Polynomial
- public static Polynomial DividePointwise( Polynomial a, Polynomial b)
+ public static Polynomial DividePointwise(Polynomial a, Polynomial b)
{
var aa = a.Clone() as Polynomial;
var bb = b.Clone() as Polynomial;
- if (aa.Coeffs.Length != bb.Coeffs.Length)
- mkSameLength(ref aa, ref bb);
-
- int n = aa.Coeffs.Length;
- double[] res = new double[aa.Coeffs.Length];
-
+ if (aa.Coefficients.Length != bb.Coefficients.Length)
+ {
+ MakeSameLength(ref aa, ref bb);
+ }
+ int n = aa.Coefficients.Length;
+ double[] res = new double[aa.Coefficients.Length];
for (int ii = 0; ii < n; ii++)
{
- res[ii] = aa.Coeffs[ii] / bb.Coeffs[ii];
+ res[ii] = aa.Coefficients[ii] / bb.Coefficients[ii];
}
- Polynomial res_poly = new Polynomial(res);
- return (res_poly);
+
+ return new Polynomial(res);
}
///
@@ -407,24 +399,24 @@ namespace MathNet.Numerics
/// left Polynomial
/// right Polynomial
/// resulting Polynomial
- public static Polynomial MultiplyPointwise( Polynomial a, Polynomial b)
+ public static Polynomial MultiplyPointwise(Polynomial a, Polynomial b)
{
var aa = a.Clone() as Polynomial;
var bb = b.Clone() as Polynomial;
- if (aa.Coeffs.Length != bb.Coeffs.Length)
- mkSameLength(ref aa, ref bb);
-
- int n = aa.Coeffs.Length;
- double[] res = new double[aa.Coeffs.Length];
-
+ if (aa.Coefficients.Length != bb.Coefficients.Length)
+ {
+ MakeSameLength(ref aa, ref bb);
+ }
+ int n = aa.Coefficients.Length;
+ double[] res = new double[aa.Coefficients.Length];
for (int ii = 0; ii < n; ii++)
{
- res[ii] = aa.Coeffs[ii] * bb.Coeffs[ii];
+ res[ii] = aa.Coefficients[ii] * bb.Coefficients[ii];
}
- Polynomial res_poly = new Polynomial(res);
- return (res_poly);
+
+ return new Polynomial(res);
}
///
@@ -433,24 +425,24 @@ namespace MathNet.Numerics
/// left Polynomial
/// right Polynomial
/// resulting Polynomial
- public static Polynomial Add( Polynomial a, Polynomial b)
+ public static Polynomial Add(Polynomial a, Polynomial b)
{
var aa = a.Clone() as Polynomial;
var bb = b.Clone() as Polynomial;
if (aa.CoefficientCount != bb.CoefficientCount)
- mkSameLength(ref aa, ref bb);
+ {
+ MakeSameLength(ref aa, ref bb);
+ }
int n = aa.CoefficientCount;
double[] res = new double[n];
-
-
for (int ii = 0; ii < n; ii++)
{
- res[ii] = aa.Coeffs[ii] + bb.Coeffs[ii];
+ res[ii] = aa.Coefficients[ii] + bb.Coefficients[ii];
}
- Polynomial res_poly = new Polynomial(res);
- return (res_poly);
+
+ return new Polynomial(res);
}
///
@@ -459,24 +451,24 @@ namespace MathNet.Numerics
/// left Polynomial
/// right Polynomial
/// resulting Polynomial
- public static Polynomial Substract( Polynomial a, Polynomial b)
+ public static Polynomial Substract(Polynomial a, Polynomial b)
{
var aa = a.Clone() as Polynomial;
var bb = b.Clone() as Polynomial;
if (aa.CoefficientCount != bb.CoefficientCount)
- mkSameLength(ref aa, ref bb);
+ {
+ MakeSameLength(ref aa, ref bb);
+ }
int n = aa.CoefficientCount;
double[] res = new double[n];
-
-
for (int ii = 0; ii < n; ii++)
{
- res[ii] = aa.Coeffs[ii] - bb.Coeffs[ii];
+ res[ii] = aa.Coefficients[ii] - bb.Coefficients[ii];
}
- Polynomial res_poly = new Polynomial(res);
- return (res_poly);
+
+ return new Polynomial(res);
}
///
@@ -497,11 +489,11 @@ namespace MathNet.Numerics
if (b.CoefficientCount <= 0)
throw new ArgumentOutOfRangeException("b Degree must be greater than zero");
- if (b.Coeffs[b.CoefficientCount-1] == 0)
+ if (b.Coefficients[b.CoefficientCount-1] == 0)
throw new DivideByZeroException("b polynomial ends with zero");
- var c1 = a.Coeffs.ToArray();
- var c2 = b.Coeffs.ToArray();
+ var c1 = a.Coefficients.ToArray();
+ var c2 = b.Coefficients.ToArray();
var n1 = c1.Length;
var n2 = c2.Length;
@@ -529,14 +521,15 @@ namespace MathNet.Numerics
var scl = c2[n2 - 1];
var c22 = new double[n2 - 1];
for (int ii = 0; ii < c22.Length; ii++)
+ {
c22[ii] = c2[ii] / scl;
+ }
int i = dn;
int j = n1 - 1;
while (i >= 0)
{
var v = c1[j];
- var vals = new double[j - i];
for (int k = i; k < j; k++)
c1[k] -= c22[k-i] * v;
i--;
@@ -550,10 +543,14 @@ namespace MathNet.Numerics
quo = new double[l1];
for (int k = 0; k < l1; k++)
+ {
quo[k] = c1[k + j1] / scl;
+ }
for (int k = 0; k < j1; k++)
+ {
rem[k] = c1[k];
+ }
}
@@ -563,7 +560,6 @@ namespace MathNet.Numerics
if (quo == null)
throw new NullReferenceException("resulting quotient was null");
-
// output mapping
var pQuo = new Polynomial(quo);
var pRem = new Polynomial(rem);
@@ -573,7 +569,6 @@ namespace MathNet.Numerics
return new Tuple(pQuo, pRem);
}
-
///
/// Division of two polynomials returning the quotient-with-remainder of the two polynomials given
///
@@ -584,10 +579,6 @@ namespace MathNet.Numerics
return DivideLong(this, b);
}
-
- #endregion
-
- #region Displaying
///
/// "0.00 x^3 + 0.00 x^2 + 0.00 x^1 + 0.00" like display of this Polynomial
///
@@ -603,95 +594,84 @@ namespace MathNet.Numerics
/// string in displayed format
public string ToString(bool highestFirst)
{
- string strLoc = "";
- if (this.Coeffs == null)
+ if (Coefficients == null)
{
return "null";
}
- if (this.Coeffs.Length == 0)
+ if (Coefficients.Length == 0)
{
return "";
}
+ string result = "";
if (!highestFirst)
{
- for (int ii = 0; ii < Coeffs.Length; ii++)
+ for (int ii = 0; ii < Coefficients.Length; ii++)
{
- if (ii == 0 && Coeffs.Length == 1)
- strLoc += String.Format("{0}", this.Coeffs[ii], VarName, ii);
+ if (ii == 0 && Coefficients.Length == 1)
+ result += String.Format("{0}", Coefficients[ii], VarName, ii);
else if(ii == 0)
- strLoc += String.Format("{0} + ", this.Coeffs[ii], VarName, ii);
- else if (ii == Coeffs.Length - 1)
- strLoc += String.Format("{0}{1}{2}", this.Coeffs[ii], VarName, ii);
+ result += String.Format("{0} + ", Coefficients[ii], VarName, ii);
+ else if (ii == Coefficients.Length - 1)
+ result += String.Format("{0}{1}{2}", Coefficients[ii], VarName, ii);
else
- strLoc += String.Format("{0}{1}{2} + ", this.Coeffs[ii], VarName, ii);
+ result += String.Format("{0}{1}{2} + ", Coefficients[ii], VarName, ii);
}
}
else
{
- for (int ii = Coeffs.Length - 1; ii >= 0; ii--)
+ for (int ii = Coefficients.Length - 1; ii >= 0; ii--)
{
if (ii == 0)
- strLoc += this.Coeffs[ii].ToString();
+ result += Coefficients[ii].ToString();
else
- strLoc += String.Format("{0}{1}{2} + ", this.Coeffs[ii], VarName, ii);
+ result += String.Format("{0}{1}{2} + ", Coefficients[ii], VarName, ii);
}
}
- return strLoc;
+ return result;
}
-
- #endregion
-
- #region Interfacing
-
///
- /// This method returns the coefficcients of the Polynomial as an array the "IsFlipped" property,
+ /// This method returns the coefficients of the Polynomial as an array the "IsFlipped" property,
/// which is set during construction is taken into account automatically.
///
- /// the coefficcients of the Polynomial as an array
+ /// the coefficients of the Polynomial as an array
public double[] ToArray()
{
- return (Coeffs.ToArray());
+ return Coefficients.ToArray();
}
- #endregion
-
- #region Helpers
-
- private static void mkSameLength(ref Polynomial a, ref Polynomial b)
+ static void MakeSameLength(ref Polynomial a, ref Polynomial b)
{
- double[] aHold = new double[a.Coeffs.Length];
- double[] bHold = new double[b.Coeffs.Length];
- Array.Copy(a.Coeffs, aHold, a.Coeffs.Length);
- Array.Copy(b.Coeffs, bHold, b.Coeffs.Length);
+ double[] aHold = new double[a.Coefficients.Length];
+ double[] bHold = new double[b.Coefficients.Length];
+ Array.Copy(a.Coefficients, aHold, a.Coefficients.Length);
+ Array.Copy(b.Coefficients, bHold, b.Coefficients.Length);
- if (a.Coeffs.Length < b.Coeffs.Length)
+ if (a.Coefficients.Length < b.Coefficients.Length)
{
- a.Coeffs = new double[b.Coeffs.Length];
- b.Coeffs = new double[b.Coeffs.Length];
- Array.Copy(aHold, a.Coeffs, aHold.Length);
- Array.Copy(bHold, b.Coeffs, bHold.Length);
+ a.Coefficients = new double[b.Coefficients.Length];
+ b.Coefficients = new double[b.Coefficients.Length];
+ Array.Copy(aHold, a.Coefficients, aHold.Length);
+ Array.Copy(bHold, b.Coefficients, bHold.Length);
}
else
{
- a.Coeffs = new double[a.Coeffs.Length];
- b.Coeffs = new double[a.Coeffs.Length];
- Array.Copy(aHold, a.Coeffs, aHold.Length);
- Array.Copy(bHold, b.Coeffs, bHold.Length);
+ a.Coefficients = new double[a.Coefficients.Length];
+ b.Coefficients = new double[a.Coefficients.Length];
+ Array.Copy(aHold, a.Coefficients, aHold.Length);
+ Array.Copy(bHold, b.Coefficients, bHold.Length);
}
}
///
- /// (full) convolution of two arrays
+ /// Full convolution of two arrays
///
- /// left vector
- /// right vector
/// convolution of a and b as vector
- private static double[] conv(double[] a, double[] b)
+ static double[] Convolution(double[] a, double[] b)
{
double[] ret = new double[a.Length + b.Length];
@@ -707,10 +687,8 @@ namespace MathNet.Numerics
public object Clone()
{
- return new Polynomial(this.Coeffs);
+ // TODO: this assumes the constructor does a copy
+ return new Polynomial(Coefficients);
}
- #endregion
-
}
-
}