Browse Source

Precision: rework/cleanup (major)

pull/163/merge
Christoph Ruegg 13 years ago
parent
commit
afc4f7e167
  1. 1
      MathNet.Numerics.sln.DotSettings
  2. 33
      src/Numerics/Complex32.cs
  3. 23
      src/Numerics/ComplexExtensions.cs
  4. 2
      src/Numerics/Distributions/Dirichlet.cs
  5. 4
      src/Numerics/Integration/NewtonCotesTrapeziumRule.cs
  6. 4
      src/Numerics/LinearAlgebra/Complex/Factorization/UserSvd.cs
  7. 4
      src/Numerics/LinearAlgebra/Complex/Solvers/BiCgStab.cs
  8. 6
      src/Numerics/LinearAlgebra/Complex/Solvers/GpBiCg.cs
  9. 8
      src/Numerics/LinearAlgebra/Complex/Solvers/MlkBiCgStab.cs
  10. 2
      src/Numerics/LinearAlgebra/Complex/Solvers/ResidualStopCriterium.cs
  11. 4
      src/Numerics/LinearAlgebra/Complex/Solvers/TFQMR.cs
  12. 4
      src/Numerics/LinearAlgebra/Complex32/Factorization/UserSvd.cs
  13. 4
      src/Numerics/LinearAlgebra/Complex32/Solvers/BiCgStab.cs
  14. 6
      src/Numerics/LinearAlgebra/Complex32/Solvers/GpBiCg.cs
  15. 8
      src/Numerics/LinearAlgebra/Complex32/Solvers/MlkBiCgStab.cs
  16. 2
      src/Numerics/LinearAlgebra/Complex32/Solvers/ResidualStopCriterium.cs
  17. 4
      src/Numerics/LinearAlgebra/Complex32/Solvers/TFQMR.cs
  18. 4
      src/Numerics/LinearAlgebra/Double/Factorization/UserSvd.cs
  19. 4
      src/Numerics/LinearAlgebra/Double/Solvers/BiCgStab.cs
  20. 6
      src/Numerics/LinearAlgebra/Double/Solvers/GpBiCg.cs
  21. 8
      src/Numerics/LinearAlgebra/Double/Solvers/MlkBiCgStab.cs
  22. 2
      src/Numerics/LinearAlgebra/Double/Solvers/ResidualStopCriterium.cs
  23. 4
      src/Numerics/LinearAlgebra/Double/Solvers/TFQMR.cs
  24. 4
      src/Numerics/LinearAlgebra/Single/Factorization/UserSvd.cs
  25. 4
      src/Numerics/LinearAlgebra/Single/Solvers/BiCgStab.cs
  26. 6
      src/Numerics/LinearAlgebra/Single/Solvers/GpBiCg.cs
  27. 8
      src/Numerics/LinearAlgebra/Single/Solvers/MlkBiCgStab.cs
  28. 2
      src/Numerics/LinearAlgebra/Single/Solvers/ResidualStopCriterium.cs
  29. 4
      src/Numerics/LinearAlgebra/Single/Solvers/TFQMR.cs
  30. 1
      src/Numerics/Numerics.csproj
  31. 1049
      src/Numerics/Precision.Equality.cs
  32. 902
      src/Numerics/Precision.cs
  33. 4
      src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs
  34. 4
      src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs
  35. 4
      src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs
  36. 4
      src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs
  37. 2
      src/Numerics/RootFinding/Bisection.cs
  38. 4
      src/Numerics/RootFinding/Brent.cs
  39. 167
      src/UnitTests/AssertHelpers.cs
  40. 68
      src/UnitTests/ComplexTests/Complex32Test.cs
  41. 72
      src/UnitTests/ComplexTests/ComplexTest.cs
  42. 16
      src/UnitTests/DistributionTests/Continuous/BetaTests.cs
  43. 20
      src/UnitTests/DistributionTests/Continuous/ErlangTests.cs
  44. 20
      src/UnitTests/DistributionTests/Continuous/GammaTests.cs
  45. 26
      src/UnitTests/DistributionTests/Continuous/LogNormalTests.cs
  46. 20
      src/UnitTests/DistributionTests/Continuous/NormalTests.cs
  47. 2
      src/UnitTests/DistributionTests/Continuous/RayleighTests.cs
  48. 6
      src/UnitTests/DistributionTests/Continuous/StableTests.cs
  49. 6
      src/UnitTests/DistributionTests/Continuous/StudentTTests.cs
  50. 16
      src/UnitTests/DistributionTests/Continuous/WeibullTests.cs
  51. 2
      src/UnitTests/DistributionTests/Discrete/BernoulliTests.cs
  52. 6
      src/UnitTests/DistributionTests/Discrete/BinomialTests.cs
  53. 8
      src/UnitTests/DistributionTests/Discrete/ConwayMaxwellPoissonTests.cs
  54. 2
      src/UnitTests/DistributionTests/Discrete/DiscreteUniformTests.cs
  55. 2
      src/UnitTests/DistributionTests/Discrete/HypergeometricTests.cs
  56. 4
      src/UnitTests/DistributionTests/Discrete/ZipfTests.cs
  57. 12
      src/UnitTests/DistributionTests/Multivariate/DirichletTests.cs
  58. 2
      src/UnitTests/DistributionTests/Multivariate/InverseWishartTests.cs
  59. 2
      src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs
  60. 10
      src/UnitTests/DistributionTests/Multivariate/MultinomialTests.cs
  61. 2
      src/UnitTests/DistributionTests/Multivariate/WishartTests.cs
  62. 2
      src/UnitTests/FinancialTests/CompoundMonthlyReturnTests.cs
  63. 18
      src/UnitTests/IntegralTransformsTests/FourierTest.cs
  64. 13
      src/UnitTests/IntegralTransformsTests/HartleyTest.cs
  65. 136
      src/UnitTests/IntegralTransformsTests/InverseTransformTest.cs
  66. 28
      src/UnitTests/IntegralTransformsTests/MatchingNaiveTransformTest.cs
  67. 464
      src/UnitTests/LinearAlgebraProviderTests/Complex/LinearAlgebraProviderTests.cs
  68. 468
      src/UnitTests/LinearAlgebraProviderTests/Complex32/LinearAlgebraProviderTests.cs
  69. 464
      src/UnitTests/LinearAlgebraProviderTests/Double/LinearAlgebraProviderTests.cs
  70. 468
      src/UnitTests/LinearAlgebraProviderTests/Single/LinearAlgebraProviderTests.cs
  71. 4
      src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs
  72. 30
      src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
  73. 10
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/CholeskyTests.cs
  74. 12
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/EvdTests.cs
  75. 18
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/GramSchmidtTests.cs
  76. 12
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/LUTests.cs
  77. 24
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/QRTests.cs
  78. 10
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/SvdTests.cs
  79. 10
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserCholeskyTests.cs
  80. 14
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserEvdTests.cs
  81. 14
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserGramSchmidtTests.cs
  82. 12
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserLUTests.cs
  83. 20
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserQRTests.cs
  84. 10
      src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserSvdTests.cs
  85. 18
      src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.Arithmetic.cs
  86. 24
      src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs
  87. 4
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Preconditioners/DiagonalTest.cs
  88. 16
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Preconditioners/IlutpTest.cs
  89. 8
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Preconditioners/IncompleteLUTest.cs
  90. 4
      src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs
  91. 28
      src/UnitTests/LinearAlgebraTests/Complex/VectorTests.Norm.cs
  92. 20
      src/UnitTests/LinearAlgebraTests/Complex/VectorTests.cs
  93. 4
      src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs
  94. 30
      src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
  95. 2
      src/UnitTests/LinearAlgebraTests/Complex32/Factorization/EvdTests.cs
  96. 4
      src/UnitTests/LinearAlgebraTests/Complex32/Factorization/GramSchmidtTests.cs
  97. 8
      src/UnitTests/LinearAlgebraTests/Complex32/Factorization/QRTests.cs
  98. 24
      src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.Arithmetic.cs
  99. 24
      src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs
  100. 4
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Preconditioners/DiagonalTest.cs

1
MathNet.Numerics.sln.DotSettings

@ -63,6 +63,7 @@ OTHER DEALINGS IN THE SOFTWARE.
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SAS/@EntryIndexedValue">SAS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SPSS/@EntryIndexedValue">SPSS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SSD/@EntryIndexedValue">SSD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SVD/@EntryIndexedValue">SVD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TFQMR/@EntryIndexedValue">TFQMR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=WH/@EntryIndexedValue">WH</s:String>
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>

33
src/Numerics/Complex32.cs

@ -72,7 +72,7 @@ namespace MathNet.Numerics
/// </remarks>
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct Complex32 : IFormattable, IEquatable<Complex32>, IPrecisionSupport<Complex32>
public struct Complex32 : IFormattable, IEquatable<Complex32>
{
/// <summary>
/// The real component of the complex number.
@ -792,37 +792,6 @@ namespace MathNet.Numerics
#endregion
#region IPrecisionSupport<Complex32>
/// <summary>
/// Returns a Norm of a value of this type, which is appropriate for measuring how
/// close this value is to zero.
/// </summary>
/// <returns>
/// A norm of this value.
/// </returns>
double IPrecisionSupport<Complex32>.Norm()
{
return MagnitudeSquared;
}
/// <summary>
/// Returns a Norm of the difference of two values of this type, which is
/// appropriate for measuring how close together these two values are.
/// </summary>
/// <param name="otherValue">
/// The value to compare with.
/// </param>
/// <returns>
/// A norm of the difference between this and the other value.
/// </returns>
double IPrecisionSupport<Complex32>.NormOfDifference(Complex32 otherValue)
{
return (this - otherValue).MagnitudeSquared;
}
#endregion
#region Parse Functions
/// <summary>

23
src/Numerics/ComplexExtensions.cs

@ -376,25 +376,38 @@ namespace MathNet.Numerics
/// Returns a Norm of a value of this type, which is appropriate for measuring how
/// close this value is to zero.
/// </summary>
/// <param name="complex">The <see cref="Complex"/> number to perfom this operation on.</param>
/// <returns>A norm of this value.</returns>
public static double Norm(this Complex complex)
{
return complex.MagnitudeSquared();
}
/// <summary>
/// Returns a Norm of a value of this type, which is appropriate for measuring how
/// close this value is to zero.
/// </summary>
public static double Norm(this Complex32 complex)
{
return complex.MagnitudeSquared;
}
/// <summary>
/// Returns a Norm of the difference of two values of this type, which is
/// appropriate for measuring how close together these two values are.
/// </summary>
/// <param name="complex">The <see cref="Complex"/> number to perfom this operation on.</param>
/// <param name="otherValue">The value to compare with.</param>
/// <returns>A norm of the difference between this and the other value.</returns>
public static double NormOfDifference(this Complex complex, Complex otherValue)
{
return (complex - otherValue).MagnitudeSquared();
}
/// <summary>
/// Returns a Norm of the difference of two values of this type, which is
/// appropriate for measuring how close together these two values are.
/// </summary>
public static double NormOfDifference(this Complex32 complex, Complex32 otherValue)
{
return (complex - otherValue).MagnitudeSquared;
}
/// <summary>
/// Creates a complex number based on a string. The string can be in the
/// following formats (without the quotes): 'n', 'ni', 'n +/- ni',

2
src/Numerics/Distributions/Dirichlet.cs

@ -303,7 +303,7 @@ namespace MathNet.Numerics.Distributions
term += (_alpha[_alpha.Length - 1] - 1.0)*Math.Log(1.0 - sumxi) - SpecialFunctions.GammaLn(_alpha[_alpha.Length - 1]);
sumalpha += _alpha[_alpha.Length - 1];
}
else if (!sumxi.AlmostEqualInDecimalPlaces(1.0, 8))
else if (!sumxi.AlmostEqualRelative(1.0, 8))
{
return 0.0;
}

4
src/Numerics/Integration/NewtonCotesTrapeziumRule.cs

@ -124,7 +124,7 @@ namespace MathNet.Numerics.Integration
step *= 0.5;
numberOfPartitions *= 2;
if (sum.AlmostEqualWithError(midpointsum, targetError))
if (sum.AlmostEqualRelative(midpointsum, targetError))
{
break;
}
@ -222,7 +222,7 @@ namespace MathNet.Numerics.Integration
delta = Math.Sqrt(delta);
}
if (sum.AlmostEqualWithRelativeError(midpointsum, delta, targetRelativeError))
if (sum.AlmostEqualNormRelative(midpointsum, delta, targetRelativeError))
{
break;
}

4
src/Numerics/LinearAlgebra/Complex/Factorization/UserSvd.cs

@ -369,7 +369,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
test = s[l].Magnitude + s[l + 1].Magnitude;
ztest = test + e[l].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
e[l] = Complex.Zero;
break;
@ -398,7 +398,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
}
ztest = test + s[ls].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
s[ls] = Complex.Zero;
break;

4
src/Numerics/LinearAlgebra/Complex/Solvers/BiCgStab.cs

