Browse Source

Build: No longer impersonate System.Numerics to avoid conflicts; introduce new build flags for more flexible config: NOSYSNUMERICS, NATIVEMKL

v2
Christoph Ruegg 13 years ago
parent
commit
e44454ef94
  1. 4
      src/FSharp/BigIntegerExtensions.fs
  2. 4
      src/FSharp/Complex.fs
  3. 4
      src/FSharp/Complex.fsi
  4. 4
      src/FSharpPortable/FSharpPortable.fsproj
  5. 2
      src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex.cs
  6. 2
      src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex32.cs
  7. 2
      src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.double.cs
  8. 2
      src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.float.cs
  9. 6
      src/Numerics/Algorithms/LinearAlgebra/Acml/SafeNativeMethods.cs
  10. 2
      src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Common.cs
  11. 2
      src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex.cs
  12. 2
      src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex32.cs
  13. 2
      src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.double.cs
  14. 2
      src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.float.cs
  15. 6
      src/Numerics/Algorithms/LinearAlgebra/GotoBlas/SafeNativeMethods.cs
  16. 5
      src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProvider.cs
  17. 4
      src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs
  18. 7
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs
  19. 5
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs
  20. 5
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs
  21. 5
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs
  22. 2
      src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs
  23. 2
      src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex.cs
  24. 2
      src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex32.cs
  25. 2
      src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.double.cs
  26. 2
      src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.float.cs
  27. 8
      src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs
  28. 5
      src/Numerics/ArrayExtensions.cs
  29. 16
      src/Numerics/Complex32.cs
  30. 17
      src/Numerics/Complex64.cs
  31. 5
      src/Numerics/ComplexExtensions.cs
  32. 6
      src/Numerics/Control.cs
  33. 5
      src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Bluestein.cs
  34. 5
      src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Naive.cs
  35. 5
      src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Options.cs
  36. 5
      src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.RadixN.cs
  37. 5
      src/Numerics/IntegralTransforms/Transform.cs
  38. 7
      src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
  39. 7
      src/Numerics/LinearAlgebra/Complex/DenseVector.cs
  40. 7
      src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs
  41. 7
      src/Numerics/LinearAlgebra/Complex/ExtensionMethods.cs
  42. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/Cholesky.cs
  43. 8
      src/Numerics/LinearAlgebra/Complex/Factorization/DenseCholesky.cs
  44. 68
      src/Numerics/LinearAlgebra/Complex/Factorization/DenseEvd.cs
  45. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/DenseGramSchmidt.cs
  46. 8
      src/Numerics/LinearAlgebra/Complex/Factorization/DenseLU.cs
  47. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/DenseQR.cs
  48. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/DenseSvd.cs
  49. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/Evd.cs
  50. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/GramSchmidt.cs
  51. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/LU.cs
  52. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/QR.cs
  53. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/Svd.cs
  54. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/UserCholesky.cs
  55. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/UserEvd.cs
  56. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/UserGramSchmidt.cs
  57. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/UserLU.cs
  58. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/UserQR.cs
  59. 7
      src/Numerics/LinearAlgebra/Complex/Factorization/UserSvd.cs
  60. 7
      src/Numerics/LinearAlgebra/Complex/Matrix.cs
  61. 5
      src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs
  62. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs
  63. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs
  64. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs
  65. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs
  66. 13
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs
  67. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Diagonal.cs
  68. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Ilutp.cs
  69. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IlutpElementSorter.cs
  70. 7
      src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IncompleteLU.cs
  71. 11
      src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs
  72. 11
      src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs
  73. 6
      src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs
  74. 11
      src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs
  75. 11
      src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs
  76. 7
      src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs
  77. 7
      src/Numerics/LinearAlgebra/Complex/SparseVector.cs
  78. 7
      src/Numerics/LinearAlgebra/Complex/Vector.cs
  79. 7
      src/Numerics/LinearAlgebra/Complex32/Factorization/Evd.cs
  80. 7
      src/Numerics/LinearAlgebra/Complex32/Factorization/UserEvd.cs
  81. 5
      src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs
  82. 13
      src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs
  83. 11
      src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs
  84. 11
      src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs
  85. 6
      src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs
  86. 11
      src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs
  87. 11
      src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs
  88. 13
      src/Numerics/LinearAlgebra/Double/Factorization/DenseEvd.cs
  89. 7
      src/Numerics/LinearAlgebra/Double/Factorization/Evd.cs
  90. 7
      src/Numerics/LinearAlgebra/Double/Factorization/UserEvd.cs
  91. 5
      src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs
  92. 13
      src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs
  93. 11
      src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs
  94. 11
      src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs
  95. 6
      src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs
  96. 11
      src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs
  97. 11
      src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs
  98. 14
      src/Numerics/LinearAlgebra/Generic/Common.cs
  99. 7
      src/Numerics/LinearAlgebra/Generic/Factorization/Cholesky.cs
  100. 7
      src/Numerics/LinearAlgebra/Generic/Factorization/Evd.cs

4
src/FSharp/BigIntegerExtensions.fs

@ -1,9 +1,9 @@
namespace System.Numerics
open System
#if PORTABLE
open System
[<AutoOpen>]
module BigIntegerExtensions =

4
src/FSharp/Complex.fs

@ -7,7 +7,11 @@ namespace MathNet.Numerics
open Microsoft.FSharp.Math
open System
open System.Globalization
#if NOSYSNUMERICS
#else
open System.Numerics
#endif
type complex = Complex
type complex32 = Complex32

4
src/FSharp/Complex.fsi

@ -5,7 +5,11 @@
namespace MathNet.Numerics
open System
#if NOSYSNUMERICS
#else
open System.Numerics
#endif
/// The type of complex numbers
type complex = Complex

