diff --git a/src/FSharp/BigIntegerExtensions.fs b/src/FSharp/BigIntegerExtensions.fs index 16525cfa..3260b207 100644 --- a/src/FSharp/BigIntegerExtensions.fs +++ b/src/FSharp/BigIntegerExtensions.fs @@ -1,9 +1,9 @@ namespace System.Numerics -open System - #if PORTABLE +open System + [] module BigIntegerExtensions = diff --git a/src/FSharp/Complex.fs b/src/FSharp/Complex.fs index cfe96299..d75acea2 100644 --- a/src/FSharp/Complex.fs +++ b/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 diff --git a/src/FSharp/Complex.fsi b/src/FSharp/Complex.fsi index c2ffadb7..8b43e22c 100644 --- a/src/FSharp/Complex.fsi +++ b/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 diff --git a/src/FSharpPortable/FSharpPortable.fsproj b/src/FSharpPortable/FSharpPortable.fsproj index 2e162cb5..fa1bac01 100644 --- a/src/FSharpPortable/FSharpPortable.fsproj +++ b/src/FSharpPortable/FSharpPortable.fsproj @@ -19,7 +19,7 @@ false false ..\..\out\debug\Portable\ - TRACE;DEBUG;PORTABLE + TRACE;DEBUG;PORTABLE;NOSYSNUMERICS 3 @@ -29,7 +29,7 @@ true true ..\..\out\lib\Portable\ - TRACE;PORTABLE + TRACE;PORTABLE;NOSYSNUMERICS 3 ..\..\out\lib\Portable\MathNet.Numerics.FSharp.XML diff --git a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex.cs b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex.cs index 358bf001..1d4d3132 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex.cs @@ -24,7 +24,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEACML using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex32.cs b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex32.cs index 5e826a90..815bf007 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex32.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.Complex32.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEACML using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.double.cs b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.double.cs index cc002112..b8712326 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.double.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.double.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEACML using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.float.cs b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.float.cs index c18f0251..bde76883 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.float.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Acml/AcmlLinearAlgebraProvider.float.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEACML using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/Acml/SafeNativeMethods.cs b/src/Numerics/Algorithms/LinearAlgebra/Acml/SafeNativeMethods.cs index eafbaf39..5a42a4be 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Acml/SafeNativeMethods.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Acml/SafeNativeMethods.cs @@ -26,7 +26,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#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 } } diff --git a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Common.cs b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Common.cs index 3d0b5c2e..de2afed2 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Common.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Common.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEGOTO namespace MathNet.Numerics.Algorithms.LinearAlgebra.GotoBlas { diff --git a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex.cs b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex.cs index 30f128ba..1215cb31 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEGOTO using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex32.cs b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex32.cs index 7780b15f..5ce0d7a9 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex32.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.Complex32.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEGOTO using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.double.cs b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.double.cs index 8a024eb2..60dcd005 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.double.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.double.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEGOTO using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.float.cs b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.float.cs index 14ef9851..6a938965 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.float.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/GotoBlasLinearAlgebraProvider.float.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEGOTO using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/SafeNativeMethods.cs b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/SafeNativeMethods.cs index 977982c8..4176ec91 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/SafeNativeMethods.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/GotoBlas/SafeNativeMethods.cs @@ -26,7 +26,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#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 } } diff --git a/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProvider.cs b/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProvider.cs index 4138835f..a7dbb5b2 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProvider.cs +++ b/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 /// /// Interface to linear algebra algorithms that work off 1-D arrays. diff --git a/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs b/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs index a6005e41..7c4e4fdf 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/ILinearAlgebraProviderOfT.cs @@ -30,8 +30,6 @@ using MathNet.Numerics.LinearAlgebra.Generic.Factorization; namespace MathNet.Numerics.Algorithms.LinearAlgebra { - using System.Numerics; - /// /// How to transpose a matrix. /// @@ -83,7 +81,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra /// /// Interface to linear algebra algorithms that work off 1-D arrays. /// - /// Supported data types are double, single, , and . + /// Supported data types are double, single, Complex, and Complex32. public interface ILinearAlgebraProvider where T : struct { diff --git a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs index f7a83813..4e2163bb 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs +++ b/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 + /// /// The managed linear algebra provider. /// diff --git a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs index 5cff5024..27ef831e 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs +++ b/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 + /// /// The managed linear algebra provider. /// diff --git a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs index 423c51e3..2ee35577 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs +++ b/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 + /// /// The managed linear algebra provider. /// diff --git a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs b/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs index dbdbfce7..ccfcb4ad 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs +++ b/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 + /// /// The managed linear algebra provider. /// diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs index 003dc9c4..2b501330 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Common.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEMKL namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl { diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex.cs index 214ea704..ae5e9805 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEMKL using MathNet.Numerics.LinearAlgebra.Generic.Factorization; diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex32.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex32.cs index 618ee2f2..4baaa95c 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex32.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.Complex32.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEMKL namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl { diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.double.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.double.cs index 4296dde3..4a1d0432 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.double.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.double.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEMKL namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl { diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.float.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.float.cs index d34b8cad..67f1ab7c 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.float.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/MklLinearAlgebraProvider.float.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if NATIVEMKL namespace MathNet.Numerics.Algorithms.LinearAlgebra.Mkl { diff --git a/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs b/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs index 98438087..b4a89e5f 100644 --- a/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs +++ b/src/Numerics/Algorithms/LinearAlgebra/Mkl/SafeNativeMethods.cs @@ -26,7 +26,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#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 } } diff --git a/src/Numerics/ArrayExtensions.cs b/src/Numerics/ArrayExtensions.cs index efd017cc..47bf5fc6 100644 --- a/src/Numerics/ArrayExtensions.cs +++ b/src/Numerics/ArrayExtensions.cs @@ -31,7 +31,10 @@ namespace MathNet.Numerics { using System; - using System.Numerics; + +#if !NOSYSNUMERICS + using Complex = System.Numerics.Complex; +#endif /// /// Useful extension methods for Arrays. diff --git a/src/Numerics/Complex32.cs b/src/Numerics/Complex32.cs index 7e58168a..b3468b54 100644 --- a/src/Numerics/Complex32.cs +++ b/src/Numerics/Complex32.cs @@ -28,17 +28,23 @@ // OTHER DEALINGS IN THE SOFTWARE. // - 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 + /// /// 32-bit single precision complex numbers class. /// @@ -1199,7 +1205,7 @@ namespace MathNet.Numerics return new Complex32(value, 0.0f); } -#if !PORTABLE +#if !NOSYSNUMERICS /// /// Implicit conversion of a BigInteger int to a Complex32. /// @@ -1277,7 +1283,7 @@ namespace MathNet.Numerics /// /// Returns the additive inverse of a specified complex number. /// - /// The result of the and components of the parameter multiplied by -1. + /// The result of the real and imaginary components of the value parameter multiplied by -1. /// A complex number. [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] public static Complex32 Negate(Complex32 value) diff --git a/src/Numerics/Complex64.cs b/src/Numerics/Complex64.cs index 24468c13..18e2e606 100644 --- a/src/Numerics/Complex64.cs +++ b/src/Numerics/Complex64.cs @@ -28,15 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#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; /// /// 64-bit double precision complex numbers class. @@ -120,25 +119,25 @@ namespace System.Numerics } /// - /// Returns a new instance + /// Returns a new Complex instance /// with a real number equal to zero and an imaginary number equal to zero. /// public static readonly Complex Zero = new Complex(0.0f, 0.0f); /// - /// Returns a new instance + /// Returns a new Complex instance /// with a real number equal to one and an imaginary number equal to zero. /// public static readonly Complex One = new Complex(1.0f, 0.0f); /// - /// Returns a new instance + /// Returns a new Complex instance /// with a real number equal to zero and an imaginary number equal to one. /// public static readonly Complex ImaginaryOne = new Complex(0, 1); /// - /// Returns a new instance + /// Returns a new Complex instance /// with real and imaginary numbers positive infinite. /// public static readonly Complex PositiveInfinity = new Complex(float.PositiveInfinity, float.PositiveInfinity); @@ -147,7 +146,7 @@ namespace System.Numerics public static readonly Complex Infinity = PositiveInfinity; /// - /// Returns a new instance + /// Returns a new Complex instance /// with real and imaginary numbers not a number. /// public static readonly Complex NaN = new Complex(float.NaN, float.NaN); diff --git a/src/Numerics/ComplexExtensions.cs b/src/Numerics/ComplexExtensions.cs index 19c8e03f..72a2203c 100644 --- a/src/Numerics/ComplexExtensions.cs +++ b/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 + /// /// Extension methods for the Complex type provided by System.Numerics /// diff --git a/src/Numerics/Control.cs b/src/Numerics/Control.cs index 30c1e802..9f3a11c9 100644 --- a/src/Numerics/Control.cs +++ b/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 } diff --git a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Bluestein.cs b/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Bluestein.cs index 43ff122f..aa1a4ec1 100644 --- a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Bluestein.cs +++ b/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 + /// /// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). /// diff --git a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Naive.cs b/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Naive.cs index 3db327da..4c2b890d 100644 --- a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Naive.cs +++ b/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 + /// /// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). /// diff --git a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Options.cs b/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Options.cs index 801821a3..b13366c1 100644 --- a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.Options.cs +++ b/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 /// /// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). diff --git a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.RadixN.cs b/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.RadixN.cs index 044c9588..97503331 100644 --- a/src/Numerics/IntegralTransforms/Algorithms/DiscreteFourierTransform.RadixN.cs +++ b/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 + /// /// Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). /// diff --git a/src/Numerics/IntegralTransforms/Transform.cs b/src/Numerics/IntegralTransforms/Transform.cs index d9494bd3..0a2480f9 100644 --- a/src/Numerics/IntegralTransforms/Transform.cs +++ b/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 + /// /// Integral Transforms (including FFT). /// diff --git a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs index 7b2fb10f..924285d6 100644 --- a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs +++ b/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 /// /// A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). diff --git a/src/Numerics/LinearAlgebra/Complex/DenseVector.cs b/src/Numerics/LinearAlgebra/Complex/DenseVector.cs index 9c8e36f7..e4f471d6 100644 --- a/src/Numerics/LinearAlgebra/Complex/DenseVector.cs +++ b/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 + /// /// A vector using dense storage. /// diff --git a/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs index 76af3b3d..e233ffa8 100644 --- a/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs +++ b/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 /// /// A matrix type for diagonal matrices. diff --git a/src/Numerics/LinearAlgebra/Complex/ExtensionMethods.cs b/src/Numerics/LinearAlgebra/Complex/ExtensionMethods.cs index fb5e2c8d..ed8b14b2 100644 --- a/src/Numerics/LinearAlgebra/Complex/ExtensionMethods.cs +++ b/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 + /// /// Extension methods which return factorizations for the various matrix classes. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/Cholesky.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/Cholesky.cs index c41d2659..43321cc3 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/Cholesky.cs +++ b/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 + /// /// A class which encapsulates the functionality of a Cholesky factorization. /// For a symmetric, positive definite matrix A, the Cholesky factorization diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseCholesky.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/DenseCholesky.cs index 9d09c5c7..7e055269 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseCholesky.cs +++ b/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 /// /// A class which encapsulates the functionality of a Cholesky factorization for dense matrices. diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseEvd.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/DenseEvd.cs index 9b68ab59..d02462ed 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseEvd.cs +++ b/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 /// /// 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. - 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. /// - 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. - 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. - 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. - 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 /// /// The right hand side , B. /// The left hand side , X. - public override void Solve(Matrix input, Matrix result) + public override void Solve(Matrix input, Matrix 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 /// /// The right hand side vector, b. /// The left hand side , x. - public override void Solve(Vector input, Vector result) + public override void Solve(Vector input, Vector 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++) { diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseGramSchmidt.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/DenseGramSchmidt.cs index 318a3ea3..dd16c2e9 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseGramSchmidt.cs +++ b/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 + /// /// A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. /// 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. diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseLU.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/DenseLU.cs index 9bde144e..d929a33e 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseLU.cs +++ b/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 /// /// A class which encapsulates the functionality of an LU factorization. diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseQR.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/DenseQR.cs index e88d62ee..f13edc17 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseQR.cs +++ b/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 + /// /// A class which encapsulates the functionality of the QR decomposition. /// Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseSvd.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/DenseSvd.cs index 972502f6..74cbcf1c 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/DenseSvd.cs +++ b/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 + /// /// A class which encapsulates the functionality of the singular value decomposition (SVD) for . /// Suppose M is an m-by-n matrix whose entries are real numbers. diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/Evd.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/Evd.cs index 77c63a7a..2f112ab1 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/Evd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/GramSchmidt.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/GramSchmidt.cs index ffcff930..1e4ab0be 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/GramSchmidt.cs +++ b/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 + /// /// A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. /// 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. diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/LU.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/LU.cs index 47333fa0..f717a561 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/LU.cs +++ b/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 + /// /// A class which encapsulates the functionality of an LU factorization. /// For a matrix A, the LU factorization is a pair of lower triangular matrix L and diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/QR.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/QR.cs index 95919f1e..eadce8cc 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/QR.cs +++ b/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 + /// /// A class which encapsulates the functionality of the QR decomposition. /// Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/Svd.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/Svd.cs index 07581bff..7c37321a 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/Svd.cs +++ b/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 + /// /// A class which encapsulates the functionality of the singular value decomposition (SVD). /// Suppose M is an m-by-n matrix whose entries are real numbers. diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/UserCholesky.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/UserCholesky.cs index 9d63eff4..56e8c0cc 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/UserCholesky.cs +++ b/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 + /// /// A class which encapsulates the functionality of a Cholesky factorization for user matrices. /// For a symmetric, positive definite matrix A, the Cholesky factorization diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/UserEvd.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/UserEvd.cs index 94369877..0fcafef5 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/UserEvd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a complex matrix. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/UserGramSchmidt.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/UserGramSchmidt.cs index 537d2a3d..22a9311f 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/UserGramSchmidt.cs +++ b/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 + /// /// A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. /// 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. diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/UserLU.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/UserLU.cs index 65060cb7..e0c94163 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/UserLU.cs +++ b/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 + /// /// A class which encapsulates the functionality of an LU factorization. /// For a matrix A, the LU factorization is a pair of lower triangular matrix L and diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/UserQR.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/UserQR.cs index 2eba8cd0..ddec19d9 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/UserQR.cs +++ b/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 + /// /// A class which encapsulates the functionality of the QR decomposition. /// Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix diff --git a/src/Numerics/LinearAlgebra/Complex/Factorization/UserSvd.cs b/src/Numerics/LinearAlgebra/Complex/Factorization/UserSvd.cs index 22ce6cd6..b705a084 100644 --- a/src/Numerics/LinearAlgebra/Complex/Factorization/UserSvd.cs +++ b/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 + /// /// A class which encapsulates the functionality of the singular value decomposition (SVD) for . /// Suppose M is an m-by-n matrix whose entries are real numbers. diff --git a/src/Numerics/LinearAlgebra/Complex/Matrix.cs b/src/Numerics/LinearAlgebra/Complex/Matrix.cs index 96c79790..70296b71 100644 --- a/src/Numerics/LinearAlgebra/Complex/Matrix.cs +++ b/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 + /// /// Complex version of the class. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs index 1e305933..6ced8251 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs +++ b/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. /// public interface IIterator -#if !PORTABLE - : ICloneable -#endif { /// /// Adds an to the internal collection of stop-criteria. Only a @@ -101,8 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// void ResetToPrecalculationState(); -#if PORTABLE IIterator Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs index 4e94f920..2293b2ee 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs +++ b/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 + /// /// A Bi-Conjugate Gradient stabilized iterative matrix solver. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs index d738b4ab..2584d40a 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs +++ b/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 + /// /// A Generalized Product Bi-Conjugate Gradient iterative matrix solver. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs index de1eb61e..f6d0f7db 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs +++ b/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 + /// /// A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs index dee85b70..785411ec 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs +++ b/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 + /// /// A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs index a973ed26..bf38da2b 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs @@ -307,19 +307,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// The deep clone of the current iterator. 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 - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - object ICloneable.Clone() - { - return Clone(); - } - #endif } } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Diagonal.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Diagonal.cs index 8c9d74d9..c6c18c69 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Diagonal.cs +++ b/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 + /// /// A diagonal preconditioner. The preconditioner uses the inverse /// of the matrix diagonal as preconditioning values. diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Ilutp.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Ilutp.cs index dddf4e16..b0e9c71c 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/Ilutp.cs +++ b/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 + /// /// This class performs an Incomplete LU factorization with drop tolerance /// and partial pivoting. The drop tolerance indicates which additional entries diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IlutpElementSorter.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IlutpElementSorter.cs index fa06ddd4..62ce1a3b 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IlutpElementSorter.cs +++ b/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 + /// /// An element sort algorithm for the class. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IncompleteLU.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IncompleteLU.cs index 94631b18..bc9b8e0f 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Preconditioners/IncompleteLU.cs +++ b/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 + /// /// An incomplete, level 0, LU factorization preconditioner. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs index 3c37e941..f2454e9b 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/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 - /// - /// Clone this object - /// - /// Object clone - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs index 8714fe85..dbcdbdb8 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs @@ -185,16 +185,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium { return new FailureStopCriterium(); } - -#if !PORTABLE - /// - /// Clones the current and its settings. - /// - /// A new instance of the class. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs index 34835820..90a937ed 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs +++ b/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. /// public interface IIterationStopCriterium -#if !PORTABLE - : ICloneable -#endif { /// /// Determines the status of the iterative calculation based on the stop criteria stored @@ -73,8 +69,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// StopLevel StopLevel { get; } -#if PORTABLE IIterationStopCriterium Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs index 7332905c..e5948024 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/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 - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs index 6c38c644..21812d83 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/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 - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs index f051f433..7d304548 100644 --- a/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs +++ b/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 /// /// A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. diff --git a/src/Numerics/LinearAlgebra/Complex/SparseVector.cs b/src/Numerics/LinearAlgebra/Complex/SparseVector.cs index aef6c753..ea687bf4 100644 --- a/src/Numerics/LinearAlgebra/Complex/SparseVector.cs +++ b/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 + /// /// A vector with sparse storage, intended for very large vectors where most of the cells are zero. /// diff --git a/src/Numerics/LinearAlgebra/Complex/Vector.cs b/src/Numerics/LinearAlgebra/Complex/Vector.cs index dfd1826a..c26df4a7 100644 --- a/src/Numerics/LinearAlgebra/Complex/Vector.cs +++ b/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 + /// /// Complex version of the class. /// diff --git a/src/Numerics/LinearAlgebra/Complex32/Factorization/Evd.cs b/src/Numerics/LinearAlgebra/Complex32/Factorization/Evd.cs index b268eaaf..471aab25 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Factorization/Evd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Complex32/Factorization/UserEvd.cs b/src/Numerics/LinearAlgebra/Complex32/Factorization/UserEvd.cs index 30ebf305..7b18a7cf 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Factorization/UserEvd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a complex matrix. /// diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs index 405b1197..6fed7a21 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs +++ b/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. /// public interface IIterator -#if !PORTABLE - : ICloneable -#endif { /// /// Adds an to the internal collection of stop-criteria. Only a @@ -101,8 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// void ResetToPrecalculationState(); -#if PORTABLE IIterator Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs index 3b5f2591..a3f4ac84 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs @@ -307,19 +307,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// The deep clone of the current iterator. 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 - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs index 6a3fd1ee..5c0852dc 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/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 - /// - /// Clone this object - /// - /// Object clone - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs index f733dca3..e2a48213 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs @@ -185,16 +185,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium { return new FailureStopCriterium(); } - -#if !PORTABLE - /// - /// Clones the current and its settings. - /// - /// A new instance of the class. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs index 7deab9e7..93644fe0 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs +++ b/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. /// public interface IIterationStopCriterium -#if !PORTABLE - : ICloneable -#endif { /// /// Determines the status of the iterative calculation based on the stop criteria stored @@ -73,8 +69,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// StopLevel StopLevel { get; } -#if PORTABLE IIterationStopCriterium Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs index 84db0e05..3ca44b0f 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/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 - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs index 88312e59..fa4d5afa 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/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 - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Double/Factorization/DenseEvd.cs b/src/Numerics/LinearAlgebra/Double/Factorization/DenseEvd.cs index 6ef6cae2..c6e2af57 100644 --- a/src/Numerics/LinearAlgebra/Double/Factorization/DenseEvd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a real matrix. /// @@ -1092,14 +1097,14 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization /// Real part of Y /// Imaginary part of Y /// Division result as a number. - 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)))); } /// diff --git a/src/Numerics/LinearAlgebra/Double/Factorization/Evd.cs b/src/Numerics/LinearAlgebra/Double/Factorization/Evd.cs index 343814ab..d87b523d 100644 --- a/src/Numerics/LinearAlgebra/Double/Factorization/Evd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Double/Factorization/UserEvd.cs b/src/Numerics/LinearAlgebra/Double/Factorization/UserEvd.cs index a60af1ad..95796dba 100644 --- a/src/Numerics/LinearAlgebra/Double/Factorization/UserEvd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs index 3a500db8..f595021b 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs +++ b/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. /// public interface IIterator -#if !PORTABLE - : ICloneable -#endif { /// /// Adds an to the internal collection of stop-criteria. Only a @@ -101,8 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// void ResetToPrecalculationState(); -#if PORTABLE IIterator Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs index 4d318928..dfcd936d 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs @@ -307,19 +307,8 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// The deep clone of the current iterator. 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 - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs index e36fd566..a6b9db1f 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/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 - /// - /// Clone this object - /// - /// Object clone - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs index 75267b66..5e447746 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs @@ -185,16 +185,5 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium { return new FailureStopCriterium(); } - -#if !PORTABLE - /// - /// Clones the current and its settings. - /// - /// A new instance of the class. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs index f207ba5a..e58545dc 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs +++ b/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. /// public interface IIterationStopCriterium -#if !PORTABLE - : ICloneable -#endif { /// /// Determines the status of the iterative calculation based on the stop criteria stored @@ -73,8 +69,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// StopLevel StopLevel { get; } -#if PORTABLE IIterationStopCriterium Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs index e42c3d68..7047fc5c 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/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 - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs index 712828b9..5c6b187d 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/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 - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Generic/Common.cs b/src/Numerics/LinearAlgebra/Generic/Common.cs index 8ec5beaa..83f5a820 100644 --- a/src/Numerics/LinearAlgebra/Generic/Common.cs +++ b/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 + /// /// A setup functions to help simplify the generic code. /// @@ -45,9 +51,9 @@ namespace MathNet.Numerics.LinearAlgebra /// The value of 1.0 for type T. public static T OneOf() { - 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 /// The value of 0.0 for type T. public static T ZeroOf() { - 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)) diff --git a/src/Numerics/LinearAlgebra/Generic/Factorization/Cholesky.cs b/src/Numerics/LinearAlgebra/Generic/Factorization/Cholesky.cs index 562cc87b..ed7f5add 100644 --- a/src/Numerics/LinearAlgebra/Generic/Factorization/Cholesky.cs +++ b/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 + /// /// A class which encapsulates the functionality of a Cholesky factorization. /// For a symmetric, positive definite matrix A, the Cholesky factorization diff --git a/src/Numerics/LinearAlgebra/Generic/Factorization/Evd.cs b/src/Numerics/LinearAlgebra/Generic/Factorization/Evd.cs index b14622b2..c59b1e2a 100644 --- a/src/Numerics/LinearAlgebra/Generic/Factorization/Evd.cs +++ b/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 + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Generic/Factorization/GramSchmidt.cs b/src/Numerics/LinearAlgebra/Generic/Factorization/GramSchmidt.cs index 697e96a0..5de3cc4e 100644 --- a/src/Numerics/LinearAlgebra/Generic/Factorization/GramSchmidt.cs +++ b/src/Numerics/LinearAlgebra/Generic/Factorization/GramSchmidt.cs @@ -27,10 +27,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 + /// /// A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. /// 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. diff --git a/src/Numerics/LinearAlgebra/Generic/Factorization/LU.cs b/src/Numerics/LinearAlgebra/Generic/Factorization/LU.cs index 2c351f3a..41d83854 100644 --- a/src/Numerics/LinearAlgebra/Generic/Factorization/LU.cs +++ b/src/Numerics/LinearAlgebra/Generic/Factorization/LU.cs @@ -27,10 +27,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 + /// /// A class which encapsulates the functionality of an LU factorization. /// For a matrix A, the LU factorization is a pair of lower triangular matrix L and diff --git a/src/Numerics/LinearAlgebra/Generic/Factorization/QR.cs b/src/Numerics/LinearAlgebra/Generic/Factorization/QR.cs index 9d4dee24..83912ea7 100644 --- a/src/Numerics/LinearAlgebra/Generic/Factorization/QR.cs +++ b/src/Numerics/LinearAlgebra/Generic/Factorization/QR.cs @@ -27,10 +27,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 + /// /// The type of QR factorization go perform. /// diff --git a/src/Numerics/LinearAlgebra/Generic/Factorization/Svd.cs b/src/Numerics/LinearAlgebra/Generic/Factorization/Svd.cs index aacf0230..ae79faa3 100644 --- a/src/Numerics/LinearAlgebra/Generic/Factorization/Svd.cs +++ b/src/Numerics/LinearAlgebra/Generic/Factorization/Svd.cs @@ -31,11 +31,16 @@ namespace MathNet.Numerics.LinearAlgebra.Generic.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 + /// /// A class which encapsulates the functionality of the singular value decomposition (SVD). /// Suppose M is an m-by-n matrix whose entries are real numbers. diff --git a/src/Numerics/LinearAlgebra/Generic/ISolver.cs b/src/Numerics/LinearAlgebra/Generic/ISolver.cs index 4fd5a216..d7a77320 100644 --- a/src/Numerics/LinearAlgebra/Generic/ISolver.cs +++ b/src/Numerics/LinearAlgebra/Generic/ISolver.cs @@ -32,7 +32,6 @@ namespace MathNet.Numerics.LinearAlgebra.Generic { using System; - using System.Numerics; /// /// Classes that solves a system of linear equations, AX = B. diff --git a/src/Numerics/LinearAlgebra/Generic/Matrix.cs b/src/Numerics/LinearAlgebra/Generic/Matrix.cs index 18354f33..9959bb2c 100644 --- a/src/Numerics/LinearAlgebra/Generic/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Generic/Matrix.cs @@ -36,7 +36,6 @@ namespace MathNet.Numerics.LinearAlgebra.Generic using Storage; using System; using System.Collections.Generic; - using System.Numerics; using System.Runtime; /// diff --git a/src/Numerics/LinearAlgebra/Single/Factorization/DenseEvd.cs b/src/Numerics/LinearAlgebra/Single/Factorization/DenseEvd.cs index 1ac111e9..562e969e 100644 --- a/src/Numerics/LinearAlgebra/Single/Factorization/DenseEvd.cs +++ b/src/Numerics/LinearAlgebra/Single/Factorization/DenseEvd.cs @@ -31,10 +31,15 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Factorization { using System; - using System.Numerics; using Generic; using Properties; +#if NOSYSNUMERICS + using Complex = Numerics.Complex; +#else + using Complex = System.Numerics.Complex; +#endif + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Single/Factorization/Evd.cs b/src/Numerics/LinearAlgebra/Single/Factorization/Evd.cs index 837d1e5f..af65d919 100644 --- a/src/Numerics/LinearAlgebra/Single/Factorization/Evd.cs +++ b/src/Numerics/LinearAlgebra/Single/Factorization/Evd.cs @@ -27,9 +27,14 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Factorization { using System; - using System.Numerics; using Generic.Factorization; +#if NOSYSNUMERICS + using Complex = Numerics.Complex; +#else + using Complex = System.Numerics.Complex; +#endif + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Single/Factorization/UserEvd.cs b/src/Numerics/LinearAlgebra/Single/Factorization/UserEvd.cs index 9246b8a9..49fb348d 100644 --- a/src/Numerics/LinearAlgebra/Single/Factorization/UserEvd.cs +++ b/src/Numerics/LinearAlgebra/Single/Factorization/UserEvd.cs @@ -30,11 +30,16 @@ namespace MathNet.Numerics.LinearAlgebra.Single.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 + /// /// Eigenvalues and eigenvectors of a real matrix. /// diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs index e4f30b7b..801fa697 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs @@ -38,9 +38,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// Defines the base interface for iterators that help control an iterative calculation. /// public interface IIterator -#if !PORTABLE - : ICloneable -#endif { /// /// Adds an to the internal collection of stop-criteria. Only a @@ -101,8 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// void ResetToPrecalculationState(); -#if PORTABLE IIterator Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs index 7d07607e..3f2d0255 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs @@ -307,19 +307,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// The deep clone of the current iterator. 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 - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs index c9dc9aa5..8da980ed 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -377,16 +377,5 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium { return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations); } - -#if !PORTABLE - /// - /// Clone this object - /// - /// Object clone - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs index 12cfa6ab..92a4cc98 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs @@ -185,16 +185,5 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium { return new FailureStopCriterium(); } - -#if !PORTABLE - /// - /// Clones the current and its settings. - /// - /// A new instance of the class. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IIterationStopCriterium.cs index 0ff9d0ce..389ac7bc 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IIterationStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IIterationStopCriterium.cs @@ -26,7 +26,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium { - using System; using Generic.Solvers.Status; using Generic.Solvers.StopCriterium; @@ -34,9 +33,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// The base interface for classes that provide stop criteria for iterative calculations. /// public interface IIterationStopCriterium -#if !PORTABLE - : ICloneable -#endif { /// /// Determines the status of the iterative calculation based on the stop criteria stored @@ -73,8 +69,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// StopLevel StopLevel { get; } -#if PORTABLE IIterationStopCriterium Clone(); -#endif } } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs index 5f4126b3..4db059c8 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs @@ -212,15 +212,5 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium return new IterationCountStopCriterium(_maximumNumberOfIterations); } -#if !PORTABLE - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs index 54e98cd8..8cead811 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -393,16 +393,5 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium { return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum); } - -#if !PORTABLE - /// - /// Clones the current and its settings. - /// - /// A new instance of the object. - object ICloneable.Clone() - { - return Clone(); - } -#endif } } diff --git a/src/Numerics/NumberTheory/IntegerTheory.Euclid.Big.cs b/src/Numerics/NumberTheory/IntegerTheory.Euclid.Big.cs index c277573b..ffb0cf76 100644 --- a/src/Numerics/NumberTheory/IntegerTheory.Euclid.Big.cs +++ b/src/Numerics/NumberTheory/IntegerTheory.Euclid.Big.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -#if !PORTABLE +#if !NOSYSNUMERICS namespace MathNet.Numerics.NumberTheory { using System; diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index b51c7df3..9cde96e1 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -43,7 +43,7 @@ true full false - TRACE;DEBUG + TRACE;DEBUG;NATIVEMKL prompt 4 @@ -57,7 +57,7 @@ false pdbonly true - TRACE + TRACE;NATIVEMKL prompt 4 AllRules.ruleset @@ -71,7 +71,7 @@ pdbonly AnyCPU true - TRACE;STRONGNAME + TRACE;NATIVEMKL;STRONGNAME prompt 4 AllRules.ruleset diff --git a/src/Numerics/Portable.csproj b/src/Numerics/Portable.csproj index 1cb41b61..d04920fa 100644 --- a/src/Numerics/Portable.csproj +++ b/src/Numerics/Portable.csproj @@ -20,7 +20,7 @@ full false ..\..\out\debug\Portable\ - TRACE;DEBUG;PORTABLE + TRACE;DEBUG;PORTABLE;NOSYSNUMERICS prompt 4 @@ -28,7 +28,7 @@ pdbonly true ..\..\out\lib\Portable\ - TRACE;PORTABLE + TRACE;PORTABLE;NOSYSNUMERICS prompt 4 ..\..\out\lib\Portable\MathNet.Numerics.XML @@ -42,7 +42,8 @@ - + + True True diff --git a/src/Numerics/Precision.cs b/src/Numerics/Precision.cs index da6008a1..3f430f9a 100644 --- a/src/Numerics/Precision.cs +++ b/src/Numerics/Precision.cs @@ -32,12 +32,15 @@ namespace MathNet.Numerics { using System; using System.Collections.Generic; - using System.Numerics; #if PORTABLE using System.Runtime.InteropServices; #endif +#if !NOSYSNUMERICS + using Complex = System.Numerics.Complex; +#endif + /// /// Utilities for working with floating point numbers. /// @@ -1818,31 +1821,31 @@ namespace MathNet.Numerics /// /// The value to convert. /// The bit array. - internal static int FloatToInt32Bits(float value) + static int FloatToInt32Bits(float value) { return BitConverter.ToInt32(BitConverter.GetBytes(value), 0); } #if PORTABLE - internal static long DoubleToInt64Bits(double value) + static long DoubleToInt64Bits(double value) { var union = new DoubleLongUnion {Double = value}; return union.Int64; } - internal static double Int64BitsToDouble(long value) + static double Int64BitsToDouble(long value) { var union = new DoubleLongUnion {Int64 = value}; return union.Double; } - internal static double Truncate(double value) + static double Truncate(double value) { return value >= 0.0 ? Math.Floor(value) : Math.Ceiling(value); } [StructLayout(LayoutKind.Explicit)] - public struct DoubleLongUnion + struct DoubleLongUnion { [FieldOffset(0)] public double Double; diff --git a/src/Numerics/SpecialFunctions/Stability.cs b/src/Numerics/SpecialFunctions/Stability.cs index 8955091a..db7101e7 100644 --- a/src/Numerics/SpecialFunctions/Stability.cs +++ b/src/Numerics/SpecialFunctions/Stability.cs @@ -33,7 +33,10 @@ namespace MathNet.Numerics // ReSharper restore CheckNamespace { using System; - using System.Numerics; + +#if !NOSYSNUMERICS + using Complex = System.Numerics.Complex; +#endif public partial class SpecialFunctions { diff --git a/src/Numerics/Trigonometry.cs b/src/Numerics/Trigonometry.cs index dff560ab..c41c86a5 100644 --- a/src/Numerics/Trigonometry.cs +++ b/src/Numerics/Trigonometry.cs @@ -31,7 +31,10 @@ namespace MathNet.Numerics { using System; - using System.Numerics; + +#if !NOSYSNUMERICS + using Complex = System.Numerics.Complex; +#endif /// /// Double-precision trigonometry toolkit.