72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package math
|
||
|
||
import (
|
||
"math"
|
||
)
|
||
|
||
// Sign 符号函数(Sign function,简称sgn)是一个逻辑函数,用以判断实数的正负号。为避免和英文读音相似的正弦函数(sine)混淆,它亦称为Signum function。
|
||
func Sign[T int | int8 | int16 | int32 | int64 | float32 | float64](x T) T {
|
||
switch {
|
||
case x < 0: // x < 0 : -1
|
||
return -1
|
||
case x > 0: // x > 0 : +1
|
||
return +1
|
||
default: // x == 0 : 0
|
||
return 0
|
||
}
|
||
}
|
||
|
||
// Mean 计算给定数据的平均值
|
||
func Mean(num []float64) float64 {
|
||
var count = len(num)
|
||
var sum float64 = 0
|
||
for i := 0; i < count; i++ {
|
||
sum += num[i]
|
||
}
|
||
return sum / float64(count)
|
||
}
|
||
|
||
// Variance 使用平均值计算给定数据的方差
|
||
func Variance(mean float64, num []float64) float64 {
|
||
var count = len(num)
|
||
var variance float64 = 0
|
||
for i := 0; i < count; i++ {
|
||
variance += math.Pow(num[i]-mean, 2)
|
||
}
|
||
return variance / float64(count)
|
||
}
|
||
|
||
// StandardDeviation 使用方差计算给定数据的标准偏差
|
||
func StandardDeviation(num []float64) float64 {
|
||
var mean = Mean(num)
|
||
var variance = Variance(mean, num)
|
||
return math.Sqrt(variance)
|
||
}
|
||
|
||
// SumInt 计算整数数组的和
|
||
func SumInt[T int | int32 | int64](array []T) int64 {
|
||
var sum int64
|
||
for _, v := range array {
|
||
sum = sum + int64(v)
|
||
}
|
||
return sum
|
||
}
|
||
|
||
// SumUint 计算整数数组的和
|
||
func SumUint[T uint | uint32 | uint64](array []T) uint64 {
|
||
var sum uint64
|
||
for _, v := range array {
|
||
sum = sum + uint64(v)
|
||
}
|
||
return sum
|
||
}
|
||
|
||
// SumFloat 计算浮点数数组的和
|
||
func SumFloat[T float32 | float64](array []T) float64 {
|
||
var sum float64
|
||
for _, v := range array {
|
||
sum = sum + float64(v)
|
||
}
|
||
return sum
|
||
}
|