@ -164,7 +164,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// if (rho_(i-1) == 0) // METHOD FAILS
// If rho is only 1 ULP from zero then we fail.
if (currentRho.Real.AlmostEqual(0, 1) && currentRho.Imaginary.AlmostEqual(0, 1))
if (currentRho.Real.AlmostEqualNumbersBetween(0, 1) && currentRho.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// Rho-type breakdown
throw new Exception("Iterative solver experience a numerical break down");
@ -258,7 +258,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// for continuation it is necessary that omega_i != 0.0
// If omega is only 1 ULP from zero then we fail.
if (omega.Real.AlmostEqual(0, 1) && omega.Imaginary.AlmostEqual(0, 1))
if (omega.Real.AlmostEqualNumbersBetween(0, 1) && omega.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// Omega-type breakdown
throw new Exception("Iterative solver experience a numerical break down");

6
src/Numerics/LinearAlgebra/Complex/Solvers/GpBiCg.cs

@ -267,7 +267,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// We'll set cDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// c.DotProduct(t) will be zero and so will c.DotProduct(y)
if (cdot.Real.AlmostEqual(0, 1) && cdot.Imaginary.AlmostEqual(0, 1))
if (cdot.Real.AlmostEqualNumbersBetween(0, 1) && cdot.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
cdot = 1.0;
}
@ -295,7 +295,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// We'll set yDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// y.DotProduct(t) will be zero and so will c.DotProduct(y)
if (ydot.Real.AlmostEqual(0, 1) && ydot.Imaginary.AlmostEqual(0, 1))
if (ydot.Real.AlmostEqualNumbersBetween(0, 1) && ydot.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
ydot = 1.0;
}
@ -355,7 +355,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// beta_k = alpha_k / sigma_k * (r*_0 * r_(k+1)) / (r*_0 * r_k)
// But first we check if there is a possible NaN. If so just reset beta to zero.
beta = (!sigma.Real.AlmostEqual(0, 1) || !sigma.Imaginary.AlmostEqual(0, 1)) ? alpha/sigma*rdash.ConjugateDotProduct(residuals)/rdash.ConjugateDotProduct(t0) : 0;
beta = (!sigma.Real.AlmostEqualNumbersBetween(0, 1) || !sigma.Imaginary.AlmostEqualNumbersBetween(0, 1)) ? alpha/sigma*rdash.ConjugateDotProduct(residuals)/rdash.ConjugateDotProduct(t0) : 0;
// w_k = c_k + beta_k s_k
s.Multiply(beta, temp2);

8
src/Numerics/LinearAlgebra/Complex/Solvers/MlkBiCgStab.cs

@ -343,7 +343,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// c_((j-1)k+k) = q^T_1 w_((j-1)k+k)
c[k - 1] = _startingVectors[0].ConjugateDotProduct(w[k - 1]);
if (c[k - 1].Real.AlmostEqual(0, 1) && c[k - 1].Imaginary.AlmostEqual(0, 1))
if (c[k - 1].Real.AlmostEqualNumbersBetween(0, 1) && c[k - 1].Imaginary.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -366,7 +366,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// If rho is zero then temp is a zero vector and we're probably
// about to have zero residuals (i.e. an exact solution).
// So set rho to 1.0 because in the next step it will turn to zero.
if (rho.Real.AlmostEqual(0, 1) && rho.Imaginary.AlmostEqual(0, 1))
if (rho.Real.AlmostEqualNumbersBetween(0, 1) && rho.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
rho = 1.0;
}
@ -444,7 +444,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
}
beta = rho*c[k - 1];
if (beta.Real.AlmostEqual(0, 1) && beta.Imaginary.AlmostEqual(0, 1))
if (beta.Real.AlmostEqualNumbersBetween(0, 1) && beta.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -496,7 +496,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
{
// c_(jk+1) = q^T_i+1 d_(jk+i)
c[i] = _startingVectors[i + 1].ConjugateDotProduct(d[i]);
if (c[i].Real.AlmostEqual(0, 1) && c[i].Imaginary.AlmostEqual(0, 1))
if (c[i].Real.AlmostEqualNumbersBetween(0, 1) && c[i].Imaginary.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}

2
src/Numerics/LinearAlgebra/Complex/Solvers/ResidualStopCriterium.cs

@ -233,7 +233,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// ||r_i|| <= stop_tol * ||b||
// Stop the calculation if it's clearly smaller than the tolerance
var decimalMagnitude = Math.Abs(stopCriterium.Magnitude()) + 1;
if (residualNorm.IsSmallerWithDecimalPlaces(stopCriterium, decimalMagnitude))
if (residualNorm.IsSmallerDecimal(stopCriterium, decimalMagnitude))
{
if (_lastIteration <= iterationNumber)
{

4
src/Numerics/LinearAlgebra/Complex/Solvers/TFQMR.cs

@ -167,7 +167,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
{
// sigma = (v, r)
var sigma = r.ConjugateDotProduct(v);
if (sigma.Real.AlmostEqual(0, 1) && sigma.Imaginary.AlmostEqual(0, 1))
if (sigma.Real.AlmostEqualNumbersBetween(0, 1) && sigma.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();
@ -240,7 +240,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
// The odd step
if (!IsEven(iterationNumber))
{
if (rho.Real.AlmostEqual(0, 1) && rho.Imaginary.AlmostEqual(0, 1))
if (rho.Real.AlmostEqualNumbersBetween(0, 1) && rho.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();

4
src/Numerics/LinearAlgebra/Complex32/Factorization/UserSvd.cs

@ -364,7 +364,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Factorization
{
test = s[l].Magnitude + s[l + 1].Magnitude;
ztest = test + e[l].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
e[l] = Complex32.Zero;
break;
@ -393,7 +393,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Factorization
}
ztest = test + s[ls].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
s[ls] = Complex32.Zero;
break;

4
src/Numerics/LinearAlgebra/Complex32/Solvers/BiCgStab.cs

@ -157,7 +157,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// if (rho_(i-1) == 0) // METHOD FAILS
// If rho is only 1 ULP from zero then we fail.
if (currentRho.Real.AlmostEqual(0, 1) && currentRho.Imaginary.AlmostEqual(0, 1))
if (currentRho.Real.AlmostEqualNumbersBetween(0, 1) && currentRho.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// Rho-type breakdown
throw new Exception("Iterative solver experience a numerical break down");
@ -251,7 +251,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// for continuation it is necessary that omega_i != 0.0f
// If omega is only 1 ULP from zero then we fail.
if (omega.Real.AlmostEqual(0, 1) && omega.Imaginary.AlmostEqual(0, 1))
if (omega.Real.AlmostEqualNumbersBetween(0, 1) && omega.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// Omega-type breakdown
throw new Exception("Iterative solver experience a numerical break down");

6
src/Numerics/LinearAlgebra/Complex32/Solvers/GpBiCg.cs

@ -265,7 +265,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// We'll set cDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// c.DotProduct(t) will be zero and so will c.DotProduct(y)
if (cdot.Real.AlmostEqual(0, 1) && cdot.Imaginary.AlmostEqual(0, 1))
if (cdot.Real.AlmostEqualNumbersBetween(0, 1) && cdot.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
cdot = 1.0f;
}
@ -293,7 +293,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// We'll set yDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// y.DotProduct(t) will be zero and so will c.DotProduct(y)
if (ydot.Real.AlmostEqual(0, 1) && ydot.Imaginary.AlmostEqual(0, 1))
if (ydot.Real.AlmostEqualNumbersBetween(0, 1) && ydot.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
ydot = 1.0f;
}
@ -353,7 +353,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// beta_k = alpha_k / sigma_k * (r*_0 * r_(k+1)) / (r*_0 * r_k)
// But first we check if there is a possible NaN. If so just reset beta to zero.
beta = (!sigma.Real.AlmostEqual(0, 1) || !sigma.Imaginary.AlmostEqual(0, 1)) ? alpha/sigma*rdash.ConjugateDotProduct(residuals)/rdash.ConjugateDotProduct(t0) : 0;
beta = (!sigma.Real.AlmostEqualNumbersBetween(0, 1) || !sigma.Imaginary.AlmostEqualNumbersBetween(0, 1)) ? alpha/sigma*rdash.ConjugateDotProduct(residuals)/rdash.ConjugateDotProduct(t0) : 0;
// w_k = c_k + beta_k s_k
s.Multiply(beta, temp2);

8
src/Numerics/LinearAlgebra/Complex32/Solvers/MlkBiCgStab.cs

@ -341,7 +341,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// c_((j-1)k+k) = q^T_1 w_((j-1)k+k)
c[k - 1] = _startingVectors[0].ConjugateDotProduct(w[k - 1]);
if (c[k - 1].Real.AlmostEqual(0, 1) && c[k - 1].Imaginary.AlmostEqual(0, 1))
if (c[k - 1].Real.AlmostEqualNumbersBetween(0, 1) && c[k - 1].Imaginary.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -364,7 +364,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// If rho is zero then temp is a zero vector and we're probably
// about to have zero residuals (i.e. an exact solution).
// So set rho to 1.0 because in the next step it will turn to zero.
if (rho.Real.AlmostEqual(0, 1) && rho.Imaginary.AlmostEqual(0, 1))
if (rho.Real.AlmostEqualNumbersBetween(0, 1) && rho.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
rho = 1.0f;
}
@ -442,7 +442,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
}
beta = rho*c[k - 1];
if (beta.Real.AlmostEqual(0, 1) && beta.Imaginary.AlmostEqual(0, 1))
if (beta.Real.AlmostEqualNumbersBetween(0, 1) && beta.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -494,7 +494,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
{
// c_(jk+1) = q^T_i+1 d_(jk+i)
c[i] = _startingVectors[i + 1].ConjugateDotProduct(d[i]);
if (c[i].Real.AlmostEqual(0, 1) && c[i].Imaginary.AlmostEqual(0, 1))
if (c[i].Real.AlmostEqualNumbersBetween(0, 1) && c[i].Imaginary.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}

2
src/Numerics/LinearAlgebra/Complex32/Solvers/ResidualStopCriterium.cs

@ -228,7 +228,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// ||r_i|| <= stop_tol * ||b||
// Stop the calculation if it's clearly smaller than the tolerance
var decimalMagnitude = Math.Abs(stopCriterium.Magnitude()) + 1;
if (residualNorm.IsSmallerWithDecimalPlaces(stopCriterium, decimalMagnitude))
if (residualNorm.IsSmallerDecimal(stopCriterium, decimalMagnitude))
{
if (_lastIteration <= iterationNumber)
{

4
src/Numerics/LinearAlgebra/Complex32/Solvers/TFQMR.cs

@ -164,7 +164,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
{
// sigma = (v, r)
var sigma = r.ConjugateDotProduct(v);
if (sigma.Real.AlmostEqual(0, 1) && sigma.Imaginary.AlmostEqual(0, 1))
if (sigma.Real.AlmostEqualNumbersBetween(0, 1) && sigma.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();
@ -237,7 +237,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
// The odd step
if (!IsEven(iterationNumber))
{
if (rho.Real.AlmostEqual(0, 1) && rho.Imaginary.AlmostEqual(0, 1))
if (rho.Real.AlmostEqualNumbersBetween(0, 1) && rho.Imaginary.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();

4
src/Numerics/LinearAlgebra/Double/Factorization/UserSvd.cs

@ -348,7 +348,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
{
test = Math.Abs(s[l]) + Math.Abs(s[l + 1]);
ztest = test + Math.Abs(e[l]);
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
e[l] = 0.0;
break;
@ -377,7 +377,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
}
ztest = test + Math.Abs(s[ls]);
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
s[ls] = 0.0;
break;

4
src/Numerics/LinearAlgebra/Double/Solvers/BiCgStab.cs

@ -157,7 +157,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// if (rho_(i-1) == 0) // METHOD FAILS
// If rho is only 1 ULP from zero then we fail.
if (currentRho.AlmostEqual(0, 1))
if (currentRho.AlmostEqualNumbersBetween(0, 1))
{
// Rho-type breakdown
throw new Exception("Iterative solver experience a numerical break down");
@ -251,7 +251,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// for continuation it is necessary that omega_i != 0.0
// If omega is only 1 ULP from zero then we fail.
if (omega.AlmostEqual(0, 1))
if (omega.AlmostEqualNumbersBetween(0, 1))
{
// Omega-type breakdown
throw new Exception("Iterative solver experience a numerical break down");

6
src/Numerics/LinearAlgebra/Double/Solvers/GpBiCg.cs

@ -271,7 +271,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// We'll set cDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// c.DotProduct(t) will be zero and so will c.DotProduct(y)
if (cdot.AlmostEqual(0, 1))
if (cdot.AlmostEqualNumbersBetween(0, 1))
{
cdot = 1.0;
}
@ -299,7 +299,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// We'll set yDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// y.DotProduct(t) will be zero and so will c.DotProduct(y)
if (ydot.AlmostEqual(0, 1))
if (ydot.AlmostEqualNumbersBetween(0, 1))
{
ydot = 1.0;
}
@ -359,7 +359,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// beta_k = alpha_k / sigma_k * (r*_0 * r_(k+1)) / (r*_0 * r_k)
// But first we check if there is a possible NaN. If so just reset beta to zero.
beta = (!sigma.AlmostEqual(0, 1)) ? alpha/sigma*rdash.DotProduct(residuals)/rdash.DotProduct(t0) : 0;
beta = (!sigma.AlmostEqualNumbersBetween(0, 1)) ? alpha/sigma*rdash.DotProduct(residuals)/rdash.DotProduct(t0) : 0;
// w_k = c_k + beta_k s_k
s.Multiply(beta, temp2);

8
src/Numerics/LinearAlgebra/Double/Solvers/MlkBiCgStab.cs

@ -341,7 +341,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// c_((j-1)k+k) = q^T_1 w_((j-1)k+k)
c[k - 1] = _startingVectors[0].DotProduct(w[k - 1]);
if (c[k - 1].AlmostEqual(0, 1))
if (c[k - 1].AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -364,7 +364,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// If rho is zero then temp is a zero vector and we're probably
// about to have zero residuals (i.e. an exact solution).
// So set rho to 1.0 because in the next step it will turn to zero.
if (rho.AlmostEqual(0, 1))
if (rho.AlmostEqualNumbersBetween(0, 1))
{
rho = 1.0;
}
@ -442,7 +442,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
}
beta = rho*c[k - 1];
if (beta.AlmostEqual(0, 1))
if (beta.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -494,7 +494,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
{
// c_(jk+1) = q^T_i+1 d_(jk+i)
c[i] = _startingVectors[i + 1].DotProduct(d[i]);
if (c[i].AlmostEqual(0, 1))
if (c[i].AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}

2
src/Numerics/LinearAlgebra/Double/Solvers/ResidualStopCriterium.cs

@ -226,7 +226,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// ||r_i|| <= stop_tol * ||b||
// Stop the calculation if it's clearly smaller than the tolerance
var decimalMagnitude = Math.Abs(stopCriterium.Magnitude()) + 1;
if (residualNorm.IsSmallerWithDecimalPlaces(stopCriterium, decimalMagnitude))
if (residualNorm.IsSmallerDecimal(stopCriterium, decimalMagnitude))
{
if (_lastIteration <= iterationNumber)
{

4
src/Numerics/LinearAlgebra/Double/Solvers/TFQMR.cs

@ -164,7 +164,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
{
// sigma = (v, r)
var sigma = v.DotProduct(r);
if (sigma.AlmostEqual(0, 1))
if (sigma.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();
@ -237,7 +237,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
// The odd step
if (!IsEven(iterationNumber))
{
if (rho.AlmostEqual(0, 1))
if (rho.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();

4
src/Numerics/LinearAlgebra/Single/Factorization/UserSvd.cs

@ -348,7 +348,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Factorization
{
test = Math.Abs(s[l]) + Math.Abs(s[l + 1]);
ztest = test + Math.Abs(e[l]);
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
e[l] = 0.0f;
break;
@ -377,7 +377,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Factorization
}
ztest = test + Math.Abs(s[ls]);
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
s[ls] = 0.0f;
break;

4
src/Numerics/LinearAlgebra/Single/Solvers/BiCgStab.cs

@ -157,7 +157,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// if (rho_(i-1) == 0) // METHOD FAILS
// If rho is only 1 ULP from zero then we fail.
if (currentRho.AlmostEqual(0, 1))
if (currentRho.AlmostEqualNumbersBetween(0, 1))
{
// Rho-type breakdown
throw new Exception("Iterative solver experience a numerical break down");
@ -251,7 +251,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// for continuation it is necessary that omega_i != 0.0
// If omega is only 1 ULP from zero then we fail.
if (omega.AlmostEqual(0, 1))
if (omega.AlmostEqualNumbersBetween(0, 1))
{
// Omega-type breakdown
throw new Exception("Iterative solver experience a numerical break down");

6
src/Numerics/LinearAlgebra/Single/Solvers/GpBiCg.cs

@ -265,7 +265,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// We'll set cDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// c.DotProduct(t) will be zero and so will c.DotProduct(y)
if (cdot.AlmostEqual(0, 1))
if (cdot.AlmostEqualNumbersBetween(0, 1))
{
cdot = 1.0f;
}
@ -293,7 +293,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// We'll set yDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
// y.DotProduct(t) will be zero and so will c.DotProduct(y)
if (ydot.AlmostEqual(0, 1))
if (ydot.AlmostEqualNumbersBetween(0, 1))
{
ydot = 1.0f;
}
@ -353,7 +353,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// beta_k = alpha_k / sigma_k * (r*_0 * r_(k+1)) / (r*_0 * r_k)
// But first we check if there is a possible NaN. If so just reset beta to zero.
beta = (!sigma.AlmostEqual(0, 1)) ? alpha/sigma*rdash.DotProduct(residuals)/rdash.DotProduct(t0) : 0;
beta = (!sigma.AlmostEqualNumbersBetween(0, 1)) ? alpha/sigma*rdash.DotProduct(residuals)/rdash.DotProduct(t0) : 0;
// w_k = c_k + beta_k s_k
s.Multiply(beta, temp2);

8
src/Numerics/LinearAlgebra/Single/Solvers/MlkBiCgStab.cs

@ -344,7 +344,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// c_((j-1)k+k) = q^T_1 w_((j-1)k+k)
c[k - 1] = _startingVectors[0].DotProduct(w[k - 1]);
if (c[k - 1].AlmostEqual(0, 1))
if (c[k - 1].AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -367,7 +367,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// If rho is zero then temp is a zero vector and we're probably
// about to have zero residuals (i.e. an exact solution).
// So set rho to 1.0 because in the next step it will turn to zero.
if (rho.AlmostEqual(0, 1))
if (rho.AlmostEqualNumbersBetween(0, 1))
{
rho = 1.0f;
}
@ -445,7 +445,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
}
beta = rho*c[k - 1];
if (beta.AlmostEqual(0, 1))
if (beta.AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}
@ -497,7 +497,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
{
// c_(jk+1) = q^T_i+1 d_(jk+i)
c[i] = _startingVectors[i + 1].DotProduct(d[i]);
if (c[i].AlmostEqual(0, 1))
if (c[i].AlmostEqualNumbersBetween(0, 1))
{
throw new Exception("Iterative solver experience a numerical break down");
}

2
src/Numerics/LinearAlgebra/Single/Solvers/ResidualStopCriterium.cs

@ -226,7 +226,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// ||r_i|| <= stop_tol * ||b||
// Stop the calculation if it's clearly smaller than the tolerance
var decimalMagnitude = Math.Abs(stopCriterium.Magnitude()) + 1;
if (residualNorm.IsSmallerWithDecimalPlaces(stopCriterium, decimalMagnitude))
if (residualNorm.IsSmallerDecimal(stopCriterium, decimalMagnitude))
{
if (_lastIteration <= iterationNumber)
{

4
src/Numerics/LinearAlgebra/Single/Solvers/TFQMR.cs

@ -164,7 +164,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
{
// sigma = (v, r)
var sigma = v.DotProduct(r);
if (sigma.AlmostEqual(0, 1))
if (sigma.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();
@ -237,7 +237,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
// The odd step
if (!IsEven(iterationNumber))
{
if (rho.AlmostEqual(0, 1))
if (rho.AlmostEqualNumbersBetween(0, 1))
{
// FAIL HERE
iterator.Cancel();

1
src/Numerics/Numerics.csproj

@ -86,6 +86,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Precision.Equality.cs" />
<Compile Include="Distributions\Bernoulli.cs" />
<Compile Include="Distributions\Beta.cs" />
<Compile Include="Distributions\Binomial.cs" />

1049
src/Numerics/Precision.Equality.cs

File diff suppressed because it is too large

902
src/Numerics/Precision.cs

File diff suppressed because it is too large

4
src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs

@ -2581,7 +2581,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
{
test = stemp[l].Magnitude + stemp[l + 1].Magnitude;
ztest = test + e[l].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
e[l] = 0.0;
break;
@ -2610,7 +2610,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
}
ztest = test + stemp[ls].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
stemp[ls] = 0.0;
break;

4
src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs

@ -2579,7 +2579,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
{
test = stemp[l].Magnitude + stemp[l + 1].Magnitude;
ztest = test + e[l].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
e[l] = 0.0f;
break;
@ -2608,7 +2608,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
}
ztest = test + stemp[ls].Magnitude;
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
stemp[ls] = 0.0f;
break;

4
src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs

@ -2469,7 +2469,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
{
test = Math.Abs(stemp[l]) + Math.Abs(stemp[l + 1]);
ztest = test + Math.Abs(e[l]);
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
e[l] = 0.0;
break;
@ -2498,7 +2498,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
}
ztest = test + Math.Abs(stemp[ls]);
if (ztest.AlmostEqualInDecimalPlaces(test, 15))
if (ztest.AlmostEqualRelative(test, 15))
{
stemp[ls] = 0.0;
break;

4
src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs

@ -2471,7 +2471,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
{
test = Math.Abs(stemp[l]) + Math.Abs(stemp[l + 1]);
ztest = test + Math.Abs(e[l]);
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
e[l] = 0.0f;
break;
@ -2500,7 +2500,7 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
}
ztest = test + Math.Abs(stemp[ls]);
if (ztest.AlmostEqualInDecimalPlaces(test, 7))
if (ztest.AlmostEqualRelative(test, 7))
{
stemp[ls] = 0.0f;
break;

2
src/Numerics/RootFinding/Bisection.cs

@ -107,7 +107,7 @@ namespace MathNet.Numerics.RootFinding
for (int i = 0; i <= maxIterations; i++)
{
if (Math.Abs(fmax - fmin) < 0.5*accuracy && upperBound.AlmostEqual(lowerBound))
if (Math.Abs(fmax - fmin) < 0.5*accuracy && upperBound.AlmostEqualRelative(lowerBound))
{
return true;
}

4
src/Numerics/RootFinding/Brent.cs

@ -100,7 +100,7 @@ namespace MathNet.Numerics.RootFinding
double xMidOld = xMid;
xMid = (upperBound - root)/2.0;
if (Math.Abs(xMid) <= xAcc1 && froot.AlmostEqualWithAbsoluteError(0, froot, accuracy))
if (Math.Abs(xMid) <= xAcc1 && froot.AlmostEqualNormRelative(0, froot, accuracy))
{
return true;
}
@ -117,7 +117,7 @@ namespace MathNet.Numerics.RootFinding
double s = froot/fmin;
double p;
double q;
if (lowerBound.AlmostEqual(upperBound))
if (lowerBound.AlmostEqualRelative(upperBound))
{
p = 2.0*xMid*s;
q = 1.0 - s;

167
src/UnitTests/AssertHelpers.cs

@ -40,10 +40,7 @@ namespace MathNet.Numerics.UnitTests
/// </summary>
internal class AssertHelpers
{
/// <summary>
/// Asserts that the expected value and the actual value are equal.
/// </summary>
public static void AreEqual(Complex expected, Complex actual)
public static void AlmostEqual(Complex expected, Complex actual)
{
if (expected.IsNaN() && actual.IsNaN() || expected.IsInfinity() && expected.IsInfinity())
{
@ -61,10 +58,7 @@ namespace MathNet.Numerics.UnitTests
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal.
/// </summary>
public static void AreEqual(Complex32 expected, Complex32 actual)
public static void AlmostEqual(Complex32 expected, Complex32 actual)
{
if (expected.IsNaN() && actual.IsNaN() || expected.IsInfinity() && expected.IsInfinity())
{
@ -82,10 +76,7 @@ namespace MathNet.Numerics.UnitTests
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places. If both
/// <paramref name="expected"/> and <paramref name="actual"/> are NaN then no assert is thrown.
/// </summary>
public static void AlmostEqual(double expected, double actual, int decimalPlaces)
{
if (double.IsNaN(expected) && double.IsNaN(actual))
@ -93,16 +84,12 @@ namespace MathNet.Numerics.UnitTests
return;
}
if (!expected.AlmostEqualInDecimalPlaces(actual, decimalPlaces))
if (!expected.AlmostEqual(actual, decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected, actual);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places. If both
/// <paramref name="expected"/> and <paramref name="actual"/> are NaN then no assert is thrown.
/// </summary>
public static void AlmostEqual(float expected, float actual, int decimalPlaces)
{
if (float.IsNaN(expected) && float.IsNaN(actual))
@ -110,187 +97,175 @@ namespace MathNet.Numerics.UnitTests
return;
}
if (!expected.AlmostEqualInDecimalPlaces(actual, decimalPlaces))
if (!expected.AlmostEqual(actual, decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected, actual);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places.
/// </summary>
public static void AlmostEqual(Complex expected, Complex actual, int decimalPlaces)
{
if (!expected.Real.AlmostEqualInDecimalPlaces(actual.Real, decimalPlaces))
if (!expected.Real.AlmostEqual(actual.Real, decimalPlaces))
{
Assert.Fail("Real components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Real, actual.Real);
}
if (!expected.Imaginary.AlmostEqualInDecimalPlaces(actual.Imaginary, decimalPlaces))
if (!expected.Imaginary.AlmostEqual(actual.Imaginary, decimalPlaces))
{
Assert.Fail("Imaginary components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Imaginary, actual.Imaginary);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places.
/// </summary>
public static void AlmostEqual(Complex32 expected, Complex32 actual, int decimalPlaces)
{
if (!expected.Real.AlmostEqualInDecimalPlaces(actual.Real, decimalPlaces))
if (!expected.Real.AlmostEqual(actual.Real, decimalPlaces))
{
Assert.Fail("Real components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Real, actual.Real);
}
if (!expected.Imaginary.AlmostEqualInDecimalPlaces(actual.Imaginary, decimalPlaces))
if (!expected.Imaginary.AlmostEqual(actual.Imaginary, decimalPlaces))
{
Assert.Fail("Imaginary components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Imaginary, actual.Imaginary);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places. If both
/// <paramref name="expected"/> and <paramref name="actual"/> are NaN then no assert is thrown.
/// </summary>
public static void AlmostEqualAbsolute(double expected, double actual, int decimalPlaces)
public static void AlmostEqualRelative(double expected, double actual, int decimalPlaces)
{
if (double.IsNaN(expected) && double.IsNaN(actual))
{
return;
}
if (!expected.AlmostEqualInAbsoluteDecimalPlaces(actual, decimalPlaces))
if (!expected.AlmostEqualRelative(actual, decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected, actual);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places. If both
/// <paramref name="expected"/> and <paramref name="actual"/> are NaN then no assert is thrown.
/// </summary>
public static void AlmostEqualAbsolute(float expected, float actual, int decimalPlaces)
public static void AlmostEqualRelative(float expected, float actual, int decimalPlaces)
{
if (float.IsNaN(expected) && float.IsNaN(actual))
{
return;
}
if (!expected.AlmostEqualInAbsoluteDecimalPlaces(actual, decimalPlaces))
if (!expected.AlmostEqualRelative(actual, decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected, actual);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places.
/// </summary>
public static void AlmostEqualAbsolute(Complex expected, Complex actual, int decimalPlaces)
public static void AlmostEqualRelative(Complex expected, Complex actual, int decimalPlaces)
{
if (!expected.Real.AlmostEqualInAbsoluteDecimalPlaces(actual.Real, decimalPlaces))
if (!expected.Real.AlmostEqualRelative(actual.Real, decimalPlaces))
{
Assert.Fail("Real components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Real, actual.Real);
}
if (!expected.Imaginary.AlmostEqualInAbsoluteDecimalPlaces(actual.Imaginary, decimalPlaces))
if (!expected.Imaginary.AlmostEqualRelative(actual.Imaginary, decimalPlaces))
{
Assert.Fail("Imaginary components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Imaginary, actual.Imaginary);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain number of decimal places.
/// </summary>
public static void AlmostEqualAbsolute(Complex32 expected, Complex32 actual, int decimalPlaces)
public static void AlmostEqualRelative(Complex32 expected, Complex32 actual, int decimalPlaces)
{
if (!expected.Real.AlmostEqualInAbsoluteDecimalPlaces(actual.Real, decimalPlaces))
if (!expected.Real.AlmostEqualRelative(actual.Real, decimalPlaces))
{
Assert.Fail("Real components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Real, actual.Real);
}
if (!expected.Imaginary.AlmostEqualInAbsoluteDecimalPlaces(actual.Imaginary, decimalPlaces))
if (!expected.Imaginary.AlmostEqualRelative(actual.Imaginary, decimalPlaces))
{
Assert.Fail("Imaginary components are not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected.Imaginary, actual.Imaginary);
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain
/// maximum error.
/// </summary>
/// <typeparam name="T">The type of the structures. Must implement
/// <see cref="IPrecisionSupport{T}"/>.</typeparam>
/// <param name="expected">The expected value.</param>
/// <param name="actual">The actual value.</param>
/// <param name="maximumError">The accuracy required for being almost equal.</param>
public static void AlmostEqual<T>(T expected, T actual, double maximumError)
where T : IPrecisionSupport<T>
public static void ListAlmostEqual(IList<double> expected, IList<double> actual, int decimalPlaces)
{
if (!actual.AlmostEqualWithError(expected, maximumError))
for (var i = 0; i < expected.Count; i++)
{
Assert.Fail("Not equal within a maximum error {0}. Expected:{1}; Actual:{2}", maximumError, expected, actual);
if (!actual[i].AlmostEqual(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}
public static void ListAlmostEqual(IList<float> expected, IList<float> actual, int decimalPlaces)
{
for (var i = 0; i < expected.Count; i++)
{
if (!actual[i].AlmostEqual(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}
public static void ListAlmostEqual(IList<Complex> expected, IList<Complex> actual, int decimalPlaces)
{
for (var i = 0; i < expected.Count; i++)
{
if (!actual[i].AlmostEqual(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}
public static void ListAlmostEqual(IList<Complex32> expected, IList<Complex32> actual, int decimalPlaces)
{
for (var i = 0; i < expected.Count; i++)
{
if (!actual[i].AlmostEqual(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain
/// maximum error.
/// </summary>
public static void AlmostEqualList(IList<double> expected, IList<double> actual, double maximumError)
public static void ListAlmostEqualRelative(IList<double> expected, IList<double> actual, int decimalPlaces)
{
for (var i = 0; i < expected.Count; i++)
{
if (!actual[i].AlmostEqualWithError(expected[i], maximumError))
if (!actual[i].AlmostEqualRelative(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within a maximum error {0}. Expected:{1}; Actual:{2}", maximumError, expected[i], actual[i]);
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain
/// maximum error.
/// </summary>
public static void AlmostEqualList(IList<float> expected, IList<float> actual, double maximumError)
public static void ListAlmostEqualRelative(IList<float> expected, IList<float> actual, int decimalPlaces)
{
for (var i = 0; i < expected.Count; i++)
{
if (!actual[i].AlmostEqualWithError(expected[i], maximumError))
if (!actual[i].AlmostEqualRelative(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within a maximum error {0}. Expected:{1}; Actual:{2}", maximumError, expected[i], actual[i]);
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain
/// maximum error.
/// </summary>
/// <typeparam name="T">The type of the structures. Must implement
/// <see cref="IPrecisionSupport{T}"/>.</typeparam>
public static void AlmostEqualList<T>(IList<T> expected, IList<T> actual, double maximumError)
where T : IPrecisionSupport<T>
public static void ListAlmostEqualRelative(IList<Complex> expected, IList<Complex> actual, int decimalPlaces)
{
for (var i = 0; i < expected.Count; i++)
{
if (!actual[i].AlmostEqualWithError(expected[i], maximumError))
if (!actual[i].AlmostEqualRelative(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within a maximum error {0}. Expected:{1}; Actual:{2}", maximumError, expected[i], actual[i]);
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}
/// <summary>
/// Asserts that the expected value and the actual value are equal up to a certain
/// maximum error.
/// </summary>
public static void AlmostEqualList(IList<Complex> expected, IList<Complex> actual, double maximumError)
public static void ListAlmostEqualRelative(IList<Complex32> expected, IList<Complex32> actual, int decimalPlaces)
{
for (var i = 0; i < expected.Count; i++)
{
if (!actual[i].AlmostEqualWithError(expected[i], maximumError))
if (!actual[i].AlmostEqualRelative(expected[i], decimalPlaces))
{
Assert.Fail("Not equal within a maximum error {0}. Expected:{1}; Actual:{2}", maximumError, expected[i], actual[i]);
Assert.Fail("Not equal within {0} places. Expected:{1}; Actual:{2}", decimalPlaces, expected[i], actual[i]);
}
}
}

68
src/UnitTests/ComplexTests/Complex32Test.cs

@ -121,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var value = new Complex32(real, imag);
var expected = new Complex32(expectedReal, expectedImag);
AssertHelpers.AlmostEqual(expected, value.Exponential(), 7);
AssertHelpers.AlmostEqualRelative(expected, value.Exponential(), 6);
}
/// <summary>
@ -140,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var value = new Complex32(real, imag);
var expected = new Complex32(expectedReal, expectedImag);
AssertHelpers.AlmostEqual(expected, value.NaturalLogarithm(), 7);
AssertHelpers.AlmostEqualRelative(expected, value.NaturalLogarithm(), 7);
}
/// <summary>
@ -151,38 +151,38 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var a = new Complex32(1.19209289550780998537e-7f, 1.19209289550780998537e-7f);
var b = new Complex32(1.19209289550780998537e-7f, 1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(
new Complex32(9.99998047207974718744e-1f, -1.76553541154378695012e-6f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(
new Complex32(9.99998047207974718744e-1f, -1.76553541154378695012e-6f), a.Power(b), 6);
a = new Complex32(0.0f, 1.19209289550780998537e-7f);
b = new Complex32(0.0f, -1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(new Complex32(1.00000018725172576491f, 1.90048076369011843105e-6f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(1.00000018725172576491f, 1.90048076369011843105e-6f), a.Power(b), 6);
a = new Complex32(0.0f, -1.19209289550780998537e-7f);
b = new Complex32(0.0f, 0.5f);
AssertHelpers.AlmostEqual(new Complex32(-2.56488189382693049636e-1f, -2.17823120666116144959f), a.Power(b), 5);
AssertHelpers.AlmostEqualRelative(new Complex32(-2.56488189382693049636e-1f, -2.17823120666116144959f), a.Power(b), 4);
a = new Complex32(0.0f, 0.5f);
b = new Complex32(0.0f, -0.5f);
AssertHelpers.AlmostEqual(new Complex32(2.06287223508090495171f, 7.45007062179724087859e-1f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(2.06287223508090495171f, 7.45007062179724087859e-1f), a.Power(b), 6);
a = new Complex32(0.0f, -0.5f);
b = new Complex32(0.0f, 1.0f);
AssertHelpers.AlmostEqual(new Complex32(3.70040633557002510874f, -3.07370876701949232239f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(3.70040633557002510874f, -3.07370876701949232239f), a.Power(b), 6);
a = new Complex32(0.0f, 2.0f);
b = new Complex32(0.0f, -2.0f);
AssertHelpers.AlmostEqual(new Complex32(4.24532146387429353891f, -2.27479427903521192648e1f), a.Power(b), 6);
AssertHelpers.AlmostEqualRelative(new Complex32(4.24532146387429353891f, -2.27479427903521192648e1f), a.Power(b), 5);
a = new Complex32(0.0f, -8.388608e6f);
b = new Complex32(1.19209289550780998537e-7f, 0.0f);
AssertHelpers.AlmostEqual(new Complex32(1.00000190048219620166f, -1.87253870018168043834e-7f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(1.00000190048219620166f, -1.87253870018168043834e-7f), a.Power(b), 6);
a = new Complex32(0.0f, 0.0f);
b = new Complex32(0.0f, 0.0f);
AssertHelpers.AlmostEqual(new Complex32(1.0f, 0.0f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(1.0f, 0.0f), a.Power(b), 6);
a = new Complex32(0.0f, 0.0f);
b = new Complex32(1.0f, 0.0f);
AssertHelpers.AlmostEqual(new Complex32(0.0f, 0.0f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(0.0f, 0.0f), a.Power(b), 6);
a = new Complex32(0.0f, 0.0f);
b = new Complex32(-1.0f, 0.0f);
AssertHelpers.AlmostEqual(new Complex32(float.PositiveInfinity, 0.0f), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(float.PositiveInfinity, 0.0f), a.Power(b), 6);
a = new Complex32(0.0f, 0.0f);
b = new Complex32(-1.0f, 1.0f);
AssertHelpers.AlmostEqual(new Complex32(float.PositiveInfinity, float.PositiveInfinity), a.Power(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(float.PositiveInfinity, float.PositiveInfinity), a.Power(b), 6);
a = new Complex32(0.0f, 0.0f);
b = new Complex32(0.0f, 1.0f);
Assert.That(a.Power(b).IsNaN());
@ -196,22 +196,22 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var a = new Complex32(1.19209289550780998537e-7f, 1.19209289550780998537e-7f);
var b = new Complex32(1.19209289550780998537e-7f, 1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(new Complex32(0.0f, 0.0f), a.Root(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(0.0f, 0.0f), a.Root(b), 6);
a = new Complex32(0.0f, -1.19209289550780998537e-7f);
b = new Complex32(0.0f, 0.5f);
AssertHelpers.AlmostEqual(new Complex32(0.038550761943650161f, 0.019526430428319544f), a.Root(b), 6);
AssertHelpers.AlmostEqualRelative(new Complex32(0.038550761943650161f, 0.019526430428319544f), a.Root(b), 5);
a = new Complex32(0.0f, 0.5f);
b = new Complex32(0.0f, -0.5f);
AssertHelpers.AlmostEqual(new Complex32(0.007927894711475968f, -0.042480480425152213f), a.Root(b), 6);
AssertHelpers.AlmostEqualRelative(new Complex32(0.007927894711475968f, -0.042480480425152213f), a.Root(b), 5);
a = new Complex32(0.0f, -0.5f);
b = new Complex32(0.0f, 1.0f);
AssertHelpers.AlmostEqual(new Complex32(0.15990905692806806f, 0.13282699942462053f), a.Root(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(0.15990905692806806f, 0.13282699942462053f), a.Root(b), 6);
a = new Complex32(0.0f, 2.0f);
b = new Complex32(0.0f, -2.0f);
AssertHelpers.AlmostEqual(new Complex32(0.42882900629436788f, 0.15487175246424678f), a.Root(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(0.42882900629436788f, 0.15487175246424678f), a.Root(b), 6);
a = new Complex32(0.0f, -8.388608e6f);
b = new Complex32(1.19209289550780998537e-7f, 0.0f);
AssertHelpers.AlmostEqual(new Complex32(float.PositiveInfinity, float.NegativeInfinity), a.Root(b), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(float.PositiveInfinity, float.NegativeInfinity), a.Root(b), 6);
}
/// <summary>
@ -221,17 +221,17 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
public void CanComputeSquare()
{
var complex = new Complex32(1.19209289550780998537e-7f, 1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(new Complex32(0, 2.8421709430403888e-14f), complex.Square(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(0, 2.8421709430403888e-14f), complex.Square(), 7);
complex = new Complex32(0.0f, 1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(new Complex32(-1.4210854715201944e-14f, 0.0f), complex.Square(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(-1.4210854715201944e-14f, 0.0f), complex.Square(), 7);
complex = new Complex32(0.0f, -1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(new Complex32(-1.4210854715201944e-14f, 0.0f), complex.Square(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(-1.4210854715201944e-14f, 0.0f), complex.Square(), 7);
complex = new Complex32(0.0f, 0.5f);
AssertHelpers.AlmostEqual(new Complex32(-0.25f, 0.0f), complex.Square(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(-0.25f, 0.0f), complex.Square(), 7);
complex = new Complex32(0.0f, -0.5f);
AssertHelpers.AlmostEqual(new Complex32(-0.25f, 0.0f), complex.Square(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(-0.25f, 0.0f), complex.Square(), 7);
complex = new Complex32(0.0f, -8.388608e6f);
AssertHelpers.AlmostEqual(new Complex32(-70368744177664.0f, 0.0f), complex.Square(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(-70368744177664.0f, 0.0f), complex.Square(), 7);
}
/// <summary>
@ -241,24 +241,24 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
public void CanComputeSquareRoot()
{
var complex = new Complex32(1.19209289550780998537e-7f, 1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(
AssertHelpers.AlmostEqualRelative(
new Complex32(0.00037933934912842666f, 0.00015712750315077684f), complex.SquareRoot(), 7);
complex = new Complex32(0.0f, 1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(
AssertHelpers.AlmostEqualRelative(
new Complex32(0.00024414062499999973f, 0.00024414062499999976f), complex.SquareRoot(), 7);
complex = new Complex32(0.0f, -1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(
AssertHelpers.AlmostEqualRelative(
new Complex32(0.00024414062499999973f, -0.00024414062499999976f), complex.SquareRoot(), 7);
complex = new Complex32(0.0f, 0.5f);
AssertHelpers.AlmostEqual(new Complex32(0.5f, 0.5f), complex.SquareRoot(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(0.5f, 0.5f), complex.SquareRoot(), 7);
complex = new Complex32(0.0f, -0.5f);
AssertHelpers.AlmostEqual(new Complex32(0.5f, -0.5f), complex.SquareRoot(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(0.5f, -0.5f), complex.SquareRoot(), 7);
complex = new Complex32(0.0f, -8.388608e6f);
AssertHelpers.AlmostEqual(new Complex32(2048.0f, -2048.0f), complex.SquareRoot(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(2048.0f, -2048.0f), complex.SquareRoot(), 7);
complex = new Complex32(8.388608e6f, 1.19209289550780998537e-7f);
AssertHelpers.AlmostEqual(new Complex32(2896.3093757400989f, 2.0579515874459933e-11f), complex.SquareRoot(), 7);
AssertHelpers.AlmostEqualRelative(new Complex32(2896.3093757400989f, 2.0579515874459933e-11f), complex.SquareRoot(), 7);
complex = new Complex32(0.0f, 0.0f);
AssertHelpers.AlmostEqual(Complex32.Zero, complex.SquareRoot(), 7);
AssertHelpers.AlmostEqualRelative(Complex32.Zero, complex.SquareRoot(), 7);
}
/// <summary>

72
src/UnitTests/ComplexTests/ComplexTest.cs

@ -55,7 +55,7 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var value = new Complex(real, imag);
var expected = new Complex(expectedReal, expectedImag);
AssertHelpers.AlmostEqual(expected, value.Exp(), 15);
AssertHelpers.AlmostEqualRelative(expected, value.Exp(), 15);
}
/// <summary>
@ -74,7 +74,7 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var value = new Complex(real, imag);
var expected = new Complex(expectedReal, expectedImag);
AssertHelpers.AlmostEqual(expected, value.Ln(), 15);
AssertHelpers.AlmostEqualRelative(expected, value.Ln(), 14);
}
/// <summary>
@ -85,39 +85,39 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var a = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
var b = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(
new Complex(9.99998047207974718744e-1, -1.76553541154378695012e-6), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(
new Complex(9.99998047207974718744e-1, -1.76553541154378695012e-6), a.Power(b), 14);
a = new Complex(0.0, 1.19209289550780998537e-7);
b = new Complex(0.0, -1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(new Complex(1.00000018725172576491, 1.90048076369011843105e-6), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(1.00000018725172576491, 1.90048076369011843105e-6), a.Power(b), 14);
a = new Complex(0.0, -1.19209289550780998537e-7);
b = new Complex(0.0, 0.5);
AssertHelpers.AlmostEqual(new Complex(-2.56488189382693049636e-1, -2.17823120666116144959), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(-2.56488189382693049636e-1, -2.17823120666116144959), a.Power(b), 14);
a = new Complex(0.0, 0.5);
b = new Complex(0.0, -0.5);
AssertHelpers.AlmostEqual(new Complex(2.06287223508090495171, 7.45007062179724087859e-1), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(2.06287223508090495171, 7.45007062179724087859e-1), a.Power(b), 14);
a = new Complex(0.0, -0.5);
b = new Complex(0.0, 1.0);
AssertHelpers.AlmostEqual(new Complex(3.70040633557002510874, -3.07370876701949232239), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(3.70040633557002510874, -3.07370876701949232239), a.Power(b), 14);
a = new Complex(0.0, 2.0);
b = new Complex(0.0, -2.0);
AssertHelpers.AlmostEqual(new Complex(4.24532146387429353891, -2.27479427903521192648e1), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(4.24532146387429353891, -2.27479427903521192648e1), a.Power(b), 14);
a = new Complex(0.0, -8.388608e6);
b = new Complex(1.19209289550780998537e-7, 0.0);
AssertHelpers.AlmostEqual(new Complex(1.00000190048219620166, -1.87253870018168043834e-7), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(1.00000190048219620166, -1.87253870018168043834e-7), a.Power(b), 14);
a = new Complex(0.0, 0.0);
b = new Complex(0.0, 0.0);
AssertHelpers.AlmostEqual(new Complex(1.0, 0.0), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(1.0, 0.0), a.Power(b), 14);
a = new Complex(0.0, 0.0);
b = new Complex(1.0, 0.0);
AssertHelpers.AlmostEqual(new Complex(0.0, 0.0), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(0.0, 0.0), a.Power(b), 14);
a = new Complex(0.0, 0.0);
b = new Complex(-1.0, 0.0);
AssertHelpers.AlmostEqual(new Complex(double.PositiveInfinity, 0.0), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(double.PositiveInfinity, 0.0), a.Power(b), 14);
a = new Complex(0.0, 0.0);
b = new Complex(-1.0, 1.0);
AssertHelpers.AlmostEqual(new Complex(double.PositiveInfinity, double.PositiveInfinity), a.Power(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(double.PositiveInfinity, double.PositiveInfinity), a.Power(b), 14);
a = new Complex(0.0, 0.0);
b = new Complex(0.0, 1.0);
Assert.That(a.Power(b).IsNaN());
@ -131,23 +131,23 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
{
var a = new Complex(0.0, -1.19209289550780998537e-7);
var b = new Complex(0.0, 0.5);
AssertHelpers.AlmostEqual(new Complex(0.038550761943650161, 0.019526430428319544), a.Root(b), 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.038550761943650161, 0.019526430428319544), a.Root(b), 13);
a = new Complex(0.0, 0.5);
b = new Complex(0.0, -0.5);
AssertHelpers.AlmostEqual(new Complex(0.007927894711475968, -0.042480480425152213), a.Root(b), 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.007927894711475968, -0.042480480425152213), a.Root(b), 13);
a = new Complex(0.0, -0.5);
b = new Complex(0.0, 1.0);
AssertHelpers.AlmostEqual(new Complex(0.15990905692806806, 0.13282699942462053), a.Root(b), 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.15990905692806806, 0.13282699942462053), a.Root(b), 13);
a = new Complex(0.0, 2.0);
b = new Complex(0.0, -2.0);
AssertHelpers.AlmostEqual(new Complex(0.42882900629436788, 0.15487175246424678), a.Root(b), 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.42882900629436788, 0.15487175246424678), a.Root(b), 13);
//a = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
//b = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
//AssertHelpers.AlmostEqual(new Complex(0.0, 0.0), a.Root(b), 15);
a = new Complex(0.0, -8.388608e6);
b = new Complex(1.19209289550780998537e-7, 0.0);
AssertHelpers.AlmostEqual(new Complex(double.PositiveInfinity, double.NegativeInfinity), a.Root(b), 15);
AssertHelpers.AlmostEqualRelative(new Complex(double.PositiveInfinity, double.NegativeInfinity), a.Root(b), 14);
}
/// <summary>
@ -157,17 +157,17 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
public void CanComputeSquare()
{
var complex = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(new Complex(0, 2.8421709430403888e-14), complex.Square(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(0, 2.8421709430403888e-14), complex.Square(), 15);
complex = new Complex(0.0, 1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(new Complex(-1.4210854715201944e-14, 0.0), complex.Square(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(-1.4210854715201944e-14, 0.0), complex.Square(), 15);
complex = new Complex(0.0, -1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(new Complex(-1.4210854715201944e-14, 0.0), complex.Square(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(-1.4210854715201944e-14, 0.0), complex.Square(), 15);
complex = new Complex(0.0, 0.5);
AssertHelpers.AlmostEqual(new Complex(-0.25, 0.0), complex.Square(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(-0.25, 0.0), complex.Square(), 15);
complex = new Complex(0.0, -0.5);
AssertHelpers.AlmostEqual(new Complex(-0.25, 0.0), complex.Square(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(-0.25, 0.0), complex.Square(), 15);
complex = new Complex(0.0, -8.388608e6);
AssertHelpers.AlmostEqual(new Complex(-70368744177664.0, 0.0), complex.Square(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(-70368744177664.0, 0.0), complex.Square(), 15);
}
/// <summary>
@ -177,24 +177,24 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
public void CanComputeSquareRoot()
{
var complex = new Complex(1.19209289550780998537e-7, 1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(
new Complex(0.00037933934912842666, 0.00015712750315077684), complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(
new Complex(0.00037933934912842666, 0.00015712750315077684), complex.SquareRoot(), 14);
complex = new Complex(0.0, 1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(
new Complex(0.00024414062499999973, 0.00024414062499999976), complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(
new Complex(0.00024414062499999973, 0.00024414062499999976), complex.SquareRoot(), 14);
complex = new Complex(0.0, -1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(
new Complex(0.00024414062499999973, -0.00024414062499999976), complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(
new Complex(0.00024414062499999973, -0.00024414062499999976), complex.SquareRoot(), 14);
complex = new Complex(0.0, 0.5);
AssertHelpers.AlmostEqual(new Complex(0.5, 0.5), complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(0.5, 0.5), complex.SquareRoot(), 14);
complex = new Complex(0.0, -0.5);
AssertHelpers.AlmostEqual(new Complex(0.5, -0.5), complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(0.5, -0.5), complex.SquareRoot(), 14);
complex = new Complex(0.0, -8.388608e6);
AssertHelpers.AlmostEqual(new Complex(2048.0, -2048.0), complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(2048.0, -2048.0), complex.SquareRoot(), 14);
complex = new Complex(8.388608e6, 1.19209289550780998537e-7);
AssertHelpers.AlmostEqual(new Complex(2896.3093757400989, 2.0579515874459933e-11), complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(new Complex(2896.3093757400989, 2.0579515874459933e-11), complex.SquareRoot(), 14);
complex = new Complex(0.0, 0.0);
AssertHelpers.AlmostEqual(Complex.Zero, complex.SquareRoot(), 15);
AssertHelpers.AlmostEqualRelative(Complex.Zero, complex.SquareRoot(), 14);
}
/// <summary>

16
src/UnitTests/DistributionTests/Continuous/BetaTests.cs

@ -191,7 +191,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateEntropy(double a, double b, double entropy)
{
var n = new Beta(a, b);
AssertHelpers.AlmostEqual(entropy, n.Entropy, 14);
AssertHelpers.AlmostEqualRelative(entropy, n.Entropy, 13);
}
/// <summary>
@ -213,7 +213,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateSkewness(double a, double b, double skewness)
{
var n = new Beta(a, b);
AssertHelpers.AlmostEqual(skewness, n.Skewness, 15);
AssertHelpers.AlmostEqualRelative(skewness, n.Skewness, 14);
}
/// <summary>
@ -368,8 +368,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensity(double a, double b, double x, double pdf)
{
var n = new Beta(a, b);
AssertHelpers.AlmostEqual(pdf, n.Density(x), 13);
AssertHelpers.AlmostEqual(pdf, Beta.PDF(a, b, x), 13);
AssertHelpers.AlmostEqualRelative(pdf, n.Density(x), 12);
AssertHelpers.AlmostEqualRelative(pdf, Beta.PDF(a, b, x), 12);
}
/// <summary>
@ -414,8 +414,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensityLn(double a, double b, double x, double pdfln)
{
var n = new Beta(a, b);
AssertHelpers.AlmostEqual(pdfln, n.DensityLn(x), 14);
AssertHelpers.AlmostEqual(pdfln, Beta.PDFLn(a, b, x), 14);
AssertHelpers.AlmostEqualRelative(pdfln, n.DensityLn(x), 13);
AssertHelpers.AlmostEqualRelative(pdfln, Beta.PDFLn(a, b, x), 13);
}
/// <summary>
@ -458,8 +458,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(double a, double b, double x, double cdf)
{
var n = new Beta(a, b);
AssertHelpers.AlmostEqual(cdf, n.CumulativeDistribution(x), 13);
AssertHelpers.AlmostEqual(cdf, Beta.CDF(a, b, x), 13);
AssertHelpers.AlmostEqualRelative(cdf, n.CumulativeDistribution(x), 13);
AssertHelpers.AlmostEqualRelative(cdf, Beta.CDF(a, b, x), 13);
}
}
}

20
src/UnitTests/DistributionTests/Continuous/ErlangTests.cs

@ -240,7 +240,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateVariance(int shape, double invScale, double var)
{
var n = new Erlang(shape, invScale);
AssertHelpers.AlmostEqual(var, n.Variance, 15);
AssertHelpers.AlmostEqualRelative(var, n.Variance, 15);
}
/// <summary>
@ -258,7 +258,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateStdDev(int shape, double invScale, double sdev)
{
var n = new Erlang(shape, invScale);
AssertHelpers.AlmostEqual(sdev, n.StdDev, 15);
AssertHelpers.AlmostEqualRelative(sdev, n.StdDev, 15);
}
/// <summary>
@ -276,7 +276,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateEntropy(int shape, double invScale, double entropy)
{
var n = new Erlang(shape, invScale);
AssertHelpers.AlmostEqual(entropy, n.Entropy, 13);
AssertHelpers.AlmostEqualRelative(entropy, n.Entropy, 12);
}
/// <summary>
@ -294,7 +294,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateSkewness(int shape, double invScale, double skewness)
{
var n = new Erlang(shape, invScale);
AssertHelpers.AlmostEqual(skewness, n.Skewness, 15);
AssertHelpers.AlmostEqualRelative(skewness, n.Skewness, 15);
}
/// <summary>
@ -372,8 +372,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensity(int shape, double invScale, double x, double pdf)
{
var n = new Erlang(shape, invScale);
AssertHelpers.AlmostEqual(pdf, n.Density(x), 14);
AssertHelpers.AlmostEqual(pdf, Erlang.PDF(shape, invScale, x), 14);
AssertHelpers.AlmostEqualRelative(pdf, n.Density(x), 13);
AssertHelpers.AlmostEqualRelative(pdf, Erlang.PDF(shape, invScale, x), 13);
}
/// <summary>
@ -404,8 +404,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensityLn(int shape, double invScale, double x, double pdfln)
{
var n = new Erlang(shape, invScale);
AssertHelpers.AlmostEqual(pdfln, n.DensityLn(x), 14);
AssertHelpers.AlmostEqual(pdfln, Erlang.PDFLn(shape, invScale, x), 14);
AssertHelpers.AlmostEqualRelative(pdfln, n.DensityLn(x), 13);
AssertHelpers.AlmostEqualRelative(pdfln, Erlang.PDFLn(shape, invScale, x), 13);
}
/// <summary>
@ -457,8 +457,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(int shape, double invScale, double x, double cdf)
{
var n = new Erlang(shape, invScale);
AssertHelpers.AlmostEqual(cdf, n.CumulativeDistribution(x), 14);
AssertHelpers.AlmostEqual(cdf, Erlang.CDF(shape, invScale, x), 14);
AssertHelpers.AlmostEqualRelative(cdf, n.CumulativeDistribution(x), 13);
AssertHelpers.AlmostEqualRelative(cdf, Erlang.CDF(shape, invScale, x), 13);
}
}
}

20
src/UnitTests/DistributionTests/Continuous/GammaTests.cs

@ -244,7 +244,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateVariance(double shape, double invScale, double var)
{
var n = new Gamma(shape, invScale);
AssertHelpers.AlmostEqual(var, n.Variance, 15);
AssertHelpers.AlmostEqualRelative(var, n.Variance, 15);
}
/// <summary>
@ -262,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateStdDev(double shape, double invScale, double sdev)
{
var n = new Gamma(shape, invScale);
AssertHelpers.AlmostEqual(sdev, n.StdDev, 15);
AssertHelpers.AlmostEqualRelative(sdev, n.StdDev, 15);
}
/// <summary>
@ -280,7 +280,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateEntropy(double shape, double invScale, double entropy)
{
var n = new Gamma(shape, invScale);
AssertHelpers.AlmostEqual(entropy, n.Entropy, 13);
AssertHelpers.AlmostEqualRelative(entropy, n.Entropy, 12);
}
/// <summary>
@ -298,7 +298,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateSkewness(double shape, double invScale, double skewness)
{
var n = new Gamma(shape, invScale);
AssertHelpers.AlmostEqual(skewness, n.Skewness, 15);
AssertHelpers.AlmostEqualRelative(skewness, n.Skewness, 15);
}
/// <summary>
@ -377,8 +377,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensity(int shape, double invScale, double x, double pdf)
{
var n = new Gamma(shape, invScale);
AssertHelpers.AlmostEqual(pdf, n.Density(x), 14);
AssertHelpers.AlmostEqual(pdf, Gamma.PDF(shape, invScale, x), 14);
AssertHelpers.AlmostEqualRelative(pdf, n.Density(x), 13);
AssertHelpers.AlmostEqualRelative(pdf, Gamma.PDF(shape, invScale, x), 13);
}
/// <summary>
@ -409,8 +409,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensityLn(int shape, double invScale, double x, double pdfln)
{
var n = new Gamma(shape, invScale);
AssertHelpers.AlmostEqual(pdfln, n.DensityLn(x), 14);
AssertHelpers.AlmostEqual(pdfln, Gamma.PDFLn(shape, invScale, x), 14);
AssertHelpers.AlmostEqualRelative(pdfln, n.DensityLn(x), 13);
AssertHelpers.AlmostEqualRelative(pdfln, Gamma.PDFLn(shape, invScale, x), 13);
}
/// <summary>
@ -499,8 +499,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(int shape, double invScale, double x, double cdf)
{
var n = new Gamma(shape, invScale);
AssertHelpers.AlmostEqual(cdf, n.CumulativeDistribution(x), 14);
AssertHelpers.AlmostEqual(cdf, Gamma.CDF(shape, invScale, x), 14);
AssertHelpers.AlmostEqualRelative(cdf, n.CumulativeDistribution(x), 13);
AssertHelpers.AlmostEqualRelative(cdf, Gamma.CDF(shape, invScale, x), 13);
}
}
}

26
src/UnitTests/DistributionTests/Continuous/LogNormalTests.cs

@ -172,7 +172,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateEntropy(double mu, double sigma, double entropy)
{
var n = new LogNormal(mu, sigma);
AssertHelpers.AlmostEqual(entropy, n.Entropy, 14);
AssertHelpers.AlmostEqualRelative(entropy, n.Entropy, 14);
}
/// <summary>
@ -208,7 +208,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateSkewness(double mu, double sigma, double skewness)
{
var n = new LogNormal(mu, sigma);
AssertHelpers.AlmostEqual(skewness, n.Skewness, 14);
AssertHelpers.AlmostEqualRelative(skewness, n.Skewness, 13);
}
/// <summary>
@ -316,7 +316,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateMean(double mu, double sigma, double mean)
{
var n = new LogNormal(mu, sigma);
AssertHelpers.AlmostEqual(mean, n.Mean, 14);
AssertHelpers.AlmostEqualRelative(mean, n.Mean, 14);
}
/// <summary>
@ -377,8 +377,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensity(double mu, double sigma, double x, double p)
{
var n = new LogNormal(mu, sigma);
AssertHelpers.AlmostEqual(p, n.Density(x), 14);
AssertHelpers.AlmostEqual(p, LogNormal.PDF(mu, sigma, x), 14);
AssertHelpers.AlmostEqualRelative(p, n.Density(x), 13);
AssertHelpers.AlmostEqualRelative(p, LogNormal.PDF(mu, sigma, x), 13);
}
/// <summary>
@ -419,8 +419,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensityLn(double mu, double sigma, double x, double p)
{
var n = new LogNormal(mu, sigma);
AssertHelpers.AlmostEqual(p, n.DensityLn(x), 14);
AssertHelpers.AlmostEqual(p, LogNormal.PDFLn(mu, sigma, x), 14);
AssertHelpers.AlmostEqualRelative(p, n.DensityLn(x), 13);
AssertHelpers.AlmostEqualRelative(p, LogNormal.PDFLn(mu, sigma, x), 13);
}
/// <summary>
@ -519,8 +519,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(double mu, double sigma, double x, double f)
{
var n = new LogNormal(mu, sigma);
AssertHelpers.AlmostEqual(f, n.CumulativeDistribution(x), 8);
AssertHelpers.AlmostEqual(f, LogNormal.CDF(mu, sigma, x), 8);
AssertHelpers.AlmostEqualRelative(f, n.CumulativeDistribution(x), 7);
AssertHelpers.AlmostEqualRelative(f, LogNormal.CDF(mu, sigma, x), 7);
}
/// <summary>
@ -553,8 +553,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateInverseCumulativeDistribution(double mu, double sigma, double x, double f)
{
var n = new LogNormal(mu, sigma);
AssertHelpers.AlmostEqual(x, n.InverseCumulativeDistribution(f), 8);
AssertHelpers.AlmostEqual(x, LogNormal.InvCDF(mu, sigma, f), 8);
AssertHelpers.AlmostEqualRelative(x, n.InverseCumulativeDistribution(f), 8);
AssertHelpers.AlmostEqualRelative(x, LogNormal.InvCDF(mu, sigma, f), 8);
}
/// <summary>
@ -570,8 +570,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
var original = new LogNormal(mu, sigma, new Random(100));
var estimated = LogNormal.Estimate(original.Samples().Take(10000));
AssertHelpers.AlmostEqual(mu, estimated.Mu, 2);
AssertHelpers.AlmostEqual(sigma, estimated.Sigma, 2);
AssertHelpers.AlmostEqualRelative(mu, estimated.Mu, 1);
AssertHelpers.AlmostEqualRelative(sigma, estimated.Sigma, 1);
}
}
}

20
src/UnitTests/DistributionTests/Continuous/NormalTests.cs

@ -123,8 +123,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void CanCreateNormalFromMeanAndVariance(double mean, double var)
{
var n = Normal.WithMeanVariance(mean, var);
AssertHelpers.AlmostEqual(mean, n.Mean, 16);
AssertHelpers.AlmostEqual(var, n.Variance, 16);
AssertHelpers.AlmostEqualRelative(mean, n.Mean, 15);
AssertHelpers.AlmostEqualRelative(var, n.Variance, 15);
}
/// <summary>
@ -141,8 +141,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void CanCreateNormalFromMeanAndPrecision(double mean, double prec)
{
var n = Normal.WithMeanPrecision(mean, prec);
AssertHelpers.AlmostEqual(mean, n.Mean, 15);
AssertHelpers.AlmostEqual(prec, n.Precision, 15);
AssertHelpers.AlmostEqualRelative(mean, n.Mean, 15);
AssertHelpers.AlmostEqualRelative(prec, n.Precision, 15);
}
/// <summary>
@ -472,8 +472,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(double x, double f)
{
var n = Normal.WithMeanStdDev(5.0, 2.0);
AssertHelpers.AlmostEqual(f, n.CumulativeDistribution(x), 10);
AssertHelpers.AlmostEqual(f, Normal.CDF(5.0, 2.0, x), 10);
AssertHelpers.AlmostEqualRelative(f, n.CumulativeDistribution(x), 9);
AssertHelpers.AlmostEqualRelative(f, Normal.CDF(5.0, 2.0, x), 9);
}
/// <summary>
@ -494,8 +494,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateInverseCumulativeDistribution(double x, double f)
{
var n = Normal.WithMeanStdDev(5.0, 2.0);
AssertHelpers.AlmostEqual(x, n.InverseCumulativeDistribution(f), 15);
AssertHelpers.AlmostEqual(x, Normal.InvCDF(5.0, 2.0, f), 15);
AssertHelpers.AlmostEqualRelative(x, n.InverseCumulativeDistribution(f), 14);
AssertHelpers.AlmostEqualRelative(x, Normal.InvCDF(5.0, 2.0, f), 14);
}
/// <summary>
@ -511,8 +511,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
var original = new Normal(mean, stddev, new Random(100));
var estimated = Normal.Estimate(original.Samples().Take(10000));
AssertHelpers.AlmostEqual(mean, estimated.Mean, 2);
AssertHelpers.AlmostEqual(stddev, estimated.StdDev, 2);
AssertHelpers.AlmostEqualRelative(mean, estimated.Mean, 1);
AssertHelpers.AlmostEqualRelative(stddev, estimated.StdDev, 1);
}
}
}

2
src/UnitTests/DistributionTests/Continuous/RayleighTests.cs

@ -182,7 +182,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateSkewness(double scale, double skn)
{
var n = new Rayleigh(scale);
AssertHelpers.AlmostEqual(skn, n.Skewness, 17);
AssertHelpers.AlmostEqualRelative(skn, n.Skewness, 17);
}
/// <summary>

6
src/UnitTests/DistributionTests/Continuous/StableTests.cs

@ -341,7 +341,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensity(double alpha, double beta, double scale, double location, double x, double d)
{
var n = new Stable(alpha, beta, scale, location);
AssertHelpers.AlmostEqual(d, n.Density(x), 15);
AssertHelpers.AlmostEqualRelative(d, n.Density(x), 15);
}
/// <summary>
@ -365,7 +365,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensityLn(double alpha, double beta, double scale, double location, double x, double dln)
{
var n = new Stable(alpha, beta, scale, location);
AssertHelpers.AlmostEqual(dln, n.DensityLn(x), 15);
AssertHelpers.AlmostEqualRelative(dln, n.DensityLn(x), 15);
}
/// <summary>
@ -410,7 +410,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(double alpha, double beta, double scale, double location, double x, double cdf)
{
var n = new Stable(alpha, beta, scale, location);
AssertHelpers.AlmostEqual(cdf, n.CumulativeDistribution(x), 15);
AssertHelpers.AlmostEqualRelative(cdf, n.CumulativeDistribution(x), 15);
}
}
}

6
src/UnitTests/DistributionTests/Continuous/StudentTTests.cs

@ -341,7 +341,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensity(double location, double scale, double dof, double x, double p)
{
var n = new StudentT(location, scale, dof);
AssertHelpers.AlmostEqual(p, n.Density(x), 13);
AssertHelpers.AlmostEqualRelative(p, n.Density(x), 13);
}
/// <summary>
@ -368,7 +368,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensityLn(double location, double scale, double dof, double x, double p)
{
var n = new StudentT(location, scale, dof);
AssertHelpers.AlmostEqual(p, n.DensityLn(x), 13);
AssertHelpers.AlmostEqualRelative(p, n.DensityLn(x), 13);
}
/// <summary>
@ -454,7 +454,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(double location, double scale, double dof, double x, double c)
{
var n = new StudentT(location, scale, dof);
AssertHelpers.AlmostEqual(c, n.CumulativeDistribution(x), 13);
AssertHelpers.AlmostEqualRelative(c, n.CumulativeDistribution(x), 13);
}
}
}

16
src/UnitTests/DistributionTests/Continuous/WeibullTests.cs

@ -164,7 +164,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateMean(double shape, double scale, double mean)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(mean, n.Mean, 13);
AssertHelpers.AlmostEqualRelative(mean, n.Mean, 13);
}
/// <summary>
@ -180,7 +180,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateVariance(double shape, double scale, double var)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(var, n.Variance, 13);
AssertHelpers.AlmostEqualRelative(var, n.Variance, 12);
}
/// <summary>
@ -196,7 +196,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateStdDev(double shape, double scale, double sdev)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(sdev, n.StdDev, 13);
AssertHelpers.AlmostEqualRelative(sdev, n.StdDev, 12);
}
/// <summary>
@ -212,7 +212,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateSkewness(double shape, double scale, double skewness)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(skewness, n.Skewness, 11);
AssertHelpers.AlmostEqualRelative(skewness, n.Skewness, 10);
}
/// <summary>
@ -244,7 +244,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateMedian(double shape, double scale, double median)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(median, n.Median, 13);
AssertHelpers.AlmostEqualRelative(median, n.Median, 13);
}
/// <summary>
@ -289,7 +289,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensity(double shape, double scale, double x, double pdf)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(pdf, n.Density(x), 14);
AssertHelpers.AlmostEqualRelative(pdf, n.Density(x), 13);
}
/// <summary>
@ -314,7 +314,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateDensityLn(double shape, double scale, double x, double pdfln)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(pdfln, n.DensityLn(x), 14);
AssertHelpers.AlmostEqualRelative(pdfln, n.DensityLn(x), 14);
}
/// <summary>
@ -397,7 +397,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
public void ValidateCumulativeDistribution(double shape, double scale, double x, double cdf)
{
var n = new Weibull(shape, scale);
AssertHelpers.AlmostEqual(cdf, n.CumulativeDistribution(x), 15);
AssertHelpers.AlmostEqualRelative(cdf, n.CumulativeDistribution(x), 14);
}
}
}

2
src/UnitTests/DistributionTests/Discrete/BernoulliTests.cs

@ -119,7 +119,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateEntropy(double p)
{
var b = new Bernoulli(p);
AssertHelpers.AlmostEqual(-((1.0 - p) * Math.Log(1.0 - p)) - (p * Math.Log(p)), b.Entropy, 14);
AssertHelpers.AlmostEqualRelative(-((1.0 - p) * Math.Log(1.0 - p)) - (p * Math.Log(p)), b.Entropy, 14);
}
/// <summary>

6
src/UnitTests/DistributionTests/Discrete/BinomialTests.cs

@ -125,7 +125,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateEntropy(double p, int n, double e)
{
var b = new Binomial(p, n);
AssertHelpers.AlmostEqual(e, b.Entropy, 14);
AssertHelpers.AlmostEqualRelative(e, b.Entropy, 14);
}
/// <summary>
@ -211,7 +211,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateProbability(double p, int n, int x, double d)
{
var b = new Binomial(p, n);
AssertHelpers.AlmostEqual(d, b.Probability(x), 14);
AssertHelpers.AlmostEqualRelative(d, b.Probability(x), 14);
}
/// <summary>
@ -248,7 +248,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateProbabilityLn(double p, int n, int x, double dln)
{
var b = new Binomial(p, n);
AssertHelpers.AlmostEqual(dln, b.ProbabilityLn(x), 14);
AssertHelpers.AlmostEqualRelative(dln, b.ProbabilityLn(x), 14);
}
/// <summary>

8
src/UnitTests/DistributionTests/Discrete/ConwayMaxwellPoissonTests.cs

@ -197,7 +197,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateMean(int lambda, int nu, double mean)
{
var d = new ConwayMaxwellPoisson(lambda, nu);
AssertHelpers.AlmostEqual(mean, d.Mean, 10);
AssertHelpers.AlmostEqualRelative(mean, d.Mean, 10);
}
/// <summary>
@ -236,7 +236,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateProbability(double lambda, double nu, int x, double p)
{
var d = new ConwayMaxwellPoisson(lambda, nu);
AssertHelpers.AlmostEqual(p, d.Probability(x), 13);
AssertHelpers.AlmostEqualRelative(p, d.Probability(x), 12);
}
/// <summary>
@ -255,7 +255,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateProbabilityLn(double lambda, double nu, int x, double pln)
{
var d = new ConwayMaxwellPoisson(lambda, nu);
AssertHelpers.AlmostEqual(pln, d.ProbabilityLn(x), 13);
AssertHelpers.AlmostEqualRelative(pln, d.ProbabilityLn(x), 12);
}
/// <summary>
@ -295,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateCumulativeDistribution(double lambda, double nu, int x, double cdf)
{
var d = new ConwayMaxwellPoisson(lambda, nu);
AssertHelpers.AlmostEqual(cdf, d.CumulativeDistribution(x), 13);
AssertHelpers.AlmostEqualRelative(cdf, d.CumulativeDistribution(x), 12);
}
}
}

2
src/UnitTests/DistributionTests/Discrete/DiscreteUniformTests.cs

@ -151,7 +151,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateEntropy(int l, int u, double e)
{
var du = new DiscreteUniform(l, u);
AssertHelpers.AlmostEqual(e, du.Entropy, 14);
AssertHelpers.AlmostEqualRelative(e, du.Entropy, 14);
}
/// <summary>

2
src/UnitTests/DistributionTests/Discrete/HypergeometricTests.cs

@ -355,7 +355,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateCumulativeDistribution(int population, int success, int draws, double x, double cdf)
{
var d = new Hypergeometric(population, success, draws);
AssertHelpers.AlmostEqual(cdf, d.CumulativeDistribution(x), 10);
AssertHelpers.AlmostEqualRelative(cdf, d.CumulativeDistribution(x), 9);
}
[Test]

4
src/UnitTests/DistributionTests/Discrete/ZipfTests.cs

@ -153,7 +153,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
public void ValidateEntropy(double s, int n, double e)
{
var d = new Zipf(s, n);
AssertHelpers.AlmostEqual(e, d.Entropy, 15);
AssertHelpers.AlmostEqualRelative(e, d.Entropy, 15);
}
/// <summary>
@ -292,7 +292,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Discrete
{
var d = new Zipf(s, n);
var cdf = SpecialFunctions.GeneralHarmonic(x, s) / SpecialFunctions.GeneralHarmonic(n, s);
AssertHelpers.AlmostEqual(cdf, d.CumulativeDistribution(x), 14);
AssertHelpers.AlmostEqualRelative(cdf, d.CumulativeDistribution(x), 14);
}
}
}

12
src/UnitTests/DistributionTests/Multivariate/DirichletTests.cs

@ -172,7 +172,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
for (var i = 0; i < 5; i++)
{
AssertHelpers.AlmostEqual(0.3 / 1.5, d.Mean[i], 15);
AssertHelpers.AlmostEqualRelative(0.3 / 1.5, d.Mean[i], 15);
}
}
@ -193,7 +193,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
var d = new Dirichlet(alpha);
for (var i = 0; i < 10; i++)
{
AssertHelpers.AlmostEqual(i * (sum - i) / (sum * sum * (sum + 1.0)), d.Variance[i], 15);
AssertHelpers.AlmostEqualRelative(i * (sum - i) / (sum * sum * (sum + 1.0)), d.Variance[i], 15);
}
}
@ -210,7 +210,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
public void ValidateDensity(double[] x, double res)
{
var d = new Dirichlet(new[] { 0.1, 0.3, 0.5, 0.8 });
AssertHelpers.AlmostEqual(res, d.Density(x), 12);
AssertHelpers.AlmostEqualRelative(res, d.Density(x), 12);
}
/// <summary>
@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
public void ValidateDensityLn(double[] x)
{
var d = new Dirichlet(new[] { 0.1, 0.3, 0.5, 0.8 });
AssertHelpers.AlmostEqual(d.DensityLn(x), Math.Log(d.Density(x)), 12);
AssertHelpers.AlmostEqualRelative(d.DensityLn(x), Math.Log(d.Density(x)), 12);
}
/// <summary>
@ -237,7 +237,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
{
var d = new Dirichlet(new[] { 0.1, 0.3 });
var beta = new Beta(0.1, 0.3);
AssertHelpers.AlmostEqual(d.DensityLn(new[] { x }), beta.DensityLn(x), 10);
AssertHelpers.AlmostEqualRelative(d.DensityLn(new[] { x }), beta.DensityLn(x), 10);
}
/// <summary>
@ -252,7 +252,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
var sum = x.Sum(t => (t - 1) * SpecialFunctions.DiGamma(t));
var res = SpecialFunctions.GammaLn(x.Sum()) + ((x.Sum() - x.Length) * SpecialFunctions.DiGamma(x.Sum())) - sum;
AssertHelpers.AlmostEqual(res, d.Entropy, 12);
AssertHelpers.AlmostEqualRelative(res, d.Entropy, 12);
}
/// <summary>

2
src/UnitTests/DistributionTests/Multivariate/InverseWishartTests.cs

@ -284,7 +284,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
x[0, 0] = 5;
var d = new InverseWishart(nu, matrix);
AssertHelpers.AlmostEqual(density, d.Density(x), 16);
AssertHelpers.AlmostEqualRelative(density, d.Density(x), 16);
}
/// <summary>

2
src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs

@ -294,7 +294,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
x[0, 0] = 2;
x[0, 1] = 2;
AssertHelpers.AlmostEqual(0.00015682927366491211, d.Density(x), 16);
AssertHelpers.AlmostEqualRelative(0.00015682927366491211, d.Density(x), 16);
}
/// <summary>

10
src/UnitTests/DistributionTests/Multivariate/MultinomialTests.cs

@ -149,7 +149,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
var b = new Multinomial(p, n);
for (var i = 0; i < b.P.Length; i++)
{
AssertHelpers.AlmostEqual(res[i], b.Skewness[i], 12);
AssertHelpers.AlmostEqualRelative(res[i], b.Skewness[i], 12);
}
}
@ -167,7 +167,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
var b = new Multinomial(p, n);
for (var i = 0; i < b.P.Length; i++)
{
AssertHelpers.AlmostEqual(res[i], b.Variance[i], 12);
AssertHelpers.AlmostEqualRelative(res[i], b.Variance[i], 12);
}
}
@ -185,7 +185,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
var b = new Multinomial(p, n);
for (var i = 0; i < b.P.Length; i++)
{
AssertHelpers.AlmostEqual(res[i], b.Mean[i], 12);
AssertHelpers.AlmostEqualRelative(res[i], b.Mean[i], 12);
}
}
@ -201,7 +201,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
public void ValidateProbability(double[] p, int[] x, double res)
{
var b = new Multinomial(p, x.Sum());
AssertHelpers.AlmostEqual(b.Probability(x), res, 12);
AssertHelpers.AlmostEqualRelative(b.Probability(x), res, 12);
}
/// <summary>
@ -214,7 +214,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
public void ValidateProbabilityLn(int[] x)
{
var b = new Multinomial(_largeP, x.Sum());
AssertHelpers.AlmostEqual(b.ProbabilityLn(x), Math.Log(b.Probability(x)), 12);
AssertHelpers.AlmostEqualRelative(b.ProbabilityLn(x), Math.Log(b.Probability(x)), 12);
}
/// <summary>

2
src/UnitTests/DistributionTests/Multivariate/WishartTests.cs

@ -286,7 +286,7 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
x[0, 0] = 5;
var d = new Wishart(nu, matrix);
AssertHelpers.AlmostEqual(density, d.Density(x), 16);
AssertHelpers.AlmostEqualRelative(density, d.Density(x), 16);
}
/// <summary>

2
src/UnitTests/FinancialTests/CompoundMonthlyReturnTests.cs

@ -68,7 +68,7 @@ namespace MathNet.Numerics.UnitTests.FinancialTests
//act
var cmpdReturn = inputData.CompoundMonthlyReturn();
//assert
AssertHelpers.AlmostEqual(0.0870999982199265, cmpdReturn, 15);
AssertHelpers.AlmostEqualRelative(0.0870999982199265, cmpdReturn, 14);
}
//Definitly need more tests here. Would love to find test data for these stats similar to the .dat files used for other tests.

18
src/UnitTests/IntegralTransformsTests/FourierTest.cs

@ -101,20 +101,10 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
var dft = new DiscreteFourierTransform();
Assert.Throws(
typeof (ArgumentException),
() => dft.Radix2Forward(samples, FourierOptions.Default));
Assert.Throws(
typeof (ArgumentException),
() => dft.Radix2Inverse(samples, FourierOptions.Default));
Assert.Throws(
typeof (ArgumentException),
() => DiscreteFourierTransform.Radix2(samples, -1));
Assert.Throws(
typeof (ArgumentException),
() => DiscreteFourierTransform.Radix2Parallel(samples, -1));
Assert.Throws(typeof (ArgumentException), () => dft.Radix2Forward(samples, FourierOptions.Default));
Assert.Throws(typeof (ArgumentException), () => dft.Radix2Inverse(samples, FourierOptions.Default));
Assert.Throws(typeof (ArgumentException), () => DiscreteFourierTransform.Radix2(samples, -1));
Assert.Throws(typeof (ArgumentException), () => DiscreteFourierTransform.Radix2Parallel(samples, -1));
}
}
}

13
src/UnitTests/IntegralTransformsTests/HartleyTest.cs

@ -58,14 +58,9 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary>
/// Verify if matches DFT.
/// </summary>
/// <param name="samples">Samples array.</param>
/// <param name="maximumError">Maximum error value.</param>
/// <param name="inverse">Is inverse.</param>
/// <param name="dft">DFT function delegate.</param>
/// <param name="hartley">Hartley transform delegate.</param>
static void VerifyMatchesDft(
double[] samples,
double maximumError,
int maximumErrorDecimalPlaces,
bool inverse,
Action<Complex[]> dft,
Func<double[], double[]> hartley)
@ -76,7 +71,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
dft(fourierComplex);
var fourierReal = ArrayHelpers.ConvertAll(fourierComplex, s => s.Real);
AssertHelpers.AlmostEqualList(fourierReal, hartleyReal, maximumError);
AssertHelpers.ListAlmostEqual(fourierReal, hartleyReal, maximumErrorDecimalPlaces);
}
/// <summary>
@ -94,13 +89,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
VerifyMatchesDft(
samples,
1e-5,
5,
false,
s => Transform.FourierForward(s, fourierOptions),
s => dht.NaiveForward(s, hartleyOptions));
VerifyMatchesDft(
samples,
1e-5,
5,
true,
s => Transform.FourierInverse(s, fourierOptions),
s => dht.NaiveInverse(s, hartleyOptions));

136
src/UnitTests/IntegralTransformsTests/InverseTransformTest.cs

@ -24,7 +24,6 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.Distributions;
using MathNet.Numerics.IntegralTransforms;
using MathNet.Numerics.IntegralTransforms.Algorithms;
@ -55,58 +54,6 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
return new ContinuousUniform(-1, 1, new Random(seed));
}
/// <summary>
/// Verify if is reversible complex.
/// </summary>
/// <param name="count">Samples count.</param>
/// <param name="maximumError">Maximum error value.</param>
/// <param name="forward">Forward delegate.</param>
/// <param name="inverse">Inverse delegate.</param>
void VerifyIsReversibleComplex(
int count,
double maximumError,
Func<Complex[], Complex[]> forward,
Func<Complex[], Complex[]> inverse)
{
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), count);
var work = new Complex[samples.Length];
samples.CopyTo(work, 0);
work = forward(work);
Assert.IsFalse(work.AlmostEqualListWithError(samples, maximumError));
work = inverse(work);
AssertHelpers.AlmostEqualList(samples, work, maximumError);
}
/// <summary>
/// Verify if is reversible real.
/// </summary>
/// <param name="count">Samples count.</param>
/// <param name="maximumError">Maximum error value.</param>
/// <param name="forward">Forward delegate.</param>
/// <param name="inverse">Inverse delegate.</param>
void VerifyIsReversibleReal(
int count,
double maximumError,
Func<double[], double[]> forward,
Func<double[], double[]> inverse)
{
var samples = SignalGenerator.Random(x => x, GetUniform(1), count);
var work = new double[samples.Length];
samples.CopyTo(work, 0);
work = forward(work);
Assert.IsFalse(work.AlmostEqualListWithError(samples, maximumError));
work = inverse(work);
AssertHelpers.AlmostEqualList(samples, work, maximumError);
}
/// <summary>
/// Fourier naive is reversible.
/// </summary>
@ -117,11 +64,15 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
{
var dft = new DiscreteFourierTransform();
VerifyIsReversibleComplex(
0x80,
1e-12,
s => dft.NaiveForward(s, options),
s => dft.NaiveInverse(s, options));
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x80);
var work = new Complex[samples.Length];
samples.CopyTo(work, 0);
work = dft.NaiveForward(work, options);
Assert.IsFalse(work.ListAlmostEqual(samples, 6));
work = dft.NaiveInverse(work, options);
AssertHelpers.ListAlmostEqual(samples, work, 12);
}
/// <summary>
@ -134,19 +85,15 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
{
var dft = new DiscreteFourierTransform();
VerifyIsReversibleComplex(
0x8000,
1e-12,
s =>
{
dft.Radix2Forward(s, options);
return s;
},
s =>
{
dft.Radix2Inverse(s, options);
return s;
});
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x8000);
var work = new Complex[samples.Length];
samples.CopyTo(work, 0);
dft.Radix2Forward(work, options);
Assert.IsFalse(work.ListAlmostEqual(samples, 6));
dft.Radix2Inverse(work, options);
AssertHelpers.ListAlmostEqual(samples, work, 12);
}
/// <summary>
@ -159,19 +106,15 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
{
var dft = new DiscreteFourierTransform();
VerifyIsReversibleComplex(
0x7FFF,
1e-12,
s =>
{
dft.BluesteinForward(s, options);
return s;
},
s =>
{
dft.BluesteinInverse(s, options);
return s;
});
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x7FFF);
var work = new Complex[samples.Length];
samples.CopyTo(work, 0);
dft.BluesteinForward(work, options);
Assert.IsFalse(work.ListAlmostEqual(samples, 6));
dft.BluesteinInverse(work, options);
AssertHelpers.ListAlmostEqual(samples, work, 10);
}
/// <summary>
@ -184,11 +127,15 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
{
var dht = new DiscreteHartleyTransform();
VerifyIsReversibleReal(
0x80,
1e-9,
s => dht.NaiveForward(s, options),
s => dht.NaiveInverse(s, options));
var samples = SignalGenerator.Random(x => x, GetUniform(1), 0x80);
var work = new double[samples.Length];
samples.CopyTo(work, 0);
work = dht.NaiveForward(work, options);
Assert.IsFalse(work.ListAlmostEqual(samples, 6));
work = dht.NaiveInverse(work, options);
AssertHelpers.ListAlmostEqual(samples, work, 12);
}
/// <summary>
@ -202,19 +149,16 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
samples.CopyTo(work, 0);
Transform.FourierForward(work);
Assert.IsFalse(work.AlmostEqualListWithError(samples, 1e-12));
Assert.IsFalse(work.ListAlmostEqual(samples, 6));
Transform.FourierInverse(work);
AssertHelpers.AlmostEqualList(samples, work, 1e-12);
AssertHelpers.ListAlmostEqual(samples, work, 10);
Transform.FourierInverse(work, FourierOptions.Default);
Assert.IsFalse(work.AlmostEqualListWithError(samples, 1e-12));
Assert.IsFalse(work.ListAlmostEqual(samples, 6));
Transform.FourierForward(work, FourierOptions.Default);
AssertHelpers.AlmostEqualList(samples, work, 1e-12);
AssertHelpers.ListAlmostEqual(samples, work, 10);
}
}
}

28
src/UnitTests/IntegralTransformsTests/MatchingNaiveTransformTest.cs

@ -58,13 +58,9 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary>
/// Verify matches naive complex.
/// </summary>
/// <param name="samples">Samples count.</param>
/// <param name="maximumError">Maximum error.</param>
/// <param name="naive">Naive transform.</param>
/// <param name="fast">Fast delegate.</param>
static void VerifyMatchesNaiveComplex(
Complex[] samples,
double maximumError,
int maximumErrorDecimalPlaces,
Func<Complex[], Complex[]> naive,
Action<Complex[]> fast)
{
@ -74,7 +70,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
samples.CopyTo(spectrumFast, 0);
fast(spectrumFast);
AssertHelpers.AlmostEqualList(spectrumNaive, spectrumFast, maximumError);
AssertHelpers.ListAlmostEqual(spectrumNaive, spectrumFast, maximumErrorDecimalPlaces);
}
/// <summary>
@ -91,13 +87,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
VerifyMatchesNaiveComplex(
samples,
1e-12,
12,
s => dft.NaiveForward(s, options),
s => dft.Radix2Forward(s, options));
VerifyMatchesNaiveComplex(
samples,
1e-12,
12,
s => dft.NaiveInverse(s, options),
s => dft.Radix2Inverse(s, options));
}
@ -116,13 +112,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
VerifyMatchesNaiveComplex(
samples,
1e-12,
10,
s => dft.NaiveForward(s, options),
s => dft.Radix2Forward(s, options));
VerifyMatchesNaiveComplex(
samples,
1e-12,
10,
s => dft.NaiveInverse(s, options),
s => dft.Radix2Inverse(s, options));
}
@ -141,13 +137,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
VerifyMatchesNaiveComplex(
samples,
1e-12,
12,
s => dft.NaiveForward(s, options),
s => dft.BluesteinForward(s, options));
VerifyMatchesNaiveComplex(
samples,
1e-12,
12,
s => dft.NaiveInverse(s, options),
s => dft.BluesteinInverse(s, options));
}
@ -166,13 +162,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
VerifyMatchesNaiveComplex(
samples,
1e-12,
10,
s => dft.NaiveForward(s, options),
s => dft.BluesteinForward(s, options));
VerifyMatchesNaiveComplex(
samples,
1e-12,
10,
s => dft.NaiveInverse(s, options),
s => dft.BluesteinInverse(s, options));
}
@ -191,12 +187,12 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
VerifyMatchesNaiveComplex(
samples,
1e-12,
10,
s => dft.NaiveForward(s, options),
s => dft.BluesteinForward(s, options));
VerifyMatchesNaiveComplex(
samples,
1e-12,
10,
s => dft.NaiveInverse(s, options),
s => dft.BluesteinInverse(s, options));
}

464
src/UnitTests/LinearAlgebraProviderTests/Complex/LinearAlgebraProviderTests.cs

@ -137,7 +137,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
public void CanComputeDotProduct()
{
var result = Control.LinearAlgebraProvider.DotProduct(_x, _y);
AssertHelpers.AlmostEqual(152.35, result, 15);
AssertHelpers.AlmostEqualRelative(152.35, result, 15);
}
/// <summary>
@ -205,7 +205,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var matrix = _matrices["Square3x3"];
var work = new double[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1, norm, 6);
}
/// <summary>
@ -217,7 +217,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var matrix = _matrices["Square3x3"];
var work = new double[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246, norm, 8);
AssertHelpers.AlmostEqualRelative(10.777754868246, norm, 8);
}
/// <summary>
@ -241,7 +241,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var matrix = _matrices["Square3x3"];
var work = new double[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1, norm, 6);
}
/// <summary>
@ -253,7 +253,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var matrix = _matrices["Square3x3"];
var work = new double[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246, norm, 8);
AssertHelpers.AlmostEqualRelative(10.777754868246, norm, 8);
}
/// <summary>
@ -284,7 +284,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 15);
}
}
}
@ -305,7 +305,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 15);
}
}
}
@ -326,7 +326,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 15);
}
}
}
@ -347,7 +347,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
}
}
}
@ -368,7 +368,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
}
}
}
@ -389,7 +389,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
}
}
}
@ -408,15 +408,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -4.4, 15);
AssertHelpers.AlmostEqual(a[1], 0.25, 15);
AssertHelpers.AlmostEqual(a[2], 0, 15);
AssertHelpers.AlmostEqual(a[3], 5.5, 15);
AssertHelpers.AlmostEqual(a[4], -3.575, 15);
AssertHelpers.AlmostEqual(a[5], -0.307692307692308, 15);
AssertHelpers.AlmostEqual(a[6], 6.6, 15);
AssertHelpers.AlmostEqual(a[7], -4.95, 15);
AssertHelpers.AlmostEqual(a[8], 0.676923076923077, 15);
AssertHelpers.AlmostEqualRelative(a[0], -4.4, 15);
AssertHelpers.AlmostEqualRelative(a[1], 0.25, 15);
AssertHelpers.AlmostEqualRelative(a[2], 0, 15);
AssertHelpers.AlmostEqualRelative(a[3], 5.5, 15);
AssertHelpers.AlmostEqualRelative(a[4], -3.575, 15);
AssertHelpers.AlmostEqualRelative(a[5], -0.307692307692308, 14);
AssertHelpers.AlmostEqualRelative(a[6], 6.6, 15);
AssertHelpers.AlmostEqualRelative(a[7], -4.95, 14);
AssertHelpers.AlmostEqualRelative(a[8], 0.676923076923077, 14);
Assert.AreEqual(ipiv[0], 2);
Assert.AreEqual(ipiv[1], 2);
Assert.AreEqual(ipiv[2], 2);
@ -434,15 +434,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -461,15 +461,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -486,15 +486,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var work = new Complex[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -515,15 +515,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var work = new Complex[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -539,12 +539,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var b = new[] {new Complex(1.0, 0), 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.LUSolve(2, a, matrix.RowCount, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266, 14);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266, 14);
NotModified(matrix.RowCount, matrix.ColumnCount, a, matrix);
}
@ -565,12 +565,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var b = new[] {new Complex(1.0, 0), 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.LUSolveFactored(2, a, matrix.RowCount, ipiv, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266, 14);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266, 14);
}
/// <summary>
@ -611,12 +611,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var b = new[] {new Complex(1.0, 0), 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.CholeskySolve(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 14);
AssertHelpers.AlmostEqual(b[1], 1, 14);
AssertHelpers.AlmostEqual(b[2], 0, 14);
AssertHelpers.AlmostEqual(b[3], 3, 14);
AssertHelpers.AlmostEqual(b[4], 1, 14);
AssertHelpers.AlmostEqual(b[5], 0, 14);
AssertHelpers.AlmostEqualRelative(b[0], 0, 14);
AssertHelpers.AlmostEqualRelative(b[1], 1, 14);
AssertHelpers.AlmostEqualRelative(b[2], 0, 14);
AssertHelpers.AlmostEqualRelative(b[3], 3, 14);
AssertHelpers.AlmostEqualRelative(b[4], 1, 14);
AssertHelpers.AlmostEqualRelative(b[5], 0, 14);
NotModified(3, 3, a, matrix);
}
@ -634,12 +634,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var b = new[] {new Complex(1.0, 0), 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.CholeskySolveFactored(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 14);
AssertHelpers.AlmostEqual(b[1], 1, 14);
AssertHelpers.AlmostEqual(b[2], 0, 14);
AssertHelpers.AlmostEqual(b[3], 3, 14);
AssertHelpers.AlmostEqual(b[4], 1, 14);
AssertHelpers.AlmostEqual(b[5], 0, 14);
AssertHelpers.AlmostEqualRelative(b[0], 0, 14);
AssertHelpers.AlmostEqualRelative(b[1], 1, 14);
AssertHelpers.AlmostEqualRelative(b[2], 0, 14);
AssertHelpers.AlmostEqualRelative(b[3], 3, 14);
AssertHelpers.AlmostEqualRelative(b[4], 1, 14);
AssertHelpers.AlmostEqualRelative(b[5], 0, 14);
}
/// <summary>
@ -664,7 +664,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -691,7 +691,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -718,7 +718,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -746,7 +746,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -774,7 +774,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -802,7 +802,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -829,7 +829,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -856,7 +856,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -884,7 +884,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -911,7 +911,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -934,12 +934,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -961,10 +961,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -988,12 +988,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1017,10 +1017,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1045,12 +1045,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1075,10 +1075,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1104,12 +1104,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1135,10 +1135,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1160,12 +1160,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1187,10 +1187,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1214,12 +1214,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1243,10 +1243,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1271,12 +1271,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1301,10 +1301,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1330,12 +1330,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1361,10 +1361,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1393,15 +1393,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 13);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 13);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 13);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 13);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 13);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 13);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 13);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 13);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 13);
}
/// <summary>
@ -1430,12 +1430,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 14);
}
/// <summary>
@ -1464,12 +1464,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 14);
}
/// <summary>
@ -1500,15 +1500,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 13);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 13);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 13);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 13);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 13);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 13);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 13);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 13);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 13);
}
/// <summary>
@ -1539,12 +1539,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 14);
}
/// <summary>
@ -1575,12 +1575,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 14);
}
/// <summary>
@ -1602,12 +1602,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1629,10 +1629,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
/// <summary>
@ -1659,12 +1659,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1691,10 +1691,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 13);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 13);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 13);
}
[TestCase("Wide10x50000", "Tall50000x10")]

468
src/UnitTests/LinearAlgebraProviderTests/Complex32/LinearAlgebraProviderTests.cs

@ -100,7 +100,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
Control.LinearAlgebraProvider.AddVectorToScaledVector(result, (Complex32) Math.PI, _x, result);
for (var i = 0; i < _y.Length; i++)
{
AssertHelpers.AlmostEqual(_y[i] + ((Complex32) Math.PI*_x[i]), result[i], 6);
AssertHelpers.AlmostEqualRelative(_y[i] + ((Complex32) Math.PI*_x[i]), result[i], 5);
}
}
@ -122,7 +122,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
Control.LinearAlgebraProvider.ScaleArray((Complex32) Math.PI, result, result);
for (var i = 0; i < _y.Length; i++)
{
AssertHelpers.AlmostEqual(_y[i]*(Complex32) Math.PI, result[i], 6);
AssertHelpers.AlmostEqualRelative(_y[i]*(Complex32) Math.PI, result[i], 5);
}
}
@ -133,7 +133,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
public void CanComputeDotProduct()
{
var result = Control.LinearAlgebraProvider.DotProduct(_x, _y);
AssertHelpers.AlmostEqual(152.35f, result, 6);
AssertHelpers.AlmostEqualRelative(152.35f, result, 5);
}
/// <summary>
@ -201,7 +201,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var matrix = _matrices["Square3x3"];
var work = new float[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1f, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1f, norm, 5);
}
/// <summary>
@ -213,7 +213,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var matrix = _matrices["Square3x3"];
var work = new float[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246f, norm, 6);
AssertHelpers.AlmostEqualRelative(10.777754868246f, norm, 5);
}
/// <summary>
@ -237,7 +237,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var matrix = _matrices["Square3x3"];
var work = new float[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1f, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1f, norm, 5);
}
/// <summary>
@ -249,7 +249,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var matrix = _matrices["Square3x3"];
var work = new float[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246f, norm, 6);
AssertHelpers.AlmostEqualRelative(10.777754868246f, norm, 5);
}
/// <summary>
@ -280,7 +280,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -301,7 +301,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -322,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -343,7 +343,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2f*x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(2.2f*x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -364,7 +364,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2f*x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(2.2f*x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -393,7 +393,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
continue;
}
AssertHelpers.AlmostEqual(2.2f*x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(2.2f*x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -412,15 +412,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -4.4f, 6);
AssertHelpers.AlmostEqual(a[1], 0.25f, 6);
AssertHelpers.AlmostEqual(a[2], 0f, 6);
AssertHelpers.AlmostEqual(a[3], 5.5f, 6);
AssertHelpers.AlmostEqual(a[4], -3.575f, 6);
AssertHelpers.AlmostEqual(a[5], -0.307692307692308f, 6);
AssertHelpers.AlmostEqual(a[6], 6.6f, 6);
AssertHelpers.AlmostEqual(a[7], -4.95f, 6);
AssertHelpers.AlmostEqual(a[8], 0.676923076923077f, 6);
AssertHelpers.AlmostEqualRelative(a[0], -4.4f, 5);
AssertHelpers.AlmostEqualRelative(a[1], 0.25f, 5);
AssertHelpers.AlmostEqualRelative(a[2], 0f, 5);
AssertHelpers.AlmostEqualRelative(a[3], 5.5f, 5);
AssertHelpers.AlmostEqualRelative(a[4], -3.575f, 5);
AssertHelpers.AlmostEqualRelative(a[5], -0.307692307692308f, 5);
AssertHelpers.AlmostEqualRelative(a[6], 6.6f, 5);
AssertHelpers.AlmostEqualRelative(a[7], -4.95f, 5);
AssertHelpers.AlmostEqualRelative(a[8], 0.676923076923077f, 5);
Assert.AreEqual(ipiv[0], 2);
Assert.AreEqual(ipiv[1], 2);
Assert.AreEqual(ipiv[2], 2);
@ -438,15 +438,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908f, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090f, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543f, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726f, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364f, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727f, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364f, 6);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908f, 5);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090f, 5);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543f, 5);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726f, 5);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364f, 5);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727f, 5);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364f, 5);
}
/// <summary>
@ -465,15 +465,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908f, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090f, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543f, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726f, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364f, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727f, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364f, 6);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908f, 5);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090f, 5);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543f, 5);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726f, 5);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364f, 5);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727f, 5);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364f, 5);
}
/// <summary>
@ -490,15 +490,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var work = new Complex32[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908f, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090f, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543f, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726f, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364f, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727f, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364f, 6);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908f, 5);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090f, 5);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543f, 5);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726f, 5);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364f, 5);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727f, 5);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364f, 5);
}
/// <summary>
@ -519,15 +519,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var work = new Complex32[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908f, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454f, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090f, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543f, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726f, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364f, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727f, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364f, 6);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908f, 5);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454f, 5);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090f, 5);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543f, 5);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726f, 5);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364f, 5);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727f, 5);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364f, 5);
}
/// <summary>
@ -543,12 +543,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var b = new[] {new Complex32(1.0f, 0.0f), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.LUSolve(2, a, matrix.RowCount, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726f, 6);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815f, 6);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816f, 6);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451f, 6);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989f, 6);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266f, 6);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726f, 5);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815f, 5);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816f, 5);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451f, 5);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989f, 5);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266f, 5);
NotModified(matrix.RowCount, matrix.ColumnCount, a, matrix);
}
@ -569,12 +569,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var b = new[] {new Complex32(1.0f, 0.0f), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.LUSolveFactored(2, a, matrix.RowCount, ipiv, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726f, 6);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815f, 6);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816f, 6);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451f, 6);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989f, 6);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266f, 6);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726f, 5);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815f, 5);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816f, 5);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451f, 5);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989f, 5);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266f, 5);
}
/// <summary>
@ -615,12 +615,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var b = new[] {new Complex32(1.0f, 0.0f), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.CholeskySolve(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 6);
AssertHelpers.AlmostEqual(b[1], 1, 6);
AssertHelpers.AlmostEqual(b[2], 0, 6);
AssertHelpers.AlmostEqual(b[3], 3, 6);
AssertHelpers.AlmostEqual(b[4], 1, 6);
AssertHelpers.AlmostEqual(b[5], 0, 6);
AssertHelpers.AlmostEqualRelative(b[0], 0, 5);
AssertHelpers.AlmostEqualRelative(b[1], 1, 5);
AssertHelpers.AlmostEqualRelative(b[2], 0, 5);
AssertHelpers.AlmostEqualRelative(b[3], 3, 5);
AssertHelpers.AlmostEqualRelative(b[4], 1, 5);
AssertHelpers.AlmostEqualRelative(b[5], 0, 5);
NotModified(3, 3, a, matrix);
}
@ -638,12 +638,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var b = new[] {new Complex32(1.0f, 0.0f), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.CholeskySolveFactored(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 6);
AssertHelpers.AlmostEqual(b[1], 1, 6);
AssertHelpers.AlmostEqual(b[2], 0, 6);
AssertHelpers.AlmostEqual(b[3], 3, 6);
AssertHelpers.AlmostEqual(b[4], 1, 6);
AssertHelpers.AlmostEqual(b[5], 0, 6);
AssertHelpers.AlmostEqualRelative(b[0], 0, 5);
AssertHelpers.AlmostEqualRelative(b[1], 1, 5);
AssertHelpers.AlmostEqualRelative(b[2], 0, 5);
AssertHelpers.AlmostEqualRelative(b[3], 3, 5);
AssertHelpers.AlmostEqualRelative(b[4], 1, 5);
AssertHelpers.AlmostEqualRelative(b[5], 0, 5);
}
/// <summary>
@ -668,7 +668,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -695,7 +695,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -722,7 +722,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -750,7 +750,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -778,7 +778,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -806,7 +806,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -833,7 +833,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -860,7 +860,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -888,7 +888,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -915,7 +915,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -939,12 +939,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -966,10 +966,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -993,12 +993,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1022,10 +1022,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1050,12 +1050,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1080,10 +1080,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1109,12 +1109,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1140,10 +1140,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1165,12 +1165,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1192,10 +1192,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1219,12 +1219,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1248,10 +1248,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1276,12 +1276,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1306,10 +1306,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1335,12 +1335,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1366,10 +1366,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1398,15 +1398,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 6);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 6);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 5);
}
/// <summary>
@ -1435,12 +1435,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 4);
}
/// <summary>
@ -1469,12 +1469,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 4);
}
/// <summary>
@ -1505,15 +1505,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 6);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 6);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 5);
}
/// <summary>
@ -1544,12 +1544,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 4);
}
/// <summary>
@ -1580,12 +1580,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 4);
}
/// <summary>
@ -1607,12 +1607,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 6);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 6);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 4);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 4);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1634,10 +1634,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 5);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1664,12 +1664,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 4);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 4);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1696,10 +1696,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Complex32
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 5);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
[TestCase("Wide10x50000", "Tall50000x10")]

