Index: branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeToDiffSharpConverter.cs
===================================================================
--- branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeToDiffSharpConverter.cs	(revision 17830)
+++ branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeToDiffSharpConverter.cs	(revision 17930)
@@ -271,5 +271,5 @@
         var terms = node.Subtrees.Select(ConvertNode).ToList();
         if (terms.Count == 1) return FunctionApply(terms[0],
-            s => -s,
+            s => D.Neg(s),
             v => DV.Neg(v));
         return terms.Aggregate((a, b) =>
@@ -288,5 +288,5 @@
             (s1, v2) => s1 * v2,
             (v1, s2) => v1 * s2,
-            (v1, v2) => DV.op_DotMultiply(v1, v2)
+            (v1, v2) => DV.PointwiseMultiply(v1, v2)
           ));
       }
@@ -301,5 +301,5 @@
             (s1, v2) => s1 / v2,
             (v1, s2) => v1 / s2,
-            (v1, v2) => DV.op_DotDivide(v1, v2)
+            (v1, v2) => DV.PointwiseDivision(v1, v2)
           ));
       }
@@ -345,5 +345,5 @@
         return FunctionApply(ConvertNode(node.GetSubtree(0)),
           s => D.Sign(s) * D.Pow(D.Abs(s), 1.0 / 3.0),
-          v => DV.op_DotMultiply(DV.Sign(v), DV.Pow(DV.Abs(v), 1.0 / 3.0))
+          v => DV.PointwiseMultiply(DV.Sign(v), DV.Pow(DV.Abs(v), 1.0 / 3.0))
         );
       }
Index: branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
===================================================================
--- branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 17830)
+++ branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 17930)
@@ -113,7 +113,7 @@
       <Private>False</Private>
     </Reference>
-    <Reference Include="DiffSharp, Version=0.7.7.0, Culture=neutral, processorArchitecture=AMD64">
+    <Reference Include="DiffSharp.Merged, Version=0.8.4.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=AMD64">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\bin\DiffSharp.dll</HintPath>
+      <HintPath>..\..\bin\DiffSharp.Merged.dll</HintPath>
     </Reference>
     <Reference Include="HEAL.Attic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
@@ -130,4 +130,5 @@
       <HintPath>..\..\bin\MathNet.Numerics.dll</HintPath>
     </Reference>
+    <Reference Include="netstandard" />
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -143,7 +144,7 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Xml" />
-    <Reference Include="TensorFlow.NET.Signed, Version=0.15.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+    <Reference Include="TensorFlow.NET.Merged, Version=0.15.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\bin\TensorFlow.NET.Signed.dll</HintPath>
+      <HintPath>..\..\bin\TensorFlow.NET.Merged.dll</HintPath>
     </Reference>
   </ItemGroup>
Index: branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeVectorInterpreter.cs
===================================================================
--- branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeVectorInterpreter.cs	(revision 17830)
+++ branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeVectorInterpreter.cs	(revision 17930)
@@ -785,5 +785,5 @@
               s => 0,
               v => {
-                int bins = (int)Math.Round(m.Scalar);
+                int bins = Math.Max((int)Math.Round(m.Scalar), 1);
                 double minValue = v.Minimum();
                 double maxValue = v.Maximum();
@@ -794,5 +794,5 @@
                   double binMin = minValue * i;
                   double binMax = binMin + intervalWidth;
-                  double countBin = v.Map(e => (e > binMin && e < binMax) ? 1 : 0).Sum();
+                  double countBin = v.Map(e => (e > binMin && e < binMax) ? 1.0 : 0.0).Sum();
                   double percBin = countBin / totalValues;
                   sum += percBin * Math.Log(percBin);
@@ -808,5 +808,5 @@
             cur = AggregateApply(cur,
               s => 0,
-              v => Statistics.PopulationStandardDeviation(v) > (Statistics.Maximum(v) - Statistics.Minimum(v)) / 2 ? 1 : 0);
+              v => Statistics.PopulationStandardDeviation(v) > (Statistics.Maximum(v) - Statistics.Minimum(v)) / 2 ? 1.0 : 0.0);
             TraceEvaluation(currentInstr, cur);
             return cur;
@@ -816,5 +816,5 @@
             cur = AggregateApply(cur,
               s => 0,
-              v => Statistics.PopulationVariance(v) > Statistics.StandardDeviation(v) ? 1 : 0);
+              v => Statistics.PopulationVariance(v) > Statistics.StandardDeviation(v) ? 1.0 : 0.0);
             TraceEvaluation(currentInstr, cur);
             return cur;
@@ -824,5 +824,5 @@
             cur = AggregateApply(cur,
               s => 0,
-              v => Math.Abs(Statistics.Mean(v) - Statistics.Median(v)) < (Statistics.Maximum(v) - Statistics.Minimum(v)) / 2 ? 1 : 0);
+              v => Math.Abs(Statistics.Mean(v) - Statistics.Median(v)) < (Statistics.Maximum(v) - Statistics.Minimum(v)) / 2 ? 1.0 : 0.0);
             TraceEvaluation(currentInstr, cur);
             return cur;
@@ -834,5 +834,5 @@
               v => {
                 double mean = Statistics.Mean(v);
-                return v.Map(e => e > mean ? 1 : 0).Sum();
+                return v.Map(e => e > mean ? 1.0 : 0.0).Sum();
               });
             TraceEvaluation(currentInstr, cur);
@@ -845,5 +845,5 @@
               v => {
                 double median = Statistics.Median(v);
-                return v.Map(e => e > median ? 1 : 0).Sum();
+                return v.Map(e => e > median ? 1.0 : 0.0).Sum();
               });
             TraceEvaluation(currentInstr, cur);
@@ -856,5 +856,5 @@
               v => {
                 double mean = Statistics.Mean(v);
-                return v.Map(e => e < mean ? 1 : 0).Sum();
+                return v.Map(e => e < mean ? 1.0 : 0.0).Sum();
               });
             TraceEvaluation(currentInstr, cur);
@@ -867,5 +867,5 @@
               v => {
                 double median = Statistics.Median(v);
-                return v.Map(e => e < median ? 1 : 0).Sum();
+                return v.Map(e => e < median ? 1.0 : 0.0).Sum();
               });
             TraceEvaluation(currentInstr, cur);
@@ -1055,5 +1055,5 @@
               v => {
                 double sum = 0.0;
-                int l = (int)Math.Round(lVal.Scalar);
+                int l = Math.Max((int)Math.Round(lVal.Scalar), 0);
                 double mean = Statistics.Mean(v);
                 for (int i = 0; i < v.Count - l; i++) {
@@ -1106,5 +1106,5 @@
               s => 0,
               v => {
-                int lag = (int)Math.Round(l.Scalar);
+                int lag = Math.Max((int)Math.Round(l.Scalar), 0);
                 double sum = 0.0;
                 for (int i = 0; i < v.Count - 2 * lag; i++) {
