mirror of
https://github.com/MontFerret/ferret.git
synced 2025-11-23 21:54:45 +02:00
Feature/#7 numeric functions (#116)
* #7 Added ABS * #7 Added ACOS * #7 Added ASIN * #7 Added ATAN * #7 Added ATAN2 * #7 Added AVERAGE * #7 Added CEIL * #7 Added COS * #7 Added DEGREES * #7 Added EXP * #7 Added EXP2 * #7 Added FLOOR * #7 Added LOG * #7 Added LOG2 * #7 Added LOG10 * #7 Added MAX * #7 Added MEDIAN * #7 Added MIN * #7 Added PERCENTILE * #7 Added PI * #7 Added POW * #7 Added RADIANS * #7 Added RAND * #7 Added RANGE * #7 Added ROUND * #7 Added SIN * #7 Added SQRT * #7 Added TAN * #7 Added SUM * #7 Added STDDEV_POPULATION * #7 Added STDDEV_SAMPLE, VARIANCE_POPULATION, VARIANCE_SAMPLE
This commit is contained in:
36
pkg/stdlib/math/variance_sample.go
Normal file
36
pkg/stdlib/math/variance_sample.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package math
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/MontFerret/ferret/pkg/runtime/core"
|
||||
"github.com/MontFerret/ferret/pkg/runtime/values"
|
||||
"math"
|
||||
)
|
||||
|
||||
/*
|
||||
* Returns the sample variance of the values in a given array.
|
||||
* @params (Array) - Array of numbers.
|
||||
* @returns (Float) - The sample variance.
|
||||
*/
|
||||
func SampleVariance(_ context.Context, args ...core.Value) (core.Value, error) {
|
||||
var err error
|
||||
err = core.ValidateArgs(args, 1, 1)
|
||||
|
||||
if err != nil {
|
||||
return values.None, err
|
||||
}
|
||||
|
||||
err = core.ValidateType(args[0], core.ArrayType)
|
||||
|
||||
if err != nil {
|
||||
return values.None, err
|
||||
}
|
||||
|
||||
arr := args[0].(*values.Array)
|
||||
|
||||
if arr.Length() == 0 {
|
||||
return values.NewFloat(math.NaN()), nil
|
||||
}
|
||||
|
||||
return variance(arr, values.NewInt(1))
|
||||
}
|
||||
Reference in New Issue
Block a user