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