464
src/UnitTests/LinearAlgebraProviderTests/Double/LinearAlgebraProviderTests.cs

@ -131,7 +131,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
public void CanComputeDotProduct()
{
var result = Control.LinearAlgebraProvider.DotProduct(_x, _y);
AssertHelpers.AlmostEqual(152.35, result, 15);
AssertHelpers.AlmostEqualRelative(152.35, result, 14);
}
/// <summary>
@ -199,7 +199,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var matrix = _matrices["Square3x3"];
var work = new double[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1, norm, 6);
}
/// <summary>
@ -211,7 +211,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var matrix = _matrices["Square3x3"];
var work = new double[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246, norm, 8);
AssertHelpers.AlmostEqualRelative(10.777754868246, norm, 8);
}
/// <summary>
@ -235,7 +235,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var matrix = _matrices["Square3x3"];
var work = new double[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1, norm, 6);
}
/// <summary>
@ -247,7 +247,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var matrix = _matrices["Square3x3"];
var work = new double[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246, norm, 8);
AssertHelpers.AlmostEqualRelative(10.777754868246, norm, 8);
}
/// <summary>
@ -278,7 +278,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 14);
}
}
}
@ -299,7 +299,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 14);
}
}
}
@ -320,7 +320,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 14);
}
}
}
@ -341,7 +341,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(2.2*x.Row(i)*y.Column(j), c[i, j], 14);
}
}
}
@ -362,7 +362,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(2.2*x.Row(i)*y.Column(j), c[i, j], 14);
}
}
}
@ -383,7 +383,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2*x.Row(i)*y.Column(j), c[i, j], 15);
AssertHelpers.AlmostEqualRelative(2.2*x.Row(i)*y.Column(j), c[i, j], 14);
}
}
}
@ -402,15 +402,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -4.4, 15);
AssertHelpers.AlmostEqual(a[1], 0.25, 15);
AssertHelpers.AlmostEqual(a[2], 0, 15);
AssertHelpers.AlmostEqual(a[3], 5.5, 15);
AssertHelpers.AlmostEqual(a[4], -3.575, 15);
AssertHelpers.AlmostEqual(a[5], -0.307692307692308, 15);
AssertHelpers.AlmostEqual(a[6], 6.6, 15);
AssertHelpers.AlmostEqual(a[7], -4.95, 15);
AssertHelpers.AlmostEqual(a[8], 0.676923076923077, 15);
AssertHelpers.AlmostEqualRelative(a[0], -4.4, 14);
AssertHelpers.AlmostEqualRelative(a[1], 0.25, 14);
AssertHelpers.AlmostEqualRelative(a[2], 0, 14);
AssertHelpers.AlmostEqualRelative(a[3], 5.5, 14);
AssertHelpers.AlmostEqualRelative(a[4], -3.575, 14);
AssertHelpers.AlmostEqualRelative(a[5], -0.307692307692308, 14);
AssertHelpers.AlmostEqualRelative(a[6], 6.6, 14);
AssertHelpers.AlmostEqualRelative(a[7], -4.95, 14);
AssertHelpers.AlmostEqualRelative(a[8], 0.676923076923077, 14);
Assert.AreEqual(ipiv[0], 2);
Assert.AreEqual(ipiv[1], 2);
Assert.AreEqual(ipiv[2], 2);
@ -428,15 +428,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -455,15 +455,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -480,15 +480,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var work = new double[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -509,15 +509,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var work = new double[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 14);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 14);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 14);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 14);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 14);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 14);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 14);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 14);
AssertHelpers.AlmostEqualRelative(a[0], -0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[1], -0.909090909090908, 13);
AssertHelpers.AlmostEqualRelative(a[2], 0.454545454545454, 13);
AssertHelpers.AlmostEqualRelative(a[3], -0.340909090909090, 13);
AssertHelpers.AlmostEqualRelative(a[4], -2.045454545454543, 13);
AssertHelpers.AlmostEqualRelative(a[5], 1.477272727272726, 13);
AssertHelpers.AlmostEqualRelative(a[6], -0.113636363636364, 13);
AssertHelpers.AlmostEqualRelative(a[7], 0.227272727272727, 13);
AssertHelpers.AlmostEqualRelative(a[8], -0.113636363636364, 13);
}
/// <summary>
@ -533,12 +533,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var b = new[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.LUSolve(2, a, matrix.RowCount, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266, 14);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266, 14);
NotModified(matrix.RowCount, matrix.ColumnCount, a, matrix);
}
@ -559,12 +559,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var b = new[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.LUSolveFactored(2, a, matrix.RowCount, ipiv, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266, 14);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726, 14);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815, 14);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816, 14);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451, 14);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989, 14);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266, 14);
}
/// <summary>
@ -605,12 +605,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var b = new[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.CholeskySolve(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 14);
AssertHelpers.AlmostEqual(b[1], 1, 14);
AssertHelpers.AlmostEqual(b[2], 0, 14);
AssertHelpers.AlmostEqual(b[3], 3, 14);
AssertHelpers.AlmostEqual(b[4], 1, 14);
AssertHelpers.AlmostEqual(b[5], 0, 14);
AssertHelpers.AlmostEqualRelative(b[0], 0, 14);
AssertHelpers.AlmostEqualRelative(b[1], 1, 14);
AssertHelpers.AlmostEqualRelative(b[2], 0, 14);
AssertHelpers.AlmostEqualRelative(b[3], 3, 14);
AssertHelpers.AlmostEqualRelative(b[4], 1, 14);
AssertHelpers.AlmostEqualRelative(b[5], 0, 14);
NotModified(3, 3, a, matrix);
}
@ -628,12 +628,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var b = new[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
Control.LinearAlgebraProvider.CholeskySolveFactored(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 14);
AssertHelpers.AlmostEqual(b[1], 1, 14);
AssertHelpers.AlmostEqual(b[2], 0, 14);
AssertHelpers.AlmostEqual(b[3], 3, 14);
AssertHelpers.AlmostEqual(b[4], 1, 14);
AssertHelpers.AlmostEqual(b[5], 0, 14);
AssertHelpers.AlmostEqualRelative(b[0], 0, 14);
AssertHelpers.AlmostEqualRelative(b[1], 1, 14);
AssertHelpers.AlmostEqualRelative(b[2], 0, 14);
AssertHelpers.AlmostEqualRelative(b[3], 3, 14);
AssertHelpers.AlmostEqualRelative(b[4], 1, 14);
AssertHelpers.AlmostEqualRelative(b[5], 0, 14);
}
/// <summary>
@ -658,7 +658,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -685,7 +685,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -712,7 +712,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -740,7 +740,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -768,7 +768,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -796,7 +796,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -823,7 +823,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -850,7 +850,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -879,7 +879,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -906,7 +906,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 14);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 14);
}
}
}
@ -930,12 +930,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -957,10 +957,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -984,12 +984,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1013,10 +1013,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1041,12 +1041,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1071,10 +1071,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1100,12 +1100,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1131,10 +1131,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1156,12 +1156,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1183,10 +1183,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1210,12 +1210,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1239,10 +1239,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1267,12 +1267,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1297,10 +1297,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1326,12 +1326,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1357,10 +1357,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1389,15 +1389,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 14);
}
/// <summary>
@ -1426,12 +1426,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 14);
}
/// <summary>
@ -1460,12 +1460,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 14);
}
/// <summary>
@ -1496,15 +1496,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 14);
}
/// <summary>
@ -1535,12 +1535,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 14);
}
/// <summary>
@ -1571,12 +1571,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 14);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 14);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 14);
}
/// <summary>
@ -1598,12 +1598,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1625,10 +1625,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
/// <summary>
@ -1655,12 +1655,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 14);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 14);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 14);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 14);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 14);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 14);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 13);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 13);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 13);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 13);
}
/// <summary>
@ -1687,10 +1687,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 14);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 14);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 14);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 14);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 14);
}
[TestCase("Wide10x50000", "Tall50000x10")]

