Skip to content

Commit c9bb49d

Browse files
remove duplication
1 parent fda9ad3 commit c9bb49d

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

algebird-core/src/main/scala/com/twitter/algebird/AveragedValue.scala

+9-17
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ object AveragedGroup extends Group[AveragedValue] {
5151
* Note that n must be >= k.
5252
*/
5353
private def stableAverage(n: Long, an: Double, k: Long, ak: Double): Double =
54-
(n + k) match {
54+
if (n < k) stableAverage(k, ak, n, an)
55+
else (n + k) match {
5556
case 0L => 0.0
5657
case newCount if (newCount == n) => an
5758
case newCount =>
@@ -74,27 +75,18 @@ object AveragedGroup extends Group[AveragedValue] {
7475
var average = 0.0
7576
iter.foreach {
7677
case AveragedValue(c, v) =>
77-
average =
78-
if (count >= c) stableAverage(count, average, c, v)
79-
else stableAverage(c, v, count, average)
78+
average = stableAverage(count, average, c, v)
8079
count += c
8180
}
8281
Some(AveragedValue(count, average))
8382
}
8483

85-
def plus(big: AveragedValue, small: AveragedValue): AveragedValue =
86-
if (big.count < small.count) plus(small, big)
87-
else {
88-
val n = big.count
89-
val k = small.count
90-
(n + k) match {
91-
case 0L => zero
92-
case newCount if (newCount == n) => big
93-
case newCount =>
94-
val newAve = stableAverage(big.count, big.value, small.count, small.value)
95-
AveragedValue(newCount, newAve)
96-
}
97-
}
84+
def plus(big: AveragedValue, small: AveragedValue): AveragedValue = {
85+
val n = big.count
86+
val k = small.count
87+
val newAve = stableAverage(n, big.value, k, small.value)
88+
AveragedValue(n + k, newAve)
89+
}
9890
}
9991

10092
object Averager extends MonoidAggregator[Double, AveragedValue, Double] {

0 commit comments

Comments
 (0)