Browse Source

matrix: moved dense norm code into managed la provider

la-knuth
Marcus Cuda 16 years ago
parent
commit
0693388f8c
  1. 2865
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs
  2. 2872
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs
  3. 2907
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs
  4. 2911
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs
  5. 11259
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.cs
  6. 41
      src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
  7. 5
      src/Numerics/Numerics.csproj

2865
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs

File diff suppressed because it is too large

2872
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs

File diff suppressed because it is too large

2907
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs

File diff suppressed because it is too large

2911
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs

File diff suppressed because it is too large

11259
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.cs

File diff suppressed because it is too large

41
src/Numerics/LinearAlgebra/Double/DenseMatrix.cs

@ -27,6 +27,7 @@
namespace MathNet.Numerics.LinearAlgebra.Double
{
using System;
using Algorithms.LinearAlgebra;
using Generic;
using Properties;
using Threading;
@ -221,55 +222,21 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// <returns>The L1 norm of the matrix.</returns>
public override double L1Norm()
{
var norm = 0.0;
for (var j = 0; j < ColumnCount; j++)
{
var s = 0.0;
for (var i = 0; i < RowCount; i++)
{
s += Math.Abs(Data[(j * RowCount) + i]);
}
norm = Math.Max(norm, s);
}
return norm;
return Control.LinearAlgebraProvider.MatrixNorm(Norm.OneNorm, RowCount, ColumnCount, Data);
}
/// <summary>Calculates the Frobenius norm of this matrix.</summary>
/// <returns>The Frobenius norm of this matrix.</returns>
public override double FrobeniusNorm()
{
var transpose = (DenseMatrix)Transpose();
var aat = (DenseMatrix)(this * transpose);
var norm = 0.0;
for (var i = 0; i < RowCount; i++)
{
norm += Math.Abs(aat.Data[(i * RowCount) + i]);
}
norm = Math.Sqrt(norm);
return norm;
return Control.LinearAlgebraProvider.MatrixNorm(Norm.FrobeniusNorm, RowCount, ColumnCount, Data);
}
/// <summary>Calculates the infinity norm of this matrix.</summary>
/// <returns>The infinity norm of this matrix.</returns>
public override double InfinityNorm()
{
var norm = 0.0;
for (var i = 0; i < RowCount; i++)
{
var s = 0.0;
for (var j = 0; j < ColumnCount; j++)
{
s += Math.Abs(Data[(j * RowCount) + i]);
}
norm = Math.Max(norm, s);
}
return norm;
return Control.LinearAlgebraProvider.MatrixNorm(Norm.InfinityNorm, RowCount, ColumnCount, Data);
}
#region Elementary operations

5
src/Numerics/Numerics.csproj

@ -71,9 +71,12 @@
</ItemGroup>
<ItemGroup>
<None Include="Algorithms\LinearAlgebra\NativeAlgebraProvider.include" />
<Compile Include="Algorithms\LinearAlgebra\ManagedLinearAlgebraProvider.Complex32.cs" />
<Compile Include="Algorithms\LinearAlgebra\ManagedLinearAlgebraProvider.Complex.cs" />
<Compile Include="Algorithms\LinearAlgebra\ManagedLinearAlgebraProvider.Single.cs" />
<Compile Include="Algorithms\LinearAlgebra\ILinearAlgebraProvider.cs" />
<Compile Include="Algorithms\LinearAlgebra\ILinearAlgebraProviderOfT.cs" />
<Compile Include="Algorithms\LinearAlgebra\ManagedLinearAlgebraProvider.cs" />
<Compile Include="Algorithms\LinearAlgebra\ManagedLinearAlgebraProvider.Double.cs" />
<Compile Include="Combinatorics.cs" />
<Compile Include="ComplexExtensions.cs" />
<Compile Include="Constants.cs" />

Loading…
Cancel
Save