468
src/UnitTests/LinearAlgebraProviderTests/Single/LinearAlgebraProviderTests.cs

@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
Control.LinearAlgebraProvider.AddVectorToScaledVector(result, (float) Math.PI, _x, result);
for (var i = 0; i < _y.Length; i++)
{
AssertHelpers.AlmostEqual(_y[i] + ((float) Math.PI*_x[i]), result[i], 6);
AssertHelpers.AlmostEqualRelative(_y[i] + ((float) Math.PI*_x[i]), result[i], 5);
}
}
@ -120,7 +120,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
Control.LinearAlgebraProvider.ScaleArray((float) Math.PI, result, result);
for (var i = 0; i < _y.Length; i++)
{
AssertHelpers.AlmostEqual(_y[i]*(float) Math.PI, result[i], 6);
AssertHelpers.AlmostEqualRelative(_y[i]*(float) Math.PI, result[i], 5);
}
}
@ -131,7 +131,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
public void CanComputeDotProduct()
{
var result = Control.LinearAlgebraProvider.DotProduct(_x, _y);
AssertHelpers.AlmostEqual(152.35, result, 6);
AssertHelpers.AlmostEqualRelative(152.35, result, 5);
}
/// <summary>
@ -199,7 +199,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var matrix = _matrices["Square3x3"];
var work = new float[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1, norm, 5);
}
/// <summary>
@ -211,7 +211,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var matrix = _matrices["Square3x3"];
var work = new float[matrix.RowCount];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246, norm, 8);
AssertHelpers.AlmostEqual(10.777754868246, norm, 5);
}
/// <summary>
@ -235,7 +235,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var matrix = _matrices["Square3x3"];
var work = new float[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(12.1, norm, 6);
AssertHelpers.AlmostEqualRelative(12.1, norm, 5);
}
/// <summary>
@ -247,7 +247,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var matrix = _matrices["Square3x3"];
var work = new float[18];
var norm = Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, matrix.RowCount, matrix.ColumnCount, matrix.Values, work);
AssertHelpers.AlmostEqual(10.777754868246, norm, 8);
AssertHelpers.AlmostEqual(10.777754868246, norm, 5);
}
/// <summary>
@ -278,7 +278,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -299,7 +299,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -320,7 +320,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -341,7 +341,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2f*x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(2.2f*x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -362,7 +362,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var j = 0; j < c.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(2.2f*x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(2.2f*x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -391,7 +391,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
continue;
}
AssertHelpers.AlmostEqual(2.2f*x.Row(i)*y.Column(j), c[i, j], 6);
AssertHelpers.AlmostEqualRelative(2.2f*x.Row(i)*y.Column(j), c[i, j], 5);
}
}
}
@ -410,15 +410,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -4.4, 6);
AssertHelpers.AlmostEqual(a[1], 0.25, 6);
AssertHelpers.AlmostEqual(a[2], 0, 6);
AssertHelpers.AlmostEqual(a[3], 5.5, 6);
AssertHelpers.AlmostEqual(a[4], -3.575, 6);
AssertHelpers.AlmostEqual(a[5], -0.307692307692308, 6);
AssertHelpers.AlmostEqual(a[6], 6.6, 6);
AssertHelpers.AlmostEqual(a[7], -4.95, 6);
AssertHelpers.AlmostEqual(a[8], 0.676923076923077, 6);
AssertHelpers.AlmostEqual(a[0], -4.4, 5);
AssertHelpers.AlmostEqual(a[1], 0.25, 5);
AssertHelpers.AlmostEqual(a[2], 0, 5);
AssertHelpers.AlmostEqual(a[3], 5.5, 5);
AssertHelpers.AlmostEqual(a[4], -3.575, 5);
AssertHelpers.AlmostEqual(a[5], -0.307692307692308, 5);
AssertHelpers.AlmostEqual(a[6], 6.6, 5);
AssertHelpers.AlmostEqual(a[7], -4.95, 5);
AssertHelpers.AlmostEqual(a[8], 0.676923076923077, 5);
Assert.AreEqual(ipiv[0], 2);
Assert.AreEqual(ipiv[1], 2);
Assert.AreEqual(ipiv[2], 2);
@ -436,15 +436,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 5);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 5);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 5);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 5);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 5);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 5);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 5);
}
/// <summary>
@ -463,15 +463,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
Control.LinearAlgebraProvider.LUFactor(a, matrix.RowCount, ipiv);
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 5);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 5);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 5);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 5);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 5);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 5);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 5);
}
/// <summary>
@ -488,15 +488,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var work = new float[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverse(a, matrix.RowCount, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 5);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 5);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 5);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 5);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 5);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 5);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 5);
}
/// <summary>
@ -517,15 +517,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var work = new float[matrix.RowCount];
Control.LinearAlgebraProvider.LUInverseFactored(a, matrix.RowCount, ipiv, work);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 6);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 6);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 6);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 6);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 6);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 6);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 6);
AssertHelpers.AlmostEqual(a[0], -0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[1], -0.909090909090908, 5);
AssertHelpers.AlmostEqual(a[2], 0.454545454545454, 5);
AssertHelpers.AlmostEqual(a[3], -0.340909090909090, 5);
AssertHelpers.AlmostEqual(a[4], -2.045454545454543, 5);
AssertHelpers.AlmostEqual(a[5], 1.477272727272726, 5);
AssertHelpers.AlmostEqual(a[6], -0.113636363636364, 5);
AssertHelpers.AlmostEqual(a[7], 0.227272727272727, 5);
AssertHelpers.AlmostEqual(a[8], -0.113636363636364, 5);
}
/// <summary>
@ -541,12 +541,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var b = new[] {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.LUSolve(2, a, matrix.RowCount, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726, 6);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815, 6);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816, 6);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451, 6);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989, 6);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266, 6);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726, 5);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815, 5);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816, 5);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451, 5);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989, 5);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266, 5);
NotModified(matrix.RowCount, matrix.ColumnCount, a, matrix);
}
@ -567,12 +567,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var b = new[] {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.LUSolveFactored(2, a, matrix.RowCount, ipiv, b);
AssertHelpers.AlmostEqual(b[0], -1.477272727272726, 6);
AssertHelpers.AlmostEqual(b[1], -4.318181818181815, 6);
AssertHelpers.AlmostEqual(b[2], 3.068181818181816, 6);
AssertHelpers.AlmostEqual(b[3], -4.204545454545451, 6);
AssertHelpers.AlmostEqual(b[4], -12.499999999999989, 6);
AssertHelpers.AlmostEqual(b[5], 8.522727272727266, 6);
AssertHelpers.AlmostEqualRelative(b[0], -1.477272727272726, 5);
AssertHelpers.AlmostEqualRelative(b[1], -4.318181818181815, 5);
AssertHelpers.AlmostEqualRelative(b[2], 3.068181818181816, 5);
AssertHelpers.AlmostEqualRelative(b[3], -4.204545454545451, 5);
AssertHelpers.AlmostEqualRelative(b[4], -12.499999999999989, 5);
AssertHelpers.AlmostEqualRelative(b[5], 8.522727272727266, 5);
}
/// <summary>
@ -613,12 +613,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var b = new[] {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.CholeskySolve(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 6);
AssertHelpers.AlmostEqual(b[1], 1, 6);
AssertHelpers.AlmostEqual(b[2], 0, 6);
AssertHelpers.AlmostEqual(b[3], 3, 6);
AssertHelpers.AlmostEqual(b[4], 1, 6);
AssertHelpers.AlmostEqual(b[5], 0, 6);
AssertHelpers.AlmostEqualRelative(b[0], 0, 5);
AssertHelpers.AlmostEqualRelative(b[1], 1, 5);
AssertHelpers.AlmostEqualRelative(b[2], 0, 5);
AssertHelpers.AlmostEqualRelative(b[3], 3, 5);
AssertHelpers.AlmostEqualRelative(b[4], 1, 5);
AssertHelpers.AlmostEqualRelative(b[5], 0, 5);
NotModified(3, 3, a, matrix);
}
@ -636,12 +636,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var b = new[] {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
Control.LinearAlgebraProvider.CholeskySolveFactored(a, 3, b, 2);
AssertHelpers.AlmostEqual(b[0], 0, 6);
AssertHelpers.AlmostEqual(b[1], 1, 6);
AssertHelpers.AlmostEqual(b[2], 0, 6);
AssertHelpers.AlmostEqual(b[3], 3, 6);
AssertHelpers.AlmostEqual(b[4], 1, 6);
AssertHelpers.AlmostEqual(b[5], 0, 6);
AssertHelpers.AlmostEqualRelative(b[0], 0, 5);
AssertHelpers.AlmostEqualRelative(b[1], 1, 5);
AssertHelpers.AlmostEqualRelative(b[2], 0, 5);
AssertHelpers.AlmostEqualRelative(b[3], 3, 5);
AssertHelpers.AlmostEqualRelative(b[4], 1, 5);
AssertHelpers.AlmostEqualRelative(b[5], 0, 5);
}
/// <summary>
@ -666,7 +666,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -693,7 +693,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -720,7 +720,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -748,7 +748,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -776,7 +776,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -804,7 +804,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -831,7 +831,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -858,7 +858,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -886,7 +886,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -913,7 +913,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
{
for (var col = 0; col < matrix.ColumnCount; col++)
{
AssertHelpers.AlmostEqual(matrix[row, col], a[row, col], 6);
AssertHelpers.AlmostEqualRelative(matrix[row, col], a[row, col], 5);
}
}
}
@ -937,12 +937,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -964,10 +964,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -991,12 +991,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1020,10 +1020,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1048,12 +1048,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1078,10 +1078,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1107,12 +1107,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1138,10 +1138,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1163,12 +1163,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1190,10 +1190,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1217,12 +1217,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1246,10 +1246,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1274,12 +1274,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1304,10 +1304,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1333,12 +1333,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 4);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 4);
}
/// <summary>
@ -1364,10 +1364,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1396,15 +1396,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 6);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 6);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 5);
}
/// <summary>
@ -1433,12 +1433,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 5);
}
/// <summary>
@ -1467,12 +1467,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 5);
}
/// <summary>
@ -1503,15 +1503,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 6);
AssertHelpers.AlmostEqual(matrix[2, 2], result[2, 2], 6);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 2], result[2, 2], 5);
}
/// <summary>
@ -1542,12 +1542,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[2, 0], result[2, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[2, 1], result[2, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 0], result[2, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[2, 1], result[2, 1], 5);
}
/// <summary>
@ -1578,12 +1578,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqual(matrix[0, 0], result[0, 0], 6);
AssertHelpers.AlmostEqual(matrix[1, 0], result[1, 0], 6);
AssertHelpers.AlmostEqual(matrix[0, 1], result[0, 1], 6);
AssertHelpers.AlmostEqual(matrix[1, 1], result[1, 1], 6);
AssertHelpers.AlmostEqual(matrix[0, 2], result[0, 2], 6);
AssertHelpers.AlmostEqual(matrix[1, 2], result[1, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 0], result[1, 0], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 1], result[0, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 1], result[1, 1], 5);
AssertHelpers.AlmostEqualRelative(matrix[0, 2], result[0, 2], 5);
AssertHelpers.AlmostEqualRelative(matrix[1, 2], result[1, 2], 5);
}
/// <summary>
@ -1605,12 +1605,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 6);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 6);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 4);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 4);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 5);
}
/// <summary>
@ -1632,10 +1632,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
/// <summary>
@ -1662,12 +1662,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mx = new DenseMatrix(matrix.ColumnCount, 2, x);
var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 6);
AssertHelpers.AlmostEqual(mb[1, 0], b[1], 6);
AssertHelpers.AlmostEqual(mb[2, 0], b[2], 5);
AssertHelpers.AlmostEqual(mb[0, 1], b[3], 5);
AssertHelpers.AlmostEqual(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqual(mb[2, 1], b[5], 5);
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 5);
AssertHelpers.AlmostEqualRelative(mb[1, 0], b[1], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 0], b[2], 4);
AssertHelpers.AlmostEqualRelative(mb[0, 1], b[3], 4);
AssertHelpers.AlmostEqualRelative(mb[1, 1], b[4], 5);
AssertHelpers.AlmostEqualRelative(mb[2, 1], b[5], 5);
}
/// <summary>
@ -1694,10 +1694,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Single
var mb = new DenseMatrix(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 6);
AssertHelpers.AlmostEqual(test[1, 0], x[1], 6);
AssertHelpers.AlmostEqual(test[0, 1], x[2], 6);
AssertHelpers.AlmostEqual(test[1, 1], x[3], 6);
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 5);
AssertHelpers.AlmostEqualRelative(test[1, 0], x[1], 5);
AssertHelpers.AlmostEqualRelative(test[0, 1], x[2], 5);
AssertHelpers.AlmostEqualRelative(test[1, 1], x[3], 5);
}
[TestCase("Wide10x50000", "Tall50000x10")]

