diff options
author | xuri <xuri.me@gmail.com> | 2022-08-13 11:21:59 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2022-08-13 11:21:59 +0800 |
commit | 551fb8a9e4b03fe718a339e75aeacc8b5581378a (patch) | |
tree | 17e38203f802da690e709072305476b450a620ac /calc.go | |
parent | 8152bbb2cec76f074dc18c43f3c66bf8abdf9de0 (diff) |
This closes #1244 and closes #1314, improving the compatibility with Google Sheet
- Format code with `gofmt`
Diffstat (limited to 'calc.go')
-rw-r--r-- | calc.go | 2184 |
1 files changed, 874 insertions, 1310 deletions
@@ -331,441 +331,440 @@ type formulaFuncs struct { // // Supported formula functions: // -// ABS -// ACCRINT -// ACCRINTM -// ACOS -// ACOSH -// ACOT -// ACOTH -// ADDRESS -// AMORDEGRC -// AMORLINC -// AND -// ARABIC -// ASIN -// ASINH -// ATAN -// ATAN2 -// ATANH -// AVEDEV -// AVERAGE -// AVERAGEA -// AVERAGEIF -// AVERAGEIFS -// BASE -// BESSELI -// BESSELJ -// BESSELK -// BESSELY -// BETADIST -// BETA.DIST -// BETAINV -// BETA.INV -// BIN2DEC -// BIN2HEX -// BIN2OCT -// BINOMDIST -// BINOM.DIST -// BINOM.DIST.RANGE -// BINOM.INV -// BITAND -// BITLSHIFT -// BITOR -// BITRSHIFT -// BITXOR -// CEILING -// CEILING.MATH -// CEILING.PRECISE -// CHAR -// CHIDIST -// CHIINV -// CHITEST -// CHISQ.DIST -// CHISQ.DIST.RT -// CHISQ.INV -// CHISQ.INV.RT -// CHISQ.TEST -// CHOOSE -// CLEAN -// CODE -// COLUMN -// COLUMNS -// COMBIN -// COMBINA -// COMPLEX -// CONCAT -// CONCATENATE -// CONFIDENCE -// CONFIDENCE.NORM -// CONFIDENCE.T -// CONVERT -// CORREL -// COS -// COSH -// COT -// COTH -// COUNT -// COUNTA -// COUNTBLANK -// COUNTIF -// COUNTIFS -// COUPDAYBS -// COUPDAYS -// COUPDAYSNC -// COUPNCD -// COUPNUM -// COUPPCD -// COVAR -// COVARIANCE.P -// COVARIANCE.S -// CRITBINOM -// CSC -// CSCH -// CUMIPMT -// CUMPRINC -// DATE -// DATEDIF -// DATEVALUE -// DAVERAGE -// DAY -// DAYS -// DAYS360 -// DB -// DCOUNT -// DCOUNTA -// DDB -// DEC2BIN -// DEC2HEX -// DEC2OCT -// DECIMAL -// DEGREES -// DELTA -// DEVSQ -// DGET -// DISC -// DMAX -// DMIN -// DOLLARDE -// DOLLARFR -// DPRODUCT -// DSTDEV -// DSTDEVP -// DSUM -// DURATION -// DVAR -// DVARP -// EFFECT -// EDATE -// ENCODEURL -// EOMONTH -// ERF -// ERF.PRECISE -// ERFC -// ERFC.PRECISE -// ERROR.TYPE -// EUROCONVERT -// EVEN -// EXACT -// EXP -// EXPON.DIST -// EXPONDIST -// FACT -// FACTDOUBLE -// FALSE -// F.DIST -// F.DIST.RT -// FDIST -// FIND -// FINDB -// F.INV -// F.INV.RT -// FINV -// FISHER -// FISHERINV -// FIXED -// FLOOR -// FLOOR.MATH -// FLOOR.PRECISE -// FORMULATEXT -// F.TEST -// FTEST -// FV -// FVSCHEDULE -// GAMMA -// GAMMA.DIST -// GAMMADIST -// GAMMA.INV -// GAMMAINV -// GAMMALN -// GAMMALN.PRECISE -// GAUSS -// GCD -// GEOMEAN -// GESTEP -// GROWTH -// HARMEAN -// HEX2BIN -// HEX2DEC -// HEX2OCT -// HLOOKUP -// HOUR -// HYPERLINK -// HYPGEOM.DIST -// HYPGEOMDIST -// IF -// IFERROR -// IFNA -// IFS -// IMABS -// IMAGINARY -// IMARGUMENT -// IMCONJUGATE -// IMCOS -// IMCOSH -// IMCOT -// IMCSC -// IMCSCH -// IMDIV -// IMEXP -// IMLN -// IMLOG10 -// IMLOG2 -// IMPOWER -// IMPRODUCT -// IMREAL -// IMSEC -// IMSECH -// IMSIN -// IMSINH -// IMSQRT -// IMSUB -// IMSUM -// IMTAN -// INDEX -// INDIRECT -// INT -// INTRATE -// IPMT -// IRR -// ISBLANK -// ISERR -// ISERROR -// ISEVEN -// ISFORMULA -// ISLOGICAL -// ISNA -// ISNONTEXT -// ISNUMBER -// ISODD -// ISREF -// ISTEXT -// ISO.CEILING -// ISOWEEKNUM -// ISPMT -// KURT -// LARGE -// LCM -// LEFT -// LEFTB -// LEN -// LENB -// LN -// LOG -// LOG10 -// LOGINV -// LOGNORM.DIST -// LOGNORMDIST -// LOGNORM.INV -// LOOKUP -// LOWER -// MATCH -// MAX -// MAXA -// MAXIFS -// MDETERM -// MDURATION -// MEDIAN -// MID -// MIDB -// MIN -// MINA -// MINIFS -// MINUTE -// MINVERSE -// MIRR -// MMULT -// MOD -// MODE -// MODE.MULT -// MODE.SNGL -// MONTH -// MROUND -// MULTINOMIAL -// MUNIT -// N -// NA -// NEGBINOM.DIST -// NEGBINOMDIST -// NETWORKDAYS -// NETWORKDAYS.INTL -// NOMINAL -// NORM.DIST -// NORMDIST -// NORM.INV -// NORMINV -// NORM.S.DIST -// NORMSDIST -// NORM.S.INV -// NORMSINV -// NOT -// NOW -// NPER -// NPV -// OCT2BIN -// OCT2DEC -// OCT2HEX -// ODD -// ODDFPRICE -// OR -// PDURATION -// PEARSON -// PERCENTILE.EXC -// PERCENTILE.INC -// PERCENTILE -// PERCENTRANK.EXC -// PERCENTRANK.INC -// PERCENTRANK -// PERMUT -// PERMUTATIONA -// PHI -// PI -// PMT -// POISSON.DIST -// POISSON -// POWER -// PPMT -// PRICE -// PRICEDISC -// PRICEMAT -// PRODUCT -// PROPER -// PV -// QUARTILE -// QUARTILE.EXC -// QUARTILE.INC -// QUOTIENT -// RADIANS -// RAND -// RANDBETWEEN -// RANK -// RANK.EQ -// RATE -// RECEIVED -// REPLACE -// REPLACEB -// REPT -// RIGHT -// RIGHTB -// ROMAN -// ROUND -// ROUNDDOWN -// ROUNDUP -// ROW -// ROWS -// RRI -// RSQ -// SEC -// SECH -// SECOND -// SERIESSUM -// SHEET -// SHEETS -// SIGN -// SIN -// SINH -// SKEW -// SKEW.P -// SLN -// SLOPE -// SMALL -// SQRT -// SQRTPI -// STANDARDIZE -// STDEV -// STDEV.P -// STDEV.S -// STDEVA -// STDEVP -// STDEVPA -// STEYX -// SUBSTITUTE -// SUM -// SUMIF -// SUMIFS -// SUMPRODUCT -// SUMSQ -// SUMX2MY2 -// SUMX2PY2 -// SUMXMY2 -// SWITCH -// SYD -// T -// TAN -// TANH -// TBILLEQ -// TBILLPRICE -// TBILLYIELD -// T.DIST -// T.DIST.2T -// T.DIST.RT -// TDIST -// TEXTJOIN -// TIME -// TIMEVALUE -// T.INV -// T.INV.2T -// TINV -// TODAY -// TRANSPOSE -// TREND -// TRIM -// TRIMMEAN -// TRUE -// TRUNC -// T.TEST -// TTEST -// TYPE -// UNICHAR -// UNICODE -// UPPER -// VALUE -// VAR -// VAR.P -// VAR.S -// VARA -// VARP -// VARPA -// VDB -// VLOOKUP -// WEEKDAY -// WEEKNUM -// WEIBULL -// WEIBULL.DIST -// WORKDAY -// WORKDAY.INTL -// XIRR -// XLOOKUP -// XNPV -// XOR -// YEAR -// YEARFRAC -// YIELD -// YIELDDISC -// YIELDMAT -// Z.TEST -// ZTEST -// +// ABS +// ACCRINT +// ACCRINTM +// ACOS +// ACOSH +// ACOT +// ACOTH +// ADDRESS +// AMORDEGRC +// AMORLINC +// AND +// ARABIC +// ASIN +// ASINH +// ATAN +// ATAN2 +// ATANH +// AVEDEV +// AVERAGE +// AVERAGEA +// AVERAGEIF +// AVERAGEIFS +// BASE +// BESSELI +// BESSELJ +// BESSELK +// BESSELY +// BETADIST +// BETA.DIST +// BETAINV +// BETA.INV +// BIN2DEC +// BIN2HEX +// BIN2OCT +// BINOMDIST +// BINOM.DIST +// BINOM.DIST.RANGE +// BINOM.INV +// BITAND +// BITLSHIFT +// BITOR +// BITRSHIFT +// BITXOR +// CEILING +// CEILING.MATH +// CEILING.PRECISE +// CHAR +// CHIDIST +// CHIINV +// CHITEST +// CHISQ.DIST +// CHISQ.DIST.RT +// CHISQ.INV +// CHISQ.INV.RT +// CHISQ.TEST +// CHOOSE +// CLEAN +// CODE +// COLUMN +// COLUMNS +// COMBIN +// COMBINA +// COMPLEX +// CONCAT +// CONCATENATE +// CONFIDENCE +// CONFIDENCE.NORM +// CONFIDENCE.T +// CONVERT +// CORREL +// COS +// COSH +// COT +// COTH +// COUNT +// COUNTA +// COUNTBLANK +// COUNTIF +// COUNTIFS +// COUPDAYBS +// COUPDAYS +// COUPDAYSNC +// COUPNCD +// COUPNUM +// COUPPCD +// COVAR +// COVARIANCE.P +// COVARIANCE.S +// CRITBINOM +// CSC +// CSCH +// CUMIPMT +// CUMPRINC +// DATE +// DATEDIF +// DATEVALUE +// DAVERAGE +// DAY +// DAYS +// DAYS360 +// DB +// DCOUNT +// DCOUNTA +// DDB +// DEC2BIN +// DEC2HEX +// DEC2OCT +// DECIMAL +// DEGREES +// DELTA +// DEVSQ +// DGET +// DISC +// DMAX +// DMIN +// DOLLARDE +// DOLLARFR +// DPRODUCT +// DSTDEV +// DSTDEVP +// DSUM +// DURATION +// DVAR +// DVARP +// EFFECT +// EDATE +// ENCODEURL +// EOMONTH +// ERF +// ERF.PRECISE +// ERFC +// ERFC.PRECISE +// ERROR.TYPE +// EUROCONVERT +// EVEN +// EXACT +// EXP +// EXPON.DIST +// EXPONDIST +// FACT +// FACTDOUBLE +// FALSE +// F.DIST +// F.DIST.RT +// FDIST +// FIND +// FINDB +// F.INV +// F.INV.RT +// FINV +// FISHER +// FISHERINV +// FIXED +// FLOOR +// FLOOR.MATH +// FLOOR.PRECISE +// FORMULATEXT +// F.TEST +// FTEST +// FV +// FVSCHEDULE +// GAMMA +// GAMMA.DIST +// GAMMADIST +// GAMMA.INV +// GAMMAINV +// GAMMALN +// GAMMALN.PRECISE +// GAUSS +// GCD +// GEOMEAN +// GESTEP +// GROWTH +// HARMEAN +// HEX2BIN +// HEX2DEC +// HEX2OCT +// HLOOKUP +// HOUR +// HYPERLINK +// HYPGEOM.DIST +// HYPGEOMDIST +// IF +// IFERROR +// IFNA +// IFS +// IMABS +// IMAGINARY +// IMARGUMENT +// IMCONJUGATE +// IMCOS +// IMCOSH +// IMCOT +// IMCSC +// IMCSCH +// IMDIV +// IMEXP +// IMLN +// IMLOG10 +// IMLOG2 +// IMPOWER +// IMPRODUCT +// IMREAL +// IMSEC +// IMSECH +// IMSIN +// IMSINH +// IMSQRT +// IMSUB +// IMSUM +// IMTAN +// INDEX +// INDIRECT +// INT +// INTRATE +// IPMT +// IRR +// ISBLANK +// ISERR +// ISERROR +// ISEVEN +// ISFORMULA +// ISLOGICAL +// ISNA +// ISNONTEXT +// ISNUMBER +// ISODD +// ISREF +// ISTEXT +// ISO.CEILING +// ISOWEEKNUM +// ISPMT +// KURT +// LARGE +// LCM +// LEFT +// LEFTB +// LEN +// LENB +// LN +// LOG +// LOG10 +// LOGINV +// LOGNORM.DIST +// LOGNORMDIST +// LOGNORM.INV +// LOOKUP +// LOWER +// MATCH +// MAX +// MAXA +// MAXIFS +// MDETERM +// MDURATION +// MEDIAN +// MID +// MIDB +// MIN +// MINA +// MINIFS +// MINUTE +// MINVERSE +// MIRR +// MMULT +// MOD +// MODE +// MODE.MULT +// MODE.SNGL +// MONTH +// MROUND +// MULTINOMIAL +// MUNIT +// N +// NA +// NEGBINOM.DIST +// NEGBINOMDIST +// NETWORKDAYS +// NETWORKDAYS.INTL +// NOMINAL +// NORM.DIST +// NORMDIST +// NORM.INV +// NORMINV +// NORM.S.DIST +// NORMSDIST +// NORM.S.INV +// NORMSINV +// NOT +// NOW +// NPER +// NPV +// OCT2BIN +// OCT2DEC +// OCT2HEX +// ODD +// ODDFPRICE +// OR +// PDURATION +// PEARSON +// PERCENTILE.EXC +// PERCENTILE.INC +// PERCENTILE +// PERCENTRANK.EXC +// PERCENTRANK.INC +// PERCENTRANK +// PERMUT +// PERMUTATIONA +// PHI +// PI +// PMT +// POISSON.DIST +// POISSON +// POWER +// PPMT +// PRICE +// PRICEDISC +// PRICEMAT +// PRODUCT +// PROPER +// PV +// QUARTILE +// QUARTILE.EXC +// QUARTILE.INC +// QUOTIENT +// RADIANS +// RAND +// RANDBETWEEN +// RANK +// RANK.EQ +// RATE +// RECEIVED +// REPLACE +// REPLACEB +// REPT +// RIGHT +// RIGHTB +// ROMAN +// ROUND +// ROUNDDOWN +// ROUNDUP +// ROW +// ROWS +// RRI +// RSQ +// SEC +// SECH +// SECOND +// SERIESSUM +// SHEET +// SHEETS +// SIGN +// SIN +// SINH +// SKEW +// SKEW.P +// SLN +// SLOPE +// SMALL +// SQRT +// SQRTPI +// STANDARDIZE +// STDEV +// STDEV.P +// STDEV.S +// STDEVA +// STDEVP +// STDEVPA +// STEYX +// SUBSTITUTE +// SUM +// SUMIF +// SUMIFS +// SUMPRODUCT +// SUMSQ +// SUMX2MY2 +// SUMX2PY2 +// SUMXMY2 +// SWITCH +// SYD +// T +// TAN +// TANH +// TBILLEQ +// TBILLPRICE +// TBILLYIELD +// T.DIST +// T.DIST.2T +// T.DIST.RT +// TDIST +// TEXTJOIN +// TIME +// TIMEVALUE +// T.INV +// T.INV.2T +// TINV +// TODAY +// TRANSPOSE +// TREND +// TRIM +// TRIMMEAN +// TRUE +// TRUNC +// T.TEST +// TTEST +// TYPE +// UNICHAR +// UNICODE +// UPPER +// VALUE +// VAR +// VAR.P +// VAR.S +// VARA +// VARP +// VARPA +// VDB +// VLOOKUP +// WEEKDAY +// WEEKNUM +// WEIBULL +// WEIBULL.DIST +// WORKDAY +// WORKDAY.INTL +// XIRR +// XLOOKUP +// XNPV +// XOR +// YEAR +// YEARFRAC +// YIELD +// YIELDDISC +// YIELDMAT +// Z.TEST +// ZTEST func (f *File) CalcCellValue(sheet, cell string) (result string, err error) { return f.calcCellValue(&calcContext{ entry: fmt.Sprintf("%s!%s", sheet, cell), @@ -857,15 +856,14 @@ func newEmptyFormulaArg() formulaArg { // lexical analysis. Evaluate an infix expression containing formulas by // stacks: // -// opd - Operand -// opt - Operator -// opf - Operation formula -// opfd - Operand of the operation formula -// opft - Operator of the operation formula -// args - Arguments list of the operation formula +// opd - Operand +// opt - Operator +// opf - Operation formula +// opfd - Operand of the operation formula +// opft - Operator of the operation formula +// args - Arguments list of the operation formula // // TODO: handle subtypes: Nothing, Text, Logical, Error, Concatenation, Intersection, Union -// func (f *File) evalInfixExp(ctx *calcContext, sheet, cell string, tokens []efp.Token) (formulaArg, error) { var err error opdStack, optStack, opfStack, opfdStack, opftStack, argsStack := NewStack(), NewStack(), NewStack(), NewStack(), NewStack(), NewStack() @@ -1692,8 +1690,7 @@ func formulaCriteriaEval(val string, criteria *formulaCriteria) (result bool, er // Bessel function evaluated for purely imaginary arguments. The syntax of // the Besseli function is: // -// BESSELI(x,n) -// +// BESSELI(x,n) func (fn *formulaFuncs) BESSELI(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "BESSELI requires 2 numeric arguments") @@ -1704,8 +1701,7 @@ func (fn *formulaFuncs) BESSELI(argsList *list.List) formulaArg { // BESSELJ function returns the Bessel function, Jn(x), for a specified order // and value of x. The syntax of the function is: // -// BESSELJ(x,n) -// +// BESSELJ(x,n) func (fn *formulaFuncs) BESSELJ(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "BESSELJ requires 2 numeric arguments") @@ -1752,8 +1748,7 @@ func (fn *formulaFuncs) bassel(argsList *list.List, modfied bool) formulaArg { // the Bessel functions, evaluated for purely imaginary arguments. The syntax // of the function is: // -// BESSELK(x,n) -// +// BESSELK(x,n) func (fn *formulaFuncs) BESSELK(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "BESSELK requires 2 numeric arguments") @@ -1832,8 +1827,7 @@ func (fn *formulaFuncs) besselK2(x, n formulaArg) float64 { // Weber function or the Neumann function), for a specified order and value // of x. The syntax of the function is: // -// BESSELY(x,n) -// +// BESSELY(x,n) func (fn *formulaFuncs) BESSELY(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "BESSELY requires 2 numeric arguments") @@ -1913,8 +1907,7 @@ func (fn *formulaFuncs) besselY2(x, n formulaArg) float64 { // BIN2DEC function converts a Binary (a base-2 number) into a decimal number. // The syntax of the function is: // -// BIN2DEC(number) -// +// BIN2DEC(number) func (fn *formulaFuncs) BIN2DEC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "BIN2DEC requires 1 numeric argument") @@ -1930,8 +1923,7 @@ func (fn *formulaFuncs) BIN2DEC(argsList *list.List) formulaArg { // BIN2HEX function converts a Binary (Base 2) number into a Hexadecimal // (Base 16) number. The syntax of the function is: // -// BIN2HEX(number,[places]) -// +// BIN2HEX(number,[places]) func (fn *formulaFuncs) BIN2HEX(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "BIN2HEX requires at least 1 argument") @@ -1958,8 +1950,7 @@ func (fn *formulaFuncs) BIN2HEX(argsList *list.List) formulaArg { // BIN2OCT function converts a Binary (Base 2) number into an Octal (Base 8) // number. The syntax of the function is: // -// BIN2OCT(number,[places]) -// +// BIN2OCT(number,[places]) func (fn *formulaFuncs) BIN2OCT(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "BIN2OCT requires at least 1 argument") @@ -2006,8 +1997,7 @@ func (fn *formulaFuncs) bin2dec(number string) formulaArg { // BITAND function returns the bitwise 'AND' for two supplied integers. The // syntax of the function is: // -// BITAND(number1,number2) -// +// BITAND(number1,number2) func (fn *formulaFuncs) BITAND(argsList *list.List) formulaArg { return fn.bitwise("BITAND", argsList) } @@ -2015,8 +2005,7 @@ func (fn *formulaFuncs) BITAND(argsList *list.List) formulaArg { // BITLSHIFT function returns a supplied integer, shifted left by a specified // number of bits. The syntax of the function is: // -// BITLSHIFT(number1,shift_amount) -// +// BITLSHIFT(number1,shift_amount) func (fn *formulaFuncs) BITLSHIFT(argsList *list.List) formulaArg { return fn.bitwise("BITLSHIFT", argsList) } @@ -2024,8 +2013,7 @@ func (fn *formulaFuncs) BITLSHIFT(argsList *list.List) formulaArg { // BITOR function returns the bitwise 'OR' for two supplied integers. The // syntax of the function is: // -// BITOR(number1,number2) -// +// BITOR(number1,number2) func (fn *formulaFuncs) BITOR(argsList *list.List) formulaArg { return fn.bitwise("BITOR", argsList) } @@ -2033,8 +2021,7 @@ func (fn *formulaFuncs) BITOR(argsList *list.List) formulaArg { // BITRSHIFT function returns a supplied integer, shifted right by a specified // number of bits. The syntax of the function is: // -// BITRSHIFT(number1,shift_amount) -// +// BITRSHIFT(number1,shift_amount) func (fn *formulaFuncs) BITRSHIFT(argsList *list.List) formulaArg { return fn.bitwise("BITRSHIFT", argsList) } @@ -2042,8 +2029,7 @@ func (fn *formulaFuncs) BITRSHIFT(argsList *list.List) formulaArg { // BITXOR function returns the bitwise 'XOR' (exclusive 'OR') for two supplied // integers. The syntax of the function is: // -// BITXOR(number1,number2) -// +// BITXOR(number1,number2) func (fn *formulaFuncs) BITXOR(argsList *list.List) formulaArg { return fn.bitwise("BITXOR", argsList) } @@ -2077,8 +2063,7 @@ func (fn *formulaFuncs) bitwise(name string, argsList *list.List) formulaArg { // imaginary coefficients of a complex number, and from these, creates a // complex number. The syntax of the function is: // -// COMPLEX(real_num,i_num,[suffix]) -// +// COMPLEX(real_num,i_num,[suffix]) func (fn *formulaFuncs) COMPLEX(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "COMPLEX requires at least 2 arguments") @@ -2631,8 +2616,7 @@ func convertTemperature(fromUOM, toUOM string, value float64) float64 { // CONVERT function converts a number from one unit type (e.g. Yards) to // another unit type (e.g. Meters). The syntax of the function is: // -// CONVERT(number,from_unit,to_unit) -// +// CONVERT(number,from_unit,to_unit) func (fn *formulaFuncs) CONVERT(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "CONVERT requires 3 arguments") @@ -2663,8 +2647,7 @@ func (fn *formulaFuncs) CONVERT(argsList *list.List) formulaArg { // DEC2BIN function converts a decimal number into a Binary (Base 2) number. // The syntax of the function is: // -// DEC2BIN(number,[places]) -// +// DEC2BIN(number,[places]) func (fn *formulaFuncs) DEC2BIN(argsList *list.List) formulaArg { return fn.dec2x("DEC2BIN", argsList) } @@ -2672,8 +2655,7 @@ func (fn *formulaFuncs) DEC2BIN(argsList *list.List) formulaArg { // DEC2HEX function converts a decimal number into a Hexadecimal (Base 16) // number. The syntax of the function is: // -// DEC2HEX(number,[places]) -// +// DEC2HEX(number,[places]) func (fn *formulaFuncs) DEC2HEX(argsList *list.List) formulaArg { return fn.dec2x("DEC2HEX", argsList) } @@ -2681,8 +2663,7 @@ func (fn *formulaFuncs) DEC2HEX(argsList *list.List) formulaArg { // DEC2OCT function converts a decimal number into an Octal (Base 8) number. // The syntax of the function is: // -// DEC2OCT(number,[places]) -// +// DEC2OCT(number,[places]) func (fn *formulaFuncs) DEC2OCT(argsList *list.List) formulaArg { return fn.dec2x("DEC2OCT", argsList) } @@ -2761,8 +2742,7 @@ func (fn *formulaFuncs) dec2x(name string, argsList *list.List) formulaArg { // Delta. i.e. the function returns 1 if the two supplied numbers are equal // and 0 otherwise. The syntax of the function is: // -// DELTA(number1,[number2]) -// +// DELTA(number1,[number2]) func (fn *formulaFuncs) DELTA(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "DELTA requires at least 1 argument") @@ -2786,8 +2766,7 @@ func (fn *formulaFuncs) DELTA(argsList *list.List) formulaArg { // ERF function calculates the Error Function, integrated between two supplied // limits. The syntax of the function is: // -// ERF(lower_limit,[upper_limit]) -// +// ERF(lower_limit,[upper_limit]) func (fn *formulaFuncs) ERF(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "ERF requires at least 1 argument") @@ -2812,8 +2791,7 @@ func (fn *formulaFuncs) ERF(argsList *list.List) formulaArg { // ERFdotPRECISE function calculates the Error Function, integrated between a // supplied lower or upper limit and 0. The syntax of the function is: // -// ERF.PRECISE(x) -// +// ERF.PRECISE(x) func (fn *formulaFuncs) ERFdotPRECISE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ERF.PRECISE requires 1 argument") @@ -2841,8 +2819,7 @@ func (fn *formulaFuncs) erfc(name string, argsList *list.List) formulaArg { // between a supplied lower limit and infinity. The syntax of the function // is: // -// ERFC(x) -// +// ERFC(x) func (fn *formulaFuncs) ERFC(argsList *list.List) formulaArg { return fn.erfc("ERFC", argsList) } @@ -2851,8 +2828,7 @@ func (fn *formulaFuncs) ERFC(argsList *list.List) formulaArg { // integrated between a supplied lower limit and infinity. The syntax of the // function is: // -// ERFC(x) -// +// ERFC(x) func (fn *formulaFuncs) ERFCdotPRECISE(argsList *list.List) formulaArg { return fn.erfc("ERFC.PRECISE", argsList) } @@ -2860,8 +2836,7 @@ func (fn *formulaFuncs) ERFCdotPRECISE(argsList *list.List) formulaArg { // GESTEP unction tests whether a supplied number is greater than a supplied // step size and returns. The syntax of the function is: // -// GESTEP(number,[step]) -// +// GESTEP(number,[step]) func (fn *formulaFuncs) GESTEP(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "GESTEP requires at least 1 argument") @@ -2885,8 +2860,7 @@ func (fn *formulaFuncs) GESTEP(argsList *list.List) formulaArg { // HEX2BIN function converts a Hexadecimal (Base 16) number into a Binary // (Base 2) number. The syntax of the function is: // -// HEX2BIN(number,[places]) -// +// HEX2BIN(number,[places]) func (fn *formulaFuncs) HEX2BIN(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "HEX2BIN requires at least 1 argument") @@ -2908,8 +2882,7 @@ func (fn *formulaFuncs) HEX2BIN(argsList *list.List) formulaArg { // HEX2DEC function converts a hexadecimal (a base-16 number) into a decimal // number. The syntax of the function is: // -// HEX2DEC(number) -// +// HEX2DEC(number) func (fn *formulaFuncs) HEX2DEC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "HEX2DEC requires 1 numeric argument") @@ -2920,8 +2893,7 @@ func (fn *formulaFuncs) HEX2DEC(argsList *list.List) formulaArg { // HEX2OCT function converts a Hexadecimal (Base 16) number into an Octal // (Base 8) number. The syntax of the function is: // -// HEX2OCT(number,[places]) -// +// HEX2OCT(number,[places]) func (fn *formulaFuncs) HEX2OCT(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "HEX2OCT requires at least 1 argument") @@ -2960,8 +2932,7 @@ func (fn *formulaFuncs) hex2dec(number string) formulaArg { // IMABS function returns the absolute value (the modulus) of a complex // number. The syntax of the function is: // -// IMABS(inumber) -// +// IMABS(inumber) func (fn *formulaFuncs) IMABS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMABS requires 1 argument") @@ -2977,8 +2948,7 @@ func (fn *formulaFuncs) IMABS(argsList *list.List) formulaArg { // IMAGINARY function returns the imaginary coefficient of a supplied complex // number. The syntax of the function is: // -// IMAGINARY(inumber) -// +// IMAGINARY(inumber) func (fn *formulaFuncs) IMAGINARY(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMAGINARY requires 1 argument") @@ -2994,8 +2964,7 @@ func (fn *formulaFuncs) IMAGINARY(argsList *list.List) formulaArg { // IMARGUMENT function returns the phase (also called the argument) of a // supplied complex number. The syntax of the function is: // -// IMARGUMENT(inumber) -// +// IMARGUMENT(inumber) func (fn *formulaFuncs) IMARGUMENT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMARGUMENT requires 1 argument") @@ -3011,8 +2980,7 @@ func (fn *formulaFuncs) IMARGUMENT(argsList *list.List) formulaArg { // IMCONJUGATE function returns the complex conjugate of a supplied complex // number. The syntax of the function is: // -// IMCONJUGATE(inumber) -// +// IMCONJUGATE(inumber) func (fn *formulaFuncs) IMCONJUGATE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMCONJUGATE requires 1 argument") @@ -3028,8 +2996,7 @@ func (fn *formulaFuncs) IMCONJUGATE(argsList *list.List) formulaArg { // IMCOS function returns the cosine of a supplied complex number. The syntax // of the function is: // -// IMCOS(inumber) -// +// IMCOS(inumber) func (fn *formulaFuncs) IMCOS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMCOS requires 1 argument") @@ -3045,8 +3012,7 @@ func (fn *formulaFuncs) IMCOS(argsList *list.List) formulaArg { // IMCOSH function returns the hyperbolic cosine of a supplied complex number. The syntax // of the function is: // -// IMCOSH(inumber) -// +// IMCOSH(inumber) func (fn *formulaFuncs) IMCOSH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMCOSH requires 1 argument") @@ -3062,8 +3028,7 @@ func (fn *formulaFuncs) IMCOSH(argsList *list.List) formulaArg { // IMCOT function returns the cotangent of a supplied complex number. The syntax // of the function is: // -// IMCOT(inumber) -// +// IMCOT(inumber) func (fn *formulaFuncs) IMCOT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMCOT requires 1 argument") @@ -3079,8 +3044,7 @@ func (fn *formulaFuncs) IMCOT(argsList *list.List) formulaArg { // IMCSC function returns the cosecant of a supplied complex number. The syntax // of the function is: // -// IMCSC(inumber) -// +// IMCSC(inumber) func (fn *formulaFuncs) IMCSC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMCSC requires 1 argument") @@ -3100,8 +3064,7 @@ func (fn *formulaFuncs) IMCSC(argsList *list.List) formulaArg { // IMCSCH function returns the hyperbolic cosecant of a supplied complex // number. The syntax of the function is: // -// IMCSCH(inumber) -// +// IMCSCH(inumber) func (fn *formulaFuncs) IMCSCH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMCSCH requires 1 argument") @@ -3121,8 +3084,7 @@ func (fn *formulaFuncs) IMCSCH(argsList *list.List) formulaArg { // IMDIV function calculates the quotient of two complex numbers (i.e. divides // one complex number by another). The syntax of the function is: // -// IMDIV(inumber1,inumber2) -// +// IMDIV(inumber1,inumber2) func (fn *formulaFuncs) IMDIV(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "IMDIV requires 2 arguments") @@ -3146,8 +3108,7 @@ func (fn *formulaFuncs) IMDIV(argsList *list.List) formulaArg { // IMEXP function returns the exponential of a supplied complex number. The // syntax of the function is: // -// IMEXP(inumber) -// +// IMEXP(inumber) func (fn *formulaFuncs) IMEXP(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMEXP requires 1 argument") @@ -3163,8 +3124,7 @@ func (fn *formulaFuncs) IMEXP(argsList *list.List) formulaArg { // IMLN function returns the natural logarithm of a supplied complex number. // The syntax of the function is: // -// IMLN(inumber) -// +// IMLN(inumber) func (fn *formulaFuncs) IMLN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMLN requires 1 argument") @@ -3184,8 +3144,7 @@ func (fn *formulaFuncs) IMLN(argsList *list.List) formulaArg { // IMLOG10 function returns the common (base 10) logarithm of a supplied // complex number. The syntax of the function is: // -// IMLOG10(inumber) -// +// IMLOG10(inumber) func (fn *formulaFuncs) IMLOG10(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMLOG10 requires 1 argument") @@ -3205,8 +3164,7 @@ func (fn *formulaFuncs) IMLOG10(argsList *list.List) formulaArg { // IMLOG2 function calculates the base 2 logarithm of a supplied complex // number. The syntax of the function is: // -// IMLOG2(inumber) -// +// IMLOG2(inumber) func (fn *formulaFuncs) IMLOG2(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMLOG2 requires 1 argument") @@ -3226,8 +3184,7 @@ func (fn *formulaFuncs) IMLOG2(argsList *list.List) formulaArg { // IMPOWER function returns a supplied complex number, raised to a given // power. The syntax of the function is: // -// IMPOWER(inumber,number) -// +// IMPOWER(inumber,number) func (fn *formulaFuncs) IMPOWER(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "IMPOWER requires 2 arguments") @@ -3254,8 +3211,7 @@ func (fn *formulaFuncs) IMPOWER(argsList *list.List) formulaArg { // IMPRODUCT function calculates the product of two or more complex numbers. // The syntax of the function is: // -// IMPRODUCT(number1,[number2],...) -// +// IMPRODUCT(number1,[number2],...) func (fn *formulaFuncs) IMPRODUCT(argsList *list.List) formulaArg { product := complex128(1) for arg := argsList.Front(); arg != nil; arg = arg.Next() { @@ -3293,8 +3249,7 @@ func (fn *formulaFuncs) IMPRODUCT(argsList *list.List) formulaArg { // IMREAL function returns the real coefficient of a supplied complex number. // The syntax of the function is: // -// IMREAL(inumber) -// +// IMREAL(inumber) func (fn *formulaFuncs) IMREAL(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMREAL requires 1 argument") @@ -3310,8 +3265,7 @@ func (fn *formulaFuncs) IMREAL(argsList *list.List) formulaArg { // IMSEC function returns the secant of a supplied complex number. The syntax // of the function is: // -// IMSEC(inumber) -// +// IMSEC(inumber) func (fn *formulaFuncs) IMSEC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMSEC requires 1 argument") @@ -3327,8 +3281,7 @@ func (fn *formulaFuncs) IMSEC(argsList *list.List) formulaArg { // IMSECH function returns the hyperbolic secant of a supplied complex number. // The syntax of the function is: // -// IMSECH(inumber) -// +// IMSECH(inumber) func (fn *formulaFuncs) IMSECH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMSECH requires 1 argument") @@ -3344,8 +3297,7 @@ func (fn *formulaFuncs) IMSECH(argsList *list.List) formulaArg { // IMSIN function returns the Sine of a supplied complex number. The syntax of // the function is: // -// IMSIN(inumber) -// +// IMSIN(inumber) func (fn *formulaFuncs) IMSIN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMSIN requires 1 argument") @@ -3361,8 +3313,7 @@ func (fn *formulaFuncs) IMSIN(argsList *list.List) formulaArg { // IMSINH function returns the hyperbolic sine of a supplied complex number. // The syntax of the function is: // -// IMSINH(inumber) -// +// IMSINH(inumber) func (fn *formulaFuncs) IMSINH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMSINH requires 1 argument") @@ -3378,8 +3329,7 @@ func (fn *formulaFuncs) IMSINH(argsList *list.List) formulaArg { // IMSQRT function returns the square root of a supplied complex number. The // syntax of the function is: // -// IMSQRT(inumber) -// +// IMSQRT(inumber) func (fn *formulaFuncs) IMSQRT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMSQRT requires 1 argument") @@ -3396,8 +3346,7 @@ func (fn *formulaFuncs) IMSQRT(argsList *list.List) formulaArg { // (i.e. subtracts one complex number from another). The syntax of the // function is: // -// IMSUB(inumber1,inumber2) -// +// IMSUB(inumber1,inumber2) func (fn *formulaFuncs) IMSUB(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "IMSUB requires 2 arguments") @@ -3416,8 +3365,7 @@ func (fn *formulaFuncs) IMSUB(argsList *list.List) formulaArg { // IMSUM function calculates the sum of two or more complex numbers. The // syntax of the function is: // -// IMSUM(inumber1,inumber2,...) -// +// IMSUM(inumber1,inumber2,...) func (fn *formulaFuncs) IMSUM(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMSUM requires at least 1 argument") @@ -3437,8 +3385,7 @@ func (fn *formulaFuncs) IMSUM(argsList *list.List) formulaArg { // IMTAN function returns the tangent of a supplied complex number. The syntax // of the function is: // -// IMTAN(inumber) -// +// IMTAN(inumber) func (fn *formulaFuncs) IMTAN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "IMTAN requires 1 argument") @@ -3454,8 +3401,7 @@ func (fn *formulaFuncs) IMTAN(argsList *list.List) formulaArg { // OCT2BIN function converts an Octal (Base 8) number into a Binary (Base 2) // number. The syntax of the function is: // -// OCT2BIN(number,[places]) -// +// OCT2BIN(number,[places]) func (fn *formulaFuncs) OCT2BIN(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "OCT2BIN requires at least 1 argument") @@ -3479,8 +3425,7 @@ func (fn *formulaFuncs) OCT2BIN(argsList *list.List) formulaArg { // OCT2DEC function converts an Octal (a base-8 number) into a decimal number. // The syntax of the function is: // -// OCT2DEC(number) -// +// OCT2DEC(number) func (fn *formulaFuncs) OCT2DEC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "OCT2DEC requires 1 numeric argument") @@ -3496,8 +3441,7 @@ func (fn *formulaFuncs) OCT2DEC(argsList *list.List) formulaArg { // OCT2HEX function converts an Octal (Base 8) number into a Hexadecimal // (Base 16) number. The syntax of the function is: // -// OCT2HEX(number,[places]) -// +// OCT2HEX(number,[places]) func (fn *formulaFuncs) OCT2HEX(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "OCT2HEX requires at least 1 argument") @@ -3537,8 +3481,7 @@ func (fn *formulaFuncs) oct2dec(number string) formulaArg { // ABS function returns the absolute value of any supplied number. The syntax // of the function is: // -// ABS(number) -// +// ABS(number) func (fn *formulaFuncs) ABS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ABS requires 1 numeric argument") @@ -3554,8 +3497,7 @@ func (fn *formulaFuncs) ABS(argsList *list.List) formulaArg { // number, and returns an angle, in radians, between 0 and π. The syntax of // the function is: // -// ACOS(number) -// +// ACOS(number) func (fn *formulaFuncs) ACOS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ACOS requires 1 numeric argument") @@ -3570,8 +3512,7 @@ func (fn *formulaFuncs) ACOS(argsList *list.List) formulaArg { // ACOSH function calculates the inverse hyperbolic cosine of a supplied number. // of the function is: // -// ACOSH(number) -// +// ACOSH(number) func (fn *formulaFuncs) ACOSH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ACOSH requires 1 numeric argument") @@ -3587,8 +3528,7 @@ func (fn *formulaFuncs) ACOSH(argsList *list.List) formulaArg { // given number, and returns an angle, in radians, between 0 and π. The syntax // of the function is: // -// ACOT(number) -// +// ACOT(number) func (fn *formulaFuncs) ACOT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ACOT requires 1 numeric argument") @@ -3603,8 +3543,7 @@ func (fn *formulaFuncs) ACOT(argsList *list.List) formulaArg { // ACOTH function calculates the hyperbolic arccotangent (coth) of a supplied // value. The syntax of the function is: // -// ACOTH(number) -// +// ACOTH(number) func (fn *formulaFuncs) ACOTH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ACOTH requires 1 numeric argument") @@ -3619,8 +3558,7 @@ func (fn *formulaFuncs) ACOTH(argsList *list.List) formulaArg { // ARABIC function converts a Roman numeral into an Arabic numeral. The syntax // of the function is: // -// ARABIC(text) -// +// ARABIC(text) func (fn *formulaFuncs) ARABIC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ARABIC requires 1 numeric argument") @@ -3673,8 +3611,7 @@ func (fn *formulaFuncs) ARABIC(argsList *list.List) formulaArg { // number, and returns an angle, in radians, between -π/2 and π/2. The syntax // of the function is: // -// ASIN(number) -// +// ASIN(number) func (fn *formulaFuncs) ASIN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ASIN requires 1 numeric argument") @@ -3689,8 +3626,7 @@ func (fn *formulaFuncs) ASIN(argsList *list.List) formulaArg { // ASINH function calculates the inverse hyperbolic sine of a supplied number. // The syntax of the function is: // -// ASINH(number) -// +// ASINH(number) func (fn *formulaFuncs) ASINH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ASINH requires 1 numeric argument") @@ -3706,8 +3642,7 @@ func (fn *formulaFuncs) ASINH(argsList *list.List) formulaArg { // given number, and returns an angle, in radians, between -π/2 and +π/2. The // syntax of the function is: // -// ATAN(number) -// +// ATAN(number) func (fn *formulaFuncs) ATAN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ATAN requires 1 numeric argument") @@ -3722,8 +3657,7 @@ func (fn *formulaFuncs) ATAN(argsList *list.List) formulaArg { // ATANH function calculates the inverse hyperbolic tangent of a supplied // number. The syntax of the function is: // -// ATANH(number) -// +// ATANH(number) func (fn *formulaFuncs) ATANH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ATANH requires 1 numeric argument") @@ -3739,8 +3673,7 @@ func (fn *formulaFuncs) ATANH(argsList *list.List) formulaArg { // given set of x and y coordinates, and returns an angle, in radians, between // -π/2 and +π/2. The syntax of the function is: // -// ATAN2(x_num,y_num) -// +// ATAN2(x_num,y_num) func (fn *formulaFuncs) ATAN2(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "ATAN2 requires 2 numeric arguments") @@ -3759,8 +3692,7 @@ func (fn *formulaFuncs) ATAN2(argsList *list.List) formulaArg { // BASE function converts a number into a supplied base (radix), and returns a // text representation of the calculated value. The syntax of the function is: // -// BASE(number,radix,[min_length]) -// +// BASE(number,radix,[min_length]) func (fn *formulaFuncs) BASE(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "BASE requires at least 2 arguments") @@ -3796,8 +3728,7 @@ func (fn *formulaFuncs) BASE(argsList *list.List) formulaArg { // CEILING function rounds a supplied number away from zero, to the nearest // multiple of a given number. The syntax of the function is: // -// CEILING(number,significance) -// +// CEILING(number,significance) func (fn *formulaFuncs) CEILING(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "CEILING requires at least 1 argument") @@ -3837,8 +3768,7 @@ func (fn *formulaFuncs) CEILING(argsList *list.List) formulaArg { // CEILINGdotMATH function rounds a supplied number up to a supplied multiple // of significance. The syntax of the function is: // -// CEILING.MATH(number,[significance],[mode]) -// +// CEILING.MATH(number,[significance],[mode]) func (fn *formulaFuncs) CEILINGdotMATH(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "CEILING.MATH requires at least 1 argument") @@ -3887,8 +3817,7 @@ func (fn *formulaFuncs) CEILINGdotMATH(argsList *list.List) formulaArg { // number's sign), to the nearest multiple of a given number. The syntax of // the function is: // -// CEILING.PRECISE(number,[significance]) -// +// CEILING.PRECISE(number,[significance]) func (fn *formulaFuncs) CEILINGdotPRECISE(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "CEILING.PRECISE requires at least 1 argument") @@ -3931,8 +3860,7 @@ func (fn *formulaFuncs) CEILINGdotPRECISE(argsList *list.List) formulaArg { // COMBIN function calculates the number of combinations (in any order) of a // given number objects from a set. The syntax of the function is: // -// COMBIN(number,number_chosen) -// +// COMBIN(number,number_chosen) func (fn *formulaFuncs) COMBIN(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "COMBIN requires 2 argument") @@ -3964,8 +3892,7 @@ func (fn *formulaFuncs) COMBIN(argsList *list.List) formulaArg { // COMBINA function calculates the number of combinations, with repetitions, // of a given number objects from a set. The syntax of the function is: // -// COMBINA(number,number_chosen) -// +// COMBINA(number,number_chosen) func (fn *formulaFuncs) COMBINA(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "COMBINA requires 2 argument") @@ -4003,8 +3930,7 @@ func (fn *formulaFuncs) COMBINA(argsList *list.List) formulaArg { // COS function calculates the cosine of a given angle. The syntax of the // function is: // -// COS(number) -// +// COS(number) func (fn *formulaFuncs) COS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "COS requires 1 numeric argument") @@ -4019,8 +3945,7 @@ func (fn *formulaFuncs) COS(argsList *list.List) formulaArg { // COSH function calculates the hyperbolic cosine (cosh) of a supplied number. // The syntax of the function is: // -// COSH(number) -// +// COSH(number) func (fn *formulaFuncs) COSH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "COSH requires 1 numeric argument") @@ -4035,8 +3960,7 @@ func (fn *formulaFuncs) COSH(argsList *list.List) formulaArg { // COT function calculates the cotangent of a given angle. The syntax of the // function is: // -// COT(number) -// +// COT(number) func (fn *formulaFuncs) COT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "COT requires 1 numeric argument") @@ -4054,8 +3978,7 @@ func (fn *formulaFuncs) COT(argsList *list.List) formulaArg { // COTH function calculates the hyperbolic cotangent (coth) of a supplied // angle. The syntax of the function is: // -// COTH(number) -// +// COTH(number) func (fn *formulaFuncs) COTH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "COTH requires 1 numeric argument") @@ -4073,8 +3996,7 @@ func (fn *formulaFuncs) COTH(argsList *list.List) formulaArg { // CSC function calculates the cosecant of a given angle. The syntax of the // function is: // -// CSC(number) -// +// CSC(number) func (fn *formulaFuncs) CSC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "CSC requires 1 numeric argument") @@ -4092,8 +4014,7 @@ func (fn *formulaFuncs) CSC(argsList *list.List) formulaArg { // CSCH function calculates the hyperbolic cosecant (csch) of a supplied // angle. The syntax of the function is: // -// CSCH(number) -// +// CSCH(number) func (fn *formulaFuncs) CSCH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "CSCH requires 1 numeric argument") @@ -4111,8 +4032,7 @@ func (fn *formulaFuncs) CSCH(argsList *list.List) formulaArg { // DECIMAL function converts a text representation of a number in a specified // base, into a decimal value. The syntax of the function is: // -// DECIMAL(text,radix) -// +// DECIMAL(text,radix) func (fn *formulaFuncs) DECIMAL(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "DECIMAL requires 2 numeric arguments") @@ -4136,8 +4056,7 @@ func (fn *formulaFuncs) DECIMAL(argsList *list.List) formulaArg { // DEGREES function converts radians into degrees. The syntax of the function // is: // -// DEGREES(angle) -// +// DEGREES(angle) func (fn *formulaFuncs) DEGREES(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "DEGREES requires 1 numeric argument") @@ -4156,8 +4075,7 @@ func (fn *formulaFuncs) DEGREES(argsList *list.List) formulaArg { // positive number up and a negative number down), to the next even number. // The syntax of the function is: // -// EVEN(number) -// +// EVEN(number) func (fn *formulaFuncs) EVEN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "EVEN requires 1 numeric argument") @@ -4182,8 +4100,7 @@ func (fn *formulaFuncs) EVEN(argsList *list.List) formulaArg { // EXP function calculates the value of the mathematical constant e, raised to // the power of a given number. The syntax of the function is: // -// EXP(number) -// +// EXP(number) func (fn *formulaFuncs) EXP(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "EXP requires 1 numeric argument") @@ -4207,8 +4124,7 @@ func fact(number float64) float64 { // FACT function returns the factorial of a supplied number. The syntax of the // function is: // -// FACT(number) -// +// FACT(number) func (fn *formulaFuncs) FACT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "FACT requires 1 numeric argument") @@ -4226,8 +4142,7 @@ func (fn *formulaFuncs) FACT(argsList *list.List) formulaArg { // FACTDOUBLE function returns the double factorial of a supplied number. The // syntax of the function is: // -// FACTDOUBLE(number) -// +// FACTDOUBLE(number) func (fn *formulaFuncs) FACTDOUBLE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "FACTDOUBLE requires 1 numeric argument") @@ -4249,8 +4164,7 @@ func (fn *formulaFuncs) FACTDOUBLE(argsList *list.List) formulaArg { // FLOOR function rounds a supplied number towards zero to the nearest // multiple of a specified significance. The syntax of the function is: // -// FLOOR(number,significance) -// +// FLOOR(number,significance) func (fn *formulaFuncs) FLOOR(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "FLOOR requires 2 numeric arguments") @@ -4279,8 +4193,7 @@ func (fn *formulaFuncs) FLOOR(argsList *list.List) formulaArg { // FLOORdotMATH function rounds a supplied number down to a supplied multiple // of significance. The syntax of the function is: // -// FLOOR.MATH(number,[significance],[mode]) -// +// FLOOR.MATH(number,[significance],[mode]) func (fn *formulaFuncs) FLOORdotMATH(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "FLOOR.MATH requires at least 1 argument") @@ -4323,8 +4236,7 @@ func (fn *formulaFuncs) FLOORdotMATH(argsList *list.List) formulaArg { // FLOORdotPRECISE function rounds a supplied number down to a supplied // multiple of significance. The syntax of the function is: // -// FLOOR.PRECISE(number,[significance]) -// +// FLOOR.PRECISE(number,[significance]) func (fn *formulaFuncs) FLOORdotPRECISE(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "FLOOR.PRECISE requires at least 1 argument") @@ -4385,8 +4297,7 @@ func gcd(x, y float64) float64 { // GCD function returns the greatest common divisor of two or more supplied // integers. The syntax of the function is: // -// GCD(number1,[number2],...) -// +// GCD(number1,[number2],...) func (fn *formulaFuncs) GCD(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "GCD requires at least 1 argument") @@ -4428,8 +4339,7 @@ func (fn *formulaFuncs) GCD(argsList *list.List) formulaArg { // INT function truncates a supplied number down to the closest integer. The // syntax of the function is: // -// INT(number) -// +// INT(number) func (fn *formulaFuncs) INT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "INT requires 1 numeric argument") @@ -4449,8 +4359,7 @@ func (fn *formulaFuncs) INT(argsList *list.List) formulaArg { // number's sign), to the nearest multiple of a supplied significance. The // syntax of the function is: // -// ISO.CEILING(number,[significance]) -// +// ISO.CEILING(number,[significance]) func (fn *formulaFuncs) ISOdotCEILING(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "ISO.CEILING requires at least 1 argument") @@ -4502,8 +4411,7 @@ func lcm(a, b float64) float64 { // LCM function returns the least common multiple of two or more supplied // integers. The syntax of the function is: // -// LCM(number1,[number2],...) -// +// LCM(number1,[number2],...) func (fn *formulaFuncs) LCM(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "LCM requires at least 1 argument") @@ -4547,8 +4455,7 @@ func (fn *formulaFuncs) LCM(argsList *list.List) formulaArg { // LN function calculates the natural logarithm of a given number. The syntax // of the function is: // -// LN(number) -// +// LN(number) func (fn *formulaFuncs) LN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "LN requires 1 numeric argument") @@ -4563,8 +4470,7 @@ func (fn *formulaFuncs) LN(argsList *list.List) formulaArg { // LOG function calculates the logarithm of a given number, to a supplied // base. The syntax of the function is: // -// LOG(number,[base]) -// +// LOG(number,[base]) func (fn *formulaFuncs) LOG(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "LOG requires at least 1 argument") @@ -4599,8 +4505,7 @@ func (fn *formulaFuncs) LOG(argsList *list.List) formulaArg { // LOG10 function calculates the base 10 logarithm of a given number. The // syntax of the function is: // -// LOG10(number) -// +// LOG10(number) func (fn *formulaFuncs) LOG10(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "LOG10 requires 1 numeric argument") @@ -4683,8 +4588,7 @@ func newFormulaArgMatrix(numMtx [][]float64) (arg [][]formulaArg) { // MDETERM calculates the determinant of a square matrix. The // syntax of the function is: // -// MDETERM(array) -// +// MDETERM(array) func (fn *formulaFuncs) MDETERM(argsList *list.List) (result formulaArg) { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "MDETERM requires 1 argument") @@ -4745,8 +4649,7 @@ func adjugateMatrix(A [][]float64) (adjA [][]float64) { // MINVERSE function calculates the inverse of a square matrix. The syntax of // the function is: // -// MINVERSE(array) -// +// MINVERSE(array) func (fn *formulaFuncs) MINVERSE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "MINVERSE requires 1 argument") @@ -4770,8 +4673,7 @@ func (fn *formulaFuncs) MINVERSE(argsList *list.List) formulaArg { // MMULT function calculates the matrix product of two arrays // (representing matrices). The syntax of the function is: // -// MMULT(array1,array2) -// +// MMULT(array1,array2) func (fn *formulaFuncs) MMULT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "MMULT requires 2 argument") @@ -4813,8 +4715,7 @@ func (fn *formulaFuncs) MMULT(argsList *list.List) formulaArg { // MOD function returns the remainder of a division between two supplied // numbers. The syntax of the function is: // -// MOD(number,divisor) -// +// MOD(number,divisor) func (fn *formulaFuncs) MOD(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "MOD requires 2 numeric arguments") @@ -4840,8 +4741,7 @@ func (fn *formulaFuncs) MOD(argsList *list.List) formulaArg { // MROUND function rounds a supplied number up or down to the nearest multiple // of a given number. The syntax of the function is: // -// MROUND(number,multiple) -// +// MROUND(number,multiple) func (fn *formulaFuncs) MROUND(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "MROUND requires 2 numeric arguments") @@ -4872,8 +4772,7 @@ func (fn *formulaFuncs) MROUND(argsList *list.List) formulaArg { // supplied values to the product of factorials of those values. The syntax of // the function is: // -// MULTINOMIAL(number1,[number2],...) -// +// MULTINOMIAL(number1,[number2],...) func (fn *formulaFuncs) MULTINOMIAL(argsList *list.List) formulaArg { val, num, denom := 0.0, 0.0, 1.0 var err error @@ -4899,8 +4798,7 @@ func (fn *formulaFuncs) MULTINOMIAL(argsList *list.List) formulaArg { // MUNIT function returns the unit matrix for a specified dimension. The // syntax of the function is: // -// MUNIT(dimension) -// +// MUNIT(dimension) func (fn *formulaFuncs) MUNIT(argsList *list.List) (result formulaArg) { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "MUNIT requires 1 numeric argument") @@ -4928,8 +4826,7 @@ func (fn *formulaFuncs) MUNIT(argsList *list.List) (result formulaArg) { // number up and a negative number down), to the next odd number. The syntax // of the function is: // -// ODD(number) -// +// ODD(number) func (fn *formulaFuncs) ODD(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ODD requires 1 numeric argument") @@ -4957,8 +4854,7 @@ func (fn *formulaFuncs) ODD(argsList *list.List) formulaArg { // PI function returns the value of the mathematical constant π (pi), accurate // to 15 digits (14 decimal places). The syntax of the function is: // -// PI() -// +// PI() func (fn *formulaFuncs) PI(argsList *list.List) formulaArg { if argsList.Len() != 0 { return newErrorFormulaArg(formulaErrorVALUE, "PI accepts no arguments") @@ -4969,8 +4865,7 @@ func (fn *formulaFuncs) PI(argsList *list.List) formulaArg { // POWER function calculates a given number, raised to a supplied power. // The syntax of the function is: // -// POWER(number,power) -// +// POWER(number,power) func (fn *formulaFuncs) POWER(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "POWER requires 2 numeric arguments") @@ -4995,8 +4890,7 @@ func (fn *formulaFuncs) POWER(argsList *list.List) formulaArg { // PRODUCT function returns the product (multiplication) of a supplied set of // numerical values. The syntax of the function is: // -// PRODUCT(number1,[number2],...) -// +// PRODUCT(number1,[number2],...) func (fn *formulaFuncs) PRODUCT(argsList *list.List) formulaArg { val, product := 0.0, 1.0 var err error @@ -5033,8 +4927,7 @@ func (fn *formulaFuncs) PRODUCT(argsList *list.List) formulaArg { // QUOTIENT function returns the integer portion of a division between two // supplied numbers. The syntax of the function is: // -// QUOTIENT(numerator,denominator) -// +// QUOTIENT(numerator,denominator) func (fn *formulaFuncs) QUOTIENT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "QUOTIENT requires 2 numeric arguments") @@ -5055,8 +4948,7 @@ func (fn *formulaFuncs) QUOTIENT(argsList *list.List) formulaArg { // RADIANS function converts radians into degrees. The syntax of the function is: // -// RADIANS(angle) -// +// RADIANS(angle) func (fn *formulaFuncs) RADIANS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "RADIANS requires 1 numeric argument") @@ -5071,8 +4963,7 @@ func (fn *formulaFuncs) RADIANS(argsList *list.List) formulaArg { // RAND function generates a random real number between 0 and 1. The syntax of // the function is: // -// RAND() -// +// RAND() func (fn *formulaFuncs) RAND(argsList *list.List) formulaArg { if argsList.Len() != 0 { return newErrorFormulaArg(formulaErrorVALUE, "RAND accepts no arguments") @@ -5083,8 +4974,7 @@ func (fn *formulaFuncs) RAND(argsList *list.List) formulaArg { // RANDBETWEEN function generates a random integer between two supplied // integers. The syntax of the function is: // -// RANDBETWEEN(bottom,top) -// +// RANDBETWEEN(bottom,top) func (fn *formulaFuncs) RANDBETWEEN(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "RANDBETWEEN requires 2 numeric arguments") @@ -5222,8 +5112,7 @@ var romanTable = [][]romanNumerals{ // integer, the function returns a text string depicting the roman numeral // form of the number. The syntax of the function is: // -// ROMAN(number,[form]) -// +// ROMAN(number,[form]) func (fn *formulaFuncs) ROMAN(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "ROMAN requires at least 1 argument") @@ -5309,8 +5198,7 @@ func (fn *formulaFuncs) round(number, digits float64, mode roundMode) float64 { // ROUND function rounds a supplied number up or down, to a specified number // of decimal places. The syntax of the function is: // -// ROUND(number,num_digits) -// +// ROUND(number,num_digits) func (fn *formulaFuncs) ROUND(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "ROUND requires 2 numeric arguments") @@ -5329,8 +5217,7 @@ func (fn *formulaFuncs) ROUND(argsList *list.List) formulaArg { // ROUNDDOWN function rounds a supplied number down towards zero, to a // specified number of decimal places. The syntax of the function is: // -// ROUNDDOWN(number,num_digits) -// +// ROUNDDOWN(number,num_digits) func (fn *formulaFuncs) ROUNDDOWN(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "ROUNDDOWN requires 2 numeric arguments") @@ -5349,8 +5236,7 @@ func (fn *formulaFuncs) ROUNDDOWN(argsList *list.List) formulaArg { // ROUNDUP function rounds a supplied number up, away from zero, to a // specified number of decimal places. The syntax of the function is: // -// ROUNDUP(number,num_digits) -// +// ROUNDUP(number,num_digits) func (fn *formulaFuncs) ROUNDUP(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "ROUNDUP requires 2 numeric arguments") @@ -5369,8 +5255,7 @@ func (fn *formulaFuncs) ROUNDUP(argsList *list.List) formulaArg { // SEC function calculates the secant of a given angle. The syntax of the // function is: // -// SEC(number) -// +// SEC(number) func (fn *formulaFuncs) SEC(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SEC requires 1 numeric argument") @@ -5385,8 +5270,7 @@ func (fn *formulaFuncs) SEC(argsList *list.List) formulaArg { // SECH function calculates the hyperbolic secant (sech) of a supplied angle. // The syntax of the function is: // -// SECH(number) -// +// SECH(number) func (fn *formulaFuncs) SECH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SECH requires 1 numeric argument") @@ -5401,8 +5285,7 @@ func (fn *formulaFuncs) SECH(argsList *list.List) formulaArg { // SERIESSUM function returns the sum of a power series. The syntax of the // function is: // -// SERIESSUM(x,n,m,coefficients) -// +// SERIESSUM(x,n,m,coefficients) func (fn *formulaFuncs) SERIESSUM(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "SERIESSUM requires 4 arguments") @@ -5437,8 +5320,7 @@ func (fn *formulaFuncs) SERIESSUM(argsList *list.List) formulaArg { // the number is negative, the function returns -1 and if the number is 0 // (zero), the function returns 0. The syntax of the function is: // -// SIGN(number) -// +// SIGN(number) func (fn *formulaFuncs) SIGN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SIGN requires 1 numeric argument") @@ -5459,8 +5341,7 @@ func (fn *formulaFuncs) SIGN(argsList *list.List) formulaArg { // SIN function calculates the sine of a given angle. The syntax of the // function is: // -// SIN(number) -// +// SIN(number) func (fn *formulaFuncs) SIN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SIN requires 1 numeric argument") @@ -5475,8 +5356,7 @@ func (fn *formulaFuncs) SIN(argsList *list.List) formulaArg { // SINH function calculates the hyperbolic sine (sinh) of a supplied number. // The syntax of the function is: // -// SINH(number) -// +// SINH(number) func (fn *formulaFuncs) SINH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SINH requires 1 numeric argument") @@ -5491,8 +5371,7 @@ func (fn *formulaFuncs) SINH(argsList *list.List) formulaArg { // SQRT function calculates the positive square root of a supplied number. The // syntax of the function is: // -// SQRT(number) -// +// SQRT(number) func (fn *formulaFuncs) SQRT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SQRT requires 1 numeric argument") @@ -5510,8 +5389,7 @@ func (fn *formulaFuncs) SQRT(argsList *list.List) formulaArg { // SQRTPI function returns the square root of a supplied number multiplied by // the mathematical constant, π. The syntax of the function is: // -// SQRTPI(number) -// +// SQRTPI(number) func (fn *formulaFuncs) SQRTPI(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SQRTPI requires 1 numeric argument") @@ -5526,8 +5404,7 @@ func (fn *formulaFuncs) SQRTPI(argsList *list.List) formulaArg { // STDEV function calculates the sample standard deviation of a supplied set // of values. The syntax of the function is: // -// STDEV(number1,[number2],...) -// +// STDEV(number1,[number2],...) func (fn *formulaFuncs) STDEV(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "STDEV requires at least 1 argument") @@ -5538,8 +5415,7 @@ func (fn *formulaFuncs) STDEV(argsList *list.List) formulaArg { // STDEVdotS function calculates the sample standard deviation of a supplied // set of values. The syntax of the function is: // -// STDEV.S(number1,[number2],...) -// +// STDEV.S(number1,[number2],...) func (fn *formulaFuncs) STDEVdotS(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "STDEV.S requires at least 1 argument") @@ -5551,8 +5427,7 @@ func (fn *formulaFuncs) STDEVdotS(argsList *list.List) formulaArg { // standard deviation is a measure of how widely values are dispersed from // the average value (the mean). The syntax of the function is: // -// STDEVA(number1,[number2],...) -// +// STDEVA(number1,[number2],...) func (fn *formulaFuncs) STDEVA(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "STDEVA requires at least 1 argument") @@ -5635,8 +5510,7 @@ func (fn *formulaFuncs) stdev(stdeva bool, argsList *list.List) formulaArg { // the Cumulative Poisson Probability Function for a supplied set of // parameters. The syntax of the function is: // -// POISSON.DIST(x,mean,cumulative) -// +// POISSON.DIST(x,mean,cumulative) func (fn *formulaFuncs) POISSONdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "POISSON.DIST requires 3 arguments") @@ -5648,8 +5522,7 @@ func (fn *formulaFuncs) POISSONdotDIST(argsList *list.List) formulaArg { // Cumulative Poisson Probability Function for a supplied set of parameters. // The syntax of the function is: // -// POISSON(x,mean,cumulative) -// +// POISSON(x,mean,cumulative) func (fn *formulaFuncs) POISSON(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "POISSON requires 3 arguments") @@ -5681,8 +5554,7 @@ func (fn *formulaFuncs) POISSON(argsList *list.List) formulaArg { // SUM function adds together a supplied set of numbers and returns the sum of // these values. The syntax of the function is: // -// SUM(number1,[number2],...) -// +// SUM(number1,[number2],...) func (fn *formulaFuncs) SUM(argsList *list.List) formulaArg { var sum float64 for arg := argsList.Front(); arg != nil; arg = arg.Next() { @@ -5713,8 +5585,7 @@ func (fn *formulaFuncs) SUM(argsList *list.List) formulaArg { // criteria, and returns the sum of the corresponding values in a second // supplied array. The syntax of the function is: // -// SUMIF(range,criteria,[sum_range]) -// +// SUMIF(range,criteria,[sum_range]) func (fn *formulaFuncs) SUMIF(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "SUMIF requires at least 2 arguments") @@ -5755,8 +5626,7 @@ func (fn *formulaFuncs) SUMIF(argsList *list.List) formulaArg { // set of criteria, and returns the sum of the corresponding values in a // further supplied array. The syntax of the function is: // -// SUMIFS(sum_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) -// +// SUMIFS(sum_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) func (fn *formulaFuncs) SUMIFS(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "SUMIFS requires at least 3 arguments") @@ -5833,8 +5703,7 @@ func (fn *formulaFuncs) sumproduct(argsList *list.List) formulaArg { // SUMPRODUCT function returns the sum of the products of the corresponding // values in a set of supplied arrays. The syntax of the function is: // -// SUMPRODUCT(array1,[array2],[array3],...) -// +// SUMPRODUCT(array1,[array2],[array3],...) func (fn *formulaFuncs) SUMPRODUCT(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "SUMPRODUCT requires at least 1 argument") @@ -5850,8 +5719,7 @@ func (fn *formulaFuncs) SUMPRODUCT(argsList *list.List) formulaArg { // SUMSQ function returns the sum of squares of a supplied set of values. The // syntax of the function is: // -// SUMSQ(number1,[number2],...) -// +// SUMSQ(number1,[number2],...) func (fn *formulaFuncs) SUMSQ(argsList *list.List) formulaArg { var val, sq float64 var err error @@ -5917,8 +5785,7 @@ func (fn *formulaFuncs) sumx(name string, argsList *list.List) formulaArg { // SUMX2MY2 function returns the sum of the differences of squares of two // supplied sets of values. The syntax of the function is: // -// SUMX2MY2(array_x,array_y) -// +// SUMX2MY2(array_x,array_y) func (fn *formulaFuncs) SUMX2MY2(argsList *list.List) formulaArg { return fn.sumx("SUMX2MY2", argsList) } @@ -5926,8 +5793,7 @@ func (fn *formulaFuncs) SUMX2MY2(argsList *list.List) formulaArg { // SUMX2PY2 function returns the sum of the sum of squares of two supplied sets // of values. The syntax of the function is: // -// SUMX2PY2(array_x,array_y) -// +// SUMX2PY2(array_x,array_y) func (fn *formulaFuncs) SUMX2PY2(argsList *list.List) formulaArg { return fn.sumx("SUMX2PY2", argsList) } @@ -5936,8 +5802,7 @@ func (fn *formulaFuncs) SUMX2PY2(argsList *list.List) formulaArg { // corresponding values in two supplied arrays. The syntax of the function // is: // -// SUMXMY2(array_x,array_y) -// +// SUMXMY2(array_x,array_y) func (fn *formulaFuncs) SUMXMY2(argsList *list.List) formulaArg { return fn.sumx("SUMXMY2", argsList) } @@ -5945,8 +5810,7 @@ func (fn *formulaFuncs) SUMXMY2(argsList *list.List) formulaArg { // TAN function calculates the tangent of a given angle. The syntax of the // function is: // -// TAN(number) -// +// TAN(number) func (fn *formulaFuncs) TAN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "TAN requires 1 numeric argument") @@ -5961,8 +5825,7 @@ func (fn *formulaFuncs) TAN(argsList *list.List) formulaArg { // TANH function calculates the hyperbolic tangent (tanh) of a supplied // number. The syntax of the function is: // -// TANH(number) -// +// TANH(number) func (fn *formulaFuncs) TANH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "TANH requires 1 numeric argument") @@ -5977,8 +5840,7 @@ func (fn *formulaFuncs) TANH(argsList *list.List) formulaArg { // TRUNC function truncates a supplied number to a specified number of decimal // places. The syntax of the function is: // -// TRUNC(number,[number_digits]) -// +// TRUNC(number,[number_digits]) func (fn *formulaFuncs) TRUNC(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "TRUNC requires at least 1 argument") @@ -6015,8 +5877,7 @@ func (fn *formulaFuncs) TRUNC(argsList *list.List) formulaArg { // AVEDEV function calculates the average deviation of a supplied set of // values. The syntax of the function is: // -// AVEDEV(number1,[number2],...) -// +// AVEDEV(number1,[number2],...) func (fn *formulaFuncs) AVEDEV(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "AVEDEV requires at least 1 argument") @@ -6040,8 +5901,7 @@ func (fn *formulaFuncs) AVEDEV(argsList *list.List) formulaArg { // AVERAGE function returns the arithmetic mean of a list of supplied numbers. // The syntax of the function is: // -// AVERAGE(number1,[number2],...) -// +// AVERAGE(number1,[number2],...) func (fn *formulaFuncs) AVERAGE(argsList *list.List) formulaArg { var args []formulaArg for arg := argsList.Front(); arg != nil; arg = arg.Next() { @@ -6057,8 +5917,7 @@ func (fn *formulaFuncs) AVERAGE(argsList *list.List) formulaArg { // AVERAGEA function returns the arithmetic mean of a list of supplied numbers // with text cell and zero values. The syntax of the function is: // -// AVERAGEA(number1,[number2],...) -// +// AVERAGEA(number1,[number2],...) func (fn *formulaFuncs) AVERAGEA(argsList *list.List) formulaArg { var args []formulaArg for arg := argsList.Front(); arg != nil; arg = arg.Next() { @@ -6076,8 +5935,7 @@ func (fn *formulaFuncs) AVERAGEA(argsList *list.List) formulaArg { // the corresponding values in a second supplied array. The syntax of the // function is: // -// AVERAGEIF(range,criteria,[average_range]) -// +// AVERAGEIF(range,criteria,[average_range]) func (fn *formulaFuncs) AVERAGEIF(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "AVERAGEIF requires at least 2 arguments") @@ -6126,8 +5984,7 @@ func (fn *formulaFuncs) AVERAGEIF(argsList *list.List) formulaArg { // of the corresponding values in a further supplied array. The syntax of the // function is: // -// AVERAGEIFS(average_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) -// +// AVERAGEIFS(average_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) func (fn *formulaFuncs) AVERAGEIFS(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "AVERAGEIFS requires at least 3 arguments") @@ -6403,8 +6260,7 @@ func (fn *formulaFuncs) prepareBETAdotDISTArgs(argsList *list.List) formulaArg { // or the probability density function of the Beta distribution, for a // supplied set of parameters. The syntax of the function is: // -// BETA.DIST(x,alpha,beta,cumulative,[A],[B]) -// +// BETA.DIST(x,alpha,beta,cumulative,[A],[B]) func (fn *formulaFuncs) BETAdotDIST(argsList *list.List) formulaArg { args := fn.prepareBETAdotDISTArgs(argsList) if args.Type != ArgList { @@ -6428,8 +6284,7 @@ func (fn *formulaFuncs) BETAdotDIST(argsList *list.List) formulaArg { // BETADIST function calculates the cumulative beta probability density // function for a supplied set of parameters. The syntax of the function is: // -// BETADIST(x,alpha,beta,[A],[B]) -// +// BETADIST(x,alpha,beta,[A],[B]) func (fn *formulaFuncs) BETADIST(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "BETADIST requires at least 3 arguments") @@ -6826,8 +6681,7 @@ func (fn *formulaFuncs) betainv(name string, argsList *list.List) formulaArg { // the cumulative beta probability density function for a supplied // probability. The syntax of the function is: // -// BETAINV(probability,alpha,beta,[A],[B]) -// +// BETAINV(probability,alpha,beta,[A],[B]) func (fn *formulaFuncs) BETAINV(argsList *list.List) formulaArg { return fn.betainv("BETAINV", argsList) } @@ -6836,8 +6690,7 @@ func (fn *formulaFuncs) BETAINV(argsList *list.List) formulaArg { // the cumulative beta probability density function for a supplied // probability. The syntax of the function is: // -// BETA.INV(probability,alpha,beta,[A],[B]) -// +// BETA.INV(probability,alpha,beta,[A],[B]) func (fn *formulaFuncs) BETAdotINV(argsList *list.List) formulaArg { return fn.betainv("BETA.INV", argsList) } @@ -6870,8 +6723,7 @@ func binomdist(x, n, p float64) float64 { // given number of successes from a specified number of trials. The syntax of // the function is: // -// BINOM.DIST(number_s,trials,probability_s,cumulative) -// +// BINOM.DIST(number_s,trials,probability_s,cumulative) func (fn *formulaFuncs) BINOMdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "BINOM.DIST requires 4 arguments") @@ -6883,8 +6735,7 @@ func (fn *formulaFuncs) BINOMdotDIST(argsList *list.List) formulaArg { // specified number of successes out of a specified number of trials. The // syntax of the function is: // -// BINOMDIST(number_s,trials,probability_s,cumulative) -// +// BINOMDIST(number_s,trials,probability_s,cumulative) func (fn *formulaFuncs) BINOMDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "BINOMDIST requires 4 arguments") @@ -6923,8 +6774,7 @@ func (fn *formulaFuncs) BINOMDIST(argsList *list.List) formulaArg { // for the number of successes from a specified number of trials falling into // a specified range. // -// BINOM.DIST.RANGE(trials,probability_s,number_s,[number_s2]) -// +// BINOM.DIST.RANGE(trials,probability_s,number_s,[number_s2]) func (fn *formulaFuncs) BINOMdotDISTdotRANGE(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "BINOM.DIST.RANGE requires at least 3 arguments") @@ -6991,8 +6841,7 @@ func binominv(n, p, alpha float64) float64 { // BINOMdotINV function returns the inverse of the Cumulative Binomial // Distribution. The syntax of the function is: // -// BINOM.INV(trials,probability_s,alpha) -// +// BINOM.INV(trials,probability_s,alpha) func (fn *formulaFuncs) BINOMdotINV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "BINOM.INV requires 3 numeric arguments") @@ -7024,8 +6873,7 @@ func (fn *formulaFuncs) BINOMdotINV(argsList *list.List) formulaArg { // CHIDIST function calculates the right-tailed probability of the chi-square // distribution. The syntax of the function is: // -// CHIDIST(x,degrees_freedom) -// +// CHIDIST(x,degrees_freedom) func (fn *formulaFuncs) CHIDIST(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHIDIST requires 2 numeric arguments") @@ -7088,8 +6936,7 @@ func (fn *formulaFuncs) CHIDIST(argsList *list.List) formulaArg { // CHIINV function calculates the inverse of the right-tailed probability of // the Chi-Square Distribution. The syntax of the function is: // -// CHIINV(probability,deg_freedom) -// +// CHIINV(probability,deg_freedom) func (fn *formulaFuncs) CHIINV(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHIINV requires 2 numeric arguments") @@ -7116,8 +6963,7 @@ func (fn *formulaFuncs) CHIINV(argsList *list.List) formulaArg { // frequencies), are likely to be simply due to sampling error, or if they are // likely to be real. The syntax of the function is: // -// CHITEST(actual_range,expected_range) -// +// CHITEST(actual_range,expected_range) func (fn *formulaFuncs) CHITEST(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHITEST requires 2 arguments") @@ -7309,8 +7155,7 @@ func getChiSqDistPDF(fX, fDF float64) float64 { // Cumulative Distribution Function for the Chi-Square Distribution. The // syntax of the function is: // -// CHISQ.DIST(x,degrees_freedom,cumulative) -// +// CHISQ.DIST(x,degrees_freedom,cumulative) func (fn *formulaFuncs) CHISQdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "CHISQ.DIST requires 3 arguments") @@ -7341,8 +7186,7 @@ func (fn *formulaFuncs) CHISQdotDIST(argsList *list.List) formulaArg { // CHISQdotDISTdotRT function calculates the right-tailed probability of the // Chi-Square Distribution. The syntax of the function is: // -// CHISQ.DIST.RT(x,degrees_freedom) -// +// CHISQ.DIST.RT(x,degrees_freedom) func (fn *formulaFuncs) CHISQdotDISTdotRT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHISQ.DIST.RT requires 2 numeric arguments") @@ -7355,8 +7199,7 @@ func (fn *formulaFuncs) CHISQdotDISTdotRT(argsList *list.List) formulaArg { // the differences between the sets are simply due to sampling error. The // syntax of the function is: // -// CHISQ.TEST(actual_range,expected_range) -// +// CHISQ.TEST(actual_range,expected_range) func (fn *formulaFuncs) CHISQdotTEST(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHISQ.TEST requires 2 arguments") @@ -7454,8 +7297,7 @@ func calcIterateInverse(iterator calcInverseIterator, fAx, fBx float64) float64 // CHISQdotINV function calculates the inverse of the left-tailed probability // of the Chi-Square Distribution. The syntax of the function is: // -// CHISQ.INV(probability,degrees_freedom) -// +// CHISQ.INV(probability,degrees_freedom) func (fn *formulaFuncs) CHISQdotINV(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHISQ.INV requires 2 numeric arguments") @@ -7483,8 +7325,7 @@ func (fn *formulaFuncs) CHISQdotINV(argsList *list.List) formulaArg { // CHISQdotINVdotRT function calculates the inverse of the right-tailed // probability of the Chi-Square Distribution. The syntax of the function is: // -// CHISQ.INV.RT(probability,degrees_freedom) -// +// CHISQ.INV.RT(probability,degrees_freedom) func (fn *formulaFuncs) CHISQdotINVdotRT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHISQ.INV.RT requires 2 numeric arguments") @@ -7533,8 +7374,7 @@ func (fn *formulaFuncs) confidence(name string, argsList *list.List) formulaArg // that the standard deviation of the population is known. The syntax of the // function is: // -// CONFIDENCE(alpha,standard_dev,size) -// +// CONFIDENCE(alpha,standard_dev,size) func (fn *formulaFuncs) CONFIDENCE(argsList *list.List) formulaArg { return fn.confidence("CONFIDENCE", argsList) } @@ -7545,8 +7385,7 @@ func (fn *formulaFuncs) CONFIDENCE(argsList *list.List) formulaArg { // assumed that the standard deviation of the population is known. The syntax // of the function is: // -// CONFIDENCE.NORM(alpha,standard_dev,size) -// +// CONFIDENCE.NORM(alpha,standard_dev,size) func (fn *formulaFuncs) CONFIDENCEdotNORM(argsList *list.List) formulaArg { return fn.confidence("CONFIDENCE.NORM", argsList) } @@ -7557,8 +7396,7 @@ func (fn *formulaFuncs) CONFIDENCEdotNORM(argsList *list.List) formulaArg { // is assumed that the standard deviation of the population is known. The // syntax of the function is: // -// CONFIDENCE.T(alpha,standard_dev,size) -// +// CONFIDENCE.T(alpha,standard_dev,size) func (fn *formulaFuncs) CONFIDENCEdotT(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "CONFIDENCE.T requires 3 arguments") @@ -7623,8 +7461,7 @@ func (fn *formulaFuncs) covar(name string, argsList *list.List) formulaArg { // COVAR function calculates the covariance of two supplied sets of values. The // syntax of the function is: // -// COVAR(array1,array2) -// +// COVAR(array1,array2) func (fn *formulaFuncs) COVAR(argsList *list.List) formulaArg { return fn.covar("COVAR", argsList) } @@ -7632,8 +7469,7 @@ func (fn *formulaFuncs) COVAR(argsList *list.List) formulaArg { // COVARIANCEdotP function calculates the population covariance of two supplied // sets of values. The syntax of the function is: // -// COVARIANCE.P(array1,array2) -// +// COVARIANCE.P(array1,array2) func (fn *formulaFuncs) COVARIANCEdotP(argsList *list.List) formulaArg { return fn.covar("COVARIANCE.P", argsList) } @@ -7641,8 +7477,7 @@ func (fn *formulaFuncs) COVARIANCEdotP(argsList *list.List) formulaArg { // COVARIANCEdotS function calculates the sample covariance of two supplied // sets of values. The syntax of the function is: // -// COVARIANCE.S(array1,array2) -// +// COVARIANCE.S(array1,array2) func (fn *formulaFuncs) COVARIANCEdotS(argsList *list.List) formulaArg { return fn.covar("COVARIANCE.S", argsList) } @@ -7693,8 +7528,7 @@ func (fn *formulaFuncs) countSum(countText bool, args []formulaArg) (count, sum // CORREL function calculates the Pearson Product-Moment Correlation // Coefficient for two sets of values. The syntax of the function is: // -// CORREL(array1,array2) -// +// CORREL(array1,array2) func (fn *formulaFuncs) CORREL(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "CORREL requires 2 arguments") @@ -7733,8 +7567,7 @@ func (fn *formulaFuncs) CORREL(argsList *list.List) formulaArg { // cells or values. This count includes both numbers and dates. The syntax of // the function is: // -// COUNT(value1,[value2],...) -// +// COUNT(value1,[value2],...) func (fn *formulaFuncs) COUNT(argsList *list.List) formulaArg { var count int for token := argsList.Front(); token != nil; token = token.Next() { @@ -7760,8 +7593,7 @@ func (fn *formulaFuncs) COUNT(argsList *list.List) formulaArg { // COUNTA function returns the number of non-blanks within a supplied set of // cells or values. The syntax of the function is: // -// COUNTA(value1,[value2],...) -// +// COUNTA(value1,[value2],...) func (fn *formulaFuncs) COUNTA(argsList *list.List) formulaArg { var count int for token := argsList.Front(); token != nil; token = token.Next() { @@ -7792,8 +7624,7 @@ func (fn *formulaFuncs) COUNTA(argsList *list.List) formulaArg { // COUNTBLANK function returns the number of blank cells in a supplied range. // The syntax of the function is: // -// COUNTBLANK(range) -// +// COUNTBLANK(range) func (fn *formulaFuncs) COUNTBLANK(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "COUNTBLANK requires 1 argument") @@ -7810,8 +7641,7 @@ func (fn *formulaFuncs) COUNTBLANK(argsList *list.List) formulaArg { // COUNTIF function returns the number of cells within a supplied range, that // satisfy a given criteria. The syntax of the function is: // -// COUNTIF(range,criteria) -// +// COUNTIF(range,criteria) func (fn *formulaFuncs) COUNTIF(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "COUNTIF requires 2 arguments") @@ -7860,8 +7690,7 @@ func formulaIfsMatch(args []formulaArg) (cellRefs []cellRef) { // COUNTIFS function returns the number of rows within a table, that satisfy a // set of given criteria. The syntax of the function is: // -// COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2],...) -// +// COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2],...) func (fn *formulaFuncs) COUNTIFS(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "COUNTIFS requires at least 2 arguments") @@ -7882,8 +7711,7 @@ func (fn *formulaFuncs) COUNTIFS(argsList *list.List) formulaArg { // cumulative binomial distribution is greater than or equal to a specified // value. The syntax of the function is: // -// CRITBINOM(trials,probability_s,alpha) -// +// CRITBINOM(trials,probability_s,alpha) func (fn *formulaFuncs) CRITBINOM(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "CRITBINOM requires 3 numeric arguments") @@ -7894,8 +7722,7 @@ func (fn *formulaFuncs) CRITBINOM(argsList *list.List) formulaArg { // DEVSQ function calculates the sum of the squared deviations from the sample // mean. The syntax of the function is: // -// DEVSQ(number1,[number2],...) -// +// DEVSQ(number1,[number2],...) func (fn *formulaFuncs) DEVSQ(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "DEVSQ requires at least 1 numeric argument") @@ -7924,8 +7751,7 @@ func (fn *formulaFuncs) DEVSQ(argsList *list.List) formulaArg { // FISHER function calculates the Fisher Transformation for a supplied value. // The syntax of the function is: // -// FISHER(x) -// +// FISHER(x) func (fn *formulaFuncs) FISHER(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "FISHER requires 1 numeric argument") @@ -7952,8 +7778,7 @@ func (fn *formulaFuncs) FISHER(argsList *list.List) formulaArg { // FISHERINV function calculates the inverse of the Fisher Transformation and // returns a value between -1 and +1. The syntax of the function is: // -// FISHERINV(y) -// +// FISHERINV(y) func (fn *formulaFuncs) FISHERINV(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "FISHERINV requires 1 numeric argument") @@ -7974,8 +7799,7 @@ func (fn *formulaFuncs) FISHERINV(argsList *list.List) formulaArg { // GAMMA function returns the value of the Gamma Function, Γ(n), for a // specified number, n. The syntax of the function is: // -// GAMMA(number) -// +// GAMMA(number) func (fn *formulaFuncs) GAMMA(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "GAMMA requires 1 numeric argument") @@ -7994,8 +7818,7 @@ func (fn *formulaFuncs) GAMMA(argsList *list.List) formulaArg { // used to provide probabilities for values that may have a skewed // distribution, such as queuing analysis. // -// GAMMA.DIST(x,alpha,beta,cumulative) -// +// GAMMA.DIST(x,alpha,beta,cumulative) func (fn *formulaFuncs) GAMMAdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "GAMMA.DIST requires 4 arguments") @@ -8007,8 +7830,7 @@ func (fn *formulaFuncs) GAMMAdotDIST(argsList *list.List) formulaArg { // to provide probabilities for values that may have a skewed distribution, // such as queuing analysis. // -// GAMMADIST(x,alpha,beta,cumulative) -// +// GAMMADIST(x,alpha,beta,cumulative) func (fn *formulaFuncs) GAMMADIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "GAMMADIST requires 4 arguments") @@ -8070,8 +7892,7 @@ func gammainv(probability, alpha, beta float64) float64 { // GAMMAdotINV function returns the inverse of the Gamma Cumulative // Distribution. The syntax of the function is: // -// GAMMA.INV(probability,alpha,beta) -// +// GAMMA.INV(probability,alpha,beta) func (fn *formulaFuncs) GAMMAdotINV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "GAMMA.INV requires 3 arguments") @@ -8082,8 +7903,7 @@ func (fn *formulaFuncs) GAMMAdotINV(argsList *list.List) formulaArg { // GAMMAINV function returns the inverse of the Gamma Cumulative Distribution. // The syntax of the function is: // -// GAMMAINV(probability,alpha,beta) -// +// GAMMAINV(probability,alpha,beta) func (fn *formulaFuncs) GAMMAINV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "GAMMAINV requires 3 arguments") @@ -8110,8 +7930,7 @@ func (fn *formulaFuncs) GAMMAINV(argsList *list.List) formulaArg { // GAMMALN function returns the natural logarithm of the Gamma Function, Γ // (n). The syntax of the function is: // -// GAMMALN(x) -// +// GAMMALN(x) func (fn *formulaFuncs) GAMMALN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "GAMMALN requires 1 numeric argument") @@ -8129,8 +7948,7 @@ func (fn *formulaFuncs) GAMMALN(argsList *list.List) formulaArg { // GAMMALNdotPRECISE function returns the natural logarithm of the Gamma // Function, Γ(n). The syntax of the function is: // -// GAMMALN.PRECISE(x) -// +// GAMMALN.PRECISE(x) func (fn *formulaFuncs) GAMMALNdotPRECISE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "GAMMALN.PRECISE requires 1 numeric argument") @@ -8149,8 +7967,7 @@ func (fn *formulaFuncs) GAMMALNdotPRECISE(argsList *list.List) formulaArg { // population will fall between the mean and a specified number of standard // deviations from the mean. The syntax of the function is: // -// GAUSS(z) -// +// GAUSS(z) func (fn *formulaFuncs) GAUSS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "GAUSS requires 1 numeric argument") @@ -8170,8 +7987,7 @@ func (fn *formulaFuncs) GAUSS(argsList *list.List) formulaArg { // GEOMEAN function calculates the geometric mean of a supplied set of values. // The syntax of the function is: // -// GEOMEAN(number1,[number2],...) -// +// GEOMEAN(number1,[number2],...) func (fn *formulaFuncs) GEOMEAN(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "GEOMEAN requires at least 1 numeric argument") @@ -8874,8 +8690,7 @@ func (fn *formulaFuncs) trendGrowth(name string, argsList *list.List) formulaArg // then extends the curve to calculate additional y-values for a further // supplied set of new x-values. The syntax of the function is: // -// GROWTH(known_y's,[known_x's],[new_x's],[const]) -// +// GROWTH(known_y's,[known_x's],[new_x's],[const]) func (fn *formulaFuncs) GROWTH(argsList *list.List) formulaArg { return fn.trendGrowth("GROWTH", argsList) } @@ -8883,8 +8698,7 @@ func (fn *formulaFuncs) GROWTH(argsList *list.List) formulaArg { // HARMEAN function calculates the harmonic mean of a supplied set of values. // The syntax of the function is: // -// HARMEAN(number1,[number2],...) -// +// HARMEAN(number1,[number2],...) func (fn *formulaFuncs) HARMEAN(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "HARMEAN requires at least 1 argument") @@ -8965,8 +8779,7 @@ func (fn *formulaFuncs) prepareHYPGEOMDISTArgs(name string, argsList *list.List) // can calculate the cumulative distribution or the probability density // function. The syntax of the function is: // -// HYPGEOM.DIST(sample_s,number_sample,population_s,number_pop,cumulative) -// +// HYPGEOM.DIST(sample_s,number_sample,population_s,number_pop,cumulative) func (fn *formulaFuncs) HYPGEOMdotDIST(argsList *list.List) formulaArg { args := fn.prepareHYPGEOMDISTArgs("HYPGEOM.DIST", argsList) if args.Type != ArgList { @@ -8991,8 +8804,7 @@ func (fn *formulaFuncs) HYPGEOMdotDIST(argsList *list.List) formulaArg { // for a given number of successes from a sample of a population. The syntax // of the function is: // -// HYPGEOMDIST(sample_s,number_sample,population_s,number_pop) -// +// HYPGEOMDIST(sample_s,number_sample,population_s,number_pop) func (fn *formulaFuncs) HYPGEOMDIST(argsList *list.List) formulaArg { args := fn.prepareHYPGEOMDISTArgs("HYPGEOMDIST", argsList) if args.Type != ArgList { @@ -9007,8 +8819,7 @@ func (fn *formulaFuncs) HYPGEOMDIST(argsList *list.List) formulaArg { // KURT function calculates the kurtosis of a supplied set of values. The // syntax of the function is: // -// KURT(number1,[number2],...) -// +// KURT(number1,[number2],...) func (fn *formulaFuncs) KURT(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "KURT requires at least 1 argument") @@ -9051,8 +8862,7 @@ func (fn *formulaFuncs) KURT(argsList *list.List) formulaArg { // function or the cumulative distribution function is used. The syntax of the // Expondist function is: // -// EXPON.DIST(x,lambda,cumulative) -// +// EXPON.DIST(x,lambda,cumulative) func (fn *formulaFuncs) EXPONdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "EXPON.DIST requires 3 arguments") @@ -9065,8 +8875,7 @@ func (fn *formulaFuncs) EXPONdotDIST(argsList *list.List) formulaArg { // function or the cumulative distribution function is used. The syntax of the // Expondist function is: // -// EXPONDIST(x,lambda,cumulative) -// +// EXPONDIST(x,lambda,cumulative) func (fn *formulaFuncs) EXPONDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "EXPONDIST requires 3 arguments") @@ -9098,8 +8907,7 @@ func (fn *formulaFuncs) EXPONDIST(argsList *list.List) formulaArg { // frequently used to measure the degree of diversity between two data // sets. The syntax of the function is: // -// F.DIST(x,deg_freedom1,deg_freedom2,cumulative) -// +// F.DIST(x,deg_freedom1,deg_freedom2,cumulative) func (fn *formulaFuncs) FdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "F.DIST requires 4 arguments") @@ -9137,8 +8945,7 @@ func (fn *formulaFuncs) FdotDIST(argsList *list.List) formulaArg { // which measures the degree of diversity between two data sets. The syntax // of the function is: // -// FDIST(x,deg_freedom1,deg_freedom2) -// +// FDIST(x,deg_freedom1,deg_freedom2) func (fn *formulaFuncs) FDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "FDIST requires 3 arguments") @@ -9176,8 +8983,7 @@ func (fn *formulaFuncs) FDIST(argsList *list.List) formulaArg { // Distribution, which measures the degree of diversity between two data sets. // The syntax of the function is: // -// F.DIST.RT(x,deg_freedom1,deg_freedom2) -// +// F.DIST.RT(x,deg_freedom1,deg_freedom2) func (fn *formulaFuncs) FdotDISTdotRT(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "F.DIST.RT requires 3 arguments") @@ -9216,8 +9022,7 @@ func (fn *formulaFuncs) prepareFinvArgs(name string, argsList *list.List) formul // FdotINV function calculates the inverse of the Cumulative F Distribution // for a supplied probability. The syntax of the F.Inv function is: // -// F.INV(probability,deg_freedom1,deg_freedom2) -// +// F.INV(probability,deg_freedom1,deg_freedom2) func (fn *formulaFuncs) FdotINV(argsList *list.List) formulaArg { args := fn.prepareFinvArgs("F.INV", argsList) if args.Type != ArgList { @@ -9231,8 +9036,7 @@ func (fn *formulaFuncs) FdotINV(argsList *list.List) formulaArg { // Probability Distribution for a supplied probability. The syntax of the // function is: // -// F.INV.RT(probability,deg_freedom1,deg_freedom2) -// +// F.INV.RT(probability,deg_freedom1,deg_freedom2) func (fn *formulaFuncs) FdotINVdotRT(argsList *list.List) formulaArg { args := fn.prepareFinvArgs("F.INV.RT", argsList) if args.Type != ArgList { @@ -9245,8 +9049,7 @@ func (fn *formulaFuncs) FdotINVdotRT(argsList *list.List) formulaArg { // FINV function calculates the inverse of the (right-tailed) F Probability // Distribution for a supplied probability. The syntax of the function is: // -// FINV(probability,deg_freedom1,deg_freedom2) -// +// FINV(probability,deg_freedom1,deg_freedom2) func (fn *formulaFuncs) FINV(argsList *list.List) formulaArg { args := fn.prepareFinvArgs("FINV", argsList) if args.Type != ArgList { @@ -9261,8 +9064,7 @@ func (fn *formulaFuncs) FINV(argsList *list.List) formulaArg { // supplied arrays are not significantly different. The syntax of the Ftest // function is: // -// F.TEST(array1,array2) -// +// F.TEST(array1,array2) func (fn *formulaFuncs) FdotTEST(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "F.TEST requires 2 arguments") @@ -9318,8 +9120,7 @@ func (fn *formulaFuncs) FdotTEST(argsList *list.List) formulaArg { // arrays are not significantly different. The syntax of the Ftest function // is: // -// FTEST(array1,array2) -// +// FTEST(array1,array2) func (fn *formulaFuncs) FTEST(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "FTEST requires 2 arguments") @@ -9331,8 +9132,7 @@ func (fn *formulaFuncs) FTEST(argsList *list.List) formulaArg { // Distribution Function of x, for a supplied probability. The syntax of the // function is: // -// LOGINV(probability,mean,standard_dev) -// +// LOGINV(probability,mean,standard_dev) func (fn *formulaFuncs) LOGINV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "LOGINV requires 3 arguments") @@ -9365,8 +9165,7 @@ func (fn *formulaFuncs) LOGINV(argsList *list.List) formulaArg { // Distribution Function of x, for a supplied probability. The syntax of the // function is: // -// LOGNORM.INV(probability,mean,standard_dev) -// +// LOGNORM.INV(probability,mean,standard_dev) func (fn *formulaFuncs) LOGNORMdotINV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "LOGNORM.INV requires 3 arguments") @@ -9378,8 +9177,7 @@ func (fn *formulaFuncs) LOGNORMdotINV(argsList *list.List) formulaArg { // Function or the Cumulative Log-Normal Distribution Function for a supplied // value of x. The syntax of the function is: // -// LOGNORM.DIST(x,mean,standard_dev,cumulative) -// +// LOGNORM.DIST(x,mean,standard_dev,cumulative) func (fn *formulaFuncs) LOGNORMdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "LOGNORM.DIST requires 4 arguments") @@ -9415,8 +9213,7 @@ func (fn *formulaFuncs) LOGNORMdotDIST(argsList *list.List) formulaArg { // LOGNORMDIST function calculates the Cumulative Log-Normal Distribution // Function at a supplied value of x. The syntax of the function is: // -// LOGNORMDIST(x,mean,standard_dev) -// +// LOGNORMDIST(x,mean,standard_dev) func (fn *formulaFuncs) LOGNORMDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "LOGNORMDIST requires 3 arguments") @@ -9444,8 +9241,7 @@ func (fn *formulaFuncs) LOGNORMDIST(argsList *list.List) formulaArg { // frequently occurring values in the supplied data, the function returns the // lowest of these values The syntax of the function is: // -// MODE(number1,[number2],...) -// +// MODE(number1,[number2],...) func (fn *formulaFuncs) MODE(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "MODE requires at least 1 argument") @@ -9488,8 +9284,7 @@ func (fn *formulaFuncs) MODE(argsList *list.List) formulaArg { // (the most frequently occurring values) within a list of supplied numbers. // The syntax of the function is: // -// MODE.MULT(number1,[number2],...) -// +// MODE.MULT(number1,[number2],...) func (fn *formulaFuncs) MODEdotMULT(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "MODE.MULT requires at least 1 argument") @@ -9536,8 +9331,7 @@ func (fn *formulaFuncs) MODEdotMULT(argsList *list.List) formulaArg { // most frequently occurring values in the supplied data, the function returns // the lowest of these values. The syntax of the function is: // -// MODE.SNGL(number1,[number2],...) -// +// MODE.SNGL(number1,[number2],...) func (fn *formulaFuncs) MODEdotSNGL(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "MODE.SNGL requires at least 1 argument") @@ -9551,8 +9345,7 @@ func (fn *formulaFuncs) MODEdotSNGL(argsList *list.List) formulaArg { // before a required number of successes is achieved. The syntax of the // function is: // -// NEGBINOM.DIST(number_f,number_s,probability_s,cumulative) -// +// NEGBINOM.DIST(number_f,number_s,probability_s,cumulative) func (fn *formulaFuncs) NEGBINOMdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "NEGBINOM.DIST requires 4 arguments") @@ -9584,8 +9377,7 @@ func (fn *formulaFuncs) NEGBINOMdotDIST(argsList *list.List) formulaArg { // specified number of failures before a required number of successes is // achieved. The syntax of the function is: // -// NEGBINOMDIST(number_f,number_s,probability_s) -// +// NEGBINOMDIST(number_f,number_s,probability_s) func (fn *formulaFuncs) NEGBINOMDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "NEGBINOMDIST requires 3 arguments") @@ -9610,8 +9402,7 @@ func (fn *formulaFuncs) NEGBINOMDIST(argsList *list.List) formulaArg { // the Cumulative Normal Distribution. Function for a supplied set of // parameters. The syntax of the function is: // -// NORM.DIST(x,mean,standard_dev,cumulative) -// +// NORM.DIST(x,mean,standard_dev,cumulative) func (fn *formulaFuncs) NORMdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "NORM.DIST requires 4 arguments") @@ -9623,8 +9414,7 @@ func (fn *formulaFuncs) NORMdotDIST(argsList *list.List) formulaArg { // Cumulative Normal Distribution. Function for a supplied set of parameters. // The syntax of the function is: // -// NORMDIST(x,mean,standard_dev,cumulative) -// +// NORMDIST(x,mean,standard_dev,cumulative) func (fn *formulaFuncs) NORMDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "NORMDIST requires 4 arguments") @@ -9655,8 +9445,7 @@ func (fn *formulaFuncs) NORMDIST(argsList *list.List) formulaArg { // Distribution Function for a supplied value of x, and a supplied // distribution mean & standard deviation. The syntax of the function is: // -// NORM.INV(probability,mean,standard_dev) -// +// NORM.INV(probability,mean,standard_dev) func (fn *formulaFuncs) NORMdotINV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "NORM.INV requires 3 arguments") @@ -9668,8 +9457,7 @@ func (fn *formulaFuncs) NORMdotINV(argsList *list.List) formulaArg { // Distribution Function for a supplied value of x, and a supplied // distribution mean & standard deviation. The syntax of the function is: // -// NORMINV(probability,mean,standard_dev) -// +// NORMINV(probability,mean,standard_dev) func (fn *formulaFuncs) NORMINV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "NORMINV requires 3 arguments") @@ -9701,8 +9489,7 @@ func (fn *formulaFuncs) NORMINV(argsList *list.List) formulaArg { // Distribution Function for a supplied value. The syntax of the function // is: // -// NORM.S.DIST(z) -// +// NORM.S.DIST(z) func (fn *formulaFuncs) NORMdotSdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "NORM.S.DIST requires 2 numeric arguments") @@ -9718,8 +9505,7 @@ func (fn *formulaFuncs) NORMdotSdotDIST(argsList *list.List) formulaArg { // NORMSDIST function calculates the Standard Normal Cumulative Distribution // Function for a supplied value. The syntax of the function is: // -// NORMSDIST(z) -// +// NORMSDIST(z) func (fn *formulaFuncs) NORMSDIST(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "NORMSDIST requires 1 numeric argument") @@ -9736,8 +9522,7 @@ func (fn *formulaFuncs) NORMSDIST(argsList *list.List) formulaArg { // Distribution Function for a supplied probability value. The syntax of the // function is: // -// NORMSINV(probability) -// +// NORMSINV(probability) func (fn *formulaFuncs) NORMSINV(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "NORMSINV requires 1 numeric argument") @@ -9753,8 +9538,7 @@ func (fn *formulaFuncs) NORMSINV(argsList *list.List) formulaArg { // Cumulative Distribution Function for a supplied probability value. The // syntax of the function is: // -// NORM.S.INV(probability) -// +// NORM.S.INV(probability) func (fn *formulaFuncs) NORMdotSdotINV(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "NORM.S.INV requires 1 numeric argument") @@ -9844,8 +9628,7 @@ func (fn *formulaFuncs) kth(name string, argsList *list.List) formulaArg { // LARGE function returns the k'th largest value from an array of numeric // values. The syntax of the function is: // -// LARGE(array,k) -// +// LARGE(array,k) func (fn *formulaFuncs) LARGE(argsList *list.List) formulaArg { return fn.kth("LARGE", argsList) } @@ -9853,8 +9636,7 @@ func (fn *formulaFuncs) LARGE(argsList *list.List) formulaArg { // MAX function returns the largest value from a supplied set of numeric // values. The syntax of the function is: // -// MAX(number1,[number2],...) -// +// MAX(number1,[number2],...) func (fn *formulaFuncs) MAX(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "MAX requires at least 1 argument") @@ -9867,8 +9649,7 @@ func (fn *formulaFuncs) MAX(argsList *list.List) formulaArg { // counting the logical value TRUE as the value 1. The syntax of the function // is: // -// MAXA(number1,[number2],...) -// +// MAXA(number1,[number2],...) func (fn *formulaFuncs) MAXA(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "MAXA requires at least 1 argument") @@ -9880,8 +9661,7 @@ func (fn *formulaFuncs) MAXA(argsList *list.List) formulaArg { // specified according to one or more criteria. The syntax of the function // is: // -// MAXIFS(max_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) -// +// MAXIFS(max_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) func (fn *formulaFuncs) MAXIFS(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "MAXIFS requires at least 3 arguments") @@ -9971,8 +9751,7 @@ func (fn *formulaFuncs) max(maxa bool, argsList *list.List) formulaArg { // MEDIAN function returns the statistical median (the middle value) of a list // of supplied numbers. The syntax of the function is: // -// MEDIAN(number1,[number2],...) -// +// MEDIAN(number1,[number2],...) func (fn *formulaFuncs) MEDIAN(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "MEDIAN requires at least 1 argument") @@ -10017,8 +9796,7 @@ func (fn *formulaFuncs) MEDIAN(argsList *list.List) formulaArg { // MIN function returns the smallest value from a supplied set of numeric // values. The syntax of the function is: // -// MIN(number1,[number2],...) -// +// MIN(number1,[number2],...) func (fn *formulaFuncs) MIN(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "MIN requires at least 1 argument") @@ -10031,8 +9809,7 @@ func (fn *formulaFuncs) MIN(argsList *list.List) formulaArg { // counting the logical value TRUE as the value 1. The syntax of the function // is: // -// MINA(number1,[number2],...) -// +// MINA(number1,[number2],...) func (fn *formulaFuncs) MINA(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "MINA requires at least 1 argument") @@ -10044,8 +9821,7 @@ func (fn *formulaFuncs) MINA(argsList *list.List) formulaArg { // specified according to one or more criteria. The syntax of the function // is: // -// MINIFS(min_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) -// +// MINIFS(min_range,criteria_range1,criteria1,[criteria_range2,criteria2],...) func (fn *formulaFuncs) MINIFS(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "MINIFS requires at least 3 arguments") @@ -10185,8 +9961,7 @@ func (fn *formulaFuncs) pearsonProduct(name string, argsList *list.List) formula // PEARSON function calculates the Pearson Product-Moment Correlation // Coefficient for two sets of values. The syntax of the function is: // -// PEARSON(array1,array2) -// +// PEARSON(array1,array2) func (fn *formulaFuncs) PEARSON(argsList *list.List) formulaArg { return fn.pearsonProduct("PEARSON", argsList) } @@ -10195,8 +9970,7 @@ func (fn *formulaFuncs) PEARSON(argsList *list.List) formulaArg { // which k% of the data values fall) for a supplied range of values and a // supplied k (between 0 & 1 exclusive).The syntax of the function is: // -// PERCENTILE.EXC(array,k) -// +// PERCENTILE.EXC(array,k) func (fn *formulaFuncs) PERCENTILEdotEXC(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "PERCENTILE.EXC requires 2 arguments") @@ -10232,8 +10006,7 @@ func (fn *formulaFuncs) PERCENTILEdotEXC(argsList *list.List) formulaArg { // which k% of the data values fall) for a supplied range of values and a // supplied k. The syntax of the function is: // -// PERCENTILE.INC(array,k) -// +// PERCENTILE.INC(array,k) func (fn *formulaFuncs) PERCENTILEdotINC(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "PERCENTILE.INC requires 2 arguments") @@ -10245,8 +10018,7 @@ func (fn *formulaFuncs) PERCENTILEdotINC(argsList *list.List) formulaArg { // k% of the data values fall) for a supplied range of values and a supplied // k. The syntax of the function is: // -// PERCENTILE(array,k) -// +// PERCENTILE(array,k) func (fn *formulaFuncs) PERCENTILE(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "PERCENTILE requires 2 arguments") @@ -10338,8 +10110,7 @@ func (fn *formulaFuncs) percentrank(name string, argsList *list.List) formulaArg // 1 (exclusive), of a specified value within a supplied array. The syntax of // the function is: // -// PERCENTRANK.EXC(array,x,[significance]) -// +// PERCENTRANK.EXC(array,x,[significance]) func (fn *formulaFuncs) PERCENTRANKdotEXC(argsList *list.List) formulaArg { return fn.percentrank("PERCENTRANK.EXC", argsList) } @@ -10348,8 +10119,7 @@ func (fn *formulaFuncs) PERCENTRANKdotEXC(argsList *list.List) formulaArg { // 1 (inclusive), of a specified value within a supplied array.The syntax of // the function is: // -// PERCENTRANK.INC(array,x,[significance]) -// +// PERCENTRANK.INC(array,x,[significance]) func (fn *formulaFuncs) PERCENTRANKdotINC(argsList *list.List) formulaArg { return fn.percentrank("PERCENTRANK.INC", argsList) } @@ -10357,8 +10127,7 @@ func (fn *formulaFuncs) PERCENTRANKdotINC(argsList *list.List) formulaArg { // PERCENTRANK function calculates the relative position of a specified value, // within a set of values, as a percentage. The syntax of the function is: // -// PERCENTRANK(array,x,[significance]) -// +// PERCENTRANK(array,x,[significance]) func (fn *formulaFuncs) PERCENTRANK(argsList *list.List) formulaArg { return fn.percentrank("PERCENTRANK", argsList) } @@ -10366,8 +10135,7 @@ func (fn *formulaFuncs) PERCENTRANK(argsList *list.List) formulaArg { // PERMUT function calculates the number of permutations of a specified number // of objects from a set of objects. The syntax of the function is: // -// PERMUT(number,number_chosen) -// +// PERMUT(number,number_chosen) func (fn *formulaFuncs) PERMUT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "PERMUT requires 2 numeric arguments") @@ -10390,8 +10158,7 @@ func (fn *formulaFuncs) PERMUT(argsList *list.List) formulaArg { // repetitions, of a specified number of objects from a set. The syntax of // the function is: // -// PERMUTATIONA(number,number_chosen) -// +// PERMUTATIONA(number,number_chosen) func (fn *formulaFuncs) PERMUTATIONA(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "PERMUTATIONA requires 2 numeric arguments") @@ -10414,8 +10181,7 @@ func (fn *formulaFuncs) PERMUTATIONA(argsList *list.List) formulaArg { // PHI function returns the value of the density function for a standard normal // distribution for a supplied number. The syntax of the function is: // -// PHI(x) -// +// PHI(x) func (fn *formulaFuncs) PHI(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "PHI requires 1 argument") @@ -10430,8 +10196,7 @@ func (fn *formulaFuncs) PHI(argsList *list.List) formulaArg { // QUARTILE function returns a requested quartile of a supplied range of // values. The syntax of the function is: // -// QUARTILE(array,quart) -// +// QUARTILE(array,quart) func (fn *formulaFuncs) QUARTILE(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "QUARTILE requires 2 arguments") @@ -10453,8 +10218,7 @@ func (fn *formulaFuncs) QUARTILE(argsList *list.List) formulaArg { // values, based on a percentile range of 0 to 1 exclusive. The syntax of the // function is: // -// QUARTILE.EXC(array,quart) -// +// QUARTILE.EXC(array,quart) func (fn *formulaFuncs) QUARTILEdotEXC(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "QUARTILE.EXC requires 2 arguments") @@ -10475,8 +10239,7 @@ func (fn *formulaFuncs) QUARTILEdotEXC(argsList *list.List) formulaArg { // QUARTILEdotINC function returns a requested quartile of a supplied range of // values. The syntax of the function is: // -// QUARTILE.INC(array,quart) -// +// QUARTILE.INC(array,quart) func (fn *formulaFuncs) QUARTILEdotINC(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "QUARTILE.INC requires 2 arguments") @@ -10523,8 +10286,7 @@ func (fn *formulaFuncs) rank(name string, argsList *list.List) formulaArg { // supplied array of values. If there are duplicate values in the list, these // are given the same rank. The syntax of the function is: // -// RANK.EQ(number,ref,[order]) -// +// RANK.EQ(number,ref,[order]) func (fn *formulaFuncs) RANKdotEQ(argsList *list.List) formulaArg { return fn.rank("RANK.EQ", argsList) } @@ -10533,8 +10295,7 @@ func (fn *formulaFuncs) RANKdotEQ(argsList *list.List) formulaArg { // supplied array of values. If there are duplicate values in the list, these // are given the same rank. The syntax of the function is: // -// RANK(number,ref,[order]) -// +// RANK(number,ref,[order]) func (fn *formulaFuncs) RANK(argsList *list.List) formulaArg { return fn.rank("RANK", argsList) } @@ -10543,8 +10304,7 @@ func (fn *formulaFuncs) RANK(argsList *list.List) formulaArg { // Coefficient for two supplied sets of values. The syntax of the function // is: // -// RSQ(known_y's,known_x's) -// +// RSQ(known_y's,known_x's) func (fn *formulaFuncs) RSQ(argsList *list.List) formulaArg { return fn.pearsonProduct("RSQ", argsList) } @@ -10595,8 +10355,7 @@ func (fn *formulaFuncs) skew(name string, argsList *list.List) formulaArg { // SKEW function calculates the skewness of the distribution of a supplied set // of values. The syntax of the function is: // -// SKEW(number1,[number2],...) -// +// SKEW(number1,[number2],...) func (fn *formulaFuncs) SKEW(argsList *list.List) formulaArg { return fn.skew("SKEW", argsList) } @@ -10604,8 +10363,7 @@ func (fn *formulaFuncs) SKEW(argsList *list.List) formulaArg { // SKEWdotP function calculates the skewness of the distribution of a supplied // set of values. The syntax of the function is: // -// SKEW.P(number1,[number2],...) -// +// SKEW.P(number1,[number2],...) func (fn *formulaFuncs) SKEWdotP(argsList *list.List) formulaArg { return fn.skew("SKEW.P", argsList) } @@ -10615,8 +10373,7 @@ func (fn *formulaFuncs) SKEWdotP(argsList *list.List) formulaArg { // horizontal distance between any two points on the line, which is the rate // of change along the regression line. The syntax of the function is: // -// SLOPE(known_y's,known_x's) -// +// SLOPE(known_y's,known_x's) func (fn *formulaFuncs) SLOPE(argsList *list.List) formulaArg { return fn.pearsonProduct("SLOPE", argsList) } @@ -10624,8 +10381,7 @@ func (fn *formulaFuncs) SLOPE(argsList *list.List) formulaArg { // SMALL function returns the k'th smallest value from an array of numeric // values. The syntax of the function is: // -// SMALL(array,k) -// +// SMALL(array,k) func (fn *formulaFuncs) SMALL(argsList *list.List) formulaArg { return fn.kth("SMALL", argsList) } @@ -10634,8 +10390,7 @@ func (fn *formulaFuncs) SMALL(argsList *list.List) formulaArg { // characterized by a supplied mean and standard deviation. The syntax of the // function is: // -// STANDARDIZE(x,mean,standard_dev) -// +// STANDARDIZE(x,mean,standard_dev) func (fn *formulaFuncs) STANDARDIZE(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "STANDARDIZE requires 3 arguments") @@ -10678,8 +10433,7 @@ func (fn *formulaFuncs) stdevp(name string, argsList *list.List) formulaArg { // STDEVP function calculates the standard deviation of a supplied set of // values. The syntax of the function is: // -// STDEVP(number1,[number2],...) -// +// STDEVP(number1,[number2],...) func (fn *formulaFuncs) STDEVP(argsList *list.List) formulaArg { return fn.stdevp("STDEVP", argsList) } @@ -10687,8 +10441,7 @@ func (fn *formulaFuncs) STDEVP(argsList *list.List) formulaArg { // STDEVdotP function calculates the standard deviation of a supplied set of // values. // -// STDEV.P( number1, [number2], ... ) -// +// STDEV.P( number1, [number2], ... ) func (fn *formulaFuncs) STDEVdotP(argsList *list.List) formulaArg { return fn.stdevp("STDEV.P", argsList) } @@ -10696,8 +10449,7 @@ func (fn *formulaFuncs) STDEVdotP(argsList *list.List) formulaArg { // STDEVPA function calculates the standard deviation of a supplied set of // values. The syntax of the function is: // -// STDEVPA(number1,[number2],...) -// +// STDEVPA(number1,[number2],...) func (fn *formulaFuncs) STDEVPA(argsList *list.List) formulaArg { return fn.stdevp("STDEVPA", argsList) } @@ -10705,8 +10457,7 @@ func (fn *formulaFuncs) STDEVPA(argsList *list.List) formulaArg { // STEYX function calculates the standard error for the line of best fit, // through a supplied set of x- and y- values. The syntax of the function is: // -// STEYX(known_y's,known_x's) -// +// STEYX(known_y's,known_x's) func (fn *formulaFuncs) STEYX(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "STEYX requires 2 arguments") @@ -10766,8 +10517,7 @@ func getTDist(T, fDF, nType float64) float64 { // testing hypotheses on small sample data sets. The syntax of the function // is: // -// T.DIST(x,degrees_freedom,cumulative) -// +// T.DIST(x,degrees_freedom,cumulative) func (fn *formulaFuncs) TdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "T.DIST requires 3 arguments") @@ -10802,8 +10552,7 @@ func (fn *formulaFuncs) TdotDIST(argsList *list.List) formulaArg { // testing hypotheses on small sample data sets. The syntax of the function // is: // -// T.DIST.2T(x,degrees_freedom) -// +// T.DIST.2T(x,degrees_freedom) func (fn *formulaFuncs) TdotDISTdot2T(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "T.DIST.2T requires 2 arguments") @@ -10826,8 +10575,7 @@ func (fn *formulaFuncs) TdotDISTdot2T(argsList *list.List) formulaArg { // testing hypotheses on small sample data sets. The syntax of the function // is: // -// T.DIST.RT(x,degrees_freedom) -// +// T.DIST.RT(x,degrees_freedom) func (fn *formulaFuncs) TdotDISTdotRT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "T.DIST.RT requires 2 arguments") @@ -10853,8 +10601,7 @@ func (fn *formulaFuncs) TdotDISTdotRT(argsList *list.List) formulaArg { // continuous probability distribution that is frequently used for testing // hypotheses on small sample data sets. The syntax of the function is: // -// TDIST(x,degrees_freedom,tails) -// +// TDIST(x,degrees_freedom,tails) func (fn *formulaFuncs) TDIST(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "TDIST requires 3 arguments") @@ -10880,8 +10627,7 @@ func (fn *formulaFuncs) TDIST(argsList *list.List) formulaArg { // frequently used for testing hypotheses on small sample data sets. The // syntax of the function is: // -// T.INV(probability,degrees_freedom) -// +// T.INV(probability,degrees_freedom) func (fn *formulaFuncs) TdotINV(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "T.INV requires 2 arguments") @@ -10917,8 +10663,7 @@ func (fn *formulaFuncs) TdotINV(argsList *list.List) formulaArg { // frequently used for testing hypotheses on small sample data sets. The // syntax of the function is: // -// T.INV.2T(probability,degrees_freedom) -// +// T.INV.2T(probability,degrees_freedom) func (fn *formulaFuncs) TdotINVdot2T(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "T.INV.2T requires 2 arguments") @@ -10946,8 +10691,7 @@ func (fn *formulaFuncs) TdotINVdot2T(argsList *list.List) formulaArg { // frequently used for testing hypotheses on small sample data sets. The // syntax of the function is: // -// TINV(probability,degrees_freedom) -// +// TINV(probability,degrees_freedom) func (fn *formulaFuncs) TINV(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "TINV requires 2 arguments") @@ -10960,8 +10704,7 @@ func (fn *formulaFuncs) TINV(argsList *list.List) formulaArg { // extends the linear trendline to calculate additional y-values for a further // supplied set of new x-values. The syntax of the function is: // -// TREND(known_y's,[known_x's],[new_x's],[const]) -// +// TREND(known_y's,[known_x's],[new_x's],[const]) func (fn *formulaFuncs) TREND(argsList *list.List) formulaArg { return fn.trendGrowth("TREND", argsList) } @@ -11055,8 +10798,7 @@ func (fn *formulaFuncs) tTest(mtx1, mtx2 [][]formulaArg, fTails, fTyp float64) f // likely to have come from the same two underlying populations with the same // mean. The syntax of the function is: // -// TTEST(array1,array2,tails,type) -// +// TTEST(array1,array2,tails,type) func (fn *formulaFuncs) TTEST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "TTEST requires 4 arguments") @@ -11087,8 +10829,7 @@ func (fn *formulaFuncs) TTEST(argsList *list.List) formulaArg { // likely to have come from the same two underlying populations with the same // mean. The syntax of the function is: // -// T.TEST(array1,array2,tails,type) -// +// T.TEST(array1,array2,tails,type) func (fn *formulaFuncs) TdotTEST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "T.TEST requires 4 arguments") @@ -11099,8 +10840,7 @@ func (fn *formulaFuncs) TdotTEST(argsList *list.List) formulaArg { // TRIMMEAN function calculates the trimmed mean (or truncated mean) of a // supplied set of values. The syntax of the function is: // -// TRIMMEAN(array,percent) -// +// TRIMMEAN(array,percent) func (fn *formulaFuncs) TRIMMEAN(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "TRIMMEAN requires 2 arguments") @@ -11185,8 +10925,7 @@ func (fn *formulaFuncs) vars(name string, argsList *list.List) formulaArg { // VAR function returns the sample variance of a supplied set of values. The // syntax of the function is: // -// VAR(number1,[number2],...) -// +// VAR(number1,[number2],...) func (fn *formulaFuncs) VAR(argsList *list.List) formulaArg { return fn.vars("VAR", argsList) } @@ -11194,8 +10933,7 @@ func (fn *formulaFuncs) VAR(argsList *list.List) formulaArg { // VARA function calculates the sample variance of a supplied set of values. // The syntax of the function is: // -// VARA(number1,[number2],...) -// +// VARA(number1,[number2],...) func (fn *formulaFuncs) VARA(argsList *list.List) formulaArg { return fn.vars("VARA", argsList) } @@ -11203,8 +10941,7 @@ func (fn *formulaFuncs) VARA(argsList *list.List) formulaArg { // VARP function returns the Variance of a given set of values. The syntax of // the function is: // -// VARP(number1,[number2],...) -// +// VARP(number1,[number2],...) func (fn *formulaFuncs) VARP(argsList *list.List) formulaArg { return fn.vars("VARP", argsList) } @@ -11212,8 +10949,7 @@ func (fn *formulaFuncs) VARP(argsList *list.List) formulaArg { // VARdotP function returns the Variance of a given set of values. The syntax // of the function is: // -// VAR.P(number1,[number2],...) -// +// VAR.P(number1,[number2],...) func (fn *formulaFuncs) VARdotP(argsList *list.List) formulaArg { return fn.vars("VAR.P", argsList) } @@ -11221,8 +10957,7 @@ func (fn *formulaFuncs) VARdotP(argsList *list.List) formulaArg { // VARdotS function calculates the sample variance of a supplied set of // values. The syntax of the function is: // -// VAR.S(number1,[number2],...) -// +// VAR.S(number1,[number2],...) func (fn *formulaFuncs) VARdotS(argsList *list.List) formulaArg { return fn.vars("VAR.S", argsList) } @@ -11230,8 +10965,7 @@ func (fn *formulaFuncs) VARdotS(argsList *list.List) formulaArg { // VARPA function returns the Variance of a given set of values. The syntax of // the function is: // -// VARPA(number1,[number2],...) -// +// VARPA(number1,[number2],...) func (fn *formulaFuncs) VARPA(argsList *list.List) formulaArg { return fn.vars("VARPA", argsList) } @@ -11240,8 +10974,7 @@ func (fn *formulaFuncs) VARPA(argsList *list.List) formulaArg { // Weibull Cumulative Distribution Function for a supplied set of parameters. // The syntax of the function is: // -// WEIBULL(x,alpha,beta,cumulative) -// +// WEIBULL(x,alpha,beta,cumulative) func (fn *formulaFuncs) WEIBULL(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "WEIBULL requires 4 arguments") @@ -11267,8 +11000,7 @@ func (fn *formulaFuncs) WEIBULL(argsList *list.List) formulaArg { // or the Weibull Cumulative Distribution Function for a supplied set of // parameters. The syntax of the function is: // -// WEIBULL.DIST(x,alpha,beta,cumulative) -// +// WEIBULL.DIST(x,alpha,beta,cumulative) func (fn *formulaFuncs) WEIBULLdotDIST(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "WEIBULL.DIST requires 4 arguments") @@ -11279,8 +11011,7 @@ func (fn *formulaFuncs) WEIBULLdotDIST(argsList *list.List) formulaArg { // ZdotTEST function calculates the one-tailed probability value of the // Z-Test. The syntax of the function is: // -// Z.TEST(array,x,[sigma]) -// +// Z.TEST(array,x,[sigma]) func (fn *formulaFuncs) ZdotTEST(argsList *list.List) formulaArg { argsLen := argsList.Len() if argsLen < 2 { @@ -11295,8 +11026,7 @@ func (fn *formulaFuncs) ZdotTEST(argsList *list.List) formulaArg { // ZTEST function calculates the one-tailed probability value of the Z-Test. // The syntax of the function is: // -// ZTEST(array,x,[sigma]) -// +// ZTEST(array,x,[sigma]) func (fn *formulaFuncs) ZTEST(argsList *list.List) formulaArg { argsLen := argsList.Len() if argsLen < 2 { @@ -11336,8 +11066,7 @@ func (fn *formulaFuncs) ZTEST(argsList *list.List) formulaArg { // ERRORdotTYPE function receives an error value and returns an integer, that // tells you the type of the supplied error. The syntax of the function is: // -// ERROR.TYPE(error_val) -// +// ERROR.TYPE(error_val) func (fn *formulaFuncs) ERRORdotTYPE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ERROR.TYPE requires 1 argument") @@ -11360,8 +11089,7 @@ func (fn *formulaFuncs) ERRORdotTYPE(argsList *list.List) formulaArg { // returns TRUE; Otherwise the function returns FALSE. The syntax of the // function is: // -// ISBLANK(value) -// +// ISBLANK(value) func (fn *formulaFuncs) ISBLANK(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISBLANK requires 1 argument") @@ -11384,8 +11112,7 @@ func (fn *formulaFuncs) ISBLANK(argsList *list.List) formulaArg { // logical value TRUE; If the supplied value is not an error or is the #N/A // error, the ISERR function returns FALSE. The syntax of the function is: // -// ISERR(value) -// +// ISERR(value) func (fn *formulaFuncs) ISERR(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISERR requires 1 argument") @@ -11410,8 +11137,7 @@ func (fn *formulaFuncs) ISERR(argsList *list.List) formulaArg { // an Excel Error, and if so, returns the logical value TRUE; Otherwise the // function returns FALSE. The syntax of the function is: // -// ISERROR(value) -// +// ISERROR(value) func (fn *formulaFuncs) ISERROR(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISERROR requires 1 argument") @@ -11436,8 +11162,7 @@ func (fn *formulaFuncs) ISERROR(argsList *list.List) formulaArg { // evaluates to an even number, and if so, returns TRUE; Otherwise, the // function returns FALSE. The syntax of the function is: // -// ISEVEN(value) -// +// ISEVEN(value) func (fn *formulaFuncs) ISEVEN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISEVEN requires 1 argument") @@ -11463,8 +11188,7 @@ func (fn *formulaFuncs) ISEVEN(argsList *list.List) formulaArg { // returns TRUE; Otherwise, the function returns FALSE. The syntax of the // function is: // -// ISFORMULA(reference) -// +// ISFORMULA(reference) func (fn *formulaFuncs) ISFORMULA(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISFORMULA requires 1 argument") @@ -11484,8 +11208,7 @@ func (fn *formulaFuncs) ISFORMULA(argsList *list.List) formulaArg { // logical value (i.e. evaluates to True or False). If so, the function // returns TRUE; Otherwise, it returns FALSE. The syntax of the function is: // -// ISLOGICAL(value) -// +// ISLOGICAL(value) func (fn *formulaFuncs) ISLOGICAL(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISLOGICAL requires 1 argument") @@ -11501,8 +11224,7 @@ func (fn *formulaFuncs) ISLOGICAL(argsList *list.List) formulaArg { // the Excel #N/A Error, and if so, returns TRUE; Otherwise the function // returns FALSE. The syntax of the function is: // -// ISNA(value) -// +// ISNA(value) func (fn *formulaFuncs) ISNA(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISNA requires 1 argument") @@ -11519,8 +11241,7 @@ func (fn *formulaFuncs) ISNA(argsList *list.List) formulaArg { // function returns TRUE; If the supplied value is text, the function returns // FALSE. The syntax of the function is: // -// ISNONTEXT(value) -// +// ISNONTEXT(value) func (fn *formulaFuncs) ISNONTEXT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISNONTEXT requires 1 argument") @@ -11537,8 +11258,7 @@ func (fn *formulaFuncs) ISNONTEXT(argsList *list.List) formulaArg { // the function returns TRUE; Otherwise it returns FALSE. The syntax of the // function is: // -// ISNUMBER(value) -// +// ISNUMBER(value) func (fn *formulaFuncs) ISNUMBER(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISNUMBER requires 1 argument") @@ -11556,8 +11276,7 @@ func (fn *formulaFuncs) ISNUMBER(argsList *list.List) formulaArg { // to an odd number, and if so, returns TRUE; Otherwise, the function returns // FALSE. The syntax of the function is: // -// ISODD(value) -// +// ISODD(value) func (fn *formulaFuncs) ISODD(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISODD requires 1 argument") @@ -11583,8 +11302,7 @@ func (fn *formulaFuncs) ISODD(argsList *list.List) formulaArg { // function returns TRUE; Otherwise it returns FALSE. The syntax of the // function is: // -// ISREF(value) -// +// ISREF(value) func (fn *formulaFuncs) ISREF(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISREF requires 1 argument") @@ -11599,8 +11317,7 @@ func (fn *formulaFuncs) ISREF(argsList *list.List) formulaArg { // ISTEXT function tests if a supplied value is text, and if so, returns TRUE; // Otherwise, the function returns FALSE. The syntax of the function is: // -// ISTEXT(value) -// +// ISTEXT(value) func (fn *formulaFuncs) ISTEXT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISTEXT requires 1 argument") @@ -11615,8 +11332,7 @@ func (fn *formulaFuncs) ISTEXT(argsList *list.List) formulaArg { // N function converts data into a numeric value. The syntax of the function // is: // -// N(value) -// +// N(value) func (fn *formulaFuncs) N(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "N requires 1 argument") @@ -11638,8 +11354,7 @@ func (fn *formulaFuncs) N(argsList *list.List) formulaArg { // meaning 'value not available' and is produced when an Excel Formula is // unable to find a value that it needs. The syntax of the function is: // -// NA() -// +// NA() func (fn *formulaFuncs) NA(argsList *list.List) formulaArg { if argsList.Len() != 0 { return newErrorFormulaArg(formulaErrorVALUE, "NA accepts no arguments") @@ -11650,8 +11365,7 @@ func (fn *formulaFuncs) NA(argsList *list.List) formulaArg { // SHEET function returns the Sheet number for a specified reference. The // syntax of the function is: // -// SHEET([value]) -// +// SHEET([value]) func (fn *formulaFuncs) SHEET(argsList *list.List) formulaArg { if argsList.Len() > 1 { return newErrorFormulaArg(formulaErrorVALUE, "SHEET accepts at most 1 argument") @@ -11680,8 +11394,7 @@ func (fn *formulaFuncs) SHEET(argsList *list.List) formulaArg { // result includes sheets that are Visible, Hidden or Very Hidden. The syntax // of the function is: // -// SHEETS([reference]) -// +// SHEETS([reference]) func (fn *formulaFuncs) SHEETS(argsList *list.List) formulaArg { if argsList.Len() > 1 { return newErrorFormulaArg(formulaErrorVALUE, "SHEETS accepts at most 1 argument") @@ -11710,8 +11423,7 @@ func (fn *formulaFuncs) SHEETS(argsList *list.List) formulaArg { // TYPE function returns an integer that represents the value's data type. The // syntax of the function is: // -// TYPE(value) -// +// TYPE(value) func (fn *formulaFuncs) TYPE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "TYPE requires 1 argument") @@ -11737,8 +11449,7 @@ func (fn *formulaFuncs) TYPE(argsList *list.List) formulaArg { // supplied text; Otherwise, the function returns an empty text string. The // syntax of the function is: // -// T(value) -// +// T(value) func (fn *formulaFuncs) T(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "T requires 1 argument") @@ -11758,8 +11469,7 @@ func (fn *formulaFuncs) T(argsList *list.List) formulaArg { // AND function tests a number of supplied conditions and returns TRUE or // FALSE. The syntax of the function is: // -// AND(logical_test1,[logical_test2],...) -// +// AND(logical_test1,[logical_test2],...) func (fn *formulaFuncs) AND(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "AND requires at least 1 argument") @@ -11794,8 +11504,7 @@ func (fn *formulaFuncs) AND(argsList *list.List) formulaArg { // FALSE function returns the logical value FALSE. The syntax of the // function is: // -// FALSE() -// +// FALSE() func (fn *formulaFuncs) FALSE(argsList *list.List) formulaArg { if argsList.Len() != 0 { return newErrorFormulaArg(formulaErrorVALUE, "FALSE takes no arguments") @@ -11806,8 +11515,7 @@ func (fn *formulaFuncs) FALSE(argsList *list.List) formulaArg { // IFERROR function receives two values (or expressions) and tests if the // first of these evaluates to an error. The syntax of the function is: // -// IFERROR(value,value_if_error) -// +// IFERROR(value,value_if_error) func (fn *formulaFuncs) IFERROR(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "IFERROR requires 2 arguments") @@ -11827,8 +11535,7 @@ func (fn *formulaFuncs) IFERROR(argsList *list.List) formulaArg { // value; Otherwise the function returns the first supplied value. The syntax // of the function is: // -// IFNA(value,value_if_na) -// +// IFNA(value,value_if_na) func (fn *formulaFuncs) IFNA(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "IFNA requires 2 arguments") @@ -11845,8 +11552,7 @@ func (fn *formulaFuncs) IFNA(argsList *list.List) formulaArg { // the supplied conditions evaluate to TRUE, the function returns the #N/A // error. // -// IFS(logical_test1,value_if_true1,[logical_test2,value_if_true2],...) -// +// IFS(logical_test1,value_if_true1,[logical_test2,value_if_true2],...) func (fn *formulaFuncs) IFS(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "IFS requires at least 2 arguments") @@ -11863,8 +11569,7 @@ func (fn *formulaFuncs) IFS(argsList *list.List) formulaArg { // NOT function returns the opposite to a supplied logical value. The syntax // of the function is: // -// NOT(logical) -// +// NOT(logical) func (fn *formulaFuncs) NOT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "NOT requires 1 argument") @@ -11889,8 +11594,7 @@ func (fn *formulaFuncs) NOT(argsList *list.List) formulaArg { // OR function tests a number of supplied conditions and returns either TRUE // or FALSE. The syntax of the function is: // -// OR(logical_test1,[logical_test2],...) -// +// OR(logical_test1,[logical_test2],...) func (fn *formulaFuncs) OR(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "OR requires at least 1 argument") @@ -11929,9 +11633,7 @@ func (fn *formulaFuncs) OR(argsList *list.List) formulaArg { // returned if none of the supplied values match the test expression. The // syntax of the function is: // -// -// SWITCH(expression,value1,result1,[value2,result2],[value3,result3],...,[default]) -// +// SWITCH(expression,value1,result1,[value2,result2],[value3,result3],...,[default]) func (fn *formulaFuncs) SWITCH(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "SWITCH requires at least 3 arguments") @@ -11961,8 +11663,7 @@ func (fn *formulaFuncs) SWITCH(argsList *list.List) formulaArg { // TRUE function returns the logical value TRUE. The syntax of the function // is: // -// TRUE() -// +// TRUE() func (fn *formulaFuncs) TRUE(argsList *list.List) formulaArg { if argsList.Len() != 0 { return newErrorFormulaArg(formulaErrorVALUE, "TRUE takes no arguments") @@ -12006,8 +11707,7 @@ func calcXor(argsList *list.List) formulaArg { // of the supplied conditions evaluate to TRUE, and FALSE otherwise. The // syntax of the function is: // -// XOR(logical_test1,[logical_test2],...) -// +// XOR(logical_test1,[logical_test2],...) func (fn *formulaFuncs) XOR(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "XOR requires at least 1 argument") @@ -12020,8 +11720,7 @@ func (fn *formulaFuncs) XOR(argsList *list.List) formulaArg { // DATE returns a date, from a user-supplied year, month and day. The syntax // of the function is: // -// DATE(year,month,day) -// +// DATE(year,month,day) func (fn *formulaFuncs) DATE(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "DATE requires 3 number arguments") @@ -12072,8 +11771,7 @@ func calcDateDif(unit string, diff float64, seq []int, startArg, endArg formulaA // DATEDIF function calculates the number of days, months, or years between // two dates. The syntax of the function is: // -// DATEDIF(start_date,end_date,unit) -// +// DATEDIF(start_date,end_date,unit) func (fn *formulaFuncs) DATEDIF(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "DATEDIF requires 3 number arguments") @@ -12353,8 +12051,7 @@ func strToDate(str string) (int, int, int, bool, formulaArg) { // date, into the serial number that represents the date in Excels' date-time // code. The syntax of the function is: // -// DATEVALUE(date_text) -// +// DATEVALUE(date_text) func (fn *formulaFuncs) DATEVALUE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "DATEVALUE requires 1 argument") @@ -12376,8 +12073,7 @@ func (fn *formulaFuncs) DATEVALUE(argsList *list.List) formulaArg { // day is given as an integer ranging from 1 to 31. The syntax of the // function is: // -// DAY(serial_number) -// +// DAY(serial_number) func (fn *formulaFuncs) DAY(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "DAY requires exactly 1 argument") @@ -12409,8 +12105,7 @@ func (fn *formulaFuncs) DAY(argsList *list.List) formulaArg { // DAYS function returns the number of days between two supplied dates. The // syntax of the function is: // -// DAYS(end_date,start_date) -// +// DAYS(end_date,start_date) func (fn *formulaFuncs) DAYS(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "DAYS requires 2 arguments") @@ -12426,8 +12121,7 @@ func (fn *formulaFuncs) DAYS(argsList *list.List) formulaArg { // DAYS360 function returns the number of days between 2 dates, based on a // 360-day year (12 x 30 months). The syntax of the function is: // -// DAYS360(start_date,end_date,[method]) -// +// DAYS360(start_date,end_date,[method]) func (fn *formulaFuncs) DAYS360(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "DAYS360 requires at least 2 arguments") @@ -12477,8 +12171,7 @@ func (fn *formulaFuncs) DAYS360(argsList *list.List) formulaArg { // ISOWEEKNUM function returns the ISO week number of a supplied date. The // syntax of the function is: // -// ISOWEEKNUM(date) -// +// ISOWEEKNUM(date) func (fn *formulaFuncs) ISOWEEKNUM(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ISOWEEKNUM requires 1 argument") @@ -12510,8 +12203,7 @@ func (fn *formulaFuncs) ISOWEEKNUM(argsList *list.List) formulaArg { // EDATE function returns a date that is a specified number of months before or // after a supplied start date. The syntax of function is: // -// EDATE(start_date,months) -// +// EDATE(start_date,months) func (fn *formulaFuncs) EDATE(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "EDATE requires 2 arguments") @@ -12565,8 +12257,7 @@ func (fn *formulaFuncs) EDATE(argsList *list.List) formulaArg { // number of months before or after an initial supplied start date. The syntax // of the function is: // -// EOMONTH(start_date,months) -// +// EOMONTH(start_date,months) func (fn *formulaFuncs) EOMONTH(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "EOMONTH requires 2 arguments") @@ -12613,8 +12304,7 @@ func (fn *formulaFuncs) EOMONTH(argsList *list.List) formulaArg { // HOUR function returns an integer representing the hour component of a // supplied Excel time. The syntax of the function is: // -// HOUR(serial_number) -// +// HOUR(serial_number) func (fn *formulaFuncs) HOUR(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "HOUR requires exactly 1 argument") @@ -12647,8 +12337,7 @@ func (fn *formulaFuncs) HOUR(argsList *list.List) formulaArg { // MINUTE function returns an integer representing the minute component of a // supplied Excel time. The syntax of the function is: // -// MINUTE(serial_number) -// +// MINUTE(serial_number) func (fn *formulaFuncs) MINUTE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "MINUTE requires exactly 1 argument") @@ -12679,8 +12368,7 @@ func (fn *formulaFuncs) MINUTE(argsList *list.List) formulaArg { // The month is given as an integer, ranging from 1 (January) to 12 // (December). The syntax of the function is: // -// MONTH(serial_number) -// +// MONTH(serial_number) func (fn *formulaFuncs) MONTH(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "MONTH requires exactly 1 argument") @@ -12839,8 +12527,7 @@ func workdayIntl(endDate, sign int, holidays []int, weekendMask []byte, startDat // weekdays (Mon - Fri), excluding a supplied list of holidays. The syntax of // the function is: // -// NETWORKDAYS(start_date,end_date,[holidays]) -// +// NETWORKDAYS(start_date,end_date,[holidays]) func (fn *formulaFuncs) NETWORKDAYS(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "NETWORKDAYS requires at least 2 arguments") @@ -12863,8 +12550,7 @@ func (fn *formulaFuncs) NETWORKDAYS(argsList *list.List) formulaArg { // the user to specify which days are counted as weekends and holidays. The // syntax of the function is: // -// NETWORKDAYS.INTL(start_date,end_date,[weekend],[holidays]) -// +// NETWORKDAYS.INTL(start_date,end_date,[weekend],[holidays]) func (fn *formulaFuncs) NETWORKDAYSdotINTL(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "NETWORKDAYS.INTL requires at least 2 arguments") @@ -12922,8 +12608,7 @@ func (fn *formulaFuncs) NETWORKDAYSdotINTL(argsList *list.List) formulaArg { // (excluding weekends and holidays) ahead of a given start date. The syntax // of the function is: // -// WORKDAY(start_date,days,[holidays]) -// +// WORKDAY(start_date,days,[holidays]) func (fn *formulaFuncs) WORKDAY(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "WORKDAY requires at least 2 arguments") @@ -12946,8 +12631,7 @@ func (fn *formulaFuncs) WORKDAY(argsList *list.List) formulaArg { // function allows the user to specify which days of the week are counted as // weekends. The syntax of the function is: // -// WORKDAY.INTL(start_date,days,[weekend],[holidays]) -// +// WORKDAY.INTL(start_date,days,[weekend],[holidays]) func (fn *formulaFuncs) WORKDAYdotINTL(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "WORKDAY.INTL requires at least 2 arguments") @@ -13008,8 +12692,7 @@ func (fn *formulaFuncs) WORKDAYdotINTL(argsList *list.List) formulaArg { // YEAR function returns an integer representing the year of a supplied date. // The syntax of the function is: // -// YEAR(serial_number) -// +// YEAR(serial_number) func (fn *formulaFuncs) YEAR(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "YEAR requires exactly 1 argument") @@ -13156,8 +12839,7 @@ func getYearDays(year, basis int) int { // number of whole days between two supplied dates. The syntax of the // function is: // -// YEARFRAC(start_date,end_date,[basis]) -// +// YEARFRAC(start_date,end_date,[basis]) func (fn *formulaFuncs) YEARFRAC(argsList *list.List) formulaArg { if argsList.Len() != 2 && argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "YEARFRAC requires 3 or 4 arguments") @@ -13179,8 +12861,7 @@ func (fn *formulaFuncs) YEARFRAC(argsList *list.List) formulaArg { // NOW function returns the current date and time. The function receives no // arguments and therefore. The syntax of the function is: // -// NOW() -// +// NOW() func (fn *formulaFuncs) NOW(argsList *list.List) formulaArg { if argsList.Len() != 0 { return newErrorFormulaArg(formulaErrorVALUE, "NOW accepts no arguments") @@ -13193,8 +12874,7 @@ func (fn *formulaFuncs) NOW(argsList *list.List) formulaArg { // SECOND function returns an integer representing the second component of a // supplied Excel time. The syntax of the function is: // -// SECOND(serial_number) -// +// SECOND(serial_number) func (fn *formulaFuncs) SECOND(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "SECOND requires exactly 1 argument") @@ -13226,8 +12906,7 @@ func (fn *formulaFuncs) SECOND(argsList *list.List) formulaArg { // decimal value that represents the time in Excel. The syntax of the // function is: // -// TIME(hour,minute,second) -// +// TIME(hour,minute,second) func (fn *formulaFuncs) TIME(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "TIME requires 3 number arguments") @@ -13248,8 +12927,7 @@ func (fn *formulaFuncs) TIME(argsList *list.List) formulaArg { // TIMEVALUE function converts a text representation of a time, into an Excel // time. The syntax of the function is: // -// TIMEVALUE(time_text) -// +// TIMEVALUE(time_text) func (fn *formulaFuncs) TIMEVALUE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "TIMEVALUE requires exactly 1 argument") @@ -13279,8 +12957,7 @@ func (fn *formulaFuncs) TIMEVALUE(argsList *list.List) formulaArg { // TODAY function returns the current date. The function has no arguments and // therefore. The syntax of the function is: // -// TODAY() -// +// TODAY() func (fn *formulaFuncs) TODAY(argsList *list.List) formulaArg { if argsList.Len() != 0 { return newErrorFormulaArg(formulaErrorVALUE, "TODAY accepts no arguments") @@ -13309,8 +12986,7 @@ func daysBetween(startDate, endDate int64) float64 { // WEEKDAY function returns an integer representing the day of the week for a // supplied date. The syntax of the function is: // -// WEEKDAY(serial_number,[return_type]) -// +// WEEKDAY(serial_number,[return_type]) func (fn *formulaFuncs) WEEKDAY(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "WEEKDAY requires at least 1 argument") @@ -13402,8 +13078,7 @@ func (fn *formulaFuncs) weeknum(snTime time.Time, returnType int) formulaArg { // WEEKNUM function returns an integer representing the week number (from 1 to // 53) of the year. The syntax of the function is: // -// WEEKNUM(serial_number,[return_type]) -// +// WEEKNUM(serial_number,[return_type]) func (fn *formulaFuncs) WEEKNUM(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "WEEKNUM requires at least 1 argument") @@ -13447,8 +13122,7 @@ func (fn *formulaFuncs) WEEKNUM(argsList *list.List) formulaArg { // CHAR function returns the character relating to a supplied character set // number (from 1 to 255). syntax of the function is: // -// CHAR(number) -// +// CHAR(number) func (fn *formulaFuncs) CHAR(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "CHAR requires 1 argument") @@ -13467,8 +13141,7 @@ func (fn *formulaFuncs) CHAR(argsList *list.List) formulaArg { // CLEAN removes all non-printable characters from a supplied text string. The // syntax of the function is: // -// CLEAN(text) -// +// CLEAN(text) func (fn *formulaFuncs) CLEAN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "CLEAN requires 1 argument") @@ -13486,8 +13159,7 @@ func (fn *formulaFuncs) CLEAN(argsList *list.List) formulaArg { // the associated numeric character set code used by your computer. The // syntax of the function is: // -// CODE(text) -// +// CODE(text) func (fn *formulaFuncs) CODE(argsList *list.List) formulaArg { return fn.code("CODE", argsList) } @@ -13510,8 +13182,7 @@ func (fn *formulaFuncs) code(name string, argsList *list.List) formulaArg { // CONCAT function joins together a series of supplied text strings into one // combined text string. // -// CONCAT(text1,[text2],...) -// +// CONCAT(text1,[text2],...) func (fn *formulaFuncs) CONCAT(argsList *list.List) formulaArg { return fn.concat("CONCAT", argsList) } @@ -13519,8 +13190,7 @@ func (fn *formulaFuncs) CONCAT(argsList *list.List) formulaArg { // CONCATENATE function joins together a series of supplied text strings into // one combined text string. // -// CONCATENATE(text1,[text2],...) -// +// CONCATENATE(text1,[text2],...) func (fn *formulaFuncs) CONCATENATE(argsList *list.List) formulaArg { return fn.concat("CONCATENATE", argsList) } @@ -13555,8 +13225,7 @@ func (fn *formulaFuncs) concat(name string, argsList *list.List) formulaArg { // equal and if so, returns TRUE; Otherwise, the function returns FALSE. The // function is case-sensitive. The syntax of the function is: // -// EXACT(text1,text2) -// +// EXACT(text1,text2) func (fn *formulaFuncs) EXACT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "EXACT requires 2 arguments") @@ -13569,8 +13238,7 @@ func (fn *formulaFuncs) EXACT(argsList *list.List) formulaArg { // FIXED function rounds a supplied number to a specified number of decimal // places and then converts this into text. The syntax of the function is: // -// FIXED(number,[decimals],[no_commas]) -// +// FIXED(number,[decimals],[no_commas]) func (fn *formulaFuncs) FIXED(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "FIXED requires at least 1 argument") @@ -13619,8 +13287,7 @@ func (fn *formulaFuncs) FIXED(argsList *list.List) formulaArg { // within a supplied text string. The function is case-sensitive. The syntax // of the function is: // -// FIND(find_text,within_text,[start_num]) -// +// FIND(find_text,within_text,[start_num]) func (fn *formulaFuncs) FIND(argsList *list.List) formulaArg { return fn.find("FIND", argsList) } @@ -13630,8 +13297,7 @@ func (fn *formulaFuncs) FIND(argsList *list.List) formulaArg { // language. Otherwise, FINDB counts each character as 1. The syntax of the // function is: // -// FINDB(find_text,within_text,[start_num]) -// +// FINDB(find_text,within_text,[start_num]) func (fn *formulaFuncs) FINDB(argsList *list.List) formulaArg { return fn.find("FINDB", argsList) } @@ -13675,8 +13341,7 @@ func (fn *formulaFuncs) find(name string, argsList *list.List) formulaArg { // LEFT function returns a specified number of characters from the start of a // supplied text string. The syntax of the function is: // -// LEFT(text,[num_chars]) -// +// LEFT(text,[num_chars]) func (fn *formulaFuncs) LEFT(argsList *list.List) formulaArg { return fn.leftRight("LEFT", argsList) } @@ -13684,8 +13349,7 @@ func (fn *formulaFuncs) LEFT(argsList *list.List) formulaArg { // LEFTB returns the first character or characters in a text string, based on // the number of bytes you specify. The syntax of the function is: // -// LEFTB(text,[num_bytes]) -// +// LEFTB(text,[num_bytes]) func (fn *formulaFuncs) LEFTB(argsList *list.List) formulaArg { return fn.leftRight("LEFTB", argsList) } @@ -13723,8 +13387,7 @@ func (fn *formulaFuncs) leftRight(name string, argsList *list.List) formulaArg { // LEN returns the length of a supplied text string. The syntax of the // function is: // -// LEN(text) -// +// LEN(text) func (fn *formulaFuncs) LEN(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "LEN requires 1 string argument") @@ -13737,7 +13400,7 @@ func (fn *formulaFuncs) LEN(argsList *list.List) formulaArg { // as the default language. Otherwise LENB behaves the same as LEN, counting // 1 byte per character. The syntax of the function is: // -// LENB(text) +// LENB(text) // // TODO: the languages that support DBCS include Japanese, Chinese // (Simplified), Chinese (Traditional), and Korean. @@ -13751,8 +13414,7 @@ func (fn *formulaFuncs) LENB(argsList *list.List) formulaArg { // LOWER converts all characters in a supplied text string to lower case. The // syntax of the function is: // -// LOWER(text) -// +// LOWER(text) func (fn *formulaFuncs) LOWER(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "LOWER requires 1 argument") @@ -13763,8 +13425,7 @@ func (fn *formulaFuncs) LOWER(argsList *list.List) formulaArg { // MID function returns a specified number of characters from the middle of a // supplied text string. The syntax of the function is: // -// MID(text,start_num,num_chars) -// +// MID(text,start_num,num_chars) func (fn *formulaFuncs) MID(argsList *list.List) formulaArg { return fn.mid("MID", argsList) } @@ -13773,8 +13434,7 @@ func (fn *formulaFuncs) MID(argsList *list.List) formulaArg { // at the position you specify, based on the number of bytes you specify. The // syntax of the function is: // -// MID(text,start_num,num_chars) -// +// MID(text,start_num,num_chars) func (fn *formulaFuncs) MIDB(argsList *list.List) formulaArg { return fn.mid("MIDB", argsList) } @@ -13815,8 +13475,7 @@ func (fn *formulaFuncs) mid(name string, argsList *list.List) formulaArg { // upper case and all other characters are lower case). The syntax of the // function is: // -// PROPER(text) -// +// PROPER(text) func (fn *formulaFuncs) PROPER(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "PROPER requires 1 argument") @@ -13837,8 +13496,7 @@ func (fn *formulaFuncs) PROPER(argsList *list.List) formulaArg { // REPLACE function replaces all or part of a text string with another string. // The syntax of the function is: // -// REPLACE(old_text,start_num,num_chars,new_text) -// +// REPLACE(old_text,start_num,num_chars,new_text) func (fn *formulaFuncs) REPLACE(argsList *list.List) formulaArg { return fn.replace("REPLACE", argsList) } @@ -13846,8 +13504,7 @@ func (fn *formulaFuncs) REPLACE(argsList *list.List) formulaArg { // REPLACEB replaces part of a text string, based on the number of bytes you // specify, with a different text string. // -// REPLACEB(old_text,start_num,num_chars,new_text) -// +// REPLACEB(old_text,start_num,num_chars,new_text) func (fn *formulaFuncs) REPLACEB(argsList *list.List) formulaArg { return fn.replace("REPLACEB", argsList) } @@ -13885,8 +13542,7 @@ func (fn *formulaFuncs) replace(name string, argsList *list.List) formulaArg { // REPT function returns a supplied text string, repeated a specified number // of times. The syntax of the function is: // -// REPT(text,number_times) -// +// REPT(text,number_times) func (fn *formulaFuncs) REPT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "REPT requires 2 arguments") @@ -13915,8 +13571,7 @@ func (fn *formulaFuncs) REPT(argsList *list.List) formulaArg { // RIGHT function returns a specified number of characters from the end of a // supplied text string. The syntax of the function is: // -// RIGHT(text,[num_chars]) -// +// RIGHT(text,[num_chars]) func (fn *formulaFuncs) RIGHT(argsList *list.List) formulaArg { return fn.leftRight("RIGHT", argsList) } @@ -13924,8 +13579,7 @@ func (fn *formulaFuncs) RIGHT(argsList *list.List) formulaArg { // RIGHTB returns the last character or characters in a text string, based on // the number of bytes you specify. The syntax of the function is: // -// RIGHTB(text,[num_bytes]) -// +// RIGHTB(text,[num_bytes]) func (fn *formulaFuncs) RIGHTB(argsList *list.List) formulaArg { return fn.leftRight("RIGHTB", argsList) } @@ -13933,8 +13587,7 @@ func (fn *formulaFuncs) RIGHTB(argsList *list.List) formulaArg { // SUBSTITUTE function replaces one or more instances of a given text string, // within an original text string. The syntax of the function is: // -// SUBSTITUTE(text,old_text,new_text,[instance_num]) -// +// SUBSTITUTE(text,old_text,new_text,[instance_num]) func (fn *formulaFuncs) SUBSTITUTE(argsList *list.List) formulaArg { if argsList.Len() != 3 && argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "SUBSTITUTE requires 3 or 4 arguments") @@ -13980,8 +13633,7 @@ func (fn *formulaFuncs) SUBSTITUTE(argsList *list.List) formulaArg { // combined text string. The user can specify a delimiter to add between the // individual text items, if required. The syntax of the function is: // -// TEXTJOIN([delimiter],[ignore_empty],text1,[text2],...) -// +// TEXTJOIN([delimiter],[ignore_empty],text1,[text2],...) func (fn *formulaFuncs) TEXTJOIN(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "TEXTJOIN requires at least 3 arguments") @@ -14038,8 +13690,7 @@ func textJoin(arg *list.Element, arr []string, ignoreEmpty bool) ([]string, form // words or characters) from a supplied text string. The syntax of the // function is: // -// TRIM(text) -// +// TRIM(text) func (fn *formulaFuncs) TRIM(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "TRIM requires 1 argument") @@ -14050,8 +13701,7 @@ func (fn *formulaFuncs) TRIM(argsList *list.List) formulaArg { // UNICHAR returns the Unicode character that is referenced by the given // numeric value. The syntax of the function is: // -// UNICHAR(number) -// +// UNICHAR(number) func (fn *formulaFuncs) UNICHAR(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "UNICHAR requires 1 argument") @@ -14069,8 +13719,7 @@ func (fn *formulaFuncs) UNICHAR(argsList *list.List) formulaArg { // UNICODE function returns the code point for the first character of a // supplied text string. The syntax of the function is: // -// UNICODE(text) -// +// UNICODE(text) func (fn *formulaFuncs) UNICODE(argsList *list.List) formulaArg { return fn.code("UNICODE", argsList) } @@ -14078,8 +13727,7 @@ func (fn *formulaFuncs) UNICODE(argsList *list.List) formulaArg { // UPPER converts all characters in a supplied text string to upper case. The // syntax of the function is: // -// UPPER(text) -// +// UPPER(text) func (fn *formulaFuncs) UPPER(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "UPPER requires 1 argument") @@ -14090,8 +13738,7 @@ func (fn *formulaFuncs) UPPER(argsList *list.List) formulaArg { // VALUE function converts a text string into a numeric value. The syntax of // the function is: // -// VALUE(text) -// +// VALUE(text) func (fn *formulaFuncs) VALUE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "VALUE requires 1 argument") @@ -14131,8 +13778,7 @@ func (fn *formulaFuncs) VALUE(argsList *list.List) formulaArg { // condition evaluates to TRUE, and another result if the condition evaluates // to FALSE. The syntax of the function is: // -// IF(logical_test,value_if_true,value_if_false) -// +// IF(logical_test,value_if_true,value_if_false) func (fn *formulaFuncs) IF(argsList *list.List) formulaArg { if argsList.Len() == 0 { return newErrorFormulaArg(formulaErrorVALUE, "IF requires at least 1 argument") @@ -14185,8 +13831,7 @@ func (fn *formulaFuncs) IF(argsList *list.List) formulaArg { // ADDRESS function takes a row and a column number and returns a cell // reference as a text string. The syntax of the function is: // -// ADDRESS(row_num,column_num,[abs_num],[a1],[sheet_text]) -// +// ADDRESS(row_num,column_num,[abs_num],[a1],[sheet_text]) func (fn *formulaFuncs) ADDRESS(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "ADDRESS requires at least 2 arguments") @@ -14240,8 +13885,7 @@ func (fn *formulaFuncs) ADDRESS(argsList *list.List) formulaArg { // CHOOSE function returns a value from an array, that corresponds to a // supplied index number (position). The syntax of the function is: // -// CHOOSE(index_num,value1,[value2],...) -// +// CHOOSE(index_num,value1,[value2],...) func (fn *formulaFuncs) CHOOSE(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "CHOOSE requires 2 arguments") @@ -14388,8 +14032,7 @@ func compareFormulaArgMatrix(lhs, rhs, matchMode formulaArg, caseSensitive bool) // COLUMN function returns the first column number within a supplied reference // or the number of the current column. The syntax of the function is: // -// COLUMN([reference]) -// +// COLUMN([reference]) func (fn *formulaFuncs) COLUMN(argsList *list.List) formulaArg { if argsList.Len() > 1 { return newErrorFormulaArg(formulaErrorVALUE, "COLUMN requires at most 1 argument") @@ -14450,8 +14093,7 @@ func calcColumnsMinMax(argsList *list.List) (min, max int) { // COLUMNS function receives an Excel range and returns the number of columns // that are contained within the range. The syntax of the function is: // -// COLUMNS(array) -// +// COLUMNS(array) func (fn *formulaFuncs) COLUMNS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "COLUMNS requires 1 argument") @@ -14473,8 +14115,7 @@ func (fn *formulaFuncs) COLUMNS(argsList *list.List) formulaArg { // FORMULATEXT function returns a formula as a text string. The syntax of the // function is: // -// FORMULATEXT(reference) -// +// FORMULATEXT(reference) func (fn *formulaFuncs) FORMULATEXT(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "FORMULATEXT requires 1 argument") @@ -14540,8 +14181,7 @@ func checkHVLookupArgs(name string, argsList *list.List) (idx int, lookupValue, // (or table), and returns the corresponding value from another row of the // array. The syntax of the function is: // -// HLOOKUP(lookup_value,table_array,row_index_num,[range_lookup]) -// +// HLOOKUP(lookup_value,table_array,row_index_num,[range_lookup]) func (fn *formulaFuncs) HLOOKUP(argsList *list.List) formulaArg { rowIdx, lookupValue, tableArray, matchMode, errArg := checkHVLookupArgs("HLOOKUP", argsList) if errArg.Type == ArgError { @@ -14570,8 +14210,7 @@ func (fn *formulaFuncs) HLOOKUP(argsList *list.List) formulaArg { // HYPERLINK function creates a hyperlink to a specified location. The syntax // of the function is: // -// HYPERLINK(link_location,[friendly_name]) -// +// HYPERLINK(link_location,[friendly_name]) func (fn *formulaFuncs) HYPERLINK(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "HYPERLINK requires at least 1 argument") @@ -14630,8 +14269,7 @@ func calcMatch(matchType int, criteria *formulaCriteria, lookupArray []formulaAr // should return the position of the closest match (above or below), if an // exact match is not found. The syntax of the Match function is: // -// MATCH(lookup_value,lookup_array,[match_type]) -// +// MATCH(lookup_value,lookup_array,[match_type]) func (fn *formulaFuncs) MATCH(argsList *list.List) formulaArg { if argsList.Len() != 2 && argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "MATCH requires 1 or 2 arguments") @@ -14667,8 +14305,7 @@ func (fn *formulaFuncs) MATCH(argsList *list.List) formulaArg { // a horizontal range of cells into a vertical range and vice versa). The // syntax of the function is: // -// TRANSPOSE(array) -// +// TRANSPOSE(array) func (fn *formulaFuncs) TRANSPOSE(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "TRANSPOSE requires 1 argument") @@ -14736,8 +14373,7 @@ start: // data array (or table), and returns the corresponding value from another // column of the array. The syntax of the function is: // -// VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup]) -// +// VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup]) func (fn *formulaFuncs) VLOOKUP(argsList *list.List) formulaArg { colIdx, lookupValue, tableArray, matchMode, errArg := checkHVLookupArgs("VLOOKUP", argsList) if errArg.Type == ArgError { @@ -14992,8 +14628,7 @@ func (fn *formulaFuncs) xlookup(lookupRows, lookupCols, returnArrayRows, returnA // XLOOKUP can return the closest (approximate) match. The syntax of the // function is: // -// XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],[search_mode]) -// +// XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],[search_mode]) func (fn *formulaFuncs) XLOOKUP(argsList *list.List) formulaArg { args := fn.prepareXlookupArgs(argsList) if args.Type != ArgList { @@ -15029,8 +14664,7 @@ func (fn *formulaFuncs) XLOOKUP(argsList *list.List) formulaArg { // INDEX function returns a reference to a cell that lies in a specified row // and column of a range of cells. The syntax of the function is: // -// INDEX(array,row_num,[col_num]) -// +// INDEX(array,row_num,[col_num]) func (fn *formulaFuncs) INDEX(argsList *list.List) formulaArg { if argsList.Len() < 2 || argsList.Len() > 3 { return newErrorFormulaArg(formulaErrorVALUE, "INDEX requires 2 or 3 arguments") @@ -15070,8 +14704,7 @@ func (fn *formulaFuncs) INDEX(argsList *list.List) formulaArg { // INDIRECT function converts a text string into a cell reference. The syntax // of the Indirect function is: // -// INDIRECT(ref_text,[a1]) -// +// INDIRECT(ref_text,[a1]) func (fn *formulaFuncs) INDIRECT(argsList *list.List) formulaArg { if argsList.Len() != 1 && argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "INDIRECT requires 1 or 2 arguments") @@ -15133,8 +14766,7 @@ func (fn *formulaFuncs) INDIRECT(argsList *list.List) formulaArg { // one-row range, and returns the corresponding value from another one-column // or one-row range. The syntax of the function is: // -// LOOKUP(lookup_value,lookup_vector,[result_vector]) -// +// LOOKUP(lookup_value,lookup_vector,[result_vector]) func (fn *formulaFuncs) LOOKUP(argsList *list.List) formulaArg { arrayForm, lookupValue, lookupVector, errArg := checkLookupArgs(argsList) if errArg.Type == ArgError { @@ -15177,8 +14809,7 @@ func lookupCol(arr formulaArg, idx int) []formulaArg { // ROW function returns the first row number within a supplied reference or // the number of the current row. The syntax of the function is: // -// ROW([reference]) -// +// ROW([reference]) func (fn *formulaFuncs) ROW(argsList *list.List) formulaArg { if argsList.Len() > 1 { return newErrorFormulaArg(formulaErrorVALUE, "ROW requires at most 1 argument") @@ -15239,8 +14870,7 @@ func calcRowsMinMax(argsList *list.List) (min, max int) { // ROWS function takes an Excel range and returns the number of rows that are // contained within the range. The syntax of the function is: // -// ROWS(array) -// +// ROWS(array) func (fn *formulaFuncs) ROWS(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ROWS requires 1 argument") @@ -15265,8 +14895,7 @@ func (fn *formulaFuncs) ROWS(argsList *list.List) formulaArg { // non-alphanumeric characters with the percentage symbol (%) and a // hexadecimal number. The syntax of the function is: // -// ENCODEURL(url) -// +// ENCODEURL(url) func (fn *formulaFuncs) ENCODEURL(argsList *list.List) formulaArg { if argsList.Len() != 1 { return newErrorFormulaArg(formulaErrorVALUE, "ENCODEURL requires 1 argument") @@ -15285,8 +14914,7 @@ func validateFrequency(freq float64) bool { // ACCRINT function returns the accrued interest in a security that pays // periodic interest. The syntax of the function is: // -// ACCRINT(issue,first_interest,settlement,rate,par,frequency,[basis],[calc_method]) -// +// ACCRINT(issue,first_interest,settlement,rate,par,frequency,[basis],[calc_method]) func (fn *formulaFuncs) ACCRINT(argsList *list.List) formulaArg { if argsList.Len() < 6 { return newErrorFormulaArg(formulaErrorVALUE, "ACCRINT requires at least 6 arguments") @@ -15329,8 +14957,7 @@ func (fn *formulaFuncs) ACCRINT(argsList *list.List) formulaArg { // ACCRINTM function returns the accrued interest in a security that pays // interest at maturity. The syntax of the function is: // -// ACCRINTM(issue,settlement,rate,[par],[basis]) -// +// ACCRINTM(issue,settlement,rate,[par],[basis]) func (fn *formulaFuncs) ACCRINTM(argsList *list.List) formulaArg { if argsList.Len() != 4 && argsList.Len() != 5 { return newErrorFormulaArg(formulaErrorVALUE, "ACCRINTM requires 4 or 5 arguments") @@ -15417,8 +15044,7 @@ func (fn *formulaFuncs) prepareAmorArgs(name string, argsList *list.List) formul // The function calculates the prorated linear depreciation of an asset for a // specified accounting period. The syntax of the function is: // -// AMORDEGRC(cost,date_purchased,first_period,salvage,period,rate,[basis]) -// +// AMORDEGRC(cost,date_purchased,first_period,salvage,period,rate,[basis]) func (fn *formulaFuncs) AMORDEGRC(argsList *list.List) formulaArg { if argsList.Len() != 6 && argsList.Len() != 7 { return newErrorFormulaArg(formulaErrorVALUE, "AMORDEGRC requires 6 or 7 arguments") @@ -15468,8 +15094,7 @@ func (fn *formulaFuncs) AMORDEGRC(argsList *list.List) formulaArg { // The function calculates the prorated linear depreciation of an asset for a // specified accounting period. The syntax of the function is: // -// AMORLINC(cost,date_purchased,first_period,salvage,period,rate,[basis]) -// +// AMORLINC(cost,date_purchased,first_period,salvage,period,rate,[basis]) func (fn *formulaFuncs) AMORLINC(argsList *list.List) formulaArg { if argsList.Len() != 6 && argsList.Len() != 7 { return newErrorFormulaArg(formulaErrorVALUE, "AMORLINC requires 6 or 7 arguments") @@ -15598,8 +15223,7 @@ func coupdays(from, to time.Time, basis int) float64 { // COUPDAYBS function calculates the number of days from the beginning of a // coupon's period to the settlement date. The syntax of the function is: // -// COUPDAYBS(settlement,maturity,frequency,[basis]) -// +// COUPDAYBS(settlement,maturity,frequency,[basis]) func (fn *formulaFuncs) COUPDAYBS(argsList *list.List) formulaArg { args := fn.prepareCouponArgs("COUPDAYBS", argsList) if args.Type != ArgList { @@ -15613,8 +15237,7 @@ func (fn *formulaFuncs) COUPDAYBS(argsList *list.List) formulaArg { // COUPDAYS function calculates the number of days in a coupon period that // contains the settlement date. The syntax of the function is: // -// COUPDAYS(settlement,maturity,frequency,[basis]) -// +// COUPDAYS(settlement,maturity,frequency,[basis]) func (fn *formulaFuncs) COUPDAYS(argsList *list.List) formulaArg { args := fn.prepareCouponArgs("COUPDAYS", argsList) if args.Type != ArgList { @@ -15633,8 +15256,7 @@ func (fn *formulaFuncs) COUPDAYS(argsList *list.List) formulaArg { // COUPDAYSNC function calculates the number of days from the settlement date // to the next coupon date. The syntax of the function is: // -// COUPDAYSNC(settlement,maturity,frequency,[basis]) -// +// COUPDAYSNC(settlement,maturity,frequency,[basis]) func (fn *formulaFuncs) COUPDAYSNC(argsList *list.List) formulaArg { args := fn.prepareCouponArgs("COUPDAYSNC", argsList) if args.Type != ArgList { @@ -15684,8 +15306,7 @@ func (fn *formulaFuncs) coupons(name string, arg formulaArg) formulaArg { // security's settlement date and maturity date, rounded up to the nearest // whole coupon. The syntax of the function is: // -// COUPNCD(settlement,maturity,frequency,[basis]) -// +// COUPNCD(settlement,maturity,frequency,[basis]) func (fn *formulaFuncs) COUPNCD(argsList *list.List) formulaArg { args := fn.prepareCouponArgs("COUPNCD", argsList) if args.Type != ArgList { @@ -15698,8 +15319,7 @@ func (fn *formulaFuncs) COUPNCD(argsList *list.List) formulaArg { // security's settlement date and maturity date, rounded up to the nearest // whole coupon. The syntax of the function is: // -// COUPNUM(settlement,maturity,frequency,[basis]) -// +// COUPNUM(settlement,maturity,frequency,[basis]) func (fn *formulaFuncs) COUPNUM(argsList *list.List) formulaArg { args := fn.prepareCouponArgs("COUPNUM", argsList) if args.Type != ArgList { @@ -15712,8 +15332,7 @@ func (fn *formulaFuncs) COUPNUM(argsList *list.List) formulaArg { // COUPPCD function returns the previous coupon date, before the settlement // date for a security. The syntax of the function is: // -// COUPPCD(settlement,maturity,frequency,[basis]) -// +// COUPPCD(settlement,maturity,frequency,[basis]) func (fn *formulaFuncs) COUPPCD(argsList *list.List) formulaArg { args := fn.prepareCouponArgs("COUPPCD", argsList) if args.Type != ArgList { @@ -15725,8 +15344,7 @@ func (fn *formulaFuncs) COUPPCD(argsList *list.List) formulaArg { // CUMIPMT function calculates the cumulative interest paid on a loan or // investment, between two specified periods. The syntax of the function is: // -// CUMIPMT(rate,nper,pv,start_period,end_period,type) -// +// CUMIPMT(rate,nper,pv,start_period,end_period,type) func (fn *formulaFuncs) CUMIPMT(argsList *list.List) formulaArg { return fn.cumip("CUMIPMT", argsList) } @@ -15735,8 +15353,7 @@ func (fn *formulaFuncs) CUMIPMT(argsList *list.List) formulaArg { // loan or investment, between two specified periods. The syntax of the // function is: // -// CUMPRINC(rate,nper,pv,start_period,end_period,type) -// +// CUMPRINC(rate,nper,pv,start_period,end_period,type) func (fn *formulaFuncs) CUMPRINC(argsList *list.List) formulaArg { return fn.cumip("CUMPRINC", argsList) } @@ -15803,8 +15420,7 @@ func calcDbArgsCompare(cost, salvage, life, period formulaArg) bool { // Declining Balance Method, for each period of the asset's lifetime. The // syntax of the function is: // -// DB(cost,salvage,life,period,[month]) -// +// DB(cost,salvage,life,period,[month]) func (fn *formulaFuncs) DB(argsList *list.List) formulaArg { if argsList.Len() < 4 { return newErrorFormulaArg(formulaErrorVALUE, "DB requires at least 4 arguments") @@ -15860,8 +15476,7 @@ func (fn *formulaFuncs) DB(argsList *list.List) formulaArg { // Declining Balance Method, or another specified depreciation rate. The // syntax of the function is: // -// DDB(cost,salvage,life,period,[factor]) -// +// DDB(cost,salvage,life,period,[factor]) func (fn *formulaFuncs) DDB(argsList *list.List) formulaArg { if argsList.Len() < 4 { return newErrorFormulaArg(formulaErrorVALUE, "DDB requires at least 4 arguments") @@ -15945,8 +15560,7 @@ func (fn *formulaFuncs) prepareDataValueArgs(n int, argsList *list.List) formula // DISC function calculates the Discount Rate for a security. The syntax of // the function is: // -// DISC(settlement,maturity,pr,redemption,[basis]) -// +// DISC(settlement,maturity,pr,redemption,[basis]) func (fn *formulaFuncs) DISC(argsList *list.List) formulaArg { if argsList.Len() != 4 && argsList.Len() != 5 { return newErrorFormulaArg(formulaErrorVALUE, "DISC requires 4 or 5 arguments") @@ -15989,8 +15603,7 @@ func (fn *formulaFuncs) DISC(argsList *list.List) formulaArg { // DOLLARDE function converts a dollar value in fractional notation, into a // dollar value expressed as a decimal. The syntax of the function is: // -// DOLLARDE(fractional_dollar,fraction) -// +// DOLLARDE(fractional_dollar,fraction) func (fn *formulaFuncs) DOLLARDE(argsList *list.List) formulaArg { return fn.dollar("DOLLARDE", argsList) } @@ -15999,8 +15612,7 @@ func (fn *formulaFuncs) DOLLARDE(argsList *list.List) formulaArg { // dollar value that is expressed in fractional notation. The syntax of the // function is: // -// DOLLARFR(decimal_dollar,fraction) -// +// DOLLARFR(decimal_dollar,fraction) func (fn *formulaFuncs) DOLLARFR(argsList *list.List) formulaArg { return fn.dollar("DOLLARFR", argsList) } @@ -16115,8 +15727,7 @@ func (fn *formulaFuncs) duration(settlement, maturity, coupon, yld, frequency, b // Duration) of a security that pays periodic interest, assuming a par value // of $100. The syntax of the function is: // -// DURATION(settlement,maturity,coupon,yld,frequency,[basis]) -// +// DURATION(settlement,maturity,coupon,yld,frequency,[basis]) func (fn *formulaFuncs) DURATION(argsList *list.List) formulaArg { args := fn.prepareDurationArgs("DURATION", argsList) if args.Type != ArgList { @@ -16129,8 +15740,7 @@ func (fn *formulaFuncs) DURATION(argsList *list.List) formulaArg { // nominal interest rate and number of compounding periods per year. The // syntax of the function is: // -// EFFECT(nominal_rate,npery) -// +// EFFECT(nominal_rate,npery) func (fn *formulaFuncs) EFFECT(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "EFFECT requires 2 arguments") @@ -16154,8 +15764,7 @@ func (fn *formulaFuncs) EFFECT(argsList *list.List) formulaArg { // participating currency to another by using the euro as an intermediary // (triangulation). The syntax of the function is: // -// EUROCONVERT(number,sourcecurrency,targetcurrency[,fullprecision,triangulationprecision]) -// +// EUROCONVERT(number,sourcecurrency,targetcurrency[,fullprecision,triangulationprecision]) func (fn *formulaFuncs) EUROCONVERT(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "EUROCONVERT requires at least 3 arguments") @@ -16235,8 +15844,7 @@ func (fn *formulaFuncs) EUROCONVERT(argsList *list.List) formulaArg { // constant payments and a constant interest rate. The syntax of the function // is: // -// FV(rate,nper,[pmt],[pv],[type]) -// +// FV(rate,nper,[pmt],[pv],[type]) func (fn *formulaFuncs) FV(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "FV requires at least 3 arguments") @@ -16279,8 +15887,7 @@ func (fn *formulaFuncs) FV(argsList *list.List) formulaArg { // FVSCHEDULE function calculates the Future Value of an investment with a // variable interest rate. The syntax of the function is: // -// FVSCHEDULE(principal,schedule) -// +// FVSCHEDULE(principal,schedule) func (fn *formulaFuncs) FVSCHEDULE(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "FVSCHEDULE requires 2 arguments") @@ -16306,8 +15913,7 @@ func (fn *formulaFuncs) FVSCHEDULE(argsList *list.List) formulaArg { // INTRATE function calculates the interest rate for a fully invested // security. The syntax of the function is: // -// INTRATE(settlement,maturity,investment,redemption,[basis]) -// +// INTRATE(settlement,maturity,investment,redemption,[basis]) func (fn *formulaFuncs) INTRATE(argsList *list.List) formulaArg { if argsList.Len() != 4 && argsList.Len() != 5 { return newErrorFormulaArg(formulaErrorVALUE, "INTRATE requires 4 or 5 arguments") @@ -16351,8 +15957,7 @@ func (fn *formulaFuncs) INTRATE(argsList *list.List) formulaArg { // loan or investment that is paid in constant periodic payments, with a // constant interest rate. The syntax of the function is: // -// IPMT(rate,per,nper,pv,[fv],[type]) -// +// IPMT(rate,per,nper,pv,[fv],[type]) func (fn *formulaFuncs) IPMT(argsList *list.List) formulaArg { return fn.ipmt("IPMT", argsList) } @@ -16430,8 +16035,7 @@ func (fn *formulaFuncs) ipmt(name string, argsList *list.List) formulaArg { // periodic cash flows (i.e. an initial investment value and a series of net // income values). The syntax of the function is: // -// IRR(values,[guess]) -// +// IRR(values,[guess]) func (fn *formulaFuncs) IRR(argsList *list.List) formulaArg { if argsList.Len() < 1 { return newErrorFormulaArg(formulaErrorVALUE, "IRR requires at least 1 argument") @@ -16499,8 +16103,7 @@ func (fn *formulaFuncs) IRR(argsList *list.List) formulaArg { // ISPMT function calculates the interest paid during a specific period of a // loan or investment. The syntax of the function is: // -// ISPMT(rate,per,nper,pv) -// +// ISPMT(rate,per,nper,pv) func (fn *formulaFuncs) ISPMT(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "ISPMT requires 4 arguments") @@ -16536,8 +16139,7 @@ func (fn *formulaFuncs) ISPMT(argsList *list.List) formulaArg { // that pays periodic interest, assuming a par value of $100. The syntax of // the function is: // -// MDURATION(settlement,maturity,coupon,yld,frequency,[basis]) -// +// MDURATION(settlement,maturity,coupon,yld,frequency,[basis]) func (fn *formulaFuncs) MDURATION(argsList *list.List) formulaArg { args := fn.prepareDurationArgs("MDURATION", argsList) if args.Type != ArgList { @@ -16555,8 +16157,7 @@ func (fn *formulaFuncs) MDURATION(argsList *list.List) formulaArg { // initial investment value and a series of net income values). The syntax of // the function is: // -// MIRR(values,finance_rate,reinvest_rate) -// +// MIRR(values,finance_rate,reinvest_rate) func (fn *formulaFuncs) MIRR(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "MIRR requires 3 arguments") @@ -16589,8 +16190,7 @@ func (fn *formulaFuncs) MIRR(argsList *list.List) formulaArg { // interest rate and number of compounding periods per year. The syntax of // the function is: // -// NOMINAL(effect_rate,npery) -// +// NOMINAL(effect_rate,npery) func (fn *formulaFuncs) NOMINAL(argsList *list.List) formulaArg { if argsList.Len() != 2 { return newErrorFormulaArg(formulaErrorVALUE, "NOMINAL requires 2 arguments") @@ -16613,8 +16213,7 @@ func (fn *formulaFuncs) NOMINAL(argsList *list.List) formulaArg { // for a constant periodic payment and a constant interest rate. The syntax // of the function is: // -// NPER(rate,pmt,pv,[fv],[type]) -// +// NPER(rate,pmt,pv,[fv],[type]) func (fn *formulaFuncs) NPER(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "NPER requires at least 3 arguments") @@ -16662,8 +16261,7 @@ func (fn *formulaFuncs) NPER(argsList *list.List) formulaArg { // supplied discount rate, and a series of future payments and income. The // syntax of the function is: // -// NPV(rate,value1,[value2],[value3],...) -// +// NPV(rate,value1,[value2],[value3],...) func (fn *formulaFuncs) NPV(argsList *list.List) formulaArg { if argsList.Len() < 2 { return newErrorFormulaArg(formulaErrorVALUE, "NPV requires at least 2 arguments") @@ -16827,8 +16425,7 @@ func (fn *formulaFuncs) prepareOddfpriceArgs(argsList *list.List) formulaArg { // ODDFPRICE function calculates the price per $100 face value of a security // with an odd (short or long) first period. The syntax of the function is: // -// ODDFPRICE(settlement,maturity,issue,first_coupon,rate,yld,redemption,frequency,[basis]) -// +// ODDFPRICE(settlement,maturity,issue,first_coupon,rate,yld,redemption,frequency,[basis]) func (fn *formulaFuncs) ODDFPRICE(argsList *list.List) formulaArg { if argsList.Len() != 8 && argsList.Len() != 9 { return newErrorFormulaArg(formulaErrorVALUE, "ODDFPRICE requires 8 or 9 arguments") @@ -16957,8 +16554,7 @@ func (fn *formulaFuncs) ODDFPRICE(argsList *list.List) formulaArg { // investment to reach a specified future value. The syntax of the function // is: // -// PDURATION(rate,pv,fv) -// +// PDURATION(rate,pv,fv) func (fn *formulaFuncs) PDURATION(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "PDURATION requires 3 arguments") @@ -16985,8 +16581,7 @@ func (fn *formulaFuncs) PDURATION(argsList *list.List) formulaArg { // (or partially pay off) a loan or investment, with a constant interest // rate, over a specified period. The syntax of the function is: // -// PMT(rate,nper,pv,[fv],[type]) -// +// PMT(rate,nper,pv,[fv],[type]) func (fn *formulaFuncs) PMT(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "PMT requires at least 3 arguments") @@ -17031,8 +16626,7 @@ func (fn *formulaFuncs) PMT(argsList *list.List) formulaArg { // period of a loan or investment that is paid in constant periodic payments, // with a constant interest rate. The syntax of the function is: // -// PPMT(rate,per,nper,pv,[fv],[type]) -// +// PPMT(rate,per,nper,pv,[fv],[type]) func (fn *formulaFuncs) PPMT(argsList *list.List) formulaArg { return fn.ipmt("PPMT", argsList) } @@ -17073,8 +16667,7 @@ func (fn *formulaFuncs) price(settlement, maturity, rate, yld, redemption, frequ // PRICE function calculates the price, per $100 face value of a security that // pays periodic interest. The syntax of the function is: // -// PRICE(settlement,maturity,rate,yld,redemption,frequency,[basis]) -// +// PRICE(settlement,maturity,rate,yld,redemption,frequency,[basis]) func (fn *formulaFuncs) PRICE(argsList *list.List) formulaArg { if argsList.Len() != 6 && argsList.Len() != 7 { return newErrorFormulaArg(formulaErrorVALUE, "PRICE requires 6 or 7 arguments") @@ -17124,8 +16717,7 @@ func (fn *formulaFuncs) PRICE(argsList *list.List) formulaArg { // PRICEDISC function calculates the price, per $100 face value of a // discounted security. The syntax of the function is: // -// PRICEDISC(settlement,maturity,discount,redemption,[basis]) -// +// PRICEDISC(settlement,maturity,discount,redemption,[basis]) func (fn *formulaFuncs) PRICEDISC(argsList *list.List) formulaArg { if argsList.Len() != 4 && argsList.Len() != 5 { return newErrorFormulaArg(formulaErrorVALUE, "PRICEDISC requires 4 or 5 arguments") @@ -17168,8 +16760,7 @@ func (fn *formulaFuncs) PRICEDISC(argsList *list.List) formulaArg { // PRICEMAT function calculates the price, per $100 face value of a security // that pays interest at maturity. The syntax of the function is: // -// PRICEMAT(settlement,maturity,issue,rate,yld,[basis]) -// +// PRICEMAT(settlement,maturity,issue,rate,yld,[basis]) func (fn *formulaFuncs) PRICEMAT(argsList *list.List) formulaArg { if argsList.Len() != 5 && argsList.Len() != 6 { return newErrorFormulaArg(formulaErrorVALUE, "PRICEMAT requires 5 or 6 arguments") @@ -17217,8 +16808,7 @@ func (fn *formulaFuncs) PRICEMAT(argsList *list.List) formulaArg { // PV function calculates the Present Value of an investment, based on a // series of future payments. The syntax of the function is: // -// PV(rate,nper,pmt,[fv],[type]) -// +// PV(rate,nper,pmt,[fv],[type]) func (fn *formulaFuncs) PV(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "PV requires at least 3 arguments") @@ -17286,8 +16876,7 @@ func (fn *formulaFuncs) rate(nper, pmt, pv, fv, t, guess formulaArg) formulaArg // amount of a loan, or to reach a target amount on an investment, over a // given period. The syntax of the function is: // -// RATE(nper,pmt,pv,[fv],[type],[guess]) -// +// RATE(nper,pmt,pv,[fv],[type],[guess]) func (fn *formulaFuncs) RATE(argsList *list.List) formulaArg { if argsList.Len() < 3 { return newErrorFormulaArg(formulaErrorVALUE, "RATE requires at least 3 arguments") @@ -17334,8 +16923,7 @@ func (fn *formulaFuncs) RATE(argsList *list.List) formulaArg { // RECEIVED function calculates the amount received at maturity for a fully // invested security. The syntax of the function is: // -// RECEIVED(settlement,maturity,investment,discount,[basis]) -// +// RECEIVED(settlement,maturity,investment,discount,[basis]) func (fn *formulaFuncs) RECEIVED(argsList *list.List) formulaArg { if argsList.Len() < 4 { return newErrorFormulaArg(formulaErrorVALUE, "RECEIVED requires at least 4 arguments") @@ -17376,8 +16964,7 @@ func (fn *formulaFuncs) RECEIVED(argsList *list.List) formulaArg { // specified present value, future value and duration. The syntax of the // function is: // -// RRI(nper,pv,fv) -// +// RRI(nper,pv,fv) func (fn *formulaFuncs) RRI(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "RRI requires 3 arguments") @@ -17403,8 +16990,7 @@ func (fn *formulaFuncs) RRI(argsList *list.List) formulaArg { // SLN function calculates the straight line depreciation of an asset for one // period. The syntax of the function is: // -// SLN(cost,salvage,life) -// +// SLN(cost,salvage,life) func (fn *formulaFuncs) SLN(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "SLN requires 3 arguments") @@ -17425,8 +17011,7 @@ func (fn *formulaFuncs) SLN(argsList *list.List) formulaArg { // specified period in the lifetime of an asset. The syntax of the function // is: // -// SYD(cost,salvage,life,per) -// +// SYD(cost,salvage,life,per) func (fn *formulaFuncs) SYD(argsList *list.List) formulaArg { if argsList.Len() != 4 { return newErrorFormulaArg(formulaErrorVALUE, "SYD requires 4 arguments") @@ -17453,8 +17038,7 @@ func (fn *formulaFuncs) SYD(argsList *list.List) formulaArg { // TBILLEQ function calculates the bond-equivalent yield for a Treasury Bill. // The syntax of the function is: // -// TBILLEQ(settlement,maturity,discount) -// +// TBILLEQ(settlement,maturity,discount) func (fn *formulaFuncs) TBILLEQ(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "TBILLEQ requires 3 arguments") @@ -17481,8 +17065,7 @@ func (fn *formulaFuncs) TBILLEQ(argsList *list.List) formulaArg { // TBILLPRICE function returns the price, per $100 face value, of a Treasury // Bill. The syntax of the function is: // -// TBILLPRICE(settlement,maturity,discount) -// +// TBILLPRICE(settlement,maturity,discount) func (fn *formulaFuncs) TBILLPRICE(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "TBILLPRICE requires 3 arguments") @@ -17509,8 +17092,7 @@ func (fn *formulaFuncs) TBILLPRICE(argsList *list.List) formulaArg { // TBILLYIELD function calculates the yield of a Treasury Bill. The syntax of // the function is: // -// TBILLYIELD(settlement,maturity,pr) -// +// TBILLYIELD(settlement,maturity,pr) func (fn *formulaFuncs) TBILLYIELD(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "TBILLYIELD requires 3 arguments") @@ -17625,8 +17207,7 @@ func (fn *formulaFuncs) vdb(cost, salvage, life, life1, period, factor formulaAr // specified period (including partial periods). The syntax of the function // is: // -// VDB(cost,salvage,life,start_period,end_period,[factor],[no_switch]) -// +// VDB(cost,salvage,life,start_period,end_period,[factor],[no_switch]) func (fn *formulaFuncs) VDB(argsList *list.List) formulaArg { if argsList.Len() < 5 || argsList.Len() > 7 { return newErrorFormulaArg(formulaErrorVALUE, "VDB requires 5 or 7 arguments") @@ -17774,8 +17355,7 @@ func xirrPart2(values, dates []float64, rate float64) float64 { // value and a series of net income values) occurring at a series of supplied // dates. The syntax of the function is: // -// XIRR(values,dates,[guess]) -// +// XIRR(values,dates,[guess]) func (fn *formulaFuncs) XIRR(argsList *list.List) formulaArg { if argsList.Len() != 2 && argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "XIRR requires 2 or 3 arguments") @@ -17799,8 +17379,7 @@ func (fn *formulaFuncs) XIRR(argsList *list.List) formulaArg { // XNPV function calculates the Net Present Value for a schedule of cash flows // that is not necessarily periodic. The syntax of the function is: // -// XNPV(rate,values,dates) -// +// XNPV(rate,values,dates) func (fn *formulaFuncs) XNPV(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "XNPV requires 3 arguments") @@ -17862,8 +17441,7 @@ func (fn *formulaFuncs) yield(settlement, maturity, rate, pr, redemption, freque // YIELD function calculates the Yield of a security that pays periodic // interest. The syntax of the function is: // -// YIELD(settlement,maturity,rate,pr,redemption,frequency,[basis]) -// +// YIELD(settlement,maturity,rate,pr,redemption,frequency,[basis]) func (fn *formulaFuncs) YIELD(argsList *list.List) formulaArg { if argsList.Len() != 6 && argsList.Len() != 7 { return newErrorFormulaArg(formulaErrorVALUE, "YIELD requires 6 or 7 arguments") @@ -17913,8 +17491,7 @@ func (fn *formulaFuncs) YIELD(argsList *list.List) formulaArg { // YIELDDISC function calculates the annual yield of a discounted security. // The syntax of the function is: // -// YIELDDISC(settlement,maturity,pr,redemption,[basis]) -// +// YIELDDISC(settlement,maturity,pr,redemption,[basis]) func (fn *formulaFuncs) YIELDDISC(argsList *list.List) formulaArg { if argsList.Len() != 4 && argsList.Len() != 5 { return newErrorFormulaArg(formulaErrorVALUE, "YIELDDISC requires 4 or 5 arguments") @@ -17954,8 +17531,7 @@ func (fn *formulaFuncs) YIELDDISC(argsList *list.List) formulaArg { // YIELDMAT function calculates the annual yield of a security that pays // interest at maturity. The syntax of the function is: // -// YIELDMAT(settlement,maturity,issue,rate,pr,[basis]) -// +// YIELDMAT(settlement,maturity,issue,rate,pr,[basis]) func (fn *formulaFuncs) YIELDMAT(argsList *list.List) formulaArg { if argsList.Len() != 5 && argsList.Len() != 6 { return newErrorFormulaArg(formulaErrorVALUE, "YIELDMAT requires 5 or 6 arguments") @@ -18151,8 +17727,7 @@ func (fn *formulaFuncs) database(name string, argsList *list.List) formulaArg { // field (column) in a database for selected records, that satisfy // user-specified criteria. The syntax of the Excel Daverage function is: // -// DAVERAGE(database,field,criteria) -// +// DAVERAGE(database,field,criteria) func (fn *formulaFuncs) DAVERAGE(argsList *list.List) formulaArg { return fn.database("DAVERAGE", argsList) } @@ -18190,8 +17765,7 @@ func (fn *formulaFuncs) dcount(name string, argsList *list.List) formulaArg { // included in the count are those that satisfy a set of one or more // user-specified criteria. The syntax of the function is: // -// DCOUNT(database,[field],criteria) -// +// DCOUNT(database,[field],criteria) func (fn *formulaFuncs) DCOUNT(argsList *list.List) formulaArg { return fn.dcount("DCOUNT", argsList) } @@ -18201,8 +17775,7 @@ func (fn *formulaFuncs) DCOUNT(argsList *list.List) formulaArg { // included in the count are those that satisfy a set of one or more // user-specified criteria. The syntax of the function is: // -// DCOUNTA(database,[field],criteria) -// +// DCOUNTA(database,[field],criteria) func (fn *formulaFuncs) DCOUNTA(argsList *list.List) formulaArg { return fn.dcount("DCOUNTA", argsList) } @@ -18211,8 +17784,7 @@ func (fn *formulaFuncs) DCOUNTA(argsList *list.List) formulaArg { // is selected via a set of one or more user-specified criteria. The syntax of // the function is: // -// DGET(database,field,criteria) -// +// DGET(database,field,criteria) func (fn *formulaFuncs) DGET(argsList *list.List) formulaArg { if argsList.Len() != 3 { return newErrorFormulaArg(formulaErrorVALUE, "DGET requires 3 arguments") @@ -18238,8 +17810,7 @@ func (fn *formulaFuncs) DGET(argsList *list.List) formulaArg { // defined by a set of one or more user-specified criteria. The syntax of the // function is: // -// DMAX(database,field,criteria) -// +// DMAX(database,field,criteria) func (fn *formulaFuncs) DMAX(argsList *list.List) formulaArg { return fn.database("DMAX", argsList) } @@ -18249,8 +17820,7 @@ func (fn *formulaFuncs) DMAX(argsList *list.List) formulaArg { // defined by a set of one or more user-specified criteria. The syntax of the // function is: // -// DMIN(database,field,criteria) -// +// DMIN(database,field,criteria) func (fn *formulaFuncs) DMIN(argsList *list.List) formulaArg { return fn.database("DMIN", argsList) } @@ -18259,8 +17829,7 @@ func (fn *formulaFuncs) DMIN(argsList *list.List) formulaArg { // for selected records, that satisfy user-specified criteria. The syntax of // the function is: // -// DPRODUCT(database,field,criteria) -// +// DPRODUCT(database,field,criteria) func (fn *formulaFuncs) DPRODUCT(argsList *list.List) formulaArg { return fn.database("DPRODUCT", argsList) } @@ -18270,8 +17839,7 @@ func (fn *formulaFuncs) DPRODUCT(argsList *list.List) formulaArg { // included in the calculation are defined by a set of one or more // user-specified criteria. The syntax of the function is: // -// DSTDEV(database,field,criteria) -// +// DSTDEV(database,field,criteria) func (fn *formulaFuncs) DSTDEV(argsList *list.List) formulaArg { return fn.database("DSTDEV", argsList) } @@ -18281,8 +17849,7 @@ func (fn *formulaFuncs) DSTDEV(argsList *list.List) formulaArg { // calculation are defined by a set of one or more user-specified criteria. // The syntax of the function is: // -// DSTDEVP(database,field,criteria) -// +// DSTDEVP(database,field,criteria) func (fn *formulaFuncs) DSTDEVP(argsList *list.List) formulaArg { return fn.database("DSTDEVP", argsList) } @@ -18291,8 +17858,7 @@ func (fn *formulaFuncs) DSTDEVP(argsList *list.List) formulaArg { // selected records, that satisfy user-specified criteria. The syntax of the // function is: // -// DSUM(database,field,criteria) -// +// DSUM(database,field,criteria) func (fn *formulaFuncs) DSUM(argsList *list.List) formulaArg { return fn.database("DSUM", argsList) } @@ -18302,8 +17868,7 @@ func (fn *formulaFuncs) DSUM(argsList *list.List) formulaArg { // calculation are defined by a set of one or more user-specified criteria. // The syntax of the function is: // -// DVAR(database,field,criteria) -// +// DVAR(database,field,criteria) func (fn *formulaFuncs) DVAR(argsList *list.List) formulaArg { return fn.database("DVAR", argsList) } @@ -18313,8 +17878,7 @@ func (fn *formulaFuncs) DVAR(argsList *list.List) formulaArg { // records to be included in the calculation are defined by a set of one or // more user-specified criteria. The syntax of the function is: // -// DVARP(database,field,criteria) -// +// DVARP(database,field,criteria) func (fn *formulaFuncs) DVARP(argsList *list.List) formulaArg { return fn.database("DVARP", argsList) } |