///|
/// Returns the arithmetic mean of `x`. Returns `0.0` for an empty array.
pub fn mean(x : Array[Double]) -> Double {
let n = x.length()
if n == 0 {
return 0.0
}
let mut sum = 0.0
for i in 0.. Double {
let n = x.length()
if n == 0 {
return 0.0
}
let m = mean(x)
let mut s = 0.0
for i in 0.. Double {
variance(x, sample~).sqrt()
}
///|
/// Root-mean-square value of `x`: `sqrt(mean(x^2))`.
pub fn rms(x : Array[Double]) -> Double {
let n = x.length()
if n == 0 {
return 0.0
}
let mut s = 0.0
for i in 0.. Double {
let mut s = 0.0
for i in 0.. Double {
let mut m = 0.0
for i in 0.. m {
m = a
}
}
m
}
///|
/// Scales `x` so that its maximum absolute value becomes `1.0`.
///
/// Returns a copy; the input is not modified. An all-zero (or empty) input
/// is returned unchanged.
pub fn normalize(x : Array[Double]) -> Array[Double] {
let m = max_abs(x)
if m <= 1.0e-15 {
return x.copy()
}
Array::makei(x.length(), fn(i) { x[i] / m })
}