4
src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs

@ -298,13 +298,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
for (var i = 0; i < Data.Length; i++)
{
AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
AssertHelpers.AlmostEqualRelative(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
vector = vector/1.0;
for (var i = 0; i < Data.Length; i++)
{
AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
AssertHelpers.AlmostEqualRelative(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
}

30
src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs

@ -226,7 +226,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i)*matrixB.Column(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i)*matrixB.Column(j), matrixC[i, j], 15);
}
}
}
@ -284,15 +284,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
}
/// <summary>
@ -302,15 +302,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
}
/// <summary>
@ -320,15 +320,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
}
/// <summary>
@ -338,15 +338,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
}
/// <summary>
@ -357,11 +357,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.Determinant(), matrix.Determinant(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.Determinant(), matrix.Determinant(), 14);
matrix = TestMatrices["Square4x4"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Square4x4"]);
AssertHelpers.AlmostEqual(denseMatrix.Determinant(), matrix.Determinant(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.Determinant(), matrix.Determinant(), 14);
}
/// <summary>

10
src/UnitTests/LinearAlgebraTests/Complex/Factorization/CholeskyTests.cs

@ -136,7 +136,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixXfromC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixX[i, j], matrixXfromC[i, j], 8);
AssertHelpers.AlmostEqualRelative(matrixX[i, j], matrixXfromC[i, j], 8);
}
}
}
@ -166,7 +166,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(matrixB[i], matrixBReconstruct[i], 8);
AssertHelpers.AlmostEqual(matrixB[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -208,7 +208,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 7);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -249,7 +249,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(matrixB[i], matrixBReconstruct[i], 8);
AssertHelpers.AlmostEqual(matrixB[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -299,7 +299,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 7);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

12
src/UnitTests/LinearAlgebraTests/Complex/Factorization/EvdTests.cs

@ -97,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixAv.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixAv[i, j], matrixLv[i, j], 7);
AssertHelpers.AlmostEqualRelative(matrixAv[i, j], matrixLv[i, j], 7);
}
}
}
@ -133,7 +133,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrix[i, j], matrixA[i, j], 7);
AssertHelpers.AlmostEqualRelative(matrix[i, j], matrixA[i, j], 7);
}
}
}
@ -221,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 7);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -268,7 +268,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 7);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -309,7 +309,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 7);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -365,7 +365,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 7);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

