@@ -374,6 +374,7 @@ type formulaFuncs struct {
374
374
// CONCATENATE
375
375
// CONFIDENCE
376
376
// CONFIDENCE.NORM
377
+ // CONFIDENCE.T
377
378
// CORREL
378
379
// COS
379
380
// COSH
@@ -588,6 +589,7 @@ type formulaFuncs struct {
588
589
// PERCENTRANK
589
590
// PERMUT
590
591
// PERMUTATIONA
592
+ // PHI
591
593
// PI
592
594
// PMT
593
595
// POISSON.DIST
@@ -6805,14 +6807,50 @@ func (fn *formulaFuncs) CONFIDENCE(argsList *list.List) formulaArg {
6805
6807
// confidence value that can be used to construct the confidence interval for
6806
6808
// a population mean, for a supplied probability and sample size. It is
6807
6809
// assumed that the standard deviation of the population is known. The syntax
6808
- // of the Confidence.Norm function is:
6810
+ // of the function is:
6809
6811
//
6810
6812
// CONFIDENCE.NORM(alpha,standard_dev,size)
6811
6813
//
6812
6814
func (fn * formulaFuncs ) CONFIDENCEdotNORM (argsList * list.List ) formulaArg {
6813
6815
return fn .confidence ("CONFIDENCE.NORM" , argsList )
6814
6816
}
6815
6817
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
+
6816
6854
// COVAR function calculates the covariance of two supplied sets of values. The
6817
6855
// syntax of the function is:
6818
6856
//
@@ -8891,6 +8929,22 @@ func (fn *formulaFuncs) PERMUTATIONA(argsList *list.List) formulaArg {
8891
8929
return newNumberFormulaArg (math .Pow (num , numChosen ))
8892
8930
}
8893
8931
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
+
8894
8948
// QUARTILE function returns a requested quartile of a supplied range of
8895
8949
// values. The syntax of the function is:
8896
8950
//
@@ -13122,7 +13176,7 @@ func validateFrequency(freq float64) bool {
13122
13176
return freq == 1 || freq == 2 || freq == 4
13123
13177
}
13124
13178
13125
- // ACCRINT function returns the accrued interest for a security that pays
13179
+ // ACCRINT function returns the accrued interest in a security that pays
13126
13180
// periodic interest. The syntax of the function is:
13127
13181
//
13128
13182
// ACCRINT(issue,first_interest,settlement,rate,par,frequency,[basis],[calc_method])
@@ -13166,7 +13220,7 @@ func (fn *formulaFuncs) ACCRINT(argsList *list.List) formulaArg {
13166
13220
return newNumberFormulaArg (par .Number * rate .Number * frac1 .Number )
13167
13221
}
13168
13222
13169
- // ACCRINTM function returns the accrued interest for a security that pays
13223
+ // ACCRINTM function returns the accrued interest in a security that pays
13170
13224
// interest at maturity. The syntax of the function is:
13171
13225
//
13172
13226
// ACCRINTM(issue,settlement,rate,[par],[basis])
0 commit comments