///|
pub fn moving_average(
values : ArrayView[Double],
radius : Int,
) -> Array[Double] {
let output : Array[Double] = []
for i in 0.. Array[Double] {
let output : Array[Double] = []
for i in 0.. Array[Double] {
let output : Array[Double] = []
for i in 0.. Array[Double] {
let output : Array[Double] = []
for i in 0.. Array[Double] {
let output : Array[Double] = []
for i in 0.. Array[Double] {
let output : Array[Double] = []
if values.length() > 0 {
output.push(0.0)
for i in 1.. Array[Double] {
first_difference(first_difference(values))
}
///|
pub fn cumulative_sum(values : ArrayView[Double]) -> Array[Double] {
let output : Array[Double] = []
let mut total = 0.0
for value in values {
if is_finite(value) {
total += value
}
output.push(total)
}
output
}
///|
pub fn exponential_smooth(
values : ArrayView[Double],
alpha : Double,
) -> Array[Double] {
let output : Array[Double] = []
let mut previous = 0.0
let factor = alpha.clamp(min=0.0, max=1.0)
for i in 0.. Array[Double] {
let n = values.length()
if n < 2 {
values.to_owned()
} else {
let mut sx = 0.0
let mut sy = 0.0
let mut sxx = 0.0
let mut sxy = 0.0
for i in 0.. Array[Double] {
let s = summary(values)
if s.variance == 0.0 {
values.map(fn(_) { 0.0 })
} else {
values.map(fn(value) { (value - s.mean) / s.variance.sqrt() })
}
}