mirror of
https://github.com/MontFerret/ferret.git
synced 2024-12-16 11:37:36 +02:00
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
|
package math
|
||
|
|
||
|
import (
|
||
|
"github.com/MontFerret/ferret/pkg/runtime/core"
|
||
|
"github.com/MontFerret/ferret/pkg/runtime/values"
|
||
|
"math"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
RadToDeg = 180 / math.Pi
|
||
|
DegToRad = math.Pi / 180
|
||
|
RadToGrad = 200 / math.Pi
|
||
|
GradToDeg = math.Pi / 200
|
||
|
)
|
||
|
|
||
|
func NewLib() map[string]core.Function {
|
||
|
return map[string]core.Function{
|
||
|
"ABS": Abs,
|
||
|
"ACOS": Acos,
|
||
|
"ASIN": Asin,
|
||
|
"ATAN": Atan,
|
||
|
"ATAN2": Atan2,
|
||
|
"AVERAGE": Average,
|
||
|
"CEIL": Ceil,
|
||
|
"COS": Cos,
|
||
|
"DEGREES": Degrees,
|
||
|
"EXP": Exp,
|
||
|
"EXP2": Exp2,
|
||
|
"FLOOR": Floor,
|
||
|
"LOG": Log,
|
||
|
"LOG2": Log2,
|
||
|
"LOG10": Log10,
|
||
|
"MAX": Max,
|
||
|
"MEDIAN": Median,
|
||
|
"MIN": Min,
|
||
|
"PERCENTILE": Percentile,
|
||
|
"PI": Pi,
|
||
|
"POW": Pow,
|
||
|
"RADIANS": Radians,
|
||
|
"RAND": Rand,
|
||
|
"RANGE": Range,
|
||
|
"ROUND": Round,
|
||
|
"SIN": Sin,
|
||
|
"SQRT": Sqrt,
|
||
|
"STDDEV_POPULATION": StandardDeviationPopulation,
|
||
|
"STDDEV_SAMPLE": StandardDeviationSample,
|
||
|
"SUM": Sum,
|
||
|
"TAN": Tan,
|
||
|
"VARIANCE_POPULATION": PopulationVariance,
|
||
|
"VARIANCE_SAMPLE": SampleVariance,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func toFloat(arg core.Value) float64 {
|
||
|
if arg.Type() == core.IntType {
|
||
|
return float64(arg.(values.Int))
|
||
|
}
|
||
|
|
||
|
return float64(arg.(values.Float))
|
||
|
}
|