From eb4e1c8f35c1a21b16c5dbf2bfab66a70f694af5 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 30 Oct 2012 13:47:49 +0100 Subject: clarify smooth implementation --- src/main/scala/scalam/math/package.scala | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'src') 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 -- cgit v1.2.3