4
src/FSharpPortable/FSharpPortable.fsproj

@ -19,7 +19,7 @@
<Optimize>false</Optimize>
<Tailcalls>false</Tailcalls>
<OutputPath>..\..\out\debug\Portable\</OutputPath>
<DefineConstants>TRACE;DEBUG;PORTABLE</DefineConstants>
<DefineConstants>TRACE;DEBUG;PORTABLE;NOSYSNUMERICS</DefineConstants>
<WarningLevel>3</WarningLevel>
<DocumentationFile>
</DocumentationFile>
@ -29,7 +29,7 @@
<Optimize>true</Optimize>
<Tailcalls>true</Tailcalls>
<OutputPath>..\..\out\lib\Portable\</OutputPath>
<DefineConstants>TRACE;PORTABLE</DefineConstants>
<DefineConstants>TRACE;PORTABLE;NOSYSNUMERICS</DefineConstants>
<WarningLevel>3</WarningLevel>
<DocumentationFile>..\..\out\lib\Portable\MathNet.Numerics.FSharp.XML</DocumentationFile>
</PropertyGroup>

2
src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex.cs

@ -24,7 +24,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEACML
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

2
src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex32.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEACML
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

2
src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.double.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEACML
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

2
src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.float.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEACML
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

6
src/Numerics/Algorithms/LinearAlgebra/Acml/SafeNativeMethods.cs

@ -26,7 +26,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEACML
using System.Numerics;
using System.Runtime.InteropServices;
@ -96,7 +96,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Acml
[DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern void z_matrix_multiply(Transpose transA, Transpose transB, int m, int n, int k, Complex alpha, Complex[] x, Complex[] y, Complex beta, [In, Out]Complex[] c);
#endregion BLAS
#endregion BLAS
#region LAPACK
@ -256,7 +256,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Acml
[DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern int z_svd_factor(bool computeVectors, int m, int n, [In, Out] Complex[] a, [In, Out] Complex[] s, [In, Out] Complex[] u, [In, Out] Complex[] v, [In, Out] Complex[] work, int len);
#endregion LAPACK
#endregion LAPACK
}
}

