diff --git a/src/Numerics/Algorithms/LinearAlgebra/Atlas/AtlasLinearAlgebraProvider.cs b/src/Numerics/Algorithms/LinearAlgebra/Atlas/AtlasLinearAlgebraProvider.cs index 04f3841a..c28750a8 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Atlas/AtlasLinearAlgebraProvider.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Atlas/AtlasLinearAlgebraProvider.cs @@ -28,7 +28,7 @@ /* This file is automatically generated - do not modify it. Change NativeLinearAlgebraProvider.include instead. - Last generated on UTC 2010-06-27 13:08:29Z + Last generated on UTC 2010-06-27 13:41:23Z */ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas @@ -239,7 +239,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// /// The requested of the matrix. /// - public double MatrixNorm(Norm norm, double[] matrix) + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix) { throw new NotImplementedException(); } @@ -254,7 +254,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// /// The requested of the matrix. /// - public double MatrixNorm(Norm norm, double[] matrix, double[] work) + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix, double[] work) { throw new NotImplementedException(); } @@ -840,7 +840,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// /// The requested of the matrix. /// - public float MatrixNorm(Norm norm, float[] matrix) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix) { throw new NotImplementedException(); } @@ -855,7 +855,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// /// The requested of the matrix. /// - public float MatrixNorm(Norm norm, float[] matrix, float[] work) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix, float[] work) { throw new NotImplementedException(); } @@ -1441,7 +1441,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// /// The requested of the matrix. /// - public Complex MatrixNorm(Norm norm, Complex[] matrix) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix) { throw new NotImplementedException(); } @@ -1456,7 +1456,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// /// The requested of the matrix. /// - public Complex MatrixNorm(Norm norm, Complex[] matrix, Complex[] work) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix, Complex[] work) { throw new NotImplementedException(); } @@ -2038,11 +2038,13 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// /// The requested of the matrix. /// - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix) { throw new NotImplementedException(); } @@ -2051,13 +2053,15 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Atlas /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// The work array. Only used when /// and needs to be have a length of at least M (number of rows of . /// /// The requested of the matrix. /// - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix, Complex32[] work) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix, Complex32[] work) { throw new NotImplementedException(); } diff --git a/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs b/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs index 1e6ea9d6..01bed7d2 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs @@ -160,23 +160,27 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// /// The requested of the matrix. /// - T MatrixNorm(Norm norm, T[] matrix); + T MatrixNorm(Norm norm, int rows, int columns, T[] matrix); /// /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// The work array. Only used when /// and needs to be have a length of at least M (number of rows of . /// /// The requested of the matrix. /// - T MatrixNorm(Norm norm, T[] matrix, T[] work); + T MatrixNorm(Norm norm, int rows, int columns, T[] matrix, T[] work); /// /// Multiples two matrices. result = x * y diff --git a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.cs b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.cs index 1096fc20..31ca3024 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.cs @@ -230,14 +230,47 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra CommonParallel.For(0, y.Length, index => { result[index] = x[index] * y[index]; }); } - public double MatrixNorm(Norm norm, double[] matrix) - { - throw new NotImplementedException(); + /// + /// Computes the requested of the matrix. + /// + /// The type of norm to compute. + /// The number of rows. + /// The number of columns. + /// The matrix to compute the norm from. + /// + /// The requested of the matrix. + /// + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix) + { + var ret = 0.0; + switch (norm) + { + case Norm.OneNorm: + break; + case Norm.LargestAbsoluteValue: + break; + case Norm.InfinityNorm: + break; + case Norm.FrobeniusNorm: + break; + } + return ret; } - public double MatrixNorm(Norm norm, double[] matrix, double[] work) + /// + /// Computes the requested of the matrix. + /// + /// The type of norm to compute. + /// The number of rows. + /// The number of columns. + /// The matrix to compute the norm from. + /// The work array. Not used in the managed provider. + /// + /// The requested of the matrix. + /// + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix, double[] work) { - throw new NotImplementedException(); + return MatrixNorm(norm, rows, columns, matrix); } /// @@ -1370,12 +1403,12 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra CommonParallel.For(0, y.Length, i => result[i] = x[i] * y[i]); } - public float MatrixNorm(Norm norm, float[] matrix) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix) { throw new NotImplementedException(); } - public float MatrixNorm(Norm norm, float[] matrix, float[] work) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix, float[] work) { throw new NotImplementedException(); } @@ -2196,12 +2229,12 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra CommonParallel.For(0, y.Length, i => result[i] = x[i] * y[i]); } - public Complex MatrixNorm(Norm norm, Complex[] matrix) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix) { throw new NotImplementedException(); } - public Complex MatrixNorm(Norm norm, Complex[] matrix, Complex[] work) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix, Complex[] work) { throw new NotImplementedException(); } @@ -2987,12 +3020,12 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra CommonParallel.For(0, y.Length, i => result[i] = x[i] * y[i]); } - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix) { throw new NotImplementedException(); } - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix, Complex32[] work) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix, Complex32[] work) { throw new NotImplementedException(); } diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs index 7f182f37..0281e06b 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs @@ -28,7 +28,7 @@ /* This file is automatically generated - do not modify it. Change NativeLinearAlgebraProvider.include instead. - Last generated on UTC 2010-06-09 08:17:18Z + Last generated on UTC 2010-06-27 13:41:29Z */ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl @@ -238,7 +238,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// /// The requested of the matrix. /// - public double MatrixNorm(Norm norm, double[] matrix) + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix) { throw new NotImplementedException(); } @@ -253,7 +253,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// /// The requested of the matrix. /// - public double MatrixNorm(Norm norm, double[] matrix, double[] work) + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix, double[] work) { throw new NotImplementedException(); } @@ -839,7 +839,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// /// The requested of the matrix. /// - public float MatrixNorm(Norm norm, float[] matrix) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix) { throw new NotImplementedException(); } @@ -854,7 +854,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// /// The requested of the matrix. /// - public float MatrixNorm(Norm norm, float[] matrix, float[] work) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix, float[] work) { throw new NotImplementedException(); } @@ -1440,7 +1440,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// /// The requested of the matrix. /// - public Complex MatrixNorm(Norm norm, Complex[] matrix) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix) { throw new NotImplementedException(); } @@ -1455,7 +1455,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// /// The requested of the matrix. /// - public Complex MatrixNorm(Norm norm, Complex[] matrix, Complex[] work) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix, Complex[] work) { throw new NotImplementedException(); } @@ -1834,9 +1834,9 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// Solves A*X=B for X using a previously SVD decomposed matrix. /// /// The number of columns of B. - /// The s values returned by . - /// The left singular vectors returned by . - /// The right singular vectors returned by . + /// The s values returned by . + /// The left singular vectors returned by . + /// The right singular vectors returned by . /// The B matrix. /// On exit, the solution matrix. public void SvdSolveFactored(int columnsOfB, Complex[] s, Complex[] u, Complex[] vt, Complex[] b, Complex[] x) @@ -2037,11 +2037,13 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// /// The requested of the matrix. /// - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix) { throw new NotImplementedException(); } @@ -2050,13 +2052,15 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// The work array. Only used when /// and needs to be have a length of at least M (number of rows of . /// /// The requested of the matrix. /// - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix, Complex32[] work) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix, Complex32[] work) { throw new NotImplementedException(); } @@ -2435,9 +2439,9 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl /// Solves A*X=B for X using a previously SVD decomposed matrix. /// /// The number of columns of B. - /// The s values returned by . - /// The left singular vectors returned by . - /// The right singular vectors returned by . + /// The s values returned by . + /// The left singular vectors returned by . + /// The right singular vectors returned by . /// The B matrix. /// On exit, the solution matrix. public void SvdSolveFactored(int columnsOfB, Complex32[] s, Complex32[] u, Complex32[] vt, Complex32[] b, Complex32[] x) diff --git a/src/Numerics/Algorithms/LinearAlgebra/NativeAlgebraProvider.include b/src/Numerics/Algorithms/LinearAlgebra/NativeAlgebraProvider.include index 170f9ed5..0c8bcc52 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/NativeAlgebraProvider.include +++ b/src/Numerics/Algorithms/LinearAlgebra/NativeAlgebraProvider.include @@ -253,7 +253,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// /// The requested of the matrix. /// - public double MatrixNorm(Norm norm, double[] matrix) + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix) { throw new NotImplementedException(); } @@ -268,7 +268,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// /// The requested of the matrix. /// - public double MatrixNorm(Norm norm, double[] matrix, double[] work) + public double MatrixNorm(Norm norm, int rows, int columns, double[] matrix, double[] work) { throw new NotImplementedException(); } @@ -866,7 +866,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// /// The requested of the matrix. /// - public float MatrixNorm(Norm norm, float[] matrix) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix) { throw new NotImplementedException(); } @@ -881,7 +881,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// /// The requested of the matrix. /// - public float MatrixNorm(Norm norm, float[] matrix, float[] work) + public float MatrixNorm(Norm norm, int rows, int columns, float[] matrix, float[] work) { throw new NotImplementedException(); } @@ -1479,7 +1479,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// /// The requested of the matrix. /// - public Complex MatrixNorm(Norm norm, Complex[] matrix) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix) { throw new NotImplementedException(); } @@ -1494,7 +1494,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// /// The requested of the matrix. /// - public Complex MatrixNorm(Norm norm, Complex[] matrix, Complex[] work) + public Complex MatrixNorm(Norm norm, int rows, int columns, Complex[] matrix, Complex[] work) { throw new NotImplementedException(); } @@ -2088,11 +2088,13 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// /// The requested of the matrix. /// - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix) { throw new NotImplementedException(); } @@ -2101,13 +2103,15 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.<#=library#> /// Computes the requested of the matrix. /// /// The type of norm to compute. + /// The number of rows. + /// The number of columns. /// The matrix to compute the norm from. /// The work array. Only used when /// and needs to be have a length of at least M (number of rows of . /// /// The requested of the matrix. /// - public Complex32 MatrixNorm(Norm norm, Complex32[] matrix, Complex32[] work) + public Complex32 MatrixNorm(Norm norm, int rows, int columns, Complex32[] matrix, Complex32[] work) { throw new NotImplementedException(); }