18
src/UnitTests/LinearAlgebraTests/Complex/Factorization/GramSchmidtTests.cs

@ -157,7 +157,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixQfromR.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrixQfromR[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrixQfromR[i, j], 9);
}
}
@ -169,11 +169,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
if (i == j)
{
AssertHelpers.AlmostEqual(matrixQсtQ[i, j], Complex.One, 9);
AssertHelpers.AlmostEqualRelative(matrixQсtQ[i, j], Complex.One, 9);
}
else
{
AssertHelpers.AlmostEqual(matrixQсtQ[i, j], Complex.Zero, 9);
AssertHelpers.AlmostEqualRelative(matrixQсtQ[i, j], Complex.Zero, 9);
}
}
}
@ -205,7 +205,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -250,7 +250,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -291,7 +291,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -345,7 +345,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -393,7 +393,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixX.ColumnCount; j++)
{
AssertHelpers.AlmostEqualAbsolute(test[i, j], matrixX[i, j], 12);
AssertHelpers.AlmostEqual(test[i, j], matrixX[i, j], 12);
}
}
@ -427,7 +427,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
for (var i = 0; i < vectorX.Count; i++)
{
AssertHelpers.AlmostEqualAbsolute(test[i], vectorX[i], 12);
AssertHelpers.AlmostEqual(test[i], vectorX[i], 12);
}
// Make sure A didn't change.

