- Timestamp:
- 06/12/14 13:26:18 (10 years ago)
- Location:
- branches/DataPreprocessing
- Files:
-
- 16 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/DataPreprocessing
- Property svn:ignore
-
old new 8 8 FxCopResults.txt 9 9 Google.ProtocolBuffers-0.9.1.dll 10 Google.ProtocolBuffers-2.4.1.473.dll 10 11 HeuristicLab 3.3.5.1.ReSharper.user 11 12 HeuristicLab 3.3.6.0.ReSharper.user 12 13 HeuristicLab.4.5.resharper.user 13 14 HeuristicLab.ExtLibs.6.0.ReSharper.user 15 HeuristicLab.Scripting.Development 14 16 HeuristicLab.resharper.user 15 17 ProtoGen.exe … … 17 19 _ReSharper.HeuristicLab 18 20 _ReSharper.HeuristicLab 3.3 21 _ReSharper.HeuristicLab 3.3 Tests 19 22 _ReSharper.HeuristicLab.ExtLibs 20 23 bin 21 24 protoc.exe 22 _ReSharper.HeuristicLab 3.3 Tests23 Google.ProtocolBuffers-2.4.1.473.dll
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic
- Property svn:mergeinfo changed
-
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisAlleleFrequencyAnalyzer.cs
r9456 r11009 75 75 public static Allele[] CalculateAlleles(ISymbolicExpressionTree solution, int alleleTreedepth) { 76 76 return GetAllSubtreesOfDepth(solution, alleleTreedepth) 77 .AsParallel()78 77 .Select(t => GetAlleleFromSubtreeOfDepth(t, alleleTreedepth)) 79 78 .ToArray(); -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisMultiObjectiveValidationBestSolutionAnalyzer.cs
r9456 r11009 121 121 122 122 var qualities = tree 123 .AsParallel()124 123 .Select(t => evaluator.Evaluate(childContext, t, problemData, rows)) 125 124 .ToArray(); -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisSingleObjectivePruningAnalyzer.cs
r10538 r11009 148 148 if (end > count) end = count; 149 149 150 if (PopulationSlice.Start > 1 || PopulationSlice.End > 1) throw new ArgumentOutOfRangeException("The slice bounds should be expressed as unit percentages."); 150 151 if (start >= end) throw new ArgumentOutOfRangeException("Invalid PopulationSlice bounds."); 151 152 return new IntRange(start, end); -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisSingleObjectiveTrainingBestSolutionAnalyzer.cs
r9456 r11009 35 35 [Item("SymbolicDataAnalysisSingleObjectiveTrainingBestSolutionAnalyzer", "An operator that analyzes the training best symbolic data analysis solution for single objective symbolic data analysis problems.")] 36 36 [StorableClass] 37 public abstract class SymbolicDataAnalysisSingleObjectiveTrainingBestSolutionAnalyzer<T> : SymbolicDataAnalysisSingleObjectiveAnalyzer 37 public abstract class SymbolicDataAnalysisSingleObjectiveTrainingBestSolutionAnalyzer<T> : SymbolicDataAnalysisSingleObjectiveAnalyzer, IIterationBasedOperator 38 38 39 where T : class, ISymbolicDataAnalysisSolution { 39 40 private const string TrainingBestSolutionParameterName = "Best training solution"; 40 41 private const string TrainingBestSolutionQualityParameterName = "Best training solution quality"; 42 private const string TrainingBestSolutionGenerationParameterName = "Best training solution generation"; 41 43 private const string UpdateAlwaysParameterName = "Always update best solution"; 44 private const string IterationsParameterName = "Iterations"; 45 private const string MaximumIterationsParameterName = "Maximum Iterations"; 42 46 43 47 #region parameter properties … … 48 52 get { return (ILookupParameter<DoubleValue>)Parameters[TrainingBestSolutionQualityParameterName]; } 49 53 } 54 public ILookupParameter<IntValue> TrainingBestSolutionGenerationParameter { 55 get { return (ILookupParameter<IntValue>)Parameters[TrainingBestSolutionGenerationParameterName]; } 56 } 50 57 public IFixedValueParameter<BoolValue> UpdateAlwaysParameter { 51 58 get { return (IFixedValueParameter<BoolValue>)Parameters[UpdateAlwaysParameterName]; } 59 } 60 public ILookupParameter<IntValue> IterationsParameter { 61 get { return (ILookupParameter<IntValue>)Parameters[IterationsParameterName]; } 62 } 63 public IValueLookupParameter<IntValue> MaximumIterationsParameter { 64 get { return (IValueLookupParameter<IntValue>)Parameters[MaximumIterationsParameterName]; } 52 65 } 53 66 #endregion … … 73 86 Parameters.Add(new LookupParameter<T>(TrainingBestSolutionParameterName, "The training best symbolic data analyis solution.")); 74 87 Parameters.Add(new LookupParameter<DoubleValue>(TrainingBestSolutionQualityParameterName, "The quality of the training best symbolic data analysis solution.")); 88 Parameters.Add(new LookupParameter<IntValue>(TrainingBestSolutionGenerationParameterName, "The generation in which the best training solution was found.")); 75 89 Parameters.Add(new FixedValueParameter<BoolValue>(UpdateAlwaysParameterName, "Determines if the best training solution should always be updated regardless of its quality.", new BoolValue(false))); 90 Parameters.Add(new LookupParameter<IntValue>(IterationsParameterName, "The number of performed iterations.")); 91 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumIterationsParameterName, "The maximum number of performed iterations.") { Hidden = true }); 76 92 UpdateAlwaysParameter.Hidden = true; 77 93 } … … 83 99 UpdateAlwaysParameter.Hidden = true; 84 100 } 101 if (!Parameters.ContainsKey(TrainingBestSolutionGenerationParameterName)) 102 Parameters.Add(new LookupParameter<IntValue>(TrainingBestSolutionGenerationParameterName, "The generation in which the best training solution was found.")); 103 if (!Parameters.ContainsKey(IterationsParameterName)) 104 Parameters.Add(new LookupParameter<IntValue>(IterationsParameterName, "The number of performed iterations.")); 105 if (!Parameters.ContainsKey(MaximumIterationsParameterName)) 106 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumIterationsParameterName, "The maximum number of performed iterations.") { Hidden = true }); 85 107 } 86 108 … … 104 126 TrainingBestSolution = CreateSolution(bestTree, bestQuality); 105 127 TrainingBestSolutionQuality = new DoubleValue(bestQuality); 128 if (IterationsParameter.ActualValue != null) 129 TrainingBestSolutionGenerationParameter.ActualValue = new IntValue(IterationsParameter.ActualValue.Value); 106 130 107 131 if (!results.ContainsKey(TrainingBestSolutionParameter.Name)) { 108 132 results.Add(new Result(TrainingBestSolutionParameter.Name, TrainingBestSolutionParameter.Description, TrainingBestSolution)); 109 133 results.Add(new Result(TrainingBestSolutionQualityParameter.Name, TrainingBestSolutionQualityParameter.Description, TrainingBestSolutionQuality)); 134 if (TrainingBestSolutionGenerationParameter.ActualValue != null) 135 results.Add(new Result(TrainingBestSolutionGenerationParameter.Name, TrainingBestSolutionGenerationParameter.Description, TrainingBestSolutionGenerationParameter.ActualValue)); 110 136 } else { 111 137 results[TrainingBestSolutionParameter.Name].Value = TrainingBestSolution; 112 138 results[TrainingBestSolutionQualityParameter.Name].Value = TrainingBestSolutionQuality; 139 if (TrainingBestSolutionGenerationParameter.ActualValue != null) 140 results[TrainingBestSolutionGenerationParameter.Name].Value = TrainingBestSolutionGenerationParameter.ActualValue; 141 113 142 } 114 143 } -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer.cs
r9456 r11009 37 37 [Item("SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer", "An operator that analyzes the validation best symbolic data analysis solution for single objective symbolic data analysis problems.")] 38 38 [StorableClass] 39 public abstract class SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer<S, T, U> : SymbolicDataAnalysisSingleObjectiveValidationAnalyzer<T, U> 39 public abstract class SymbolicDataAnalysisSingleObjectiveValidationBestSolutionAnalyzer<S, T, U> : SymbolicDataAnalysisSingleObjectiveValidationAnalyzer<T, U>, IIterationBasedOperator 40 40 where S : class, ISymbolicDataAnalysisSolution 41 41 where T : class, ISymbolicDataAnalysisSingleObjectiveEvaluator<U> … … 43 43 private const string ValidationBestSolutionParameterName = "Best validation solution"; 44 44 private const string ValidationBestSolutionQualityParameterName = "Best validation solution quality"; 45 private const string ValidationBestSolutionGenerationParameterName = "Best validation solution generation"; 45 46 private const string UpdateAlwaysParameterName = "Always update best solution"; 47 private const string IterationsParameterName = "Iterations"; 48 private const string MaximumIterationsParameterName = "Maximum Iterations"; 46 49 47 50 #region parameter properties … … 52 55 get { return (ILookupParameter<DoubleValue>)Parameters[ValidationBestSolutionQualityParameterName]; } 53 56 } 57 public ILookupParameter<IntValue> ValidationBestSolutionGenerationParameter { 58 get { return (ILookupParameter<IntValue>)Parameters[ValidationBestSolutionGenerationParameterName]; } 59 } 54 60 public IFixedValueParameter<BoolValue> UpdateAlwaysParameter { 55 61 get { return (IFixedValueParameter<BoolValue>)Parameters[UpdateAlwaysParameterName]; } 62 } 63 public ILookupParameter<IntValue> IterationsParameter { 64 get { return (ILookupParameter<IntValue>)Parameters[IterationsParameterName]; } 65 } 66 public IValueLookupParameter<IntValue> MaximumIterationsParameter { 67 get { return (IValueLookupParameter<IntValue>)Parameters[MaximumIterationsParameterName]; } 56 68 } 57 69 #endregion … … 77 89 Parameters.Add(new LookupParameter<S>(ValidationBestSolutionParameterName, "The validation best symbolic data analyis solution.")); 78 90 Parameters.Add(new LookupParameter<DoubleValue>(ValidationBestSolutionQualityParameterName, "The quality of the validation best symbolic data analysis solution.")); 91 Parameters.Add(new LookupParameter<IntValue>(ValidationBestSolutionGenerationParameterName, "The generation in which the best validation solution was found.")); 79 92 Parameters.Add(new FixedValueParameter<BoolValue>(UpdateAlwaysParameterName, "Determines if the best validation solution should always be updated regardless of its quality.", new BoolValue(false))); 93 Parameters.Add(new LookupParameter<IntValue>(IterationsParameterName, "The number of performed iterations.")); 94 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumIterationsParameterName, "The maximum number of performed iterations.") { Hidden = true }); 80 95 UpdateAlwaysParameter.Hidden = true; 81 96 } … … 84 99 private void AfterDeserialization() { 85 100 if (!Parameters.ContainsKey(UpdateAlwaysParameterName)) { 86 Parameters.Add(new FixedValueParameter<BoolValue>(UpdateAlwaysParameterName, "Determines if the best trainingsolution should always be updated regardless of its quality.", new BoolValue(false)));101 Parameters.Add(new FixedValueParameter<BoolValue>(UpdateAlwaysParameterName, "Determines if the best validation solution should always be updated regardless of its quality.", new BoolValue(false))); 87 102 UpdateAlwaysParameter.Hidden = true; 88 103 } 104 if (!Parameters.ContainsKey(ValidationBestSolutionGenerationParameterName)) 105 Parameters.Add(new LookupParameter<IntValue>(ValidationBestSolutionGenerationParameterName, "The generation in which the best validation solution was found.")); 106 if (!Parameters.ContainsKey(IterationsParameterName)) 107 Parameters.Add(new LookupParameter<IntValue>(IterationsParameterName, "The number of performed iterations.")); 108 if (!Parameters.ContainsKey(MaximumIterationsParameterName)) 109 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumIterationsParameterName, "The maximum number of performed iterations.") { Hidden = true }); 89 110 } 90 111 … … 121 142 var quality = tree 122 143 .Take(topN) 123 .AsParallel()124 144 .Select(t => evaluator.Evaluate(childContext, t, problemData, rows)) 125 145 .ToArray(); … … 138 158 ValidationBestSolution = CreateSolution(bestTree, bestValidationQuality); 139 159 ValidationBestSolutionQuality = new DoubleValue(bestValidationQuality); 160 if (IterationsParameter.ActualValue != null) 161 ValidationBestSolutionGenerationParameter.ActualValue = new IntValue(IterationsParameter.ActualValue.Value); 140 162 141 163 if (!results.ContainsKey(ValidationBestSolutionParameter.Name)) { 142 164 results.Add(new Result(ValidationBestSolutionParameter.Name, ValidationBestSolutionParameter.Description, ValidationBestSolution)); 143 165 results.Add(new Result(ValidationBestSolutionQualityParameter.Name, ValidationBestSolutionQualityParameter.Description, ValidationBestSolutionQuality)); 166 if (ValidationBestSolutionGenerationParameter.ActualValue != null) 167 results.Add(new Result(ValidationBestSolutionGenerationParameter.Name, ValidationBestSolutionGenerationParameter.Description, ValidationBestSolutionGenerationParameter.ActualValue)); 144 168 } else { 145 169 results[ValidationBestSolutionParameter.Name].Value = ValidationBestSolution; 146 170 results[ValidationBestSolutionQualityParameter.Name].Value = ValidationBestSolutionQuality; 171 if (ValidationBestSolutionGenerationParameter.ActualValue != null) 172 results[ValidationBestSolutionGenerationParameter.Name].Value = ValidationBestSolutionGenerationParameter.ActualValue; 147 173 } 148 174 } -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisSingleObjectiveValidationParetoBestSolutionAnalyzer.cs
r9456 r11009 120 120 .Select(i => tree[i]) 121 121 .Take(topN) 122 .AsParallel()123 122 .Select(t => evaluator.Evaluate(childContext, t, problemData, rows)) 124 123 .ToArray(); -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisVariableFrequencyAnalyzer.cs
r9456 r11009 131 131 132 132 var variableFrequencies = trees 133 .AsParallel()134 133 .SelectMany(t => GetVariableReferences(t, aggregateLaggedVariables)) 135 134 .GroupBy(pair => pair.Key, pair => pair.Value) -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/FullFunctionalExpressionGrammar.cs
r9456 r11009 99 99 var or = new Or(); 100 100 var not = new Not(); 101 var xor = new Xor(); 101 102 102 103 var timeLag = new TimeLag(); … … 122 123 var allSymbols = new List<Symbol>() { add, sub, mul, div, mean, sin, cos, tan, log, square, pow, sqrt, root, exp, 123 124 airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi, fresnelCosineIntegral, fresnelSineIntegral, gamma, hypCosineIntegral, hypSineIntegral, norm, psi, sineIntegral, 124 @if, gt, lt, and, or, not, timeLag, integral, derivative, constant, variableSymbol, laggedVariable,autoregressiveVariable, variableCondition };125 @if, gt, lt, and, or, not,xor, timeLag, integral, derivative, constant, variableSymbol, laggedVariable,autoregressiveVariable, variableCondition }; 125 126 var unaryFunctionSymbols = new List<Symbol>() { square, sqrt, sin, cos, tan, log, exp, not, timeLag, integral, derivative, 126 127 airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi, fresnelCosineIntegral, fresnelSineIntegral, gamma, hypCosineIntegral, hypSineIntegral, norm, psi, sineIntegral … … 128 129 129 130 var binaryFunctionSymbols = new List<Symbol>() { pow, root, gt, lt, variableCondition }; 130 var ternarySymbols = new List<Symbol>() { add, sub, mul, div, mean, and, or };131 var ternarySymbols = new List<Symbol>() { add, sub, mul, div, mean, and, or, xor }; 131 132 var terminalSymbols = new List<Symbol>() { variableSymbol, constant, laggedVariable, autoregressiveVariable }; 132 133 -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
r9992 r11009 93 93 var or = new Or(); 94 94 var not = new Not(); 95 var xor = new Xor(); 95 96 var variableCondition = new VariableCondition(); 96 97 … … 120 121 var conditionSymbols = new GroupSymbol(ConditionsName, new List<ISymbol> { @if, variableCondition }); 121 122 var comparisonSymbols = new GroupSymbol(ComparisonsName, new List<ISymbol> { gt, lt }); 122 var booleanOperationSymbols = new GroupSymbol(BooleanOperatorsName, new List<ISymbol> { and, or, not });123 var booleanOperationSymbols = new GroupSymbol(BooleanOperatorsName, new List<ISymbol> { and, or, not, xor }); 123 124 var conditionalSymbols = new GroupSymbol(ConditionalSymbolsName, new List<ISymbol> { conditionSymbols, comparisonSymbols, booleanOperationSymbols }); 124 125 … … 148 149 SetSubtreeCount(or, 2, 2); 149 150 SetSubtreeCount(not, 1, 1); 151 SetSubtreeCount(xor, 2, 2); 150 152 151 153 SetSubtreeCount(timeLag, 1, 1); … … 237 239 Symbols.First(s => s is Average).Enabled = false; 238 240 Symbols.First(s => s is VariableCondition).Enabled = false; 241 Symbols.First(s => s is Xor).Enabled = false; 239 242 Symbols.First(s => s.Name == TrigonometricFunctionsName).Enabled = false; 240 243 Symbols.First(s => s.Name == ExponentialFunctionsName).Enabled = false; -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
r10925 r11009 126 126 <SubType>Code</SubType> 127 127 </Compile> 128 <Compile Include="Matching\SymbolicExpressionTreeCanonicalSorter.cs" /> 129 <Compile Include="Matching\SymbolicExpressionTreeEqualityComparer.cs" /> 130 <Compile Include="Matching\SymbolicExpressionTreeMatching.cs" /> 131 <Compile Include="Matching\SymbolicExpressionTreeMaxCommonSequenceCalculator.cs" /> 132 <Compile Include="Matching\SymbolicExpressionTreeNodeComparer.cs" /> 133 <Compile Include="Matching\SymbolicExpressionTreeNodeSimilarityComparer.cs" /> 128 134 <Compile Include="SymbolicExpressionTreeBacktransformator.cs" /> 129 135 <Compile Include="SymbolicDataAnalysisExpressionPruningOperator.cs" /> … … 181 187 <Compile Include="Symbols\AiryB.cs" /> 182 188 <Compile Include="Symbols\Bessel.cs" /> 189 <Compile Include="Symbols\Xor.cs" /> 183 190 <Compile Include="Symbols\Erf.cs" /> 184 191 <Compile Include="Symbols\Norm.cs" /> … … 324 331 <Project>{2e257a94-d1af-435c-99b4-5ac00eadfd6a}</Project> 325 332 <Name>HeuristicLab.Problems.DataAnalysis.Transformations-3.4</Name> 333 <Private>False</Private> 326 334 </ProjectReference> 327 335 <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj"> -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/OpCodes.cs
r9456 r11009 46 46 public const byte OR = 14; 47 47 public const byte NOT = 15; 48 public const byte XOR = 45; 48 49 49 50 … … 99 100 { typeof(Or), OpCodes.OR }, 100 101 { typeof(Not), OpCodes.NOT}, 102 { typeof(Xor),OpCodes.XOR}, 101 103 { typeof(Average), OpCodes.Average}, 102 104 { typeof(InvokeFunction), OpCodes.Call }, -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs
r9828 r11009 447 447 il.Emit(System.Reflection.Emit.OpCodes.Sub); 448 448 il.Emit(System.Reflection.Emit.OpCodes.Neg); // * -1 449 return; 450 } 451 case OpCodes.XOR: { 452 CompileInstructions(il, state, ds); 453 il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4_0); 454 il.Emit(System.Reflection.Emit.OpCodes.Cgt);// > 0 455 456 for (int i = 1; i < nArgs; i++) { 457 CompileInstructions(il, state, ds); 458 il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4_0); 459 il.Emit(System.Reflection.Emit.OpCodes.Cgt);// > 0 460 il.Emit(System.Reflection.Emit.OpCodes.Xor); 461 } 462 il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 2.0); // * 2 463 il.Emit(System.Reflection.Emit.OpCodes.Mul); 464 il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 1.0); // - 1 465 il.Emit(System.Reflection.Emit.OpCodes.Sub); 449 466 return; 450 467 } -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeInterpreter.cs
r9828 r11009 344 344 return Evaluate(dataset, ref row, state) > 0.0 ? -1.0 : 1.0; 345 345 } 346 case OpCodes.XOR: { 347 //mkommend: XOR on multiple inputs is defined as true if the number of positive signals is odd 348 // this is equal to a consecutive execution of binary XOR operations. 349 int positiveSignals = 0; 350 for (int i = 0; i < currentInstr.nArguments; i++) { 351 if (Evaluate(dataset, ref row, state) > 0.0) positiveSignals++; 352 } 353 return positiveSignals % 2 != 0 ? 1.0 : -1.0; 354 } 346 355 case OpCodes.GT: { 347 356 double x = Evaluate(dataset, ref row, state); -
branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeLinearInterpreter.cs
r9944 r11009 311 311 } else if (instr.opCode == OpCodes.NOT) { 312 312 instr.value = code[instr.childIndex].value > 0.0 ? -1.0 : 1.0; 313 } else if (instr.opCode == OpCodes.XOR) { 314 int positiveSignals = 0; 315 for (int j = 0; j < instr.nArguments; j++) { 316 if (code[instr.childIndex + j].value > 0.0) positiveSignals++; 317 } 318 instr.value = positiveSignals % 2 != 0 ? 1.0 : -1.0; 313 319 } else if (instr.opCode == OpCodes.GT) { 314 320 double x = code[instr.childIndex].value;
Note: See TracChangeset
for help on using the changeset viewer.