forked from p30928647/excelize
ref #65, new formula functions: T.DIST.2T and T.DIST.RT
- Update GitHub Action settings
This commit is contained in:
parent
b8345731a4
commit
be8fc0a4c5
|
@ -1,15 +1,9 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [master]
|
||||
schedule:
|
||||
- cron: '0 6 * * 3'
|
||||
|
@ -22,50 +16,20 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Override automatic language detection by changing the below list
|
||||
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||
language: ['go']
|
||||
# Learn more...
|
||||
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
uses: github/codeql-action/analyze@v2
|
||||
|
|
|
@ -14,12 +14,12 @@ jobs:
|
|||
steps:
|
||||
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v2
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Get dependencies
|
||||
run: |
|
||||
|
|
54
calc.go
54
calc.go
|
@ -658,6 +658,8 @@ type formulaFuncs struct {
|
|||
// TBILLPRICE
|
||||
// TBILLYIELD
|
||||
// T.DIST
|
||||
// T.DIST.2T
|
||||
// T.DIST.RT
|
||||
// TDIST
|
||||
// TEXTJOIN
|
||||
// TIME
|
||||
|
@ -9072,6 +9074,58 @@ func (fn *formulaFuncs) TdotDIST(argsList *list.List) formulaArg {
|
|||
return newNumberFormulaArg(getTDist(x.Number, degrees.Number, 4))
|
||||
}
|
||||
|
||||
// TdotDISTdot2T function calculates the two-tailed Student's T Distribution,
|
||||
// which is a continuous probability distribution that is frequently used for
|
||||
// testing hypotheses on small sample data sets. The syntax of the function
|
||||
// is:
|
||||
//
|
||||
// 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")
|
||||
}
|
||||
var x, degrees formulaArg
|
||||
if x = argsList.Front().Value.(formulaArg).ToNumber(); x.Type != ArgNumber {
|
||||
return x
|
||||
}
|
||||
if degrees = argsList.Back().Value.(formulaArg).ToNumber(); degrees.Type != ArgNumber {
|
||||
return degrees
|
||||
}
|
||||
if x.Number < 0 || degrees.Number < 1 {
|
||||
return newErrorFormulaArg(formulaErrorNUM, formulaErrorNUM)
|
||||
}
|
||||
return newNumberFormulaArg(getTDist(x.Number, degrees.Number, 2))
|
||||
}
|
||||
|
||||
// TdotDISTdotRT function calculates the right-tailed Student's T Distribution,
|
||||
// which is a continuous probability distribution that is frequently used for
|
||||
// testing hypotheses on small sample data sets. The syntax of the function
|
||||
// is:
|
||||
//
|
||||
// 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")
|
||||
}
|
||||
var x, degrees formulaArg
|
||||
if x = argsList.Front().Value.(formulaArg).ToNumber(); x.Type != ArgNumber {
|
||||
return x
|
||||
}
|
||||
if degrees = argsList.Back().Value.(formulaArg).ToNumber(); degrees.Type != ArgNumber {
|
||||
return degrees
|
||||
}
|
||||
if degrees.Number < 1 {
|
||||
return newErrorFormulaArg(formulaErrorNUM, formulaErrorNUM)
|
||||
}
|
||||
v := getTDist(x.Number, degrees.Number, 1)
|
||||
if x.Number < 0 {
|
||||
v = 1 - v
|
||||
}
|
||||
return newNumberFormulaArg(v)
|
||||
}
|
||||
|
||||
// TDIST function calculates the Student's T Distribution, which is a
|
||||
// continuous probability distribution that is frequently used for testing
|
||||
// hypotheses on small sample data sets. The syntax of the function is:
|
||||
|
|
16
calc_test.go
16
calc_test.go
|
@ -1159,6 +1159,11 @@ func TestCalcCellValue(t *testing.T) {
|
|||
"=T.DIST(1,10,TRUE)": "0.82955343384897",
|
||||
"=T.DIST(-1,10,TRUE)": "0.17044656615103",
|
||||
"=T.DIST(-1,10,FALSE)": "0.230361989229139",
|
||||
// T.DIST.2T
|
||||
"=T.DIST.2T(1,10)": "0.34089313230206",
|
||||
// T.DIST.RT
|
||||
"=T.DIST.RT(1,10)": "0.17044656615103",
|
||||
"=T.DIST.RT(-1,10)": "0.82955343384897",
|
||||
// TDIST
|
||||
"=TDIST(1,10,1)": "0.17044656615103",
|
||||
"=TDIST(1,10,2)": "0.34089313230206",
|
||||
|
@ -3024,6 +3029,17 @@ func TestCalcCellValue(t *testing.T) {
|
|||
"=T.DIST(1,0,TRUE)": "#NUM!",
|
||||
"=T.DIST(1,-1,FALSE)": "#NUM!",
|
||||
"=T.DIST(1,0,FALSE)": "#DIV/0!",
|
||||
// T.DIST.2T
|
||||
"=T.DIST.2T()": "T.DIST.2T requires 2 arguments",
|
||||
"=T.DIST.2T(\"\",10)": "strconv.ParseFloat: parsing \"\": invalid syntax",
|
||||
"=T.DIST.2T(1,\"\")": "strconv.ParseFloat: parsing \"\": invalid syntax",
|
||||
"=T.DIST.2T(-1,10)": "#NUM!",
|
||||
"=T.DIST.2T(1,0)": "#NUM!",
|
||||
// T.DIST.RT
|
||||
"=T.DIST.RT()": "T.DIST.RT requires 2 arguments",
|
||||
"=T.DIST.RT(\"\",10)": "strconv.ParseFloat: parsing \"\": invalid syntax",
|
||||
"=T.DIST.RT(1,\"\")": "strconv.ParseFloat: parsing \"\": invalid syntax",
|
||||
"=T.DIST.RT(1,0)": "#NUM!",
|
||||
// TDIST
|
||||
"=TDIST()": "TDIST requires 3 arguments",
|
||||
"=TDIST(\"\",10,1)": "strconv.ParseFloat: parsing \"\": invalid syntax",
|
||||
|
|
Loading…
Reference in New Issue