12
src/UnitTests/LinearAlgebraTests/Complex/Factorization/LUTests.cs

@ -152,7 +152,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixXfromLU.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixX[i, j], matrixXfromLU[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixX[i, j], matrixXfromLU[i, j], 9);
}
}
}
@ -183,7 +183,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -228,7 +228,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -269,7 +269,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -323,7 +323,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -382,7 +382,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check if multiplication of A and AI produced identity matrix.
for (var i = 0; i < matrixIdentity.RowCount; i++)
{
AssertHelpers.AlmostEqual(matrixIdentity[i, i], Complex.One, 9);
AssertHelpers.AlmostEqualRelative(matrixIdentity[i, i], Complex.One, 9);
}
}
}

24
src/UnitTests/LinearAlgebraTests/Complex/Factorization/QRTests.cs

@ -174,7 +174,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixQfromR.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrixQfromR[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrixQfromR[i, j], 9);
}
}
@ -242,7 +242,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixQfromR.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrixQfromR[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrixQfromR[i, j], 9);
}
}
@ -292,7 +292,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -337,7 +337,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -378,7 +378,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -432,7 +432,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -481,7 +481,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -526,7 +526,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -567,7 +567,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -621,7 +621,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -671,7 +671,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixX.ColumnCount; j++)
{
AssertHelpers.AlmostEqualAbsolute(test[i, j], matrixX[i, j], 12);
AssertHelpers.AlmostEqual(test[i, j], matrixX[i, j], 12);
}
}
@ -707,7 +707,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
for (var i = 0; i < vectorX.Count; i++)
{
AssertHelpers.AlmostEqualAbsolute(test[i], vectorX[i], 9);
AssertHelpers.AlmostEqual(test[i], vectorX[i], 9);
}
// Make sure A didn't change.

10
src/UnitTests/LinearAlgebraTests/Complex/Factorization/SvdTests.cs

@ -111,7 +111,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrix[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrix[i, j], 9);
}
}
}
@ -237,7 +237,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -283,7 +283,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -323,7 +323,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -378,7 +378,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

10
src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserCholeskyTests.cs

@ -135,7 +135,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixXfromC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixX[i, j], matrixXfromC[i, j], 8);
AssertHelpers.AlmostEqualRelative(matrixX[i, j], matrixXfromC[i, j], 8);
}
}
}
@ -165,7 +165,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(b[i], matrixBReconstruct[i], 8);
AssertHelpers.AlmostEqual(b[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -207,7 +207,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 8);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -248,7 +248,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(b[i], matrixBReconstruct[i], 8);
AssertHelpers.AlmostEqual(b[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -298,7 +298,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 8);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

14
src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserEvdTests.cs

@ -1,4 +1,4 @@
// <copyright file="UserEvdTests.cs" company="Math.NET">
// <copyright file="UserEvdTests.cs" company="Math.NET">
// Math.NET Numerics, part of the Math.NET Project
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
@ -97,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixAv.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixAv[i, j], matrixLv[i, j], 7);
AssertHelpers.AlmostEqualRelative(matrixAv[i, j], matrixLv[i, j], 7);
}
}
}
@ -132,7 +132,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrix[i, j], matrixA[i, j], 7);
AssertHelpers.AlmostEqualRelative(matrix[i, j], matrixA[i, j], 7);
}
}
}
@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 7);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -263,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 7);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -302,7 +302,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 7);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -356,7 +356,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 7);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

14
src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserGramSchmidtTests.cs

@ -156,7 +156,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixQfromR.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrixQfromR[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrixQfromR[i, j], 9);
}
}
@ -168,11 +168,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
if (i == j)
{
AssertHelpers.AlmostEqual(matrixQсtQ[i, j], Complex.One, 9);
AssertHelpers.AlmostEqualRelative(matrixQсtQ[i, j], Complex.One, 9);
}
else
{
AssertHelpers.AlmostEqual(matrixQсtQ[i, j], Complex.Zero, 9);
AssertHelpers.AlmostEqualRelative(matrixQсtQ[i, j], Complex.Zero, 9);
}
}
}
@ -204,7 +204,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -249,7 +249,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -290,7 +290,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -344,7 +344,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

12
src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserLUTests.cs

@ -151,7 +151,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixXfromLU.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixX[i, j], matrixXfromLU[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixX[i, j], matrixXfromLU[i, j], 9);
}
}
}
@ -182,7 +182,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -227,7 +227,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -268,7 +268,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -322,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -381,7 +381,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check if multiplication of A and AI produced identity matrix.
for (var i = 0; i < matrixIdentity.RowCount; i++)
{
AssertHelpers.AlmostEqual(matrixIdentity[i, i], Complex.One, 9);
AssertHelpers.AlmostEqualRelative(matrixIdentity[i, i], Complex.One, 9);
}
}
}

20
src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserQRTests.cs

@ -174,7 +174,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixQfromR.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrixQfromR[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrixQfromR[i, j], 9);
}
}
}
@ -223,7 +223,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixQfromR.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrixQfromR[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrixQfromR[i, j], 9);
}
}
}
@ -254,7 +254,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -299,7 +299,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -340,7 +340,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -394,7 +394,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -443,7 +443,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -488,7 +488,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -529,7 +529,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -583,7 +583,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

10
src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserSvdTests.cs

@ -110,7 +110,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA[i, j], matrix[i, j], 9);
AssertHelpers.AlmostEqualRelative(matrixA[i, j], matrix[i, j], 9);
}
}
}
@ -236,7 +236,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -282,7 +282,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}
@ -322,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 9);
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 10);
}
// Make sure A didn't change.
@ -377,7 +377,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 9);
AssertHelpers.AlmostEqual(matrixB[i, j], matrixBReconstruct[i, j], 10);
}
}

18
src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.Arithmetic.cs

