Index: /branches/3136_Structural_GP/HeuristicLab.ExtLibs/HeuristicLab.NativeInterpreter/0.1/NativeInterpreter-0.1/src/instruction.h
===================================================================
--- /branches/3136_Structural_GP/HeuristicLab.ExtLibs/HeuristicLab.NativeInterpreter/0.1/NativeInterpreter-0.1/src/instruction.h	(revision 18132)
+++ /branches/3136_Structural_GP/HeuristicLab.ExtLibs/HeuristicLab.NativeInterpreter/0.1/NativeInterpreter-0.1/src/instruction.h	(revision 18133)
@@ -28,5 +28,6 @@
     Cube               = 50,
     CubeRoot           = 51,
-    Tanh               = 52
+    Tanh               = 52,
+    SubFunction        = 53
 };
 
Index: /branches/3136_Structural_GP/HeuristicLab.ExtLibs/HeuristicLab.NativeInterpreter/0.1/NativeInterpreter-0.1/src/interpreter.h
===================================================================
--- /branches/3136_Structural_GP/HeuristicLab.ExtLibs/HeuristicLab.NativeInterpreter/0.1/NativeInterpreter-0.1/src/interpreter.h	(revision 18132)
+++ /branches/3136_Structural_GP/HeuristicLab.ExtLibs/HeuristicLab.NativeInterpreter/0.1/NativeInterpreter-0.1/src/interpreter.h	(revision 18133)
@@ -138,4 +138,9 @@
                     break;
                 }
+            case OpCodes::SubFunction:
+                {
+                  in.value = code[in.childIndex].value;
+                  break;
+                }
             default: in.value = NAN;
         }
@@ -291,6 +296,12 @@
                     break;
                 }
+            case OpCodes::SubFunction:
+                {
+                  load(in.buf, code[in.childIndex].buf);
+                  break;
+                }
+
             default: load(in.buf, NAN);
-            }
+          }
     }
 }
Index: /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionCompiledTreeInterpreter.cs
===================================================================
--- /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionCompiledTreeInterpreter.cs	(revision 18132)
+++ /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionCompiledTreeInterpreter.cs	(revision 18133)
@@ -661,4 +661,7 @@
               );
           }
+        case OpCodes.SubFunction: {
+          return MakeExpr(node.GetSubtree(0), variableIndices, row, columns);
+        }
         default:
           throw new NotSupportedException("Unsupported symbol: " + node.Symbol);
Index: /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs
===================================================================
--- /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs	(revision 18132)
+++ /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeBatchInterpreter.cs	(revision 18133)
@@ -180,8 +180,10 @@
               break;
             }
+
           case OpCodes.Tanh: {
               Tanh(instr.buf, code[c].buf);
               break;
             }
+
           case OpCodes.Absolute: {
               Absolute(instr.buf, code[c].buf);
@@ -192,4 +194,9 @@
               Load(instr.buf, code[c].buf);
               AnalyticQuotient(instr.buf, code[c + 1].buf);
+              break;
+            }
+
+          case OpCodes.SubFunction: {
+              Load(instr.buf, code[c].buf);
               break;
             }
Index: /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs
===================================================================
--- /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs	(revision 18132)
+++ /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs	(revision 18133)
@@ -723,4 +723,8 @@
                                             " is not supported by the SymbolicDataAnalysisTreeILEmittingInterpreter");
           }
+        case OpCodes.SubFunction: {
+          CompileInstructions(il, state, ds);
+          return;
+        }
         default:
           throw new NotSupportedException("Interpretation of symbol " + currentInstr.dynamicNode.Symbol.Name +
Index: /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeLinearInterpreter.cs
===================================================================
--- /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeLinearInterpreter.cs	(revision 18132)
+++ /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeLinearInterpreter.cs	(revision 18133)
@@ -388,4 +388,6 @@
           state.Reset();
           instr.value = interpreter.Evaluate(dataset, ref row, state);
+        } else if (instr.opCode == OpCodes.SubFunction) {
+          instr.value = code[instr.childIndex].value;
         } else {
           var errorText = string.Format("The {0} symbol is not supported by the linear interpreter. To support this symbol, please use the SymbolicDataAnalysisExpressionTreeInterpreter.", instr.dynamicNode.Symbol.Name);
Index: /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeNativeInterpreter.cs
===================================================================
--- /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeNativeInterpreter.cs	(revision 18132)
+++ /branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeNativeInterpreter.cs	(revision 18133)
@@ -121,5 +121,6 @@
       (byte)OpCode.Cube,
       (byte)OpCode.Absolute,
-      (byte)OpCode.AnalyticQuotient
+      (byte)OpCode.AnalyticQuotient,
+      (byte)OpCode.SubFunction
     };
 
