diff --git a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
index e93c55db..e156a272 100644
--- a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
///
/// A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order.
///
+ [Serializable]
public class DenseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex/DenseVector.cs b/src/Numerics/LinearAlgebra/Complex/DenseVector.cs
index 0cf9c43a..f69f806f 100644
--- a/src/Numerics/LinearAlgebra/Complex/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex/DenseVector.cs
@@ -38,6 +38,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
///
/// A vector using dense storage.
///
+ [Serializable]
public class DenseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs
index e77b2235..e9373592 100644
--- a/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs
@@ -42,6 +42,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// entries are set. The exception to this is when the off diagonal elements are
/// 0.0 or NaN; these settings will cause no change to the diagonal matrix.
///
+ [Serializable]
public class DiagonalMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex/Matrix.cs b/src/Numerics/LinearAlgebra/Complex/Matrix.cs
index aa06875a..8a72071b 100644
--- a/src/Numerics/LinearAlgebra/Complex/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex/Matrix.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
///
/// Complex version of the class.
///
+ [Serializable]
public abstract class Matrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs
index 648248f2..2f5c499e 100644
--- a/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex/SparseMatrix.cs
@@ -41,6 +41,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// A Matrix class with sparse storage. The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
/// Wikipedia - CSR.
///
+ [Serializable]
public class SparseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex/SparseVector.cs b/src/Numerics/LinearAlgebra/Complex/SparseVector.cs
index 1b15088f..f09bb3a3 100644
--- a/src/Numerics/LinearAlgebra/Complex/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex/SparseVector.cs
@@ -39,6 +39,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// A vector with sparse storage.
///
/// The sparse vector is not thread safe.
+ [Serializable]
public class SparseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex/Vector.cs b/src/Numerics/LinearAlgebra/Complex/Vector.cs
index 2304f062..6ca78ff0 100644
--- a/src/Numerics/LinearAlgebra/Complex/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Complex/Vector.cs
@@ -36,6 +36,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
///
/// Complex version of the class.
///
+ [Serializable]
public abstract class Vector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
index 36367469..29b66e5f 100644
--- a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
///
/// A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order.
///
+ [Serializable]
public class DenseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs b/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs
index f80ea30c..a3092b02 100644
--- a/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs
@@ -39,6 +39,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
///
/// A vector using dense storage.
///
+ [Serializable]
public class DenseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs
index 53737a2d..9efc6f09 100644
--- a/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs
@@ -42,6 +42,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// entries are set. The exception to this is when the off diagonal elements are
/// 0.0 or NaN; these settings will cause no change to the diagonal matrix.
///
+ [Serializable]
public class DiagonalMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs
index 150cf40a..650174fa 100644
--- a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
///
/// Complex32 version of the class.
///
+ [Serializable]
public abstract class Matrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs
index d0d42085..6c594fc7 100644
--- a/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/SparseMatrix.cs
@@ -41,6 +41,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// A Matrix class with sparse storage. The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
/// Wikipedia - CSR.
///
+ [Serializable]
public class SparseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs b/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
index c0881658..2f822067 100644
--- a/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
@@ -39,6 +39,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// A vector with sparse storage.
///
/// The sparse vector is not thread safe.
+ [Serializable]
public class SparseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/Vector.cs b/src/Numerics/LinearAlgebra/Complex32/Vector.cs
index 48976909..77a66db6 100644
--- a/src/Numerics/LinearAlgebra/Complex32/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/Vector.cs
@@ -36,6 +36,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
///
/// Complex32 version of the class.
///
+ [Serializable]
public abstract class Vector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
index fb9323bc..22930321 100644
--- a/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
///
/// A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order.
///
+ [Serializable]
public class DenseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Double/DenseVector.cs b/src/Numerics/LinearAlgebra/Double/DenseVector.cs
index 8ebb3c0a..74f145a5 100644
--- a/src/Numerics/LinearAlgebra/Double/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Double/DenseVector.cs
@@ -38,6 +38,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
///
/// A vector using dense storage.
///
+ [Serializable]
public class DenseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Double/DiagonalMatrix.cs b/src/Numerics/LinearAlgebra/Double/DiagonalMatrix.cs
index 0e1d1758..e44e13e9 100644
--- a/src/Numerics/LinearAlgebra/Double/DiagonalMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Double/DiagonalMatrix.cs
@@ -41,6 +41,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// entries are set. The exception to this is when the off diagonal elements are
/// 0.0 or NaN; these settings will cause no change to the diagonal matrix.
///
+ [Serializable]
public class DiagonalMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Double/Matrix.cs b/src/Numerics/LinearAlgebra/Double/Matrix.cs
index b6597cb1..0eec7f0b 100644
--- a/src/Numerics/LinearAlgebra/Double/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Double/Matrix.cs
@@ -34,6 +34,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
///
/// double version of the class.
///
+ [Serializable]
public abstract class Matrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Double/SparseMatrix.cs b/src/Numerics/LinearAlgebra/Double/SparseMatrix.cs
index 9bf81131..d06829e3 100644
--- a/src/Numerics/LinearAlgebra/Double/SparseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Double/SparseMatrix.cs
@@ -40,6 +40,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// A Matrix class with sparse storage. The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
/// Wikipedia - CSR.
///
+ [Serializable]
public class SparseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Double/SparseVector.cs b/src/Numerics/LinearAlgebra/Double/SparseVector.cs
index d0b4770a..3e51fd79 100644
--- a/src/Numerics/LinearAlgebra/Double/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Double/SparseVector.cs
@@ -39,6 +39,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// A vector with sparse storage.
///
/// The sparse vector is not thread safe.
+ [Serializable]
public class SparseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Double/Vector.cs b/src/Numerics/LinearAlgebra/Double/Vector.cs
index f3cfd6e0..da12ab27 100644
--- a/src/Numerics/LinearAlgebra/Double/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Double/Vector.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
///
/// double version of the class.
///
+ [Serializable]
public abstract class Vector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs
index 32f5038b..3fe1d392 100644
--- a/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
///
/// A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order.
///
+ [Serializable]
public class DenseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Single/DenseVector.cs b/src/Numerics/LinearAlgebra/Single/DenseVector.cs
index 73a78965..915da6df 100644
--- a/src/Numerics/LinearAlgebra/Single/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Single/DenseVector.cs
@@ -38,6 +38,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
///
/// A vector using dense storage.
///
+ [Serializable]
public class DenseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Single/DiagonalMatrix.cs b/src/Numerics/LinearAlgebra/Single/DiagonalMatrix.cs
index 629c3c43..41e81e76 100644
--- a/src/Numerics/LinearAlgebra/Single/DiagonalMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Single/DiagonalMatrix.cs
@@ -41,6 +41,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// entries are set. The exception to this is when the off diagonal elements are
/// 0.0 or NaN; these settings will cause no change to the diagonal matrix.
///
+ [Serializable]
public class DiagonalMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Single/Matrix.cs b/src/Numerics/LinearAlgebra/Single/Matrix.cs
index abd8f26a..e33088b9 100644
--- a/src/Numerics/LinearAlgebra/Single/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Single/Matrix.cs
@@ -34,6 +34,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
///
/// float version of the class.
///
+ [Serializable]
public abstract class Matrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Single/SparseMatrix.cs b/src/Numerics/LinearAlgebra/Single/SparseMatrix.cs
index db4351b6..4edf02e1 100644
--- a/src/Numerics/LinearAlgebra/Single/SparseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Single/SparseMatrix.cs
@@ -40,6 +40,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// A Matrix class with sparse storage. The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
/// Wikipedia - CSR.
///
+ [Serializable]
public class SparseMatrix : Matrix
{
///
diff --git a/src/Numerics/LinearAlgebra/Single/SparseVector.cs b/src/Numerics/LinearAlgebra/Single/SparseVector.cs
index d3a85f2c..12a663be 100644
--- a/src/Numerics/LinearAlgebra/Single/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Single/SparseVector.cs
@@ -39,6 +39,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// A vector with sparse storage.
///
/// The sparse vector is not thread safe.
+ [Serializable]
public class SparseVector : Vector
{
///
diff --git a/src/Numerics/LinearAlgebra/Single/Vector.cs b/src/Numerics/LinearAlgebra/Single/Vector.cs
index b94323b4..2dfcdea8 100644
--- a/src/Numerics/LinearAlgebra/Single/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Single/Vector.cs
@@ -35,6 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
///
/// float version of the class.
///
+ [Serializable]
public abstract class Vector : Vector
{
///