@ -429,7 +429,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 15);
}
}
}
@ -455,7 +455,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 15);
}
}
}
@ -489,7 +489,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 15);
}
}
}
@ -527,7 +527,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 15);
}
}
}
@ -567,7 +567,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 15);
}
}
}
@ -666,7 +666,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 15);
}
}
}
@ -704,7 +704,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 15);
}
}
}
@ -843,7 +843,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
for (var j = 0; j < result.ColumnCount; j++)
{
var col = result.Column(j);
AssertHelpers.AlmostEqual(Complex.One, col.Norm(p), 12);
AssertHelpers.AlmostEqualRelative(Complex.One, col.Norm(p), 12);
}
}
@ -868,7 +868,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
for (var i = 0; i < matrix.RowCount; i++)
{
var row = matrix.Row(i);
AssertHelpers.AlmostEqual(Complex.One, row.Norm(p), 12);
AssertHelpers.AlmostEqualRelative(Complex.One, row.Norm(p), 12);
}
}

24
src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs

@ -92,13 +92,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public virtual void CanComputeFrobeniusNorm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(11.1427106217473, matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(11.1427106217473, matrix.FrobeniusNorm(), 14);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(5.29055762656452, matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(5.29055762656452, matrix.FrobeniusNorm(), 14);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(7.86574853399217, matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(7.86574853399217, matrix.FrobeniusNorm(), 14);
}
/// <summary>
@ -108,13 +108,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public virtual void CanComputeInfinityNorm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(16.7777033201323, matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(16.7777033201323, matrix.InfinityNorm(), 14);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(7.3514039993641, matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(7.3514039993641, matrix.InfinityNorm(), 14);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(10.1023756128209, matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(10.1023756128209, matrix.InfinityNorm(), 14);
}
/// <summary>
@ -124,13 +124,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public virtual void CanComputeL1Norm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(12.5401248319437, matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(12.5401248319437, matrix.L1Norm(), 14);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(5.86479712463225, matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(5.86479712463225, matrix.L1Norm(), 14);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(9.49338601320024, matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(9.49338601320024, matrix.L1Norm(), 14);
}
/// <summary>
@ -140,12 +140,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public virtual void CanComputeL2Norm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(10.638175225153, matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(10.638175225153, matrix.L2Norm(), 14);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(5.2058554445283, matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(5.2058554445283, matrix.L2Norm(), 14);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(7.35826643761172, matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(7.35826643761172, matrix.L2Norm(), 14);
}
/// <summary>

4
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Preconditioners/DiagonalTest.cs

@ -76,8 +76,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
for (var i = 0; i < product.Count; i++)
{
Assert.IsTrue(vector[i].Real.AlmostEqual(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqual(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
Assert.IsTrue(vector[i].Real.AlmostEqualNumbersBetween(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqualNumbersBetween(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
}
}
}

16
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Preconditioners/IlutpTest.cs

@ -188,8 +188,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
matrix.Multiply(result, product);
for (var i = 0; i < product.Count; i++)
{
Assert.IsTrue(vector[i].Real.AlmostEqual(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqual(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
Assert.IsTrue(vector[i].Real.AlmostEqualNumbersBetween(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqualNumbersBetween(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
}
}
@ -266,7 +266,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
{
for (var j = i + 1; j < l.RowCount; j++)
{
Assert.IsTrue(0.0.AlmostEqual(l[i, j].Magnitude, -Epsilon.Magnitude()), "#01-" + i + "-" + j);
Assert.IsTrue(0.0.AlmostEqualNumbersBetween(l[i, j].Magnitude, -Epsilon.Magnitude()), "#01-" + i + "-" + j);
}
}
@ -277,7 +277,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
{
for (var j = 0; j < i; j++)
{
Assert.IsTrue(0.0.AlmostEqual(u[i, j].Magnitude, -Epsilon.Magnitude()), "#02-" + i + "-" + j);
Assert.IsTrue(0.0.AlmostEqualNumbersBetween(u[i, j].Magnitude, -Epsilon.Magnitude()), "#02-" + i + "-" + j);
}
}
@ -286,8 +286,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
{
for (var j = 0; j < sparseMatrix.ColumnCount; j++)
{
Assert.IsTrue(sparseMatrix[i, j].Real.AlmostEqual(original[i, j].Real, -Epsilon.Magnitude()), "#03-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Imaginary.AlmostEqual(original[i, j].Imaginary, -Epsilon.Magnitude()), "#04-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Real.AlmostEqualNumbersBetween(original[i, j].Real, -Epsilon.Magnitude()), "#03-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Imaginary.AlmostEqualNumbersBetween(original[i, j].Imaginary, -Epsilon.Magnitude()), "#04-" + i + "-" + j);
}
}
}
@ -330,8 +330,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
{
for (var j = 0; j < sparseMatrix.ColumnCount; j++)
{
Assert.IsTrue(sparseMatrix[i, j].Real.AlmostEqual(original[i, j].Real, -Epsilon.Magnitude()), "#01-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Imaginary.AlmostEqual(original[i, j].Imaginary, -Epsilon.Magnitude()), "#02-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Real.AlmostEqualNumbersBetween(original[i, j].Real, -Epsilon.Magnitude()), "#01-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Imaginary.AlmostEqualNumbersBetween(original[i, j].Imaginary, -Epsilon.Magnitude()), "#02-" + i + "-" + j);
}
}
}

8
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Preconditioners/IncompleteLUTest.cs

@ -119,8 +119,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
for (var i = 0; i < product.Count; i++)
{
Assert.IsTrue(vector[i].Real.AlmostEqual(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqual(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
Assert.IsTrue(vector[i].Real.AlmostEqualNumbersBetween(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqualNumbersBetween(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
}
}
@ -148,8 +148,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Precondi
{
for (var j = 0; j < sparseMatrix.ColumnCount; j++)
{
Assert.IsTrue(sparseMatrix[i, j].Real.AlmostEqual(original[i, j].Real, -Epsilon.Magnitude()), "#01-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Imaginary.AlmostEqual(original[i, j].Imaginary, -Epsilon.Magnitude()), "#02-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Real.AlmostEqualNumbersBetween(original[i, j].Real, -Epsilon.Magnitude()), "#01-" + i + "-" + j);
Assert.IsTrue(sparseMatrix[i, j].Imaginary.AlmostEqualNumbersBetween(original[i, j].Imaginary, -Epsilon.Magnitude()), "#02-" + i + "-" + j);
}
}
}

4
src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs

@ -219,13 +219,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
for (var i = 0; i < Data.Length; i++)
{
AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
AssertHelpers.AlmostEqualRelative(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
vector = vector/1.0;
for (var i = 0; i < Data.Length; i++)
{
AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
AssertHelpers.AlmostEqualRelative(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
}

28
src/UnitTests/LinearAlgebraTests/Complex/VectorTests.Norm.cs

@ -46,8 +46,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanComputeNorm()
{
var vector = CreateVector(Data);
AssertHelpers.AlmostEqual(7.74596669241483, vector.L2Norm(), 15);
AssertHelpers.AlmostEqual(7.74596669241483, vector.Norm(2), 15);
AssertHelpers.AlmostEqualRelative(7.74596669241483, vector.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(7.74596669241483, vector.Norm(2), 14);
}
/// <summary>
@ -57,8 +57,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanComputeNorm1()
{
var vector = CreateVector(Data);
AssertHelpers.AlmostEqual(16.0346843392517, vector.L1Norm(), 15);
AssertHelpers.AlmostEqual(16.0346843392517, vector.Norm(1), 15);
AssertHelpers.AlmostEqualRelative(16.0346843392517, vector.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(16.0346843392517, vector.Norm(1), 14);
}
/// <summary>
@ -68,8 +68,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanComputeSquareNorm()
{
var vector = CreateVector(Data);
AssertHelpers.AlmostEqual(60.0, vector.L2Norm() * vector.L2Norm(), 15);
AssertHelpers.AlmostEqual(60.0, vector.Norm(2) * vector.Norm(2), 15);
AssertHelpers.AlmostEqualRelative(60.0, vector.L2Norm() * vector.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(60.0, vector.Norm(2) * vector.Norm(2), 14);
}
/// <summary>
@ -84,7 +84,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanComputeNormP(int p, double expected)
{
var vector = CreateVector(Data);
AssertHelpers.AlmostEqual(expected, vector.Norm(p), 15);
AssertHelpers.AlmostEqualRelative(expected, vector.Norm(p), 14);
}
/// <summary>
@ -94,8 +94,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanComputeNormInfinity()
{
var vector = CreateVector(Data);
AssertHelpers.AlmostEqual(5.09901951359279, vector.InfinityNorm(), 14);
AssertHelpers.AlmostEqual(5.09901951359279, vector.Norm(double.PositiveInfinity), 14);
AssertHelpers.AlmostEqualRelative(5.09901951359279, vector.InfinityNorm(), 13);
AssertHelpers.AlmostEqualRelative(5.09901951359279, vector.Norm(double.PositiveInfinity), 13);
}
/// <summary>
@ -106,11 +106,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
var vector = CreateVector(Data);
var result = vector.Normalize(2);
AssertHelpers.AlmostEqual(new Complex(0.129099444873581, 0.129099444873581), result[0], 14);
AssertHelpers.AlmostEqual(new Complex(0.258198889747161, 0.129099444873581), result[1], 14);
AssertHelpers.AlmostEqual(new Complex(0.387298334620742, 0.129099444873581), result[2], 14);
AssertHelpers.AlmostEqual(new Complex(0.516397779494322, 0.129099444873581), result[3], 14);
AssertHelpers.AlmostEqual(new Complex(0.645497224367903, 0.129099444873581), result[4], 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.129099444873581, 0.129099444873581), result[0], 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.258198889747161, 0.129099444873581), result[1], 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.387298334620742, 0.129099444873581), result[2], 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.516397779494322, 0.129099444873581), result[3], 14);
AssertHelpers.AlmostEqualRelative(new Complex(0.645497224367903, 0.129099444873581), result[4], 14);
}
}
}

20
src/UnitTests/LinearAlgebraTests/Complex/VectorTests.cs

@ -107,11 +107,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
vector.CopySubVectorTo(other, 2, 2, 2);
AssertHelpers.AreEqual(Complex.Zero, other[0]);
AssertHelpers.AreEqual(Complex.Zero, other[1]);
AssertHelpers.AreEqual(new Complex(3, 1), other[2]);
AssertHelpers.AreEqual(new Complex(4, 1), other[3]);
AssertHelpers.AreEqual(Complex.Zero, other[4]);
AssertHelpers.AlmostEqual(Complex.Zero, other[0]);
AssertHelpers.AlmostEqual(Complex.Zero, other[1]);
AssertHelpers.AlmostEqual(new Complex(3, 1), other[2]);
AssertHelpers.AlmostEqual(new Complex(4, 1), other[3]);
AssertHelpers.AlmostEqual(Complex.Zero, other[4]);
}
/// <summary>
@ -123,11 +123,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
var vector = CreateVector(Data);
vector.CopySubVectorTo(vector, 0, 2, 2);
AssertHelpers.AreEqual(new Complex(1, 1), vector[0]);
AssertHelpers.AreEqual(new Complex(2, 1), vector[1]);
AssertHelpers.AreEqual(new Complex(1, 1), vector[2]);
AssertHelpers.AreEqual(new Complex(2, 1), vector[3]);
AssertHelpers.AreEqual(new Complex(5, 1), vector[4]);
AssertHelpers.AlmostEqual(new Complex(1, 1), vector[0]);
AssertHelpers.AlmostEqual(new Complex(2, 1), vector[1]);
AssertHelpers.AlmostEqual(new Complex(1, 1), vector[2]);
AssertHelpers.AlmostEqual(new Complex(2, 1), vector[3]);
AssertHelpers.AlmostEqual(new Complex(5, 1), vector[4]);
}
/// <summary>

4
src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs

@ -294,13 +294,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
for (var i = 0; i < Data.Length; i++)
{
AssertHelpers.AlmostEqual(Data[i]/new Complex32(2.0f, 1), vector[i], 7);
AssertHelpers.AlmostEqualRelative(Data[i]/new Complex32(2.0f, 1), vector[i], 6);
}
vector = vector/1.0f;
for (var i = 0; i < Data.Length; i++)
{
AssertHelpers.AlmostEqual(Data[i]/new Complex32(2.0f, 1), vector[i], 7);
AssertHelpers.AlmostEqualRelative(Data[i]/new Complex32(2.0f, 1), vector[i], 6);
}
}

30
src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs

@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i)*matrixB.Column(j), matrixC[i, j], 15);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i)*matrixB.Column(j), matrixC[i, j], 15);
}
}
}
@ -280,15 +280,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.FrobeniusNorm(), matrix.FrobeniusNorm(), 14);
}
/// <summary>
@ -298,15 +298,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.InfinityNorm(), matrix.InfinityNorm(), 14);
}
/// <summary>
@ -316,15 +316,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L1Norm(), matrix.L1Norm(), 14);
}
/// <summary>
@ -334,15 +334,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
matrix = TestMatrices["Wide2x3"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Wide2x3"]);
AssertHelpers.AlmostEqual(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
matrix = TestMatrices["Tall3x2"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Tall3x2"]);
AssertHelpers.AlmostEqual(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.L2Norm(), matrix.L2Norm(), 14);
}
/// <summary>
@ -353,11 +353,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var matrix = TestMatrices["Square3x3"];
var denseMatrix = DenseMatrix.OfArray(TestData2D["Square3x3"]);
AssertHelpers.AlmostEqual(denseMatrix.Determinant(), matrix.Determinant(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.Determinant(), matrix.Determinant(), 14);
matrix = TestMatrices["Square4x4"];
denseMatrix = DenseMatrix.OfArray(TestData2D["Square4x4"]);
AssertHelpers.AlmostEqual(denseMatrix.Determinant(), matrix.Determinant(), 14);
AssertHelpers.AlmostEqualRelative(denseMatrix.Determinant(), matrix.Determinant(), 14);
}
/// <summary>

2
src/UnitTests/LinearAlgebraTests/Complex32/Factorization/EvdTests.cs

@ -131,7 +131,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrix[i, j], matrixA[i, j], 3);
AssertHelpers.AlmostEqualRelative(matrix[i, j], matrixA[i, j], 3);
}
}
}

4
src/UnitTests/LinearAlgebraTests/Complex32/Factorization/GramSchmidtTests.cs

@ -396,7 +396,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization
{
for (var j = 0; j < matrixX.ColumnCount; j++)
{
AssertHelpers.AlmostEqualAbsolute(test[i, j], matrixX[i, j], 6);
AssertHelpers.AlmostEqual(test[i, j], matrixX[i, j], 6);
}
}
@ -430,7 +430,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization
for (var i = 0; i < vectorX.Count; i++)
{
AssertHelpers.AlmostEqualAbsolute(test[i], vectorX[i], 6);
AssertHelpers.AlmostEqual(test[i], vectorX[i], 6);
}
// Make sure A didn't change.

8
src/UnitTests/LinearAlgebraTests/Complex32/Factorization/QRTests.cs

@ -484,7 +484,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 3);
AssertHelpers.AlmostEqualRelative(vectorb[i], matrixBReconstruct[i], 3);
}
// Make sure A didn't change.
@ -571,7 +571,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization
// Check the reconstruction.
for (var i = 0; i < vectorb.Count; i++)
{
AssertHelpers.AlmostEqual(vectorb[i], matrixBReconstruct[i], 3);
AssertHelpers.AlmostEqualRelative(vectorb[i], matrixBReconstruct[i], 3);
}
// Make sure A didn't change.
@ -676,7 +676,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization
{
for (var j = 0; j < matrixX.ColumnCount; j++)
{
AssertHelpers.AlmostEqualAbsolute(test[i, j], matrixX[i, j], 6);
AssertHelpers.AlmostEqual(test[i, j], matrixX[i, j], 6);
}
}
@ -712,7 +712,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization
for (var i = 0; i < vectorX.Count; i++)
{
AssertHelpers.AlmostEqual(test[i], vectorX[i], 4);
AssertHelpers.AlmostEqual(test[i], vectorX[i], 6);
}
// Make sure A didn't change.

24
src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.Arithmetic.cs

@ -425,7 +425,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 6);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 6);
}
}
}
@ -451,7 +451,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 6);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 6);
}
}
}
@ -485,7 +485,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 6);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 6);
}
}
}
@ -523,7 +523,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 6);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Row(j), matrixC[i, j], 6);
}
}
}
@ -563,7 +563,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 6);
AssertHelpers.AlmostEqualRelative(matrixA.Row(i) * matrixB.Column(j), matrixC[i, j], 6);
}
}
}
@ -584,7 +584,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var ar = matrix.Column(j);
var dot = ar * x;
AssertHelpers.AlmostEqual(dot, y[j], 6);
AssertHelpers.AlmostEqualRelative(dot, y[j], 6);
}
}
@ -603,7 +603,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var ar = matrix.Column(j);
var dot = ar * x;
AssertHelpers.AlmostEqual(dot, y[j], 6);
AssertHelpers.AlmostEqualRelative(dot, y[j], 6);
}
}
@ -625,7 +625,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var ar = matrix.Column(j);
var dot = ar * y;
AssertHelpers.AlmostEqual(dot, x[j], 6);
AssertHelpers.AlmostEqualRelative(dot, x[j], 6);
}
}
@ -662,7 +662,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 6);
AssertHelpers.AlmostEqualRelative(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 6);
}
}
}
@ -700,7 +700,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < matrixC.ColumnCount; j++)
{
AssertHelpers.AlmostEqual(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 6);
AssertHelpers.AlmostEqualRelative(matrixA.Column(i) * matrixB.Column(j), matrixC[i, j], 6);
}
}
}
@ -839,7 +839,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
for (var j = 0; j < result.ColumnCount; j++)
{
var col = result.Column(j);
AssertHelpers.AlmostEqual(1d, col.Norm(p), 6);
AssertHelpers.AlmostEqualRelative(1d, col.Norm(p), 6);
}
}
@ -864,7 +864,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
for (var i = 0; i < matrix.RowCount; i++)
{
var row = matrix.Row(i);
AssertHelpers.AlmostEqual(1d, row.Norm(p), 6);
AssertHelpers.AlmostEqualRelative(1d, row.Norm(p), 6);
}
}

24
src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs

@ -92,13 +92,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public virtual void CanComputeFrobeniusNorm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(11.1427106217473f, matrix.FrobeniusNorm().Real, 7);
AssertHelpers.AlmostEqualRelative(11.1427106217473f, matrix.FrobeniusNorm().Real, 6);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(5.29055762656452f, matrix.FrobeniusNorm().Real, 6);
AssertHelpers.AlmostEqualRelative(5.29055762656452f, matrix.FrobeniusNorm().Real, 6);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(7.86574853399217, matrix.FrobeniusNorm().Real, 7);
AssertHelpers.AlmostEqualRelative(7.86574853399217, matrix.FrobeniusNorm().Real, 6);
}
/// <summary>
@ -108,13 +108,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public virtual void CanComputeInfinityNorm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(16.7777033f, matrix.InfinityNorm().Real, 6);
AssertHelpers.AlmostEqualRelative(16.7777033f, matrix.InfinityNorm().Real, 6);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(7.3514039f, matrix.InfinityNorm().Real, 6);
AssertHelpers.AlmostEqualRelative(7.3514039f, matrix.InfinityNorm().Real, 6);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(10.1023756f, matrix.InfinityNorm().Real, 6);
AssertHelpers.AlmostEqualRelative(10.1023756f, matrix.InfinityNorm().Real, 6);
}
/// <summary>
@ -124,13 +124,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public virtual void CanComputeL1Norm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(12.5401248f, matrix.L1Norm().Real, 7);
AssertHelpers.AlmostEqualRelative(12.5401248f, matrix.L1Norm().Real, 7);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(5.8647971f, matrix.L1Norm().Real, 7);
AssertHelpers.AlmostEqualRelative(5.8647971f, matrix.L1Norm().Real, 7);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(9.4933860f, matrix.L1Norm().Real, 7);
AssertHelpers.AlmostEqualRelative(9.4933860f, matrix.L1Norm().Real, 7);
}
/// <summary>
@ -140,12 +140,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public virtual void CanComputeL2Norm()
{
var matrix = TestMatrices["Square3x3"];
AssertHelpers.AlmostEqual(10.6381752f, matrix.L2Norm().Real, 6);
AssertHelpers.AlmostEqualRelative(10.6381752f, matrix.L2Norm().Real, 6);
matrix = TestMatrices["Wide2x3"];
AssertHelpers.AlmostEqual(5.2058554f, matrix.L2Norm().Real, 6);
AssertHelpers.AlmostEqualRelative(5.2058554f, matrix.L2Norm().Real, 6);
matrix = TestMatrices["Tall3x2"];
AssertHelpers.AlmostEqual(7.3582664f, matrix.L2Norm().Real, 6);
AssertHelpers.AlmostEqualRelative(7.3582664f, matrix.L2Norm().Real, 6);
}
/// <summary>

4
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Preconditioners/DiagonalTest.cs

@ -70,8 +70,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Precon
matrix.Multiply(result, product);
for (var i = 0; i < product.Count; i++)
{
Assert.IsTrue(vector[i].Real.AlmostEqual(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqual(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
Assert.IsTrue(vector[i].Real.AlmostEqualNumbersBetween(product[i].Real, -Epsilon.Magnitude()), "#02-" + i);
Assert.IsTrue(vector[i].Imaginary.AlmostEqualNumbersBetween(product[i].Imaginary, -Epsilon.Magnitude()), "#03-" + i);
}
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save