Files
banstagy/com/ema.go
2026-08-24 20:53:21 +08:00

29 lines
394 B
Go

package com
import "math"
type Ema struct {
Alpha float64
Val float64
}
func NewEMA(alpha float64) *Ema {
return &Ema{Alpha: alpha}
}
func (e *Ema) Update(val float64) float64 {
if math.IsNaN(val) || math.IsInf(val, 0) {
return math.NaN()
}
if e.Val == 0 {
e.Val = val
} else {
e.Val = e.Val*(1-e.Alpha) + val*e.Alpha
}
return e.Val
}
func (e *Ema) Reset() {
e.Val = 0
}