1
0
mirror of https://github.com/MontFerret/ferret.git synced 2024-12-14 11:23:02 +02:00
ferret/pkg/stdlib/math/lib.go
Tim Voronov 22382a0f61
Added namespace builder (#336)
* Added namespace builder

* Fixed linting issues

* Added extra check

* Updated e2e lib

* Renamed NamespaceBuilder to NamespaceContainer and changed func receivers

* Renamed NewLib to RegisterLib
2019-07-22 17:21:20 -04:00

63 lines
1.6 KiB
Go

package math
import (
"math"
"github.com/MontFerret/ferret/pkg/runtime/core"
"github.com/MontFerret/ferret/pkg/runtime/values"
"github.com/MontFerret/ferret/pkg/runtime/values/types"
)
const (
RadToDeg = 180 / math.Pi
DegToRad = math.Pi / 180
RadToGrad = 200 / math.Pi
GradToDeg = math.Pi / 200
)
func RegisterLib(ns core.Namespace) error {
return ns.RegisterFunctions(core.Functions{
"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() == types.Int {
return float64(arg.(values.Int))
}
return float64(arg.(values.Float))
}