Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/11/12 17:48:27 (12 years ago)
Author:
mkommend
Message:

#1081: Reintegrated time series modeling branch into trunk.

Location:
trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic

  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs

    r8436 r8798  
    565565        case OpCodes.Variable: {
    566566            VariableTreeNode varNode = (VariableTreeNode)currentInstr.dynamicNode;
     567            il.Emit(System.Reflection.Emit.OpCodes.Ldarg_1); // load columns array
     568            il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, (int)currentInstr.iArg0);
     569            // load correct column of the current variable
     570            il.Emit(System.Reflection.Emit.OpCodes.Ldelem_Ref);
     571            il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
    567572            if (!state.InLaggedContext) {
    568               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_1); // load columns array
    569               il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, (int)currentInstr.iArg0);
    570               // load correct column of the current variable
    571               il.Emit(System.Reflection.Emit.OpCodes.Ldelem_Ref);
    572               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
    573573              il.Emit(System.Reflection.Emit.OpCodes.Call, listGetValue);
    574574              il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, varNode.Weight); // load weight
     
    577577              var nanResult = il.DefineLabel();
    578578              var normalResult = il.DefineLabel();
    579               var cachedValue = il.DefineLabel();
    580               var multiplyValue = il.DefineLabel();
    581               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
    582579              il.Emit(System.Reflection.Emit.OpCodes.Dup);
    583580              il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4_0);
     
    586583              il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, ds.Rows);
    587584              il.Emit(System.Reflection.Emit.OpCodes.Bge, nanResult);
    588               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_3);
    589               il.Emit(System.Reflection.Emit.OpCodes.Bge, cachedValue);
    590               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_1); // load columns array
    591               il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, (int)currentInstr.iArg0);
    592               il.Emit(System.Reflection.Emit.OpCodes.Ldelem_Ref);
    593               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
    594585              il.Emit(System.Reflection.Emit.OpCodes.Call, listGetValue);
    595               il.Emit(System.Reflection.Emit.OpCodes.Br, multiplyValue);
    596               il.MarkLabel(cachedValue);
    597               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_2); // load cached values array
    598               il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, (int)currentInstr.iArg0);
    599               il.Emit(System.Reflection.Emit.OpCodes.Ldelem_Ref);
    600               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
    601               il.Emit(System.Reflection.Emit.OpCodes.Ldarg_3); // startRow
    602               il.Emit(System.Reflection.Emit.OpCodes.Sub); // startRow
    603               il.Emit(System.Reflection.Emit.OpCodes.Call, listGetValue);
    604               il.MarkLabel(multiplyValue);
    605586              il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, varNode.Weight); // load weight
    606587              il.Emit(System.Reflection.Emit.OpCodes.Mul);
     
    608589              il.MarkLabel(nanResult);
    609590              il.Emit(System.Reflection.Emit.OpCodes.Pop); // rowIndex
     591              il.Emit(System.Reflection.Emit.OpCodes.Pop); // column reference
    610592              il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, double.NaN);
    611593              il.MarkLabel(normalResult);
     
    616598            var nanResult = il.DefineLabel();
    617599            var normalResult = il.DefineLabel();
    618             var cachedValue = il.DefineLabel();
    619             var multiplyValue = il.DefineLabel();
    620600            LaggedVariableTreeNode varNode = (LaggedVariableTreeNode)currentInstr.dynamicNode;
     601            il.Emit(System.Reflection.Emit.OpCodes.Ldarg_1); // load columns array
     602            il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, (int)currentInstr.iArg0);
     603            // load correct column of the current variable
     604            il.Emit(System.Reflection.Emit.OpCodes.Ldelem_Ref);
    621605            il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, varNode.Lag); // lag
    622606            il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
     
    628612            il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, ds.Rows);
    629613            il.Emit(System.Reflection.Emit.OpCodes.Bge, nanResult);
    630             il.Emit(System.Reflection.Emit.OpCodes.Ldarg_3); // startindex
    631             il.Emit(System.Reflection.Emit.OpCodes.Bge, cachedValue);
    632             // normal value
    633             il.Emit(System.Reflection.Emit.OpCodes.Ldarg_1); // load columns array
    634             il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, (int)currentInstr.iArg0); // load correct column of the current variable
    635             il.Emit(System.Reflection.Emit.OpCodes.Ldelem_Ref);
    636             il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, varNode.Lag); // lag
    637             il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
    638             il.Emit(System.Reflection.Emit.OpCodes.Add); // actualRowIndex = rowIndex + sampleOffset
    639614            il.Emit(System.Reflection.Emit.OpCodes.Call, listGetValue);
    640             il.Emit(System.Reflection.Emit.OpCodes.Br, multiplyValue);
    641             il.MarkLabel(cachedValue);
    642             // cached value
    643             il.Emit(System.Reflection.Emit.OpCodes.Ldarg_2); // load cached values
    644             il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, (int)currentInstr.iArg0); // load correct column of the current variable
    645             il.Emit(System.Reflection.Emit.OpCodes.Ldelem_Ref);
    646             il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, varNode.Lag); // lag
    647             il.Emit(System.Reflection.Emit.OpCodes.Ldarg_0); // rowIndex
    648             il.Emit(System.Reflection.Emit.OpCodes.Add); // actualRowIndex = rowIndex + sampleOffset
    649             il.Emit(System.Reflection.Emit.OpCodes.Ldarg_3); // startRow
    650             il.Emit(System.Reflection.Emit.OpCodes.Sub); // startRow           
    651             il.Emit(System.Reflection.Emit.OpCodes.Call, listGetValue);
    652 
    653             il.MarkLabel(multiplyValue);
    654615            il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, varNode.Weight); // load weight
    655616            il.Emit(System.Reflection.Emit.OpCodes.Mul);
    656617            il.Emit(System.Reflection.Emit.OpCodes.Br, normalResult);
    657618            il.MarkLabel(nanResult);
    658             il.Emit(System.Reflection.Emit.OpCodes.Pop); // pop the row index
     619            il.Emit(System.Reflection.Emit.OpCodes.Pop); // sample index
     620            il.Emit(System.Reflection.Emit.OpCodes.Pop); // column reference
    659621            il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, double.NaN);
    660622            il.MarkLabel(normalResult);
     
    769731      return alglib.besseli0(x);
    770732    }
    771 
    772733  }
    773734}
Note: See TracChangeset for help on using the changeset viewer.