Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/CovarianceRQArd.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/CovarianceRQArd.cs	(revision 8565)
+++ trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/CovarianceRQArd.cs	(revision 8565)
@@ -0,0 +1,106 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Algorithms.DataAnalysis {
+  [StorableClass]
+  [Item(Name = "CovarianceRQArd",
+    Description = "Rational quadratic covariance function with automatic relevance determination for Gaussian processes.")]
+  public class CovarianceRQArd : Item, ICovarianceFunction {
+    [Storable]
+    private double sf2;
+    public double Scale { get { return sf2; } }
+    [Storable]
+    private double[] inverseLength;
+    public double[] InverseLength {
+      get {
+        if (inverseLength == null) return null;
+        double[] res = new double[inverseLength.Length];
+        Array.Copy(inverseLength, res, res.Length);
+        return res;
+      }
+    }
+    [Storable]
+    private double alpha;
+    public double Shape { get { return alpha; } }
+
+    [StorableConstructor]
+    protected CovarianceRQArd(bool deserializing)
+      : base(deserializing) {
+    }
+
+    protected CovarianceRQArd(CovarianceRQArd original, Cloner cloner)
+      : base(original, cloner) {
+      this.sf2 = original.sf2;
+      this.inverseLength = original.InverseLength; // array is cloned in the getter
+      this.alpha = original.alpha;
+    }
+
+    public CovarianceRQArd()
+      : base() {
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CovarianceRQArd(this, cloner);
+    }
+
+    public int GetNumberOfParameters(int numberOfVariables) {
+      return numberOfVariables + 2;
+    }
+
+    public void SetParameter(double[] hyp) {
+      this.inverseLength = hyp.Take(hyp.Length - 2).Select(e => 1.0 / Math.Exp(e)).ToArray();
+      this.sf2 = Math.Exp(2 * hyp[hyp.Length - 2]);
+      this.alpha = Math.Exp(hyp[hyp.Length - 1]);
+    }
+
+
+    public double GetCovariance(double[,] x, int i, int j) {
+      double d = i == j
+                   ? 0.0
+                   : Util.SqrDist(x, i, j, inverseLength);
+      return sf2 * Math.Pow(1 + 0.5 * d / alpha, -alpha);
+    }
+
+    public IEnumerable<double> GetGradient(double[,] x, int i, int j) {
+      double d = i == j
+                   ? 0.0
+                   : Util.SqrDist(x, i, j, inverseLength);
+      double b = 1 + 0.5 * d / alpha;
+      for (int k = 0; k < inverseLength.Length; k++) {
+        yield return sf2 * Math.Pow(b, -alpha - 1) * Util.SqrDist(x[i, k] * inverseLength[k], x[j, k] * inverseLength[k]);
+      }
+      yield return 2 * sf2 * Math.Pow(b, -alpha);
+      yield return sf2 * Math.Pow(b, -alpha) * (0.5 * d / b - alpha * Math.Log(b));
+    }
+
+    public double GetCrossCovariance(double[,] x, double[,] xt, int i, int j) {
+      double d = Util.SqrDist(x, i, xt, j, inverseLength);
+      return sf2 * Math.Pow(1 + 0.5 * d / alpha, -alpha);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/CovarianceSEard.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/CovarianceSEard.cs	(revision 8564)
+++ trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/CovarianceSEard.cs	(revision 8565)
@@ -37,5 +37,5 @@
     [Storable]
     private double[] inverseLength;
-    public double[] Length {
+    public double[] InverseLength {
       get {
         if (inverseLength == null) return new double[0];
@@ -53,8 +53,5 @@
     protected CovarianceSEard(CovarianceSEard original, Cloner cloner)
       : base(original, cloner) {
-      if (original.inverseLength != null) {
-        this.inverseLength = new double[original.inverseLength.Length];
-        Array.Copy(original.inverseLength, this.inverseLength, inverseLength.Length);
-      }
+      this.inverseLength = original.InverseLength; // array is cloned in the getter
       this.sf2 = original.sf2;
     }
Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 8564)
+++ trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 8565)
@@ -120,4 +120,5 @@
     </Compile>
     <Compile Include="FixedDataAnalysisAlgorithm.cs" />
+    <Compile Include="GaussianProcess\CovarianceRQArd.cs" />
     <Compile Include="GaussianProcess\CovarianceMaternIso.cs" />
     <Compile Include="GaussianProcess\CovarianceLinearArd.cs" />
Index: trunk/sources/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/GaussianProcessFunctionsTest.cs
===================================================================
--- trunk/sources/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/GaussianProcessFunctionsTest.cs	(revision 8564)
+++ trunk/sources/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/GaussianProcessFunctionsTest.cs	(revision 8565)
@@ -366,4 +366,229 @@
     }
 
+
+    [TestMethod]
+    public void CovRQArdTest() {
+      TestCovarianceFunction(new CovarianceRQArd(), 0,
+        new double[,]
+          {
+{    0.6452,    0.6190,    0.8662,    0.6338,    0.7802,    0.5893,    0.7102,    0.7753,    0.7037,    0.8331},
+{    0.6771,    0.7392,    0.7442,    0.6630,    0.7603,    0.6144,    0.7145,    0.8346,    0.7492,    0.8200},
+{    0.7963,    0.7777,    0.8574,    0.7266,    0.6362,    0.8060,    0.8519,    0.7084,    0.7810,    0.8459},
+{    0.7988,    0.6268,    0.8004,    0.7500,    0.5583,    0.6524,    0.8968,    0.8864,    0.8739,    0.8382},
+{    0.8902,    0.6571,    0.7919,    0.9030,    0.5304,    0.5727,    0.8079,    0.9232,    0.9117,    0.8733},
+{    0.8819,    0.7639,    0.7387,    0.8449,    0.5785,    0.6563,    0.8783,    0.9519,    0.9535,    0.8742},
+{    0.6716,    0.7814,    0.7590,    0.6437,    0.8797,    0.6366,    0.7012,    0.6810,    0.7090,    0.8339},
+{    0.6702,    0.6823,    0.8268,    0.6250,    0.7456,    0.6782,    0.7331,    0.6205,    0.6786,    0.8033},
+{    0.6910,    0.7332,    0.8750,    0.6697,    0.8119,    0.6608,    0.7235,    0.7261,    0.7142,    0.8595},
+{    0.6467,    0.7493,    0.6821,    0.6133,    0.6857,    0.6692,    0.7265,    0.8252,    0.7259,    0.7506},
+          },
+        new double[][,]
+          {            
+        new double[,]
+          {
+{         0,    0.0948,    0.0978,    0.1380,    0.0028,    0.0024,    0.0044,    0.1286,    0.0018,    0.0447},
+{    0.0948,         0,    0.2750,    0.3462,    0.1119,    0.1211,    0.0509,    0.2553,    0.0675,    0.0032},
+{    0.0978,    0.2750,         0,    0.0008,    0.0864,    0.0782,    0.1437,    0.0000,    0.1769,    0.2257},
+{    0.1380,    0.3462,    0.0008,         0,    0.1268,    0.1539,    0.1537,    0.0009,    0.1250,    0.2813},
+{    0.0028,    0.1119,    0.0864,    0.1268,         0,    0.0000,    0.0091,    0.0583,    0.0078,    0.0736},
+{    0.0024,    0.1211,    0.0782,    0.1539,    0.0000,         0,    0.0103,    0.0583,    0.0062,    0.0932},
+{    0.0044,    0.0509,    0.1437,    0.1537,    0.0091,    0.0103,         0,    0.2216,    0.0007,    0.0223},
+{    0.1286,    0.2553,    0.0000,    0.0009,    0.0583,    0.0583,    0.2216,         0,    0.1731,    0.1652},
+{    0.0018,    0.0675,    0.1769,    0.1250,    0.0078,    0.0062,    0.0007,    0.1731,         0,    0.0325},
+{    0.0447,    0.0032,    0.2257,    0.2813,    0.0736,    0.0932,    0.0223,    0.1652,    0.0325,         0},
+          },
+        new double[,]
+          {
+{         0,    0.1070,    0.1204,    0.0703,    0.2451,    0.1932,    0.0180,    0.0171,    0.0323,    0.2478},
+{    0.1070,         0,    0.0083,    0.0001,    0.0494,    0.0416,    0.1874,    0.1133,    0.0228,    0.0925},
+{    0.1204,    0.0083,         0,    0.0118,    0.0107,    0.0055,    0.2208,    0.3181,    0.0691,    0.0119},
+{    0.0703,    0.0001,    0.0118,         0,    0.0582,    0.0549,    0.1208,    0.1341,    0.0111,    0.0479},
+{    0.2451,    0.0494,    0.0107,    0.0582,         0,    0.0010,    0.2774,    0.2574,    0.1207,    0.0007},
+{    0.1932,    0.0416,    0.0055,    0.0549,    0.0010,         0,    0.2946,    0.2347,    0.0840,    0.0034},
+{    0.0180,    0.1874,    0.2208,    0.1208,    0.2774,    0.2946,         0,    0.0001,    0.0934,    0.3384},
+{    0.0171,    0.1133,    0.3181,    0.1341,    0.2574,    0.2347,    0.0001,         0,    0.0891,    0.2133},
+{    0.0323,    0.0228,    0.0691,    0.0111,    0.1207,    0.0840,    0.0934,    0.0891,         0,    0.1299},
+{    0.2478,    0.0925,    0.0119,    0.0479,    0.0007,    0.0034,    0.3384,    0.2133,    0.1299,         0},
+          },
+        new double[,]
+          {
+{         0,    0.0098,    0.1427,    0.0239,    0.0193,    0.0020,    0.1179,    0.1363,    0.1310,    0.0223},
+{    0.0098,         0,    0.0828,    0.0493,    0.0553,    0.0213,    0.0538,    0.0506,    0.0574,    0.0081},
+{    0.1427,    0.0828,         0,    0.2908,    0.3087,    0.1947,    0.0133,    0.0050,    0.0187,    0.0494},
+{    0.0239,    0.0493,    0.2908,         0,    0.0005,    0.0175,    0.1674,    0.2256,    0.1509,    0.0768},
+{    0.0193,    0.0553,    0.3087,    0.0005,         0,    0.0121,    0.1425,    0.1652,    0.1926,    0.0849},
+{    0.0020,    0.0213,    0.1947,    0.0175,    0.0121,         0,    0.1035,    0.1094,    0.0981,    0.0518},
+{    0.1179,    0.0538,    0.0133,    0.1674,    0.1425,    0.1035,         0,    0.0048,    0.0000,    0.0171},
+{    0.1363,    0.0506,    0.0050,    0.2256,    0.1652,    0.1094,    0.0048,         0,    0.0043,    0.0209},
+{    0.1310,    0.0574,    0.0187,    0.1509,    0.1926,    0.0981,    0.0000,    0.0043,         0,    0.0189},
+{    0.0223,    0.0081,    0.0494,    0.0768,    0.0849,    0.0518,    0.0171,    0.0209,    0.0189,         0},
+          },
+        new double[,]
+          {
+{         0,    0.0441,    0.0162,    0.0636,    0.0102,    0.0607,    0.0219,    0.0034,    0.0418,    0.1036},
+{    0.0441,         0,    0.0760,    0.0050,    0.0877,    0.0080,    0.0032,    0.0383,    0.1549,    0.0394},
+{    0.0162,    0.0760,         0,    0.1383,    0.0017,    0.1442,    0.0637,    0.0088,    0.0008,    0.1587},
+{    0.0636,    0.0050,    0.1383,         0,    0.1525,    0.0000,    0.0134,    0.0838,    0.1319,    0.0047},
+{    0.0102,    0.0877,    0.0017,    0.1525,         0,    0.1932,    0.0393,    0.0013,    0.0046,    0.1872},
+{    0.0607,    0.0080,    0.1442,    0.0000,    0.1932,         0,    0.0154,    0.0676,    0.1524,    0.0068},
+{    0.0219,    0.0032,    0.0637,    0.0134,    0.0393,    0.0154,         0,    0.0463,    0.1176,    0.0359},
+{    0.0034,    0.0383,    0.0088,    0.0838,    0.0013,    0.0676,    0.0463,         0,    0.0147,    0.0787},
+{    0.0418,    0.1549,    0.0008,    0.1319,    0.0046,    0.1524,    0.1176,    0.0147,         0,    0.2390},
+{    0.1036,    0.0394,    0.1587,    0.0047,    0.1872,    0.0068,    0.0359,    0.0787,    0.2390,         0},
+          },
+        new double[,]
+          {
+{         0,    0.0166,    0.0813,    0.1208,    0.1221,    0.1784,    0.1217,    0.0967,    0.0096,    0.0086},
+{    0.0166,         0,    0.0315,    0.0499,    0.0622,    0.1381,    0.0438,    0.0248,    0.0012,    0.0003},
+{    0.0813,    0.0315,         0,    0.0012,    0.0008,    0.0149,    0.0002,    0.0004,    0.0680,    0.0342},
+{    0.1208,    0.0499,    0.0012,         0,    0.0001,    0.0125,    0.0022,    0.0025,    0.0550,    0.0521},
+{    0.1221,    0.0622,    0.0008,    0.0001,         0,    0.0151,    0.0015,    0.0014,    0.0724,    0.0618},
+{    0.1784,    0.1381,    0.0149,    0.0125,    0.0151,         0,    0.0184,    0.0145,    0.1119,    0.1556},
+{    0.1217,    0.0438,    0.0002,    0.0022,    0.0015,    0.0184,         0,    0.0000,    0.0663,    0.0356},
+{    0.0967,    0.0248,    0.0004,    0.0025,    0.0014,    0.0145,    0.0000,         0,    0.0578,    0.0214},
+{    0.0096,    0.0012,    0.0680,    0.0550,    0.0724,    0.1119,    0.0663,    0.0578,         0,    0.0003},
+{    0.0086,    0.0003,    0.0342,    0.0521,    0.0618,    0.1556,    0.0356,    0.0214,    0.0003,         0},
+          },
+        new double[,]
+          {
+{    2.0000,    1.6749,    1.2884,    1.4086,    1.4481,    1.3558,    1.6576,    1.4857,    1.7530,    1.3818},
+{    1.6749,    2.0000,    1.2296,    1.3147,    1.5166,    1.5831,    1.5672,    1.1884,    1.6266,    1.8443},
+{    1.2884,    1.2296,    2.0000,    1.3383,    1.4280,    1.3533,    1.3417,    1.5791,    1.5769,    1.2005},
+{    1.4086,    1.3147,    1.3383,    2.0000,    1.5691,    1.7228,    1.2914,    1.3262,    1.2286,    1.2725},
+{    1.4481,    1.5166,    1.4280,    1.5691,    2.0000,    1.7466,    1.2457,    1.1805,    1.4515,    1.4286},
+{    1.3558,    1.5831,    1.3533,    1.7228,    1.7466,    2.0000,    1.3401,    1.1758,    1.3083,    1.6150},
+{    1.6576,    1.5672,    1.3417,    1.2914,    1.2457,    1.3401,    2.0000,    1.6740,    1.6662,    1.3186},
+{    1.4857,    1.1884,    1.5791,    1.3262,    1.1805,    1.1758,    1.6740,    2.0000,    1.5674,    1.0305},
+{    1.7530,    1.6266,    1.5769,    1.2286,    1.4515,    1.3083,    1.6662,    1.5674,    2.0000,    1.3985},
+{    1.3818,    1.8443,    1.2005,    1.2725,    1.4286,    1.6150,    1.3186,    1.0305,    1.3985,    2.0000},
+          },
+        new double[,]
+          {
+{         0,   -0.0124,   -0.0541,   -0.0386,   -0.0340,   -0.0452,   -0.0137,   -0.0298,   -0.0073,   -0.0419},
+{   -0.0124,         0,   -0.0623,   -0.0505,   -0.0265,   -0.0200,   -0.0215,   -0.0682,   -0.0162,   -0.0029},
+{   -0.0541,   -0.0623,         0,   -0.0474,   -0.0363,   -0.0455,   -0.0470,   -0.0204,   -0.0206,   -0.0664},
+{   -0.0386,   -0.0505,   -0.0474,         0,   -0.0213,   -0.0091,   -0.0537,   -0.0490,   -0.0624,   -0.0563},
+{   -0.0340,   -0.0265,   -0.0363,   -0.0213,         0,   -0.0077,   -0.0600,   -0.0693,   -0.0336,   -0.0362},
+{   -0.0452,   -0.0200,   -0.0455,   -0.0091,   -0.0077,         0,   -0.0472,   -0.0700,   -0.0514,   -0.0172},
+{   -0.0137,   -0.0215,   -0.0470,   -0.0537,   -0.0600,   -0.0472,         0,   -0.0125,   -0.0131,   -0.0500},
+{   -0.0298,   -0.0682,   -0.0204,   -0.0490,   -0.0693,   -0.0700,   -0.0125,         0,   -0.0215,   -0.0919},
+{   -0.0073,   -0.0162,   -0.0206,   -0.0624,   -0.0336,   -0.0514,   -0.0131,   -0.0215,         0,   -0.0399},
+{   -0.0419,   -0.0029,   -0.0664,   -0.0563,   -0.0362,   -0.0172,   -0.0500,   -0.0919,   -0.0399,         0},
+          },
+          }
+      );
+
+      TestCovarianceFunction(new CovarianceRQArd(), 1,
+       new double[,]
+          {
+{    6.8660,    6.8070,    7.2367,    6.8409,    7.1145,    6.7347,    6.9959,    7.1068,    6.9839,    7.1923},
+{    6.9324,    7.0474,    7.0559,    6.9038,    7.0827,    6.7961,    7.0038,    7.1944,    7.0644,    7.1739},
+{    7.1392,    7.1106,    7.2253,    7.0255,    6.8461,    7.1536,    7.2179,    6.9926,    7.1158,    7.2099},
+{    7.1429,    6.8249,    7.1453,    7.0658,    6.6525,    6.8816,    7.2752,    7.2623,    7.2467,    7.1995},
+{    7.2671,    6.8913,    7.1326,    7.2827,    6.5716,    6.6915,    7.1564,    7.3065,    7.2931,    7.2459},
+{    7.2567,    7.0886,    7.0466,    7.2086,    6.7069,    6.8897,    7.2522,    7.3388,    7.3405,    7.2471},
+{    6.9215,    7.1164,    7.0807,    6.8626,    7.2540,    6.8471,    6.9792,    6.9401,    6.9937,    7.1935},
+{    6.9185,    6.9428,    7.1836,    6.8210,    7.0584,    6.9346,    7.0369,    6.8105,    6.9354,    7.1496},
+{    6.9598,    7.0372,    7.2481,    6.9176,    7.1623,    6.8992,    7.0200,    7.0247,    7.0033,    7.2280},
+{    6.8692,    7.0646,    6.9424,    6.7937,    6.9495,    6.9165,    7.0254,    7.1813,    7.0242,    7.0668},
+          },
+       new double[][,]
+          {            
+        new double[,]
+          {
+{         0,    0.1304,    0.2130,    0.2577,    0.0051,    0.0048,    0.0061,    0.2187,    0.0023,    0.0863},
+{    0.1304,         0,    0.6491,    0.7284,    0.1836,    0.1841,    0.0788,    0.6386,    0.0979,    0.0037},
+{    0.2130,    0.6491,         0,    0.0016,    0.1576,    0.1566,    0.2918,    0.0000,    0.2709,    0.5549},
+{    0.2577,    0.7284,    0.0016,         0,    0.1959,    0.2014,    0.3334,    0.0018,    0.2955,    0.6260},
+{    0.0051,    0.1836,    0.1576,    0.1959,         0,    0.0000,    0.0210,    0.1476,    0.0138,    0.1340},
+{    0.0048,    0.1841,    0.1566,    0.2014,    0.0000,         0,    0.0210,    0.1485,    0.0131,    0.1368},
+{    0.0061,    0.0788,    0.2918,    0.3334,    0.0210,    0.0210,         0,    0.3051,    0.0010,    0.0467},
+{    0.2187,    0.6386,    0.0000,    0.0018,    0.1476,    0.1485,    0.3051,         0,    0.2679,    0.5250},
+{    0.0023,    0.0979,    0.2709,    0.2955,    0.0138,    0.0131,    0.0010,    0.2679,         0,    0.0615},
+{    0.0863,    0.0037,    0.5549,    0.6260,    0.1340,    0.1368,    0.0467,    0.5250,    0.0615,         0},
+          },
+        new double[,]
+          {
+{         0,    0.1472,    0.2623,    0.1312,    0.4360,    0.3853,    0.0252,    0.0290,    0.0410,    0.4783},
+{    0.1472,         0,    0.0195,    0.0002,    0.0811,    0.0633,    0.2900,    0.2833,    0.0330,    0.1071},
+{    0.2623,    0.0195,         0,    0.0240,    0.0196,    0.0110,    0.4485,    0.4860,    0.1059,    0.0293},
+{    0.1312,    0.0002,    0.0240,         0,    0.0898,    0.0718,    0.2620,    0.2779,    0.0262,    0.1067},
+{    0.4360,    0.0811,    0.0196,    0.0898,         0,    0.0012,    0.6403,    0.6512,    0.2138,    0.0013},
+{    0.3853,    0.0633,    0.0110,    0.0718,    0.0012,         0,    0.5997,    0.5978,    0.1783,    0.0050},
+{    0.0252,    0.2900,    0.4485,    0.2620,    0.6403,    0.5997,         0,    0.0002,    0.1297,    0.7083},
+{    0.0290,    0.2833,    0.4860,    0.2779,    0.6512,    0.5978,    0.0002,         0,    0.1379,    0.6776},
+{    0.0410,    0.0330,    0.1059,    0.0262,    0.2138,    0.1783,    0.1297,    0.1379,         0,    0.2455},
+{    0.4783,    0.1071,    0.0293,    0.1067,    0.0013,    0.0050,    0.7083,    0.6776,    0.2455,         0},
+          },
+        new double[,]
+          {
+{         0,    0.0135,    0.3109,    0.0446,    0.0343,    0.0040,    0.1652,    0.2317,    0.1661,    0.0430},
+{    0.0135,         0,    0.1954,    0.1037,    0.0908,    0.0323,    0.0832,    0.1265,    0.0831,    0.0094},
+{    0.3109,    0.1954,         0,    0.5932,    0.5627,    0.3898,    0.0271,    0.0076,    0.0287,    0.1215},
+{    0.0446,    0.1037,    0.5932,         0,    0.0007,    0.0229,    0.3633,    0.4676,    0.3566,    0.1709},
+{    0.0343,    0.0908,    0.5627,    0.0007,         0,    0.0155,    0.3289,    0.4180,    0.3412,    0.1546},
+{    0.0040,    0.0323,    0.3898,    0.0229,    0.0155,         0,    0.2106,    0.2787,    0.2080,    0.0761},
+{    0.1652,    0.0832,    0.0271,    0.3633,    0.3289,    0.2106,         0,    0.0066,    0.0000,    0.0357},
+{    0.2317,    0.1265,    0.0076,    0.4676,    0.4180,    0.2787,    0.0066,         0,    0.0067,    0.0665},
+{    0.1661,    0.0831,    0.0287,    0.3566,    0.3412,    0.2080,    0.0000,    0.0067,         0,    0.0358},
+{    0.0430,    0.0094,    0.1215,    0.1709,    0.1546,    0.0761,    0.0357,    0.0665,    0.0358,         0},
+          },
+        new double[,]
+          {
+{         0,    0.0606,    0.0353,    0.1187,    0.0182,    0.1211,    0.0307,    0.0058,    0.0530,    0.2000},
+{    0.0606,         0,    0.1794,    0.0105,    0.1438,    0.0121,    0.0050,    0.0958,    0.2245,    0.0456},
+{    0.0353,    0.1794,         0,    0.2821,    0.0031,    0.2886,    0.1294,    0.0135,    0.0012,    0.3901},
+{    0.1187,    0.0105,    0.2821,         0,    0.2356,    0.0000,    0.0291,    0.1737,    0.3117,    0.0105},
+{    0.0182,    0.1438,    0.0031,    0.2356,         0,    0.2466,    0.0907,    0.0033,    0.0081,    0.3409},
+{    0.1211,    0.0121,    0.2886,    0.0000,    0.2466,         0,    0.0313,    0.1720,    0.3233,    0.0100},
+{    0.0307,    0.0050,    0.1294,    0.0291,    0.0907,    0.0313,         0,    0.0638,    0.1634,    0.0752},
+{    0.0058,    0.0958,    0.0135,    0.1737,    0.0033,    0.1720,    0.0638,         0,    0.0227,    0.2501},
+{    0.0530,    0.2245,    0.0012,    0.3117,    0.0081,    0.3233,    0.1634,    0.0227,         0,    0.4517},
+{    0.2000,    0.0456,    0.3901,    0.0105,    0.3409,    0.0100,    0.0752,    0.2501,    0.4517,         0},
+          },
+        new double[,]
+          {
+{         0,    0.0228,    0.1771,    0.2255,    0.2172,    0.3559,    0.1705,    0.1644,    0.0122,    0.0167},
+{    0.0228,         0,    0.0745,    0.1050,    0.1020,    0.2099,    0.0679,    0.0620,    0.0017,    0.0004},
+{    0.1771,    0.0745,         0,    0.0024,    0.0015,    0.0299,    0.0004,    0.0005,    0.1042,    0.0840},
+{    0.2255,    0.1050,    0.0024,         0,    0.0001,    0.0163,    0.0048,    0.0051,    0.1299,    0.1160},
+{    0.2172,    0.1020,    0.0015,    0.0001,         0,    0.0192,    0.0034,    0.0036,    0.1283,    0.1125},
+{    0.3559,    0.2099,    0.0299,    0.0163,    0.0192,         0,    0.0374,    0.0368,    0.2374,    0.2284},
+{    0.1705,    0.0679,    0.0004,    0.0048,    0.0034,    0.0374,         0,    0.0000,    0.0921,    0.0746},
+{    0.1644,    0.0620,    0.0005,    0.0051,    0.0036,    0.0368,    0.0000,         0,    0.0895,    0.0680},
+{    0.0122,    0.0017,    0.1042,    0.1299,    0.1283,    0.2374,    0.0921,    0.0895,         0,    0.0005},
+{    0.0167,    0.0004,    0.0840,    0.1160,    0.1125,    0.2284,    0.0746,    0.0680,    0.0005,         0},
+          },
+        new double[,]
+          {
+{   14.7781,   14.3968,   13.7277,   13.9699,   14.0420,   13.8682,   14.3727,   14.1074,   14.5000,   13.9192},
+{   14.3968,   14.7781,   13.5943,   13.7839,   14.1589,   14.2640,   14.2397,   13.4942,   14.3286,   14.6106},
+{   13.7277,   13.5943,   14.7781,   13.8329,   14.0057,   13.8630,   13.8396,   14.2579,   14.2545,   13.5242},
+{   13.9699,   13.7839,   13.8329,   14.7781,   14.2426,   14.4610,   13.7342,   13.8078,   13.5920,   13.6926},
+{   14.0420,   14.1589,   14.0057,   14.2426,   14.7781,   14.4918,   13.6319,   13.4742,   14.0479,   14.0069},
+{   13.8682,   14.2640,   13.8630,   14.4610,   14.4918,   14.7781,   13.8365,   13.4625,   13.7703,   14.3117},
+{   14.3727,   14.2397,   13.8396,   13.7342,   13.6319,   13.8365,   14.7781,   14.3956,   14.3848,   13.7920},
+{   14.1074,   13.4942,   14.2579,   13.8078,   13.4742,   13.4625,   14.3956,   14.7781,   14.2399,   13.0490},
+{   14.5000,   14.3286,   14.2545,   13.5920,   14.0479,   13.7703,   14.3848,   14.2399,   14.7781,   13.9510},
+{   13.9192,   14.6106,   13.5242,   13.6926,   14.0069,   14.3117,   13.7920,   13.0490,   13.9510,   14.7781},
+          },
+        new double[,]
+          {
+{         0,   -0.0009,   -0.0068,   -0.0040,   -0.0034,   -0.0051,   -0.0010,   -0.0028,   -0.0005,   -0.0046},
+{   -0.0009,         0,   -0.0086,   -0.0061,   -0.0024,   -0.0016,   -0.0018,   -0.0101,   -0.0013,   -0.0002},
+{   -0.0068,   -0.0086,         0,   -0.0055,   -0.0037,   -0.0052,   -0.0054,   -0.0017,   -0.0017,   -0.0097},
+{   -0.0040,   -0.0061,   -0.0055,         0,   -0.0018,   -0.0006,   -0.0067,   -0.0058,   -0.0087,   -0.0073},
+{   -0.0034,   -0.0024,   -0.0037,   -0.0018,         0,   -0.0005,   -0.0081,   -0.0105,   -0.0033,   -0.0037},
+{   -0.0051,   -0.0016,   -0.0052,   -0.0006,   -0.0005,         0,   -0.0055,   -0.0106,   -0.0063,   -0.0013},
+{   -0.0010,   -0.0018,   -0.0054,   -0.0067,   -0.0081,   -0.0055,         0,   -0.0009,   -0.0010,   -0.0060},
+{   -0.0028,   -0.0101,   -0.0017,   -0.0058,   -0.0105,   -0.0106,   -0.0009,         0,   -0.0018,   -0.0183},
+{   -0.0005,   -0.0013,   -0.0017,   -0.0087,   -0.0033,   -0.0063,   -0.0010,   -0.0018,         0,   -0.0042},
+{   -0.0046,   -0.0002,   -0.0097,   -0.0073,   -0.0037,   -0.0013,   -0.0060,   -0.0183,   -0.0042,         0},
+          },
+          }
+     );
+    }
+
+
     [TestMethod]
     public void CovMaternIsoTest() {
