|
|
Line 2,361: |
Line 2,361: |
|
7 value in = 7 Stand Dev = 1.399708 |
|
7 value in = 7 Stand Dev = 1.399708 |
|
8 value in = 9 Stand Dev = 2.000000</pre> |
|
8 value in = 9 Stand Dev = 2.000000</pre> |
|
|
|
|
|
|
⚫ |
|
|
|
[[Category:Scala Implementations]] |
|
⚫ |
|
|
⚫ |
<lang Scala>import scala.math._ |
|
⚫ |
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) = { |
|
⚫ |
val mean = avg(ts) // Leave val type of T |
|
⚫ |
val stdDev = // Root of mean diffs |
|
⚫ |
sqrt(num.toDouble(ts.foldLeft(num.zero)((b, a) => num.plus(b, num.times(num.minus(a, mean), num.minus(a, mean))))) / ts.size) |
|
⚫ |
|
|
⚫ |
|
|
|
|
|
⚫ |
def calcAvgAndStddev(ts: Iterable[BigDecimal]): (Double, Double) = // Overloaded for BigDecimal |
|
⚫ |
calcAvgAndStddev(ts.map(_.toDouble)) |
|
|
|
|
⚫ |
println(calcAvgAndStddev(List(2.0E0, 4.0, 4, 4, 5, 5, 7, 9))) |
|
⚫ |
println(calcAvgAndStddev(Set(1.0, 2, 3, 4))) |
|
⚫ |
println(calcAvgAndStddev(0.1 to 1.1 by 0.05)) |
|
⚫ |
println(calcAvgAndStddev(List(BigDecimal(120), BigDecimal(1200)))) |
|
⚫ |
|
|
|
|
|
|
|
=={{header|SAS}}== |
|
=={{header|SAS}}== |
Line 2,440: |
Line 2,411: |
|
8 2.00000 |
|
8 2.00000 |
|
</pre> |
|
</pre> |
|
|
|
|
|
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
<lang Scala>import scala.math._ |
|
⚫ |
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) = { |
|
⚫ |
val mean = avg(ts) // Leave val type of T |
|
⚫ |
val stdDev = // Root of mean diffs |
|
⚫ |
sqrt(num.toDouble(ts.foldLeft(num.zero)((b, a) => num.plus(b, num.times(num.minus(a, mean), num.minus(a, mean))))) / ts.size) |
|
⚫ |
|
|
⚫ |
|
|
|
|
|
⚫ |
def calcAvgAndStddev(ts: Iterable[BigDecimal]): (Double, Double) = // Overloaded for BigDecimal |
|
⚫ |
calcAvgAndStddev(ts.map(_.toDouble)) |
|
|
|
|
⚫ |
println(calcAvgAndStddev(List(2.0E0, 4.0, 4, 4, 5, 5, 7, 9))) |
|
⚫ |
println(calcAvgAndStddev(Set(1.0, 2, 3, 4))) |
|
⚫ |
println(calcAvgAndStddev(0.1 to 1.1 by 0.05)) |
|
⚫ |
println(calcAvgAndStddev(List(BigDecimal(120), BigDecimal(1200)))) |
|
⚫ |
|
|
|
|
|
|
=={{header|Scheme}}== |
|
=={{header|Scheme}}== |