summaryrefslogtreecommitdiff
path: root/calc.go
diff options
context:
space:
mode:
Diffstat (limited to 'calc.go')
-rw-r--r--calc.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/calc.go b/calc.go
index 1610f5e..8f3bfb0 100644
--- a/calc.go
+++ b/calc.go
@@ -350,6 +350,8 @@ var tokenPriority = map[string]int{
// POWER
// PRODUCT
// PROPER
+// QUARTILE
+// QUARTILE.INC
// QUOTIENT
// RADIANS
// RAND
@@ -4625,6 +4627,40 @@ func (fn *formulaFuncs) PERMUTATIONA(argsList *list.List) formulaArg {
return newNumberFormulaArg(math.Pow(num, numChosen))
}
+// QUARTILE function returns a requested quartile of a supplied range of
+// values. The syntax of the function is:
+//
+// QUARTILE(array,quart)
+//
+func (fn *formulaFuncs) QUARTILE(argsList *list.List) formulaArg {
+ if argsList.Len() != 2 {
+ return newErrorFormulaArg(formulaErrorVALUE, "QUARTILE requires 2 arguments")
+ }
+ quart := argsList.Back().Value.(formulaArg).ToNumber()
+ if quart.Type != ArgNumber {
+ return quart
+ }
+ if quart.Number < 0 || quart.Number > 4 {
+ return newErrorFormulaArg(formulaErrorNUM, formulaErrorNUM)
+ }
+ args := list.New().Init()
+ args.PushBack(argsList.Front().Value.(formulaArg))
+ args.PushBack(newNumberFormulaArg(quart.Number / 4))
+ return fn.PERCENTILE(args)
+}
+
+// QUARTILEdotINC function returns a requested quartile of a supplied range of
+// values. The syntax of the function is:
+//
+// QUARTILE.INC(array,quart)
+//
+func (fn *formulaFuncs) QUARTILEdotINC(argsList *list.List) formulaArg {
+ if argsList.Len() != 2 {
+ return newErrorFormulaArg(formulaErrorVALUE, "QUARTILE.INC requires 2 arguments")
+ }
+ return fn.QUARTILE(argsList)
+}
+
// SKEW function calculates the skewness of the distribution of a supplied set
// of values. The syntax of the function is:
//