timeseries/funcs.go
Rama main · réplica de lectura del repositorio original.
package timeseries
type F func(Time, float32, float32) float32
func Any(t Time, v1, v2 float32) float32 {
if !IsNaN(v1) {
return v1
}
return v2
}
func LastNotNaN(t Time, v1, v2 float32) float32 {
if !IsNaN(v2) {
return v2
}
return v1
}
func NanSum(t Time, sum, v float32) float32 {
if IsNaN(sum) {
sum = 0
}
if !IsNaN(v) {
sum += v
}
return sum
}
func NanCount(t Time, count, v float32) float32 {
if IsNaN(count) {
count = 0
}
if !IsNaN(v) {
count += 1
}
return count
}
func Max(t Time, acc, v float32) float32 {
if IsNaN(acc) {
return v
}
if IsNaN(v) {
return acc
}
if v > acc {
return v
}
return acc
}
func Min(t Time, acc, v float32) float32 {
if IsNaN(acc) {
return v
}
if IsNaN(v) {
return acc
}
if v < acc {
return v
}
return acc
}
func Defined(t Time, v float32) float32 {
if IsNaN(v) {
return 0
}
return 1
}
func NanToZero(t Time, v float32) float32 {
if IsNaN(v) {
return 0
}
return v
}
func ZeroToNan(t Time, v float32) float32 {
if v == 0 {
return NaN
}
return v
}