RealtimeAnalysis.FormPRM.GetI_of_k C# (CSharp) Method

GetI_of_k() private method

private GetI_of_k ( DataTable dt, int i, int k ) : double
dt System.Data.DataTable
i int
k int
return double
        private double GetI_of_k(DataTable dt, int i, int k)
        {
            // Dynamic programming
            string key = i + "_" + k;
            if (dict_i.ContainsKey(key))
                return dict_i[key];

            // CAUTION!!! 
            // i = priority = the task number

            double e_i = GetExecutionTimeByTaskNumber(dt, i);

            List<DataRow> listDr = GetAllHigherPriorityTasks(dt, i);
            double sum = 0;
            foreach (DataRow dr in listDr)
            {
                // Current task infos
                int taskNumber = int.Parse(dr["Priority"].ToString());
                double taskPeriod = double.Parse(dr["Period"].ToString());
                double taskExecution = double.Parse(dr["ExecutionTime"].ToString());

                sum += Math.Ceiling(GetR_of_k(dt, i, k - 1) / taskPeriod) * taskExecution;
            }

            double value = e_i + sum;
            dict_i.Add(key, value);
            return value;
        }
        private double GetDBF_RM(DataTable dt, double t, int i, double csOverhead)