aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2012-10-30 13:47:49 +0100
committerJakob Odersky <jodersky@gmail.com>2012-10-30 13:47:49 +0100
commiteb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5 (patch)
treebd763a25dc03dfd57d86b667308399f84509d696 /src
parent91b9f59892dd1004e9ec496237fd712a6d7a00b6 (diff)
downloadscalam-eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5.tar.gz
scalam-eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5.tar.bz2
scalam-eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5.zip
clarify smooth implementation
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/scalam/math/package.scala13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/main/scala/scalam/math/package.scala b/src/main/scala/scalam/math/package.scala
index 58063fa..4121b8c 100644
--- a/src/main/scala/scalam/math/package.scala
+++ b/src/main/scala/scalam/math/package.scala
@@ -3,22 +3,19 @@ package scalam
import scala.collection.SeqLike
import scala.collection.generic.CanBuildFrom
package object math {
-
+
def smooth[Elem, Coll[Elem]](width: Int, passes: Int, collection: Coll[Elem])(implicit fractional: Fractional[Elem], cbf: CanBuildFrom[Coll[Elem], Elem, Coll[Elem]], view: Coll[Elem] => Seq[Elem]): Coll[Elem] = {
def average(xs: Seq[Elem]): Elem = {
import fractional._
xs.sum / fromInt(xs.length)
}
-
- def smoothOnce(width: Int, collection: Coll[Elem]) = {
+
+ if (passes <= 0) collection
+ else {
val b = cbf(collection)
collection.sliding(width).foreach(neighbours => b += average(neighbours))
- b.result()
-
+ smooth(width, passes - 1, b.result())
}
-
- if (passes <= 0) collection
- else smooth(width, passes - 1, smoothOnce(width, collection))
}
} \ No newline at end of file