2
src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Common.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEGOTO
namespace MathNet.Numerics.Algorithms.LinearAlgebra.GotoBlas
{

2
src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEGOTO
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

2
src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex32.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEGOTO
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

2
src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.double.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEGOTO
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

2
src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.float.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEGOTO
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

6
src/Numerics/Algorithms/LinearAlgebra/GotoBlas/SafeNativeMethods.cs

@ -26,7 +26,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEGOTO
using System.Numerics;
using System.Runtime.InteropServices;
@ -96,7 +96,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.GotoBlas
[DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern void z_matrix_multiply(Transpose transA, Transpose transB, int m, int n, int k, Complex alpha, Complex[] x, Complex[] y, Complex beta, [In, Out]Complex[] c);
#endregion BLAS
#endregion BLAS
#region LAPACK
@ -256,7 +256,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.GotoBlas
[DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern int z_svd_factor(bool computeVectors, int m, int n, [In, Out] Complex[] a, [In, Out] Complex[] s, [In, Out] Complex[] u, [In, Out] Complex[] v, [In, Out] Complex[] work, int len);
#endregion LAPACK
#endregion LAPACK
}
}

5
src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProvider.cs

@ -31,7 +31,10 @@
// INITIAL DRAFT MISSING EXCEPTION SPECIFICATIONS
namespace MathNet.Numerics.Algorithms.LinearAlgebra
{
using System.Numerics;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Interface to linear algebra algorithms that work off 1-D arrays.

4
src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs

@ -30,8 +30,6 @@ using MathNet.Numerics.LinearAlgebra.Generic.Factorization;
namespace MathNet.Numerics.Algorithms.LinearAlgebra
{
using System.Numerics;
/// <summary>
/// How to transpose a matrix.
/// </summary>
@ -83,7 +81,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra
/// <summary>
/// Interface to linear algebra algorithms that work off 1-D arrays.
/// </summary>
/// <typeparam name="T">Supported data types are double, single, <see cref="Complex"/>, and <see cref="Complex32"/>.</typeparam>
/// <typeparam name="T">Supported data types are double, single, Complex, and Complex32.</typeparam>
public interface ILinearAlgebraProvider<T>
where T : struct
{

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

@ -27,12 +27,17 @@
namespace MathNet.Numerics.Algorithms.LinearAlgebra
{
using System;
using System.Numerics;
using Properties;
using Threading;
using Numerics.LinearAlgebra.Complex.Factorization;
using Numerics.LinearAlgebra.Generic.Factorization;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// The managed linear algebra provider.
/// </summary>

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

@ -29,11 +29,14 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra
using System;
using Properties;
using Threading;
using System.Numerics;
using Numerics.LinearAlgebra.Complex32.Factorization;
using Numerics.LinearAlgebra.Generic.Factorization;
using Numerics.LinearAlgebra.Complex32;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// The managed linear algebra provider.
/// </summary>

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

@ -27,11 +27,14 @@
namespace MathNet.Numerics.Algorithms.LinearAlgebra
{
using System;
using System.Numerics;
using Numerics.LinearAlgebra.Generic.Factorization;
using Properties;
using Threading;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// The managed linear algebra provider.
/// </summary>

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

@ -27,11 +27,14 @@
namespace MathNet.Numerics.Algorithms.LinearAlgebra
{
using System;
using System.Numerics;
using Numerics.LinearAlgebra.Generic.Factorization;
using Properties;
using Threading;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// The managed linear algebra provider.
/// </summary>

2
src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEMKL
namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl
{

2
src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEMKL
using MathNet.Numerics.LinearAlgebra.Generic.Factorization;

2
src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex32.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEMKL
namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl
{

2
src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.double.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEMKL
namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl
{

2
src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.float.cs

@ -28,7 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEMKL
namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl
{

8
src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs

@ -26,7 +26,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if !PORTABLE
#if NATIVEMKL
using System.Numerics;
using System.Runtime.InteropServices;
@ -96,7 +96,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl
[DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern void z_matrix_multiply(Transpose transA, Transpose transB, int m, int n, int k, Complex alpha, Complex[] x, Complex[] y, Complex beta, [In, Out]Complex[] c);
#endregion BLAS
#endregion BLAS
#region LAPACK
@ -280,7 +280,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl
[DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern int z_eigen(bool isSymmetric, int n, [In] Complex[] a, [In, Out] Complex[] vectors, [In, Out] Complex[] values, [In, Out] Complex[] d);
#endregion LAPACK
#endregion LAPACK
#region Vector Functions
@ -332,7 +332,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl
[DllImport(DllName, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
internal static extern void z_vector_divide(int n, Complex[] x, Complex[] y, [In, Out] Complex[] result);
#endregion Vector Functions
#endregion Vector Functions
}
}

5
src/Numerics/ArrayExtensions.cs

@ -31,7 +31,10 @@
namespace MathNet.Numerics
{
using System;
using System.Numerics;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Useful extension methods for Arrays.

16
src/Numerics/Complex32.cs

@ -28,17 +28,23 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
namespace MathNet.Numerics
{
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Numerics;
using System.Runtime;
using System.Runtime.InteropServices;
using Properties;
#if !PORTABLE
using System.Runtime;
#endif
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
using BigInteger = System.Numerics.BigInteger;
#endif
/// <summary>
/// 32-bit single precision complex numbers class.
/// </summary>
@ -1199,7 +1205,7 @@ namespace MathNet.Numerics
return new Complex32(value, 0.0f);
}
#if !PORTABLE
#if !NOSYSNUMERICS
/// <summary>
/// Implicit conversion of a BigInteger int to a <c>Complex32</c>.
/// </summary>
@ -1277,7 +1283,7 @@ namespace MathNet.Numerics
/// <summary>
/// Returns the additive inverse of a specified complex number.
/// </summary>
/// <returns>The result of the <see cref="P:System.Numerics.Complex.Real" /> and <see cref="P:System.Numerics.Complex.Imaginary" /> components of the <paramref name="value" /> parameter multiplied by -1.</returns>
/// <returns>The result of the real and imaginary components of the value parameter multiplied by -1.</returns>
/// <param name="value">A complex number.</param>
[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
public static Complex32 Negate(Complex32 value)

17
src/Numerics/Complex64.cs

@ -28,15 +28,14 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
#if PORTABLE
namespace System.Numerics
#if NOSYSNUMERICS
namespace MathNet.Numerics
{
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using MathNet.Numerics;
using MathNet.Numerics.Properties;
using Properties;
/// <summary>
/// 64-bit double precision complex numbers class.
@ -120,25 +119,25 @@ namespace System.Numerics
}
/// <summary>
/// Returns a new <see cref="T:System.Numerics.Complex" /> instance
/// Returns a new Complex instance
/// with a real number equal to zero and an imaginary number equal to zero.
/// </summary>
public static readonly Complex Zero = new Complex(0.0f, 0.0f);
/// <summary>
/// Returns a new <see cref="T:System.Numerics.Complex" /> instance
/// Returns a new Complex instance
/// with a real number equal to one and an imaginary number equal to zero.
/// </summary>
public static readonly Complex One = new Complex(1.0f, 0.0f);
/// <summary>
/// Returns a new <see cref="T:System.Numerics.Complex" /> instance
/// Returns a new Complex instance
/// with a real number equal to zero and an imaginary number equal to one.
/// </summary>
public static readonly Complex ImaginaryOne = new Complex(0, 1);
/// <summary>
/// Returns a new <see cref="T:System.Numerics.Complex" /> instance
/// Returns a new Complex instance
/// with real and imaginary numbers positive infinite.
/// </summary>
public static readonly Complex PositiveInfinity = new Complex(float.PositiveInfinity, float.PositiveInfinity);
@ -147,7 +146,7 @@ namespace System.Numerics
public static readonly Complex Infinity = PositiveInfinity;
/// <summary>
/// Returns a new <see cref="T:System.Numerics.Complex" /> instance
/// Returns a new Complex instance
/// with real and imaginary numbers not a number.
/// </summary>
public static readonly Complex NaN = new Complex(float.NaN, float.NaN);

5
src/Numerics/ComplexExtensions.cs

@ -32,12 +32,15 @@ namespace MathNet.Numerics
{
using System;
using System.Collections.Generic;
using System.Numerics;
#if !PORTABLE
using System.Runtime;
#endif
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Extension methods for the Complex type provided by System.Numerics
/// </summary>

6
src/Numerics/Control.cs

@ -66,9 +66,7 @@ namespace MathNet.Numerics
_parallelizeElements = 300;
// Linear Algebra Provider
#if PORTABLE
LinearAlgebraProvider = new ManagedLinearAlgebraProvider();
#else
#if NATIVEMKL
try
{
const string name = "MathNetNumericsLAProvider";
@ -88,6 +86,8 @@ namespace MathNet.Numerics
// We don't care about any failures here at all
LinearAlgebraProvider = new ManagedLinearAlgebraProvider();
}
#else
LinearAlgebraProvider = new ManagedLinearAlgebraProvider();
#endif
}

5
src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Bluestein.cs

@ -31,10 +31,13 @@
namespace MathNet.Numerics.IntegralTransforms.Algorithms
{
using System;
using System.Numerics;
using NumberTheory;
using Threading;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT).
/// </summary>

5
src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Naive.cs

@ -31,9 +31,12 @@
namespace MathNet.Numerics.IntegralTransforms.Algorithms
{
using System;
using System.Numerics;
using Threading;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT).
/// </summary>

5
src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Options.cs

@ -31,7 +31,10 @@
namespace MathNet.Numerics.IntegralTransforms.Algorithms
{
using System;
using System.Numerics;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT).

5
src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.RadixN.cs

@ -31,11 +31,14 @@
namespace MathNet.Numerics.IntegralTransforms.Algorithms
{
using System;
using System.Numerics;
using NumberTheory;
using Properties;
using Threading;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT).
/// </summary>

5
src/Numerics/IntegralTransforms/Transform.cs

@ -30,9 +30,12 @@
namespace MathNet.Numerics.IntegralTransforms
{
using System.Numerics;
using Algorithms;
#if !NOSYSNUMERICS
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Integral Transforms (including FFT).
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs

@ -38,7 +38,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Numerics;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column).

7
src/Numerics/LinearAlgebra/Complex/DenseVector.cs

@ -37,9 +37,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using Threading;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A vector using dense storage.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs

@ -38,7 +38,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A matrix type for diagonal matrices.

7
src/Numerics/LinearAlgebra/Complex/ExtensionMethods.cs

@ -26,11 +26,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex
{
using System.Numerics;
using Factorization;
using Generic;
using Generic.Factorization;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Extension methods which return factorizations for the various matrix classes.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Factorization/Cholesky.cs

@ -30,9 +30,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System.Numerics;
using Generic.Factorization;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of a Cholesky factorization.</para>
/// <para>For a symmetric, positive definite matrix A, the Cholesky factorization

8
src/Numerics/LinearAlgebra/Complex/Factorization/DenseCholesky.cs

@ -31,10 +31,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
using Threading;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of a Cholesky factorization for dense matrices.</para>

68
src/Numerics/LinearAlgebra/Complex/Factorization/DenseEvd.cs

@ -33,6 +33,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
using System;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a complex matrix.
@ -103,10 +109,10 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
/// Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
/// Fortran subroutine in EISPACK.</remarks>
internal static void SymmetricTridiagonalize(System.Numerics.Complex[] matrixA, double[] d, double[] e, System.Numerics.Complex[] tau, int order)
internal static void SymmetricTridiagonalize(Complex[] matrixA, double[] d, double[] e, Complex[] tau, int order)
{
double hh;
tau[order - 1] = System.Numerics.Complex.One;
tau[order - 1] = Complex.One;
for (var i = 0; i < order; i++)
{
@ -127,7 +133,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
if (scale == 0.0)
{
tau[i - 1] = System.Numerics.Complex.One;
tau[i - 1] = Complex.One;
e[i] = 0.0;
}
else
@ -138,10 +144,10 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
h += matrixA[k*order + i].MagnitudeSquared();
}
System.Numerics.Complex g = Math.Sqrt(h);
Complex g = Math.Sqrt(h);
e[i] = scale*g.Real;
System.Numerics.Complex temp;
Complex temp;
var im1Oi = (i - 1)*order + i;
var f = matrixA[im1Oi];
if (f.Magnitude != 0)
@ -159,10 +165,10 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
if ((f.Magnitude == 0) || (i != 1))
{
f = System.Numerics.Complex.Zero;
f = Complex.Zero;
for (var j = 0; j < i; j++)
{
var tmp = System.Numerics.Complex.Zero;
var tmp = Complex.Zero;
var jO = j*order;
// Form element of A*U.
for (var k = 0; k <= j; k++)
@ -206,7 +212,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
hh = d[i];
d[i] = matrixA[i*order + i].Real;
matrixA[i*order + i] = new System.Numerics.Complex(hh, scale*Math.Sqrt(h));
matrixA[i*order + i] = new Complex(hh, scale*Math.Sqrt(h));
}
hh = d[0];
@ -227,7 +233,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
/// Fortran subroutine in EISPACK.</remarks>
/// <exception cref="NonConvergenceException"></exception>
internal static void SymmetricDiagonalize(System.Numerics.Complex[] dataEv, double[] d, double[] e, int order)
internal static void SymmetricDiagonalize(Complex[] dataEv, double[] d, double[] e, int order)
{
const int Maxiter = 1000;
@ -373,7 +379,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
/// Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
/// Fortran subroutine in EISPACK.</remarks>
internal static void SymmetricUntridiagonalize(System.Numerics.Complex[] dataEv, System.Numerics.Complex[] matrixA, System.Numerics.Complex[] tau, int order)
internal static void SymmetricUntridiagonalize(Complex[] dataEv, Complex[] matrixA, Complex[] tau, int order)
{
for (var i = 0; i < order; i++)
{
@ -391,7 +397,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
for (var j = 0; j < order; j++)
{
var s = System.Numerics.Complex.Zero;
var s = Complex.Zero;
for (var k = 0; k < i; k++)
{
s += dataEv[(j*order) + k]*matrixA[k*order + i];
@ -418,9 +424,9 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// by Martin and Wilkinson, Handbook for Auto. Comp.,
/// Vol.ii-Linear Algebra, and the corresponding
/// Fortran subroutines in EISPACK.</remarks>
internal static void NonsymmetricReduceToHessenberg(System.Numerics.Complex[] dataEv, System.Numerics.Complex[] matrixH, int order)
internal static void NonsymmetricReduceToHessenberg(Complex[] dataEv, Complex[] matrixH, int order)
{
var ort = new System.Numerics.Complex[order];
var ort = new Complex[order];
for (var m = 1; m < order - 1; m++)
{
@ -459,7 +465,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
// H = (I-u*u'/h)*H*(I-u*u')/h)
for (var j = m; j < order; j++)
{
var f = System.Numerics.Complex.Zero;
var f = Complex.Zero;
var jO = j*order;
for (var i = order - 1; i >= m; i--)
{
@ -475,7 +481,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
for (var i = 0; i < order; i++)
{
var f = System.Numerics.Complex.Zero;
var f = Complex.Zero;
for (var j = order - 1; j >= m; j--)
{
f += ort[j]*matrixH[j*order + i];
@ -498,7 +504,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
for (var j = 0; j < order; j++)
{
dataEv[(j*order) + i] = i == j ? System.Numerics.Complex.One : System.Numerics.Complex.Zero;
dataEv[(j*order) + i] = i == j ? Complex.One : Complex.Zero;
}
}
@ -506,7 +512,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
var mm1O = (m - 1)*order;
var mm1Om = mm1O + m;
if (matrixH[mm1Om] != System.Numerics.Complex.Zero && ort[m] != System.Numerics.Complex.Zero)
if (matrixH[mm1Om] != Complex.Zero && ort[m] != Complex.Zero)
{
var norm = (matrixH[mm1Om].Real*ort[m].Real) + (matrixH[mm1Om].Imaginary*ort[m].Imaginary);
@ -517,7 +523,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
for (var j = m; j < order; j++)
{
var g = System.Numerics.Complex.Zero;
var g = Complex.Zero;
for (var i = m; i < order; i++)
{
g += ort[i].Conjugate()*dataEv[(j*order) + i];
@ -573,14 +579,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// by Martin and Wilkinson, Handbook for Auto. Comp.,
/// Vol.ii-Linear Algebra, and the corresponding
/// Fortran subroutine in EISPACK.</remarks>
internal static void NonsymmetricReduceHessenberToRealSchur(System.Numerics.Complex[] vectorV, System.Numerics.Complex[] dataEv, System.Numerics.Complex[] matrixH, int order)
internal static void NonsymmetricReduceHessenberToRealSchur(Complex[] vectorV, Complex[] dataEv, Complex[] matrixH, int order)
{
// Initialize
var n = order - 1;
var eps = Precision.DoubleMachinePrecision;
double norm;
System.Numerics.Complex x, y, z, exshift = System.Numerics.Complex.Zero;
Complex x, y, z, exshift =Complex.Zero;
// Outer loop over eigenvalue index
var iter = 0;
@ -618,7 +624,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
else
{
// Form shift
System.Numerics.Complex s;
Complex s;
if (iter != 10 && iter != 20)
{
s = matrixH[nOn];
@ -662,7 +668,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
x = matrixH[im1Oim1]/norm;
vectorV[i - 1] = x;
matrixH[im1Oim1] = norm;
matrixH[im1O + i] = new System.Numerics.Complex(0.0, s.Real/norm);
matrixH[im1O + i] = new Complex(0.0, s.Real/norm);
for (var j = i; j < order; j++)
{
@ -706,7 +712,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
else
{
y = matrixH[jm1Oi].Real;
matrixH[jm1Oi] = new System.Numerics.Complex((x.Real*y.Real) - (x.Imaginary*y.Imaginary) + (matrixH[jm1O + j].Imaginary*z.Real), matrixH[jm1Oi].Imaginary);
matrixH[jm1Oi] = new Complex((x.Real*y.Real) - (x.Imaginary*y.Imaginary) + (matrixH[jm1O + j].Imaginary*z.Real), matrixH[jm1Oi].Imaginary);
}
matrixH[jO + i] = (x.Conjugate()*z) - (matrixH[jm1O + j].Imaginary*y);
@ -798,7 +804,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
var jO = j*order;
for (var i = 0; i < order; i++)
{
z = System.Numerics.Complex.Zero;
z = Complex.Zero;
for (var k = 0; k <= j; k++)
{
z += dataEv[(k*order) + i]*matrixH[jO + k];
@ -814,7 +820,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// </summary>
/// <param name="input">The right hand side <see cref="Matrix{T}"/>, <b>B</b>.</param>
/// <param name="result">The left hand side <see cref="Matrix{T}"/>, <b>X</b>.</param>
public override void Solve(Matrix<System.Numerics.Complex> input, Matrix<System.Numerics.Complex> result)
public override void Solve(Matrix<Complex> input, Matrix<Complex> result)
{
// Check for proper arguments.
if (input == null)
@ -848,13 +854,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
if (IsSymmetric)
{
var order = VectorEv.Count;
var tmp = new System.Numerics.Complex[order];
var tmp = new Complex[order];
for (var k = 0; k < order; k++)
{
for (var j = 0; j < order; j++)
{
System.Numerics.Complex value = 0.0;
Complex value = 0.0;
if (j < order)
{
for (var i = 0; i < order; i++)
@ -870,7 +876,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
for (var j = 0; j < order; j++)
{
System.Numerics.Complex value = 0.0;
Complex value = 0.0;
for (var i = 0; i < order; i++)
{
value += ((DenseMatrix) MatrixEv).Values[(i*order) + j]*tmp[i];
@ -891,7 +897,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// </summary>
/// <param name="input">The right hand side vector, <b>b</b>.</param>
/// <param name="result">The left hand side <see cref="Matrix{T}"/>, <b>x</b>.</param>
public override void Solve(Vector<System.Numerics.Complex> input, Vector<System.Numerics.Complex> result)
public override void Solve(Vector<Complex> input, Vector<Complex> result)
{
if (input == null)
{
@ -920,8 +926,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
// Symmetric case -> x = V * inv(λ) * VH * b;
var order = VectorEv.Count;
var tmp = new System.Numerics.Complex[order];
System.Numerics.Complex value;
var tmp = new Complex[order];
Complex value;
for (var j = 0; j < order; j++)
{

7
src/Numerics/LinearAlgebra/Complex/Factorization/DenseGramSchmidt.cs

@ -33,10 +33,15 @@ using MathNet.Numerics.LinearAlgebra.Generic.Factorization;
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.</para>
/// <para>Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix.</para>

8
src/Numerics/LinearAlgebra/Complex/Factorization/DenseLU.cs

@ -31,10 +31,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
using Threading;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of an LU factorization.</para>

7
src/Numerics/LinearAlgebra/Complex/Factorization/DenseQR.cs

@ -33,10 +33,15 @@ using MathNet.Numerics.LinearAlgebra.Generic.Factorization;
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the QR decomposition.</para>
/// <para>Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix

7
src/Numerics/LinearAlgebra/Complex/Factorization/DenseSvd.cs

@ -30,10 +30,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the singular value decomposition (SVD) for <see cref="DenseMatrix"/>.</para>
/// <para>Suppose M is an m-by-n matrix whose entries are real numbers.

7
src/Numerics/LinearAlgebra/Complex/Factorization/Evd.cs

@ -26,9 +26,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System.Numerics;
using Generic.Factorization;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a real matrix.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Factorization/GramSchmidt.cs

@ -27,10 +27,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic.Factorization;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.</para>
/// <para>Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.</para>

7
src/Numerics/LinearAlgebra/Complex/Factorization/LU.cs

@ -26,9 +26,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System.Numerics;
using Generic.Factorization;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of an LU factorization.</para>
/// <para>For a matrix A, the LU factorization is a pair of lower triangular matrix L and

7
src/Numerics/LinearAlgebra/Complex/Factorization/QR.cs

@ -27,10 +27,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic.Factorization;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the QR decomposition.</para>
/// <para>Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix

7
src/Numerics/LinearAlgebra/Complex/Factorization/Svd.cs

@ -32,11 +32,16 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Linq;
using System.Numerics;
using Generic;
using Generic.Factorization;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the singular value decomposition (SVD).</para>
/// <para>Suppose M is an m-by-n matrix whose entries are real numbers.

7
src/Numerics/LinearAlgebra/Complex/Factorization/UserCholesky.cs

@ -31,11 +31,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
using Threading;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of a Cholesky factorization for user matrices.</para>
/// <para>For a symmetric, positive definite matrix A, the Cholesky factorization

7
src/Numerics/LinearAlgebra/Complex/Factorization/UserEvd.cs

@ -30,10 +30,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a complex matrix.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Factorization/UserGramSchmidt.cs

@ -31,10 +31,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.</para>
/// <para>Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix.</para>

7
src/Numerics/LinearAlgebra/Complex/Factorization/UserLU.cs

@ -31,10 +31,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of an LU factorization.</para>
/// <para>For a matrix A, the LU factorization is a pair of lower triangular matrix L and

7
src/Numerics/LinearAlgebra/Complex/Factorization/UserQR.cs

@ -34,11 +34,16 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Linq;
using System.Numerics;
using Generic;
using Properties;
using Threading;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the QR decomposition.</para>
/// <para>Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix

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

@ -30,10 +30,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of the singular value decomposition (SVD) for <see cref="Matrix{T}"/>.</para>
/// <para>Suppose M is an m-by-n matrix whose entries are real numbers.

7
src/Numerics/LinearAlgebra/Complex/Matrix.cs

@ -31,11 +31,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex
{
using System;
using System.Numerics;
using Generic;
using Properties;
using Storage;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <c>Complex</c> version of the <see cref="Matrix{T}"/> class.
/// </summary>

5
src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs

@ -38,9 +38,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
/// Defines the base interface for iterators that help control an iterative calculation.
/// </summary>
public interface IIterator
#if !PORTABLE
: ICloneable
#endif
{
/// <summary>
/// Adds an <see cref="IIterationStopCriterium"/> to the internal collection of stop-criteria. Only a
@ -101,8 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
/// </remarks>
void ResetToPrecalculationState();
#if PORTABLE
IIterator Clone();
#endif
}
}

7
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs

@ -31,11 +31,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
{
using System;
using System.Numerics;
using Generic.Solvers.Status;
using Preconditioners;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A Bi-Conjugate Gradient stabilized iterative matrix solver.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs

@ -31,11 +31,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
{
using System;
using System.Numerics;
using Generic.Solvers.Status;
using Preconditioners;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A Generalized Product Bi-Conjugate Gradient iterative matrix solver.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs

@ -34,12 +34,17 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using Distributions;
using Generic.Solvers.Status;
using Preconditioners;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs

@ -31,11 +31,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
{
using System;
using System.Numerics;
using Generic.Solvers.Status;
using Preconditioners;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver.
/// </summary>

13
src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs

@ -307,19 +307,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
/// <returns>The deep clone of the current iterator.</returns>
public IIterator Clone()
{
var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => (IIterationStopCriterium)stopCriterium.Clone()).ToList();
var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList();
return new Iterator(stopCriteria);
}
#if !PORTABLE
/// <summary>
/// Creates a deep clone of the current iterator.
/// </summary>
/// <returns>The deep clone of the current iterator.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

7
src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Diagonal.cs

@ -31,9 +31,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners
{
using System;
using System.Numerics;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A diagonal preconditioner. The preconditioner uses the inverse
/// of the matrix diagonal as preconditioning values.

7
src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Ilutp.cs

@ -32,9 +32,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners
{
using System;
using System.Collections.Generic;
using System.Numerics;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// This class performs an Incomplete LU factorization with drop tolerance
/// and partial pivoting. The drop tolerance indicates which additional entries

7
src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IlutpElementSorter.cs

@ -30,9 +30,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners
{
using System.Numerics;
using Generic;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// An element sort algorithm for the <see cref="Ilutp"/> class.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IncompleteLU.cs

@ -31,9 +31,14 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners
{
using System;
using System.Numerics;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// An incomplete, level 0, LU factorization preconditioner.
/// </summary>

11
src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs

@ -377,16 +377,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
{
return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations);
}
#if !PORTABLE
/// <summary>
/// Clone this object
/// </summary>
/// <returns>Object clone</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs

@ -185,16 +185,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
{
return new FailureStopCriterium();
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="FailureStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="FailureStopCriterium"/> class.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

6
src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs

@ -26,7 +26,6 @@
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
{
using System;
using Generic.Solvers.Status;
using Generic.Solvers.StopCriterium;
@ -34,9 +33,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
/// The base interface for classes that provide stop criteria for iterative calculations.
/// </summary>
public interface IIterationStopCriterium
#if !PORTABLE
: ICloneable
#endif
{
/// <summary>
/// Determines the status of the iterative calculation based on the stop criteria stored
@ -73,8 +69,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
/// </summary>
StopLevel StopLevel { get; }
#if PORTABLE
IIterationStopCriterium Clone();
#endif
}
}

11
src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs

@ -211,16 +211,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
{
return new IterationCountStopCriterium(_maximumNumberOfIterations);
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="IterationCountStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="IterationCountStopCriterium"/> object.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs

@ -393,16 +393,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
{
return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum);
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="ResidualStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="ResidualStopCriterium"/> object.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

7
src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs

@ -35,7 +35,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Numerics;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A Matrix with sparse storage, intended for very large matrices where most of the cells are zero.

7
src/Numerics/LinearAlgebra/Complex/SparseVector.cs

@ -36,9 +36,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using Threading;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// A vector with sparse storage, intended for very large vectors where most of the cells are zero.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex/Vector.cs

@ -31,11 +31,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex
{
using System;
using System.Numerics;
using Generic;
using Storage;
using Threading;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <c>Complex</c> version of the <see cref="Vector{T}"/> class.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex32/Factorization/Evd.cs

@ -27,10 +27,15 @@
namespace MathNet.Numerics.LinearAlgebra.Complex32.Factorization
{
using System;
using System.Numerics;
using Generic.Factorization;
using Numerics;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a real matrix.
/// </summary>

7
src/Numerics/LinearAlgebra/Complex32/Factorization/UserEvd.cs

@ -30,11 +30,16 @@
namespace MathNet.Numerics.LinearAlgebra.Complex32.Factorization
{
using System;
using System.Numerics;
using Generic;
using Numerics;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a complex matrix.
/// </summary>

5
src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs

@ -38,9 +38,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
/// Defines the base interface for iterators that help control an iterative calculation.
/// </summary>
public interface IIterator
#if !PORTABLE
: ICloneable
#endif
{
/// <summary>
/// Adds an <see cref="IIterationStopCriterium"/> to the internal collection of stop-criteria. Only a
@ -101,8 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
/// </remarks>
void ResetToPrecalculationState();
#if PORTABLE
IIterator Clone();
#endif
}
}

13
src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs

@ -307,19 +307,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
/// <returns>The deep clone of the current iterator.</returns>
public IIterator Clone()
{
var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => (IIterationStopCriterium)stopCriterium.Clone()).ToList();
var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList();
return new Iterator(stopCriteria);
}
#if !PORTABLE
/// <summary>
/// Creates a deep clone of the current iterator.
/// </summary>
/// <returns>The deep clone of the current iterator.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs

@ -377,16 +377,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium
{
return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations);
}
#if !PORTABLE
/// <summary>
/// Clone this object
/// </summary>
/// <returns>Object clone</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs

@ -185,16 +185,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium
{
return new FailureStopCriterium();
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="FailureStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="FailureStopCriterium"/> class.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

6
src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs

@ -26,7 +26,6 @@
namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium
{
using System;
using Generic.Solvers.Status;
using Generic.Solvers.StopCriterium;
@ -34,9 +33,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium
/// The base interface for classes that provide stop criteria for iterative calculations.
/// </summary>
public interface IIterationStopCriterium
#if !PORTABLE
: ICloneable
#endif
{
/// <summary>
/// Determines the status of the iterative calculation based on the stop criteria stored
@ -73,8 +69,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium
/// </summary>
StopLevel StopLevel { get; }
#if PORTABLE
IIterationStopCriterium Clone();
#endif
}
}

11
src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs

@ -211,16 +211,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium
{
return new IterationCountStopCriterium(_maximumNumberOfIterations);
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="IterationCountStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="IterationCountStopCriterium"/> object.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs

@ -393,16 +393,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium
{
return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum);
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="ResidualStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="ResidualStopCriterium"/> object.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

13
src/Numerics/LinearAlgebra/Double/Factorization/DenseEvd.cs

@ -31,10 +31,15 @@
namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a real matrix.
/// </summary>
@ -1092,14 +1097,14 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
/// <param name="yreal">Real part of Y</param>
/// <param name="yimag">Imaginary part of Y</param>
/// <returns>Division result as a <see cref="Complex"/> number.</returns>
static System.Numerics.Complex Cdiv(double xreal, double ximag, double yreal, double yimag)
static Complex Cdiv(double xreal, double ximag, double yreal, double yimag)
{
if (Math.Abs(yimag) < Math.Abs(yreal))
{
return new System.Numerics.Complex((xreal + (ximag*(yimag/yreal)))/(yreal + (yimag*(yimag/yreal))), (ximag - (xreal*(yimag/yreal)))/(yreal + (yimag*(yimag/yreal))));
return new Complex((xreal + (ximag*(yimag/yreal)))/(yreal + (yimag*(yimag/yreal))), (ximag - (xreal*(yimag/yreal)))/(yreal + (yimag*(yimag/yreal))));
}
return new System.Numerics.Complex((ximag + (xreal*(yreal/yimag)))/(yimag + (yreal*(yreal/yimag))), (-xreal + (ximag*(yreal/yimag)))/(yimag + (yreal*(yreal/yimag))));
return new Complex((ximag + (xreal*(yreal/yimag)))/(yimag + (yreal*(yreal/yimag))), (-xreal + (ximag*(yreal/yimag)))/(yimag + (yreal*(yreal/yimag))));
}
/// <summary>

7
src/Numerics/LinearAlgebra/Double/Factorization/Evd.cs

@ -26,9 +26,14 @@
namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
{
using System.Numerics;
using Generic.Factorization;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a real matrix.
/// </summary>

7
src/Numerics/LinearAlgebra/Double/Factorization/UserEvd.cs

@ -30,10 +30,15 @@
namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
{
using System;
using System.Numerics;
using Generic;
using Properties;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a real matrix.
/// </summary>

5
src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs

@ -38,9 +38,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
/// Defines the base interface for iterators that help control an iterative calculation.
/// </summary>
public interface IIterator
#if !PORTABLE
: ICloneable
#endif
{
/// <summary>
/// Adds an <see cref="IIterationStopCriterium"/> to the internal collection of stop-criteria. Only a
@ -101,8 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
/// </remarks>
void ResetToPrecalculationState();
#if PORTABLE
IIterator Clone();
#endif
}
}

13
src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs

@ -307,19 +307,8 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
/// <returns>The deep clone of the current iterator.</returns>
public IIterator Clone()
{
var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => (IIterationStopCriterium)stopCriterium.Clone()).ToList();
var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList();
return new Iterator(stopCriteria);
}
#if !PORTABLE
/// <summary>
/// Creates a deep clone of the current iterator.
/// </summary>
/// <returns>The deep clone of the current iterator.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs

@ -377,16 +377,5 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
{
return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations);
}
#if !PORTABLE
/// <summary>
/// Clone this object
/// </summary>
/// <returns>Object clone</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs

@ -185,16 +185,5 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
{
return new FailureStopCriterium();
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="FailureStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="FailureStopCriterium"/> class.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

6
src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs

@ -26,7 +26,6 @@
namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
{
using System;
using Generic.Solvers.Status;
using Generic.Solvers.StopCriterium;
@ -34,9 +33,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
/// The base interface for classes that provide stop criteria for iterative calculations.
/// </summary>
public interface IIterationStopCriterium
#if !PORTABLE
: ICloneable
#endif
{
/// <summary>
/// Determines the status of the iterative calculation based on the stop criteria stored
@ -73,8 +69,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
/// </summary>
StopLevel StopLevel { get; }
#if PORTABLE
IIterationStopCriterium Clone();
#endif
}
}

11
src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs

@ -211,16 +211,5 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
{
return new IterationCountStopCriterium(_maximumNumberOfIterations);
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="IterationCountStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="IterationCountStopCriterium"/> object.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

11
src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs

@ -393,16 +393,5 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
{
return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum);
}
#if !PORTABLE
/// <summary>
/// Clones the current <see cref="ResidualStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="ResidualStopCriterium"/> object.</returns>
object ICloneable.Clone()
{
return Clone();
}
#endif
}
}

14
src/Numerics/LinearAlgebra/Generic/Common.cs

@ -33,6 +33,12 @@ namespace MathNet.Numerics.LinearAlgebra
{
using System;
#if NOSYSNUMERICS
using Complex64 = Numerics.Complex;
#else
using Complex64 = System.Numerics.Complex;
#endif
/// <summary>
/// A setup functions to help simplify the generic code.
/// </summary>
@ -45,9 +51,9 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>The value of <c>1.0</c> for type T.</returns>
public static T OneOf<T>()
{
if (typeof(T) == typeof(System.Numerics.Complex))
if (typeof(T) == typeof(Complex64))
{
return (T)(object)System.Numerics.Complex.One;
return (T)(object)Complex64.One;
}
if (typeof(T) == typeof(Numerics.Complex32))
@ -75,9 +81,9 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>The value of <c>0.0</c> for type T.</returns>
public static T ZeroOf<T>()
{
if (typeof(T) == typeof(System.Numerics.Complex))
if (typeof(T) == typeof(Complex64))
{
return (T)(object)System.Numerics.Complex.Zero;
return (T)(object)Complex64.Zero;
}
if (typeof(T) == typeof(Numerics.Complex32))

7
src/Numerics/LinearAlgebra/Generic/Factorization/Cholesky.cs

@ -31,10 +31,15 @@
namespace MathNet.Numerics.LinearAlgebra.Generic.Factorization
{
using System;
using System.Numerics;
using Generic;
using Numerics;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// <para>A class which encapsulates the functionality of a Cholesky factorization.</para>
/// <para>For a symmetric, positive definite matrix A, the Cholesky factorization

7
src/Numerics/LinearAlgebra/Generic/Factorization/Evd.cs

@ -31,10 +31,15 @@
namespace MathNet.Numerics.LinearAlgebra.Generic.Factorization
{
using System;
using System.Numerics;
using Generic;
using Numerics;
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Eigenvalues and eigenvectors of a real matrix.
/// </summary>

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

Loading…
Cancel
Save