6 changed files with 1101 additions and 847 deletions
@ -0,0 +1,634 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Globalization; |
|||
using MathNet.Numerics.LinearAlgebra.Double; |
|||
using MbUnit.Framework; |
|||
|
|||
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double |
|||
{ |
|||
public abstract partial class VectorTests |
|||
{ |
|||
[Test] |
|||
public void CanCallPlus() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = vector.Plus(); |
|||
Assert.AreSame(vector, other, "Should be the same vector"); |
|||
} |
|||
|
|||
[Test] |
|||
public void OperatorPlusThrowsArgumentNullExceptionWhenCallOnNullVector() |
|||
{ |
|||
Vector vector = null; |
|||
Vector other = null; |
|||
Assert.Throws<ArgumentNullException>(() => other = +vector); |
|||
} |
|||
|
|||
[Test] |
|||
public void CanCallUnaryPlusOperator() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = +vector; |
|||
Assert.AreSame(vector, other, "Should be the same vector"); |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanAddScalarToVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector.Add(2.0); |
|||
|
|||
for( var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i]+2.0, vector[i]); |
|||
} |
|||
|
|||
vector.Add(0.0); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] + 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanAddScalarToVectorUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Add(2.0, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] + 2.0, result[i]); |
|||
} |
|||
|
|||
vector.Add(0.0, result); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenAddingScalarWithNullResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Add(0.0, null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenAddingScalarWithWrongSizeResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var result = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => vector.Add(0.0, result)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenAddingTwoVectorsAndOneIsNull() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Add(null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenAddingTwoVectorsOfDifferingSize() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var other = CreateVector(_data.Length +1); |
|||
Assert.Throws<ArgumentException>(() => vector.Add(other)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenAddingTwoVectorsAndResultIsNull() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var other = CreateVector(_data.Length+1); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Add(other,null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenAddingTwoVectorsAndResultIsDifferentSize() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var other = CreateVector(_data.Length); |
|||
var result = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => vector.Add(other, result)); |
|||
} |
|||
|
|||
[Test] |
|||
public void AdditionOperatorThrowsArgumentNullExpectionIfAVectorIsNull() |
|||
{ |
|||
Vector a = null; |
|||
var b = CreateVector(_data.Length); |
|||
Assert.Throws<ArgumentNullException>(()=> a += b); |
|||
|
|||
a = b; |
|||
b = null; |
|||
Assert.Throws<ArgumentNullException>(() => a += b); |
|||
} |
|||
|
|||
[Test] |
|||
public void AdditionOperatorThrowsArgumentExpectionIfVectorsAreDifferentSize() |
|||
{ |
|||
var a = CreateVector(_data.Length); |
|||
var b = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => a += b); |
|||
} |
|||
|
|||
[Test] |
|||
public void CanAddTwoVectors() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
vector.Add(other); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanAddTwoVectorsUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Add(other, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i], other[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] * 2.0, result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanAddTwoVectorsUsingOperator() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
var result = vector + other; |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i], other[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] * 2.0, result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
public void CanAddVectorToItself() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector.Add(vector); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanAddVectorToItselfUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Add(vector, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] * 2.0, result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanAddTwoVectorsUsingItselfAsResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
vector.Add(other, vector); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], other[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
public void CanCallNegate() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = vector.Negate(); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(-_data[i], other[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
public void OperatorNegateThrowsArgumentNullExceptionWhenCallOnNullVector() |
|||
{ |
|||
Vector vector = null; |
|||
Vector other = null; |
|||
Assert.Throws<ArgumentNullException>(() => other = -vector); |
|||
} |
|||
|
|||
[Test] |
|||
public void CanCallUnaryNegationOperator() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = -vector; |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(-_data[i], other[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanSubtractScalarFromVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector.Subtract(2.0); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] - 2.0, vector[i]); |
|||
} |
|||
|
|||
vector.Subtract(0.0); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] - 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanSubtractScalarFromVectorUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Subtract(2.0, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] - 2.0, result[i]); |
|||
} |
|||
|
|||
vector.Subtract(0.0, result); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenSubtractingScalarWithNullResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Subtract(0.0, null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenSubtractingScalarWithWrongSizeResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var result = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => vector.Subtract(0.0, result)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenSubtractingTwoVectorsAndOneIsNull() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Subtract(null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenSubtractingTwoVectorsOfDifferingSize() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var other = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => vector.Subtract(other)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenSubtractingTwoVectorsAndResultIsNull() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var other = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Subtract(other, null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenSubtractingTwoVectorsAndResultIsDifferentSize() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var other = CreateVector(_data.Length); |
|||
var result = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => vector.Subtract(other, result)); |
|||
} |
|||
|
|||
[Test] |
|||
public void SubtractionOperatorThrowsArgumentNullExpectionIfAVectorIsNull() |
|||
{ |
|||
Vector a = null; |
|||
var b = CreateVector(_data.Length); |
|||
Assert.Throws<ArgumentNullException>(() => a -= b); |
|||
|
|||
a = b; |
|||
b = null; |
|||
Assert.Throws<ArgumentNullException>(() => a -= b); |
|||
} |
|||
|
|||
[Test] |
|||
public void SubtractionOperatorThrowsArgumentExpectionIfVectorsAreDifferentSize() |
|||
{ |
|||
var a = CreateVector(_data.Length); |
|||
var b = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => a -= b); |
|||
} |
|||
|
|||
[Test] |
|||
public void CanSubtractTwoVectors() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
vector.Subtract(other); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(0.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanSubtractTwoVectorsUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Subtract(other, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i], other[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(0.0, result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanSubtractTwoVectorsUsingOperator() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
var result = vector - other; |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i], other[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(0.0, result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
public void CanSubtractVectorFromItself() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector.Subtract(vector); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(0.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanSubtractVectorFromItselfUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Subtract(vector, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(0.0, result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanSubtractTwoVectorsUsingItselfAsResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var other = CreateVector(_data); |
|||
vector.Subtract(other, vector); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], other[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(0.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanDivideVectorByScalar() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector.Divide(2.0); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] / 2.0, vector[i]); |
|||
} |
|||
|
|||
vector.Divide(1.0); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] / 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanDivideVectorByScalarUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Divide(2.0, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] / 2.0, result[i]); |
|||
} |
|||
|
|||
vector.Divide(1.0, result); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanMultiplyVectorByScalar() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector.Multiply(2.0); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
|
|||
vector.Multiply(1.0); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanMultiplyVectorByScalarUsingResultVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var result = CreateVector(_data.Length); |
|||
vector.Multiply(2.0, result); |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], vector[i], "Making sure the original vector wasn't modified."); |
|||
Assert.AreEqual(_data[i] * 2.0, result[i]); |
|||
} |
|||
|
|||
vector.Multiply(1.0, result); |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i], result[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenMultiplyingScalarWithNullResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Multiply(1.0, null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentNullExceptionWhenDividingScalarWithNullResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
Assert.Throws<ArgumentNullException>(() => vector.Divide(1.0, null)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenMultiplyingScalarWithWrongSizeResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var result = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => vector.Multiply(0.0, result)); |
|||
} |
|||
|
|||
[Test] |
|||
public void ThrowsArgumentExceptionWhenDividingScalarWithWrongSizeResultVector() |
|||
{ |
|||
var vector = CreateVector(_data.Length); |
|||
var result = CreateVector(_data.Length + 1); |
|||
Assert.Throws<ArgumentException>(() => vector.Divide(0.0, result)); |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanMultiplyVectorByScalarUsingOperators() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector = vector * 2.0; |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
|
|||
vector = vector * 1.0; |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
|
|||
vector = CreateVector(_data); |
|||
vector = 2.0 * vector; |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
|
|||
vector = 1.0 * vector; |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] * 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanDivideVectorByScalarUsingOperators() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
vector = vector / 2.0; |
|||
|
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] / 2.0, vector[i]); |
|||
} |
|||
|
|||
vector = vector / 1.0; |
|||
for (var i = 0; i < _data.Length; i++) |
|||
{ |
|||
Assert.AreEqual(_data[i] / 2.0, vector[i]); |
|||
} |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void OperatorMultiplyThrowsArgumentNullExceptionWhenVectorIsNull() |
|||
{ |
|||
Vector vector = null; |
|||
Vector result = null; |
|||
Assert.Throws<ArgumentNullException>(() => result = vector * 2.0); |
|||
Assert.Throws<ArgumentNullException>(() => result = 2.0 * vector); |
|||
} |
|||
|
|||
[Test] |
|||
public void OperatorDivideThrowsArgumentNullExceptionWhenVectorIsNull() |
|||
{ |
|||
Vector vector = null; |
|||
Assert.Throws<ArgumentNullException>(() => vector = vector / 2.0); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,59 @@ |
|||
using MbUnit.Framework; |
|||
|
|||
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double |
|||
{ |
|||
public abstract partial class VectorTests |
|||
{ |
|||
[Test] |
|||
public void CanComputeNorm() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
AssertHelpers.AlmostEqual(7.416198487095663, vector.Norm(), 15); |
|||
} |
|||
|
|||
[Test] |
|||
public void CanComputeNorm1() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
AssertHelpers.AlmostEqual(15.0, vector.Norm1(), 15); |
|||
} |
|||
|
|||
[Test] |
|||
public void CanComputeSquareNorm() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
AssertHelpers.AlmostEqual(55.0, vector.SquaredNorm(), 15); |
|||
} |
|||
|
|||
[Test] |
|||
[Row(1, 15.0)] |
|||
[Row(2, 7.416198487095663)] |
|||
[Row(3, 6.0822019955734001)] |
|||
[Row(10, 5.0540557845353753)] |
|||
public void CanComputeNormP(int p, double expected) |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
AssertHelpers.AlmostEqual(expected, vector.NormP(p), 15); |
|||
} |
|||
|
|||
[Test] |
|||
public void CanComputeNormInfinity() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
AssertHelpers.AlmostEqual(5.0, vector.NormInfinity(), 15); |
|||
} |
|||
|
|||
[Test] |
|||
[MultipleAsserts] |
|||
public void CanNormalizeVector() |
|||
{ |
|||
var vector = CreateVector(_data); |
|||
var result = vector.Normalize(); |
|||
AssertHelpers.AlmostEqual(0.134839972492648, result[0], 14); |
|||
AssertHelpers.AlmostEqual(0.269679944985297, result[1], 14); |
|||
AssertHelpers.AlmostEqual(0.404519917477945, result[2], 14); |
|||
AssertHelpers.AlmostEqual(0.539359889970594, result[3], 14); |
|||
AssertHelpers.AlmostEqual(0.674199862463242, result[4], 14); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue