Index: /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
===================================================================
--- /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 16286)
+++ /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 16287)
@@ -117,7 +117,4 @@
     </Reference>
     <Reference Include="System.Drawing" />
-    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\System.Numerics.Vectors.4.5.0\lib\portable-net45+win8+wp8+wpa81\System.Numerics.Vectors.dll</HintPath>
-    </Reference>
     <Reference Include="System.Xml.Linq">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -165,7 +162,7 @@
     <Compile Include="Interfaces\IVariableSymbol.cs" />
     <Compile Include="Interpreter\BatchInstruction.cs" />
-    <Compile Include="Interpreter\SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs" />
     <Compile Include="Interpreter\BatchOperations.cs" />
     <Compile Include="Interpreter\SymbolicDataAnalysisExpressionCompiledTreeInterpreter.cs" />
+    <Compile Include="Interpreter\SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs" />
     <Compile Include="Interpreter\SymbolicDataAnalysisExpressionTreeNativeInterpreter.cs" />
     <Compile Include="SymbolicDataAnalysisExpressionTreeSimplificationOperator.cs" />
@@ -283,5 +280,4 @@
     <Compile Include="TreeMatching\SymbolicExpressionTreePhenotypicSimilarityCalculator.cs" />
     <None Include="HeuristicLab.snk" />
-    <None Include="packages.config" />
     <None Include="Plugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.cs.frame" />
Index: /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/BatchOperations.cs
===================================================================
--- /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/BatchOperations.cs	(revision 16286)
+++ /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/BatchOperations.cs	(revision 16287)
@@ -1,9 +1,7 @@
 ﻿using System;
-using System.Numerics;
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
   public static class BatchOperations {
     public const int BATCHSIZE = 64;
-    private static readonly int STRIDE = Vector<double>.Count;
 
     public static void Load(double[] a, double[] b) {
@@ -12,46 +10,36 @@
 
     public static void Add(double[] a, double[] b) {
-      for (int i = 0; i < BATCHSIZE; i += STRIDE) {
-        var va = new Vector<double>(a, i);
-        var vb = new Vector<double>(b, i);
-        (va + vb).CopyTo(a, i);
+      for (int i = 0; i < BATCHSIZE; ++i) {
+        a[i] += b[i];
       }
     }
 
     public static void Sub(double[] a, double[] b) {
-      for (int i = 0; i < BATCHSIZE; i += STRIDE) {
-        var va = new Vector<double>(a, i);
-        var vb = new Vector<double>(b, i);
-        (va - vb).CopyTo(a, i);
+      for (int i = 0; i < BATCHSIZE; ++i) {
+        a[i] -= b[i];
       }
     }
 
     public static void Div(double[] a, double[] b) {
-      for (int i = 0; i < BATCHSIZE; i += STRIDE) {
-        var va = new Vector<double>(a, i);
-        var vb = new Vector<double>(b, i);
-        (va / vb).CopyTo(a, i);
+      for (int i = 0; i < BATCHSIZE; ++i) {
+        a[i] /= b[i];
       }
     }
 
     public static void Mul(double[] a, double[] b) {
-      for (int i = 0; i < BATCHSIZE; i += STRIDE) {
-        var va = new Vector<double>(a, i);
-        var vb = new Vector<double>(b, i);
-        (va * vb).CopyTo(a, i);
+      for (int i = 0; i < BATCHSIZE; ++i) {
+        a[i] *= b[i];
       }
     }
 
     public static void Neg(double[] a, double[] b) {
-      for (int i = 0; i < BATCHSIZE; i += STRIDE) {
-        var vb = new Vector<double>(b, i);
-        Vector.Negate(vb).CopyTo(a, i);
+      for (int i = 0; i < BATCHSIZE; ++i) {
+        a[i] = -b[i];
       }
     }
 
     public static void Inv(double[] a, double[] b) {
-      for (int i = 0; i < BATCHSIZE; i += STRIDE) {
-        var vb = new Vector<double>(b, i);
-        (Vector<double>.One / vb).CopyTo(a, i);
+      for (int i = 0; i < BATCHSIZE; ++i) {
+        a[i] = 1 / b[i];
       }
     }
Index: /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs
===================================================================
--- /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs	(revision 16286)
+++ /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs	(revision 16287)
@@ -161,13 +161,13 @@
         }
 
+        code[i].buf = new double[BATCHSIZE];
+
         if (node is VariableTreeNode variable) {
           code[i].weight = variable.Weight;
           code[i].data = dataset.GetReadOnlyDoubleValues(variable.VariableName).ToArray();
-          code[i].buf = new double[BATCHSIZE];
         } else if (node is ConstantTreeNode constant) {
           code[i].value = constant.Value;
-          code[i].buf = Enumerable.Repeat(code[i].value, BATCHSIZE).ToArray();
-        } else if (node.SubtreeCount > 0) {
-          code[i].buf = new double[BATCHSIZE];
+          for (int j = 0; j < BATCHSIZE; ++j)
+            code[i].buf[j] = code[i].value;
         }
 
