diff --git a/MathNet.Numerics.Portable.sln b/MathNet.Numerics.Portable.sln
index 7a4ad61d..258bde7a 100644
--- a/MathNet.Numerics.Portable.sln
+++ b/MathNet.Numerics.Portable.sln
@@ -48,6 +48,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharpUnitTests-Portable47"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharpUnitTests-Portable136", "src\FSharpUnitTests\FSharpUnitTests-Portable136.fsproj", "{1A8315AC-BCDA-4294-B994-FDC4FED45BEE}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Numerics-Net35", "src\Numerics\Numerics-Net35.csproj", "{E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -129,6 +131,12 @@ Global
{1A8315AC-BCDA-4294-B994-FDC4FED45BEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A8315AC-BCDA-4294-B994-FDC4FED45BEE}.Release|Any CPU.Build.0 = Release|Any CPU
{1A8315AC-BCDA-4294-B994-FDC4FED45BEE}.Release-Signed|Any CPU.ActiveCfg = Release|Any CPU
+ {E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}.Release-Signed|Any CPU.ActiveCfg = Release-Signed|Any CPU
+ {E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}.Release-Signed|Any CPU.Build.0 = Release-Signed|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/packages/.gitattributes b/packages/.gitattributes
index 374c9471..06a58639 100644
--- a/packages/.gitattributes
+++ b/packages/.gitattributes
@@ -1,3 +1,2 @@
repositories.config text
* -text
-
diff --git a/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nupkg b/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nupkg
new file mode 100644
index 00000000..bacb7313
Binary files /dev/null and b/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nupkg differ
diff --git a/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nuspec b/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nuspec
new file mode 100644
index 00000000..38f0b905
--- /dev/null
+++ b/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nuspec
@@ -0,0 +1,24 @@
+
+
+
+ TaskParallelLibrary
+ 1.0.2856.0
+ Task Parallel Library for .NET 3.5
+ Microsoft Corporation
+ Microsoft Corporation
+ http://go.microsoft.com/fwlink/?LinkID=186234
+ http://msdn.microsoft.com/en-us/library/dd460717.aspx
+ http://i.msdn.microsoft.com/ee402630.NET_lg.png
+ true
+ The package includes:
+* Task<T> for executing asynchronous operations.
+* Concurrent Collections such as ConcurrentStack, ConcurentQueue ad ConcurrentDictionary.
+* PLINQ for writing parallel queries.
+* additional Threading operations such as Barrier,SpinLock and SpinWait.
+ A complete and official Microsoft backport of the Task Parallel Library (TPL) for .NET 3.5.
+ This backport was shipped with the Reactive Extensions (Rx) library up until v1.0.2856.0. It can be downloaded from http://www.microsoft.com/download/en/details.aspx?id=24940 .
+
+
+ tpl plinq pfx task parallel extensions .net35 backport
+
+
\ No newline at end of file
diff --git a/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.chm b/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.chm
new file mode 100644
index 00000000..bdfbdef5
Binary files /dev/null and b/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.chm differ
diff --git a/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.dll b/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.dll
new file mode 100644
index 00000000..0230d71d
Binary files /dev/null and b/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.dll differ
diff --git a/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/redist.txt b/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/redist.txt
new file mode 100644
index 00000000..c7972d81
--- /dev/null
+++ b/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/redist.txt
@@ -0,0 +1,11 @@
+The files below can be distributed as described in the MICROSOFT REACTIVE EXTENSTIONS FOR JAVASCRIPT AND .NET LIBRARIES License.
+
+System.Observable.dll
+System.CoreEx.dll
+System.Reactive.dll
+System.Interactive.dll
+System.Threading.dll
+System.Linq.Async.dll
+System.Reactive.Testing.dll
+System.Reactive.ClientProfile.dll
+System.Reactive.ExtendedProfile.dll
diff --git a/packages/repositories.config b/packages/repositories.config
index f7c3c813..0328adea 100644
--- a/packages/repositories.config
+++ b/packages/repositories.config
@@ -1,6 +1,7 @@
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Numerics/Compatibility.cs b/src/Numerics/Compatibility.cs
new file mode 100644
index 00000000..5f2cd8da
--- /dev/null
+++ b/src/Numerics/Compatibility.cs
@@ -0,0 +1,91 @@
+#if PORTABLE
+namespace MathNet.Numerics
+{
+ using System;
+
+ [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
+ public class SerializableAttribute : Attribute
+ {
+ }
+
+ [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
+ public class SpecialNameAttribute : Attribute
+ {
+ }
+}
+#endif
+
+#if (PORTABLE || NET35)
+namespace MathNet.Numerics
+{
+ using System;
+
+ [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
+ public class TargetedPatchingOptOutAttribute : Attribute
+ {
+ public string Reason { get; private set; }
+
+ public TargetedPatchingOptOutAttribute(string reason)
+ {
+ Reason = reason;
+ }
+ }
+}
+#endif
+
+#if NET35
+namespace MathNet.Numerics
+{
+ using System;
+ using System.Collections.Generic;
+
+ public class Tuple
+ {
+ public T1 Item1 { get; set; }
+ public T2 Item2 { get; set; }
+
+ public Tuple(T1 Item1, T2 Item2)
+ {
+ this.Item1 = Item1;
+ this.Item2 = Item2;
+ }
+ }
+
+ public class Tuple
+ {
+ public T1 Item1 { get; set; }
+ public T2 Item2 { get; set; }
+ public T3 Item3 { get; set; }
+
+ public Tuple(T1 Item1, T2 Item2, T3 Item3)
+ {
+ this.Item1 = Item1;
+ this.Item2 = Item2;
+ this.Item3 = Item3;
+ }
+ }
+
+ public static class EnumerableExtensions
+ {
+ public static IEnumerable Zip(this IEnumerable seqA, IEnumerable seqB, Func func)
+ {
+ if (seqA == null) throw new ArgumentNullException("seqA");
+ if (seqB == null) throw new ArgumentNullException("seqB");
+
+ return Zip35Deferred(seqA, seqB, func);
+ }
+
+ private static IEnumerable Zip35Deferred(IEnumerable seqA, IEnumerable seqB, Func func)
+ {
+ using (var iteratorA = seqA.GetEnumerator())
+ using (var iteratorB = seqB.GetEnumerator())
+ {
+ while (iteratorA.MoveNext() && iteratorB.MoveNext())
+ {
+ yield return func(iteratorA.Current, iteratorB.Current);
+ }
+ }
+ }
+ }
+}
+#endif
diff --git a/src/Numerics/Complex64.cs b/src/Numerics/Complex64.cs
index 49f7f391..d6ac877c 100644
--- a/src/Numerics/Complex64.cs
+++ b/src/Numerics/Complex64.cs
@@ -698,7 +698,11 @@ namespace MathNet.Numerics
}
}
- var value = GlobalizationHelper.ParseSingle(ref token);
+#if PORTABLE
+ var value = GlobalizationHelper.ParseDouble(ref token);
+#else
+ var value = GlobalizationHelper.ParseDouble(ref token, format.GetCultureInfo());
+#endif
// handle suffix imaginary symbol
if (token != null && (String.Compare(token.Value, "i", StringComparison.OrdinalIgnoreCase) == 0
diff --git a/src/Numerics/Numerics-Net35.csproj b/src/Numerics/Numerics-Net35.csproj
new file mode 100644
index 00000000..d0d4b77d
--- /dev/null
+++ b/src/Numerics/Numerics-Net35.csproj
@@ -0,0 +1,111 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {E54E712D-EB6B-4FBF-B29A-6BB95E719BAC}
+ Library
+ Properties
+ MathNet.Numerics
+ MathNet.Numerics
+ v3.5
+ 512
+
+ false
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ true
+
+ ..\MathNet.Numerics.snk
+ false
+
+
+ ..\..\out\lib\Net35\
+ ..\..\obj\lib\Net35\
+ ..\..\obj\lib\Net35\
+ ..\..\out\lib\Net35\MathNet.Numerics.xml
+
+ false
+ pdbonly
+ true
+ TRACE;NET35;NOSYSNUMERICS
+ prompt
+ 4
+ AllRules.ruleset
+ 1591
+
+
+ ..\..\out\lib-debug\Net35\
+ ..\..\obj\lib-debug\Net35\
+ ..\..\obj\lib-debug\Net35\
+
+ false
+ true
+ full
+ false
+ TRACE;DEBUG;NET35;NOSYSNUMERICS
+ prompt
+ 4
+
+ AllRules.ruleset
+
+
+ ..\..\out\lib-signed\Net35\
+ ..\..\obj\lib-signed\Net35\
+ ..\..\obj\lib-signed\Net35\
+ ..\..\out\lib-signed\Net35\MathNet.Numerics.xml
+
+ true
+ pdbonly
+ AnyCPU
+ true
+ TRACE;NET35;NOSYSNUMERICS;STRONGNAME
+ prompt
+ 4
+ AllRules.ruleset
+ 1591
+
+
+
+
+
+
+ ..\..\packages\TaskParallelLibrary.1.0.2856.0\lib\Net35\System.Threading.dll
+
+
+
+
+
+ PublicResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj
index 001ec730..de97f5d9 100644
--- a/src/Numerics/Numerics.csproj
+++ b/src/Numerics/Numerics.csproj
@@ -406,7 +406,7 @@
-
+
diff --git a/src/Numerics/PortableAttributes.cs b/src/Numerics/PortableAttributes.cs
deleted file mode 100644
index 14c0e5ca..00000000
--- a/src/Numerics/PortableAttributes.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-#if PORTABLE
-
-using System;
-
-namespace MathNet.Numerics
-{
- [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
- public class SerializableAttribute : Attribute
- {
- }
-
- [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
- public class TargetedPatchingOptOutAttribute : Attribute
- {
- public string Reason { get; private set; }
- public TargetedPatchingOptOutAttribute(string reason)
- {
- Reason = reason;
- }
- }
-
- [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
- public class SpecialNameAttribute : Attribute
- {
- }
-}
-
-#endif
diff --git a/src/Numerics/Properties/Resources.Designer.cs b/src/Numerics/Properties/Resources.Designer.cs
index 663ed3fb..d0d0314d 100644
--- a/src/Numerics/Properties/Resources.Designer.cs
+++ b/src/Numerics/Properties/Resources.Designer.cs
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.18051
+// Runtime Version:4.0.30319.34003
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
diff --git a/src/Numerics/Random/SystemCrypto.cs b/src/Numerics/Random/SystemCrypto.cs
index b9adca1f..4f29462d 100644
--- a/src/Numerics/Random/SystemCrypto.cs
+++ b/src/Numerics/Random/SystemCrypto.cs
@@ -101,7 +101,9 @@ namespace MathNet.Numerics.Random
public void Dispose()
{
+#if !NET35
_random.Dispose();
+#endif
}
}
}
diff --git a/src/Numerics/Threading/CommonParallel.cs b/src/Numerics/Threading/CommonParallel.cs
index 184b7b17..fabb548b 100644
--- a/src/Numerics/Threading/CommonParallel.cs
+++ b/src/Numerics/Threading/CommonParallel.cs
@@ -33,12 +33,12 @@ namespace MathNet.Numerics.Threading
using System;
using System.Threading.Tasks;
-#if !PORTABLE
- using System.Collections.Concurrent;
- using System.Collections.Generic;
-#else
+#if (PORTABLE || NET35)
using System.Linq;
using Properties;
+#else
+ using System.Collections.Concurrent;
+ using System.Collections.Generic;
#endif
///
@@ -88,7 +88,7 @@ namespace MathNet.Numerics.Threading
return;
}
-#if PORTABLE
+#if (PORTABLE || NET35)
var tasks = new Task[Math.Min(maxDegreeOfParallelism, length/rangeSize)];
rangeSize = (toExclusive - fromInclusive)/tasks.Length;
@@ -146,7 +146,7 @@ namespace MathNet.Numerics.Threading
}
// Common case
-#if PORTABLE
+#if (PORTABLE || NET35)
var tasks = new Task[actions.Length];
for (var i = 0; i < tasks.Length; i++)
{
@@ -211,7 +211,7 @@ namespace MathNet.Numerics.Threading
return reduce(mapped);
}
-#if PORTABLE
+#if (PORTABLE || NET35)
var tasks = new Task[Control.NumberOfParallelWorkerThreads];
var size = (toExclusive - fromInclusive) / tasks.Length;
@@ -317,7 +317,7 @@ namespace MathNet.Numerics.Threading
return reduce(mapped);
}
-#if PORTABLE
+#if (PORTABLE || NET35)
var tasks = new Task[Control.NumberOfParallelWorkerThreads];
var size = array.Length / tasks.Length;
diff --git a/src/Numerics/packages.config b/src/Numerics/packages.config
new file mode 100644
index 00000000..30320827
--- /dev/null
+++ b/src/Numerics/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file