Skip to content

Commit 17af64a

Browse files
author
linzhijun
committed
fix
1 parent 29894c4 commit 17af64a

8 files changed

Lines changed: 36 additions & 20 deletions

File tree

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_AVEDEV.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
2121
var o = FunctionUtil.F_base_GetList(args, list);
2222
if (o == false) { return FunctionError(); }
2323
if (list.Count == 0) { return Operand.Zero; }
24-
var avg = list.Average();
2524
decimal sum = 0;
25+
foreach (var item in list) { sum += item; }
26+
var avg = sum / list.Count;
27+
decimal sum2 = 0;
2628
foreach (var item in list) {
27-
sum += Math.Abs(item - avg);
29+
sum2 += Math.Abs(item - avg);
2830
}
29-
return Operand.Create(sum / list.Count);
31+
return Operand.Create(sum2 / list.Count);
3032
}
3133

3234
}

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_AVERAGE.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
2121
var o = FunctionUtil.F_base_GetList(args, list);
2222
if (o == false) { return FunctionError(); }
2323
if (list.Count == 0) { return Operand.Zero; }
24-
return Operand.Create(list.Average());
24+
decimal sum = 0;
25+
foreach (var item in list) { sum += item; }
26+
return Operand.Create(sum / list.Count);
2527
}
2628

2729
}

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_COVAR.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
2828
if (list1.Count != list2.Count) { return Operand.Error("Function '{0}' parameter's count error!", "Covar"); }
2929
if (list1.Count == 0) { return Operand.Error("Function '{0}' parameter's count error!", "Covar"); }
3030

31-
var avg1 = list1.Average();
32-
var avg2 = list2.Average();
31+
decimal sum1 = 0, sum2 = 0;
32+
for (int i = 0; i < list1.Count; i++) { sum1 += list1[i]; sum2 += list2[i]; }
33+
var avg1 = sum1 / list1.Count;
34+
var avg2 = sum2 / list1.Count;
3335
decimal sum = 0;
3436
for (int i = 0; i < list1.Count; i++) {
3537
sum += (list1[i] - avg1) * (list2[i] - avg2);

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_COVARIANCES.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
3030
if (list1.Count != list2.Count) { return Operand.Error("Function '{0}' parameter's count error!", "CovarIanceS"); }
3131
if (list1.Count == 1) { return Operand.Error("Function '{0}' parameter's count error!", "CovarIanceS"); }
3232

33-
var avg1 = list1.Average();
34-
var avg2 = list2.Average();
33+
decimal sum1 = 0, sum2 = 0;
34+
for (int i = 0; i < list1.Count; i++) { sum1 += list1[i]; sum2 += list2[i]; }
35+
var avg1 = sum1 / list1.Count;
36+
var avg2 = sum2 / list1.Count;
3537
decimal sum = 0;
3638
for (int i = 0; i < list1.Count; i++) {
3739
sum += (list1[i] - avg1) * (list2[i] - avg2);

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_DEVSQ.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
2121
var o = FunctionUtil.F_base_GetList(args, list);
2222
if (o == false) { return FunctionError(); }
2323
if (list.Count == 0) { return FunctionError(); }
24-
var avg = list.Average();
2524
decimal sum = 0;
25+
foreach (var item in list) { sum += item; }
26+
var avg = sum / list.Count;
27+
decimal sum2 = 0;
2628
for (int i = 0; i < list.Count; i++) {
27-
sum += (list[i] - avg) * (list[i] - avg);
29+
sum2 += (list[i] - avg) * (list[i] - avg);
2830
}
29-
return Operand.Create(sum);
31+
return Operand.Create(sum2);
3032
}
3133

3234
}

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_STDEV.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
2222
if (o == false) { return FunctionError(); }
2323
if (list.Count == 0) { return FunctionError(); }
2424

25-
var avg = list.Average();
2625
double sum = 0;
26+
foreach (var item in list) { sum += item; }
27+
var avg = sum / list.Count;
28+
double sum2 = 0;
2729
for (int i = 0; i < list.Count; i++) {
28-
sum += (list[i] - avg) * (list[i] - avg);
30+
sum2 += (list[i] - avg) * (list[i] - avg);
2931
}
30-
return Operand.Create(Math.Sqrt((double)sum / (list.Count - 1)));
32+
return Operand.Create(Math.Sqrt(sum2 / (list.Count - 1)));
3133
}
3234

3335
}

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_STDEVP.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
2121
var o = FunctionUtil.F_base_GetList(args, list);
2222
if (o == false) { return FunctionError(); }
2323
if (list.Count == 0) { return FunctionError(); }
24-
var avg = list.Average();
2524
double sum = 0;
25+
foreach (var item in list) { sum += item; }
26+
var avg = sum / list.Count;
27+
double sum2 = 0;
2628
for (int i = 0; i < list.Count; i++) {
27-
sum += (list[i] - avg) * (list[i] - avg);
29+
sum2 += (list[i] - avg) * (list[i] - avg);
2830
}
29-
return Operand.Create(Math.Sqrt((double)sum / list.Count));
31+
return Operand.Create(Math.Sqrt(sum2 / list.Count));
3032
}
3133

3234
}

csharp/ToolGood.Algorithm/Internals/Functions/MathSum/Function_VARP.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ public override Operand Evaluate(AlgorithmEngine engine, Func<AlgorithmEngine, s
2525
if (list.Count == 1) { return Operand.Zero; }
2626

2727
decimal sum = 0;
28-
decimal avg = list.Average();
28+
foreach (var item in list) { sum += item; }
29+
decimal avg = sum / list.Count;
30+
decimal sum2 = 0;
2931
for (int i = 0; i < list.Count; i++) {
30-
sum += (avg - list[i]) * (avg - list[i]);
32+
sum2 += (avg - list[i]) * (avg - list[i]);
3133
}
32-
return Operand.Create(sum / list.Count);
34+
return Operand.Create(sum2 / list.Count);
3335
}
3436

3537
}

0 commit comments

Comments
 (0)