@@ -374,6 +374,7 @@ type formulaFuncs struct {
374374// CONCATENATE
375375// CONFIDENCE
376376// CONFIDENCE.NORM
377+ // CONFIDENCE.T
377378// CORREL
378379// COS
379380// COSH
@@ -588,6 +589,7 @@ type formulaFuncs struct {
588589// PERCENTRANK
589590// PERMUT
590591// PERMUTATIONA
592+ // PHI
591593// PI
592594// PMT
593595// POISSON.DIST
@@ -6805,14 +6807,50 @@ func (fn *formulaFuncs) CONFIDENCE(argsList *list.List) formulaArg {
68056807// confidence value that can be used to construct the confidence interval for
68066808// a population mean, for a supplied probability and sample size. It is
68076809// assumed that the standard deviation of the population is known. The syntax
6808- // of the Confidence.Norm function is:
6810+ // of the function is:
68096811//
68106812// CONFIDENCE.NORM(alpha,standard_dev,size)
68116813//
68126814func (fn * formulaFuncs ) CONFIDENCEdotNORM (argsList * list.List ) formulaArg {
68136815 return fn .confidence ("CONFIDENCE.NORM" , argsList )
68146816}
68156817
6818+ // CONFIDENCEdotT function uses a Student's T-Distribution to calculate a
6819+ // confidence value that can be used to construct the confidence interval for
6820+ // a population mean, for a supplied probablity and supplied sample size. It
6821+ // is assumed that the standard deviation of the population is known. The
6822+ // syntax of the function is:
6823+ //
6824+ // CONFIDENCE.T(alpha,standard_dev,size)
6825+ //
6826+ func (fn * formulaFuncs ) CONFIDENCEdotT (argsList * list.List ) formulaArg {
6827+ if argsList .Len () != 3 {
6828+ return newErrorFormulaArg (formulaErrorVALUE , "CONFIDENCE.T requires 3 arguments" )
6829+ }
6830+ var alpha , standardDev , size formulaArg
6831+ if alpha = argsList .Front ().Value .(formulaArg ).ToNumber (); alpha .Type != ArgNumber {
6832+ return alpha
6833+ }
6834+ if standardDev = argsList .Front ().Next ().Value .(formulaArg ).ToNumber (); standardDev .Type != ArgNumber {
6835+ return standardDev
6836+ }
6837+ if size = argsList .Back ().Value .(formulaArg ).ToNumber (); size .Type != ArgNumber {
6838+ return size
6839+ }
6840+ if alpha .Number <= 0 || alpha .Number >= 1 || standardDev .Number <= 0 || size .Number < 1 {
6841+ return newErrorFormulaArg (formulaErrorNUM , formulaErrorNUM )
6842+ }
6843+ if size .Number == 1 {
6844+ return newErrorFormulaArg (formulaErrorDIV , formulaErrorDIV )
6845+ }
6846+ return newNumberFormulaArg (standardDev .Number * calcIterateInverse (calcInverseIterator {
6847+ name : "CONFIDENCE.T" ,
6848+ fp : alpha .Number ,
6849+ fDF : size .Number - 1 ,
6850+ nT : 2 ,
6851+ }, size .Number / 2 , size .Number ) / math .Sqrt (size .Number ))
6852+ }
6853+
68166854// COVAR function calculates the covariance of two supplied sets of values. The
68176855// syntax of the function is:
68186856//
@@ -8891,6 +8929,22 @@ func (fn *formulaFuncs) PERMUTATIONA(argsList *list.List) formulaArg {
88918929 return newNumberFormulaArg (math .Pow (num , numChosen ))
88928930}
88938931
8932+ // PHI function returns the value of the density function for a standard normal
8933+ // distribution for a supplied number. The syntax of the function is:
8934+ //
8935+ // PHI(x)
8936+ //
8937+ func (fn * formulaFuncs ) PHI (argsList * list.List ) formulaArg {
8938+ if argsList .Len () != 1 {
8939+ return newErrorFormulaArg (formulaErrorVALUE , "PHI requires 1 argument" )
8940+ }
8941+ x := argsList .Front ().Value .(formulaArg ).ToNumber ()
8942+ if x .Type != ArgNumber {
8943+ return x
8944+ }
8945+ return newNumberFormulaArg (0.39894228040143268 * math .Exp (- (x .Number * x .Number )/ 2 ))
8946+ }
8947+
88948948// QUARTILE function returns a requested quartile of a supplied range of
88958949// values. The syntax of the function is:
88968950//
@@ -13122,7 +13176,7 @@ func validateFrequency(freq float64) bool {
1312213176 return freq == 1 || freq == 2 || freq == 4
1312313177}
1312413178
13125- // ACCRINT function returns the accrued interest for a security that pays
13179+ // ACCRINT function returns the accrued interest in a security that pays
1312613180// periodic interest. The syntax of the function is:
1312713181//
1312813182// ACCRINT(issue,first_interest,settlement,rate,par,frequency,[basis],[calc_method])
@@ -13166,7 +13220,7 @@ func (fn *formulaFuncs) ACCRINT(argsList *list.List) formulaArg {
1316613220 return newNumberFormulaArg (par .Number * rate .Number * frac1 .Number )
1316713221}
1316813222
13169- // ACCRINTM function returns the accrued interest for a security that pays
13223+ // ACCRINTM function returns the accrued interest in a security that pays
1317013224// interest at maturity. The syntax of the function is:
1317113225//
1317213226// ACCRINTM(issue,settlement,rate,[par],[basis])
0 commit comments