Jump to content

Cumulative standard deviation: Difference between revisions

Line 2,886:
=={{header|Scala}}==
{{libheader|Scala}}
<lang Scala>import scala.math._sqrt
import Numeric.Implicits._
 
object StddevCalc extends App {
 
def avg[T](ts: Iterable[T])(implicit num: Fractional[T]): T = {
num.div(ts.sum, num.fromInt(ts.size)) // Leaving with type of function T
}
 
def calcAvgAndStddev[T](ts: Iterable[T])(implicit num: Fractional[T]): (T, Double) = {
def avg[T](ts: Iterable[T])(implicit num: Fractional[T]): T = {
num.div(ts.sum, num.fromInt(ts.size)) // Leaving with type of function T
}
 
val mean = avg(ts) // Leave val type of T
val stdDev = // Root of mean diffs
sqrt(num.toDouble(
sqrt(num.toDouble(ts.foldLeft(num.zero)((b, a) => num.plus(b, num.times(num.minus(a, mean), num.minus(a, mean))))) / ts.size)
ts.foldLeft(num.zero)((b, a) =>
sqrt(num.toDouble(ts.foldLeft(num.zero)((b, a) => num.plus(b, num.times(num.minus(a, mean), num.minus(a, mean))))) / ts.size)
ts.size)
(mean, stdDev)
}
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.