From 5a1fa549520aad341b1b8cfe59b1e1b6ed3e4164 Mon Sep 17 00:00:00 2001 From: Winfried Donkers Date: Sun, 17 Nov 2013 10:54:37 +0100 Subject: fdo#71436 add Excel 2010 functions for F-distribution Added F.DIST.RT, F.INV.RT, F.TEST, which are renamed FDIST, FINV and FTEST and handle the right tail F-distribution. Added F.DIST and F.INV, which are new functions and handle the left tail F-distribution. Change-Id: Ia7fa26a25f3188249f280733d6111951e2600704 Reviewed-on: https://gerrit.libreoffice.org/6701 Reviewed-by: Eike Rathke Tested-by: Eike Rathke --- formula/source/core/resource/core_resource.src | 35 +++++ include/formula/compiler.hrc | 7 +- include/formula/opcode.hxx | 5 + sc/inc/helpids.h | 5 + sc/qa/unit/ucalc.cxx | 5 + sc/source/core/inc/interpre.hxx | 2 + sc/source/core/tool/interpr3.cxx | 48 ++++++ sc/source/core/tool/interpr4.cxx | 11 +- sc/source/filter/excel/xlformula.cxx | 7 +- sc/source/filter/oox/formulabase.cxx | 7 +- sc/source/ui/src/scfuncs.src | 200 +++++++++++++++++++++++++ 11 files changed, 326 insertions(+), 6 deletions(-) diff --git a/formula/source/core/resource/core_resource.src b/formula/source/core/resource/core_resource.src index 536de400c235..609928bf5430 100644 --- a/formula/source/core/resource/core_resource.src +++ b/formula/source/core/resource/core_resource.src @@ -284,6 +284,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF String SC_OPCODE_LOG_NORM_DIST { Text = "LOGNORMDIST" ; }; String SC_OPCODE_T_DIST { Text = "LEGACY.TDIST" ; }; String SC_OPCODE_F_DIST { Text = "LEGACY.FDIST" ; }; + String SC_OPCODE_F_DIST_LT { Text = "COM.MICROSOFT.F.DIST" ; }; + String SC_OPCODE_F_DIST_RT { Text = "COM.MICROSOFT.F.DIST.RT" ; }; String SC_OPCODE_CHI_DIST { Text = "LEGACY.CHIDIST" ; }; String SC_OPCODE_CHI_DIST_MS { Text = "COM.MICROSOFT.CHISQ.DIST.RT" ; }; String SC_OPCODE_WEIBULL { Text = "WEIBULL" ; }; @@ -314,6 +316,7 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF String SC_OPCODE_CONFIDENCE_N { Text = "COM.MICROSOFT.CONFIDENCE.NORM" ; }; String SC_OPCODE_CONFIDENCE_T { Text = "COM.MICROSOFT.CONFIDENCE.T" ; }; String SC_OPCODE_F_TEST { Text = "FTEST" ; }; + String SC_OPCODE_F_TEST_MS { Text = "COM.MICROSOFT.F.TEST" ; }; String SC_OPCODE_TRIM_MEAN { Text = "TRIMMEAN" ; }; String SC_OPCODE_PROB { Text = "PROB" ; }; String SC_OPCODE_CORREL { Text = "CORREL" ; }; @@ -336,6 +339,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF String SC_OPCODE_GAMMA_INV { Text = "GAMMAINV" ; }; String SC_OPCODE_T_INV { Text = "TINV" ; }; String SC_OPCODE_F_INV { Text = "LEGACY.FINV" ; }; + String SC_OPCODE_F_INV_LT { Text = "COM.MICROSOFT.F.INV" ; }; + String SC_OPCODE_F_INV_RT { Text = "COM.MICROSOFT.F.INV.RT" ; }; String SC_OPCODE_CHI_TEST { Text = "LEGACY.CHITEST" ; }; String SC_OPCODE_CHI_TEST_MS { Text = "COM.MICROSOFT.CHISQ.TEST" ; }; String SC_OPCODE_LOG_INV { Text = "LOGINV" ; }; @@ -647,6 +652,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML String SC_OPCODE_LOG_NORM_DIST { Text = "LOGNORMDIST" ; }; String SC_OPCODE_T_DIST { Text = "TDIST" ; }; String SC_OPCODE_F_DIST { Text = "FDIST" ; }; + String SC_OPCODE_F_DIST_LT { Text = "_xlfn.F.DIST" ; }; + String SC_OPCODE_F_DIST_RT { Text = "_xlfn.F.DIST.RT" ; }; String SC_OPCODE_CHI_DIST { Text = "CHIDIST" ; }; String SC_OPCODE_CHI_DIST_MS { Text = "_xlfn.CHISQ.DIST.RT" ; }; String SC_OPCODE_WEIBULL { Text = "WEIBULL" ; }; @@ -677,6 +684,7 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML String SC_OPCODE_CONFIDENCE_N { Text = "_xlfn.CONFIDENCE.NORM" ; }; String SC_OPCODE_CONFIDENCE_T { Text = "_xlfn.CONFIDENCE.T" ; }; String SC_OPCODE_F_TEST { Text = "FTEST" ; }; + String SC_OPCODE_F_TEST_MS { Text = "_xlfn.F.TEST" ; }; String SC_OPCODE_TRIM_MEAN { Text = "TRIMMEAN" ; }; String SC_OPCODE_PROB { Text = "PROB" ; }; String SC_OPCODE_CORREL { Text = "CORREL" ; }; @@ -699,6 +707,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML String SC_OPCODE_GAMMA_INV { Text = "GAMMAINV" ; }; String SC_OPCODE_T_INV { Text = "TINV" ; }; String SC_OPCODE_F_INV { Text = "FINV" ; }; + String SC_OPCODE_F_INV_LT { Text = "_xlfn.F.INV" ; }; + String SC_OPCODE_F_INV_RT { Text = "_xlfn.F.INV.RT" ; }; String SC_OPCODE_CHI_TEST { Text = "CHITEST" ; }; String SC_OPCODE_CHI_TEST_MS { Text = "_xlfn.CHISQ.TEST" ; }; String SC_OPCODE_LOG_INV { Text = "LOGINV" ; }; @@ -1012,6 +1022,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH String SC_OPCODE_LOG_NORM_DIST { Text = "LOGNORMDIST" ; }; String SC_OPCODE_T_DIST { Text = "TDIST" ; }; String SC_OPCODE_F_DIST { Text = "FDIST" ; }; + String SC_OPCODE_F_DIST_LT { Text = "F.DIST" ; }; + String SC_OPCODE_F_DIST_RT { Text = "F.DIST.RT" ; }; String SC_OPCODE_CHI_DIST { Text = "CHIDIST" ; }; String SC_OPCODE_CHI_DIST_MS { Text = "CHISQ.DIST.RT" ; }; String SC_OPCODE_WEIBULL { Text = "WEIBULL" ; }; @@ -1042,6 +1054,7 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH String SC_OPCODE_CONFIDENCE_N { Text = "CONFIDENCE.NORM" ; }; String SC_OPCODE_CONFIDENCE_T { Text = "CONFIDENCE.T" ; }; String SC_OPCODE_F_TEST { Text = "FTEST" ; }; + String SC_OPCODE_F_TEST_MS { Text = "F.TEST" ; }; String SC_OPCODE_TRIM_MEAN { Text = "TRIMMEAN" ; }; String SC_OPCODE_PROB { Text = "PROB" ; }; String SC_OPCODE_CORREL { Text = "CORREL" ; }; @@ -1064,6 +1077,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH String SC_OPCODE_GAMMA_INV { Text = "GAMMAINV" ; }; String SC_OPCODE_T_INV { Text = "TINV" ; }; String SC_OPCODE_F_INV { Text = "FINV" ; }; + String SC_OPCODE_F_INV_LT { Text = "F.INV" ; }; + String SC_OPCODE_F_INV_RT { Text = "F.INV.RT" ; }; String SC_OPCODE_CHI_TEST { Text = "CHITEST" ; }; String SC_OPCODE_CHI_TEST_MS { Text = "CHISQ.TEST" ; }; String SC_OPCODE_LOG_INV { Text = "LOGINV" ; }; @@ -2085,6 +2100,14 @@ Resource RID_STRLIST_FUNCTION_NAMES { Text [ en-US ] = "FDIST" ; }; + String SC_OPCODE_F_DIST_LT + { + Text [ en-US ] = "F.DIST" ; + }; + String SC_OPCODE_F_DIST_RT + { + Text [ en-US ] = "F.DIST.RT" ; + }; String SC_OPCODE_CHI_DIST { Text [ en-US ] = "CHIDIST" ; @@ -2205,6 +2228,10 @@ Resource RID_STRLIST_FUNCTION_NAMES { Text [ en-US ] = "FTEST" ; }; + String SC_OPCODE_F_TEST_MS + { + Text [ en-US ] = "F.TEST" ; + }; String SC_OPCODE_TRIM_MEAN { Text [ en-US ] = "TRIMMEAN" ; @@ -2293,6 +2320,14 @@ Resource RID_STRLIST_FUNCTION_NAMES { Text [ en-US ] = "FINV" ; }; + String SC_OPCODE_F_INV_LT + { + Text [ en-US ] = "F.INV" ; + }; + String SC_OPCODE_F_INV_RT + { + Text [ en-US ] = "F.INV.RT" ; + }; String SC_OPCODE_CHI_TEST { Text [ en-US ] = "CHITEST" ; diff --git a/include/formula/compiler.hrc b/include/formula/compiler.hrc index 1cf1c2d44f2f..4f2f4e6d67c8 100644 --- a/include/formula/compiler.hrc +++ b/include/formula/compiler.hrc @@ -425,8 +425,13 @@ #define SC_OPCODE_CHISQ_INV_MS 427 #define SC_OPCODE_CONFIDENCE_N 428 #define SC_OPCODE_CONFIDENCE_T 429 +#define SC_OPCODE_F_DIST_LT 430 +#define SC_OPCODE_F_DIST_RT 431 +#define SC_OPCODE_F_INV_LT 432 +#define SC_OPCODE_F_INV_RT 433 +#define SC_OPCODE_F_TEST_MS 434 -#define SC_OPCODE_STOP_2_PAR 430 /* last function with two or more parameters' OpCode + 1 */ +#define SC_OPCODE_STOP_2_PAR 435 /* last function with two or more parameters' OpCode + 1 */ #define SC_OPCODE_STOP_FUNCTION SC_OPCODE_STOP_2_PAR /* last function's OpCode + 1 */ #define SC_OPCODE_LAST_OPCODE_ID (SC_OPCODE_STOP_FUNCTION - 1) /* last OpCode */ diff --git a/include/formula/opcode.hxx b/include/formula/opcode.hxx index 75fdb9210972..b5953f769765 100644 --- a/include/formula/opcode.hxx +++ b/include/formula/opcode.hxx @@ -326,6 +326,8 @@ enum OpCodeEnum ocLogNormDist = SC_OPCODE_LOG_NORM_DIST, ocTDist = SC_OPCODE_T_DIST, ocFDist = SC_OPCODE_F_DIST, + ocFDist_LT = SC_OPCODE_F_DIST_LT, + ocFDist_RT = SC_OPCODE_F_DIST_RT, ocChiDist = SC_OPCODE_CHI_DIST, ocChiDist_MS = SC_OPCODE_CHI_DIST_MS, ocChiSqDist = SC_OPCODE_CHISQ_DIST, @@ -359,6 +361,7 @@ enum OpCodeEnum ocConfidence_N = SC_OPCODE_CONFIDENCE_N, ocConfidence_T = SC_OPCODE_CONFIDENCE_T, ocFTest = SC_OPCODE_F_TEST, + ocFTest_MS = SC_OPCODE_F_TEST_MS, ocTrimMean = SC_OPCODE_TRIM_MEAN, ocProb = SC_OPCODE_PROB, ocCorrel = SC_OPCODE_CORREL, @@ -381,6 +384,8 @@ enum OpCodeEnum ocGammaInv = SC_OPCODE_GAMMA_INV, ocTInv = SC_OPCODE_T_INV, ocFInv = SC_OPCODE_F_INV, + ocFInv_LT = SC_OPCODE_F_INV_LT, + ocFInv_RT = SC_OPCODE_F_INV_RT, ocChiTest = SC_OPCODE_CHI_TEST, ocChiTest_MS = SC_OPCODE_CHI_TEST_MS, ocLogInv = SC_OPCODE_LOG_INV, diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h index 148f6de40e5c..554755114258 100644 --- a/sc/inc/helpids.h +++ b/sc/inc/helpids.h @@ -695,5 +695,10 @@ #define HID_FUNC_CHISQINV_MS "SC_HID_FUNC_CHISQINV_MS" #define HID_FUNC_CONFIDENCE_N "SC_HID_FUNC_CONFIDENCE_N" #define HID_FUNC_CONFIDENCE_T "SC_HID_FUNC_CONFIDENCE_T" +#define HID_FUNC_F_DIST_LT "SC_HID_FUNC_F_DIST_LT" +#define HID_FUNC_F_DIST_RT "SC_HID_FUNC_F_DIST_RT" +#define HID_FUNC_F_INV_LT "SC_HID_FUNC_F_INV_LT" +#define HID_FUNC_F_INV_RT "SC_HID_FUNC_F_INV_RT" +#define HID_FUNC_F_TEST_MS "SC_HID_FUNC_F_TEST_MS" /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 715681b75b2d..b48f4f285539 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -2389,6 +2389,11 @@ void Test::testFunctionLists() "CRITBINOM", "DEVSQ", "EXPONDIST", + "F.DIST", + "F.DIST.RT", + "F.INV", + "F.INV.RT", + "F.TEST", "FDIST", "FINV", "FISHER", diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 813fb1b13b90..dc8c8b4fc538 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -749,6 +749,7 @@ void ScLogNormDist(); void ScLogNormInv(); void ScTDist(); void ScFDist(); +void ScFDist_LT(); void ScChiDist(); // for LEGACY.CHIDIST, returns right tail void ScChiSqDist(); // returns left tail or density void ScChiSqInv(); //invers to CHISQDIST @@ -756,6 +757,7 @@ void ScWeibull(); void ScBetaDist(); void ScBetaDist_MS(); void ScFInv(); +void ScFInv_LT(); void ScTInv(); void ScChiInv(); void ScBetaInv(); diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx index 6272792be0a5..2f534f618249 100644 --- a/sc/source/core/tool/interpr3.cxx +++ b/sc/source/core/tool/interpr3.cxx @@ -1597,6 +1597,33 @@ void ScInterpreter::ScFDist() PushDouble(GetFDist(fF, fF1, fF2)); } +void ScInterpreter::ScFDist_LT() +{ + if ( !MustHaveParamCount( GetByte(), 4 ) ) + return; + bool bCum = GetBool(); + double fF2 = ::rtl::math::approxFloor( GetDouble() ); + double fF1 = ::rtl::math::approxFloor( GetDouble() ); + double fF = GetDouble(); + if ( fF < 0.0 || fF1 < 1.0 || fF2 < 1.0 || fF1 >= 1.0E10 || fF2 >= 1.0E10 ) + { + PushIllegalArgument(); + return; + } + if ( bCum ) + { + // left tail cumulative distribution + PushDouble( 1.0 - GetFDist( fF, fF1, fF2 ) ); + } + else + { + // probability density function + PushDouble( pow( fF1 / fF2, fF1 / 2 ) * pow( fF, ( fF1 / 2 ) - 1 ) / + ( pow( ( 1 + ( fF * fF1 / fF2 ) ), ( fF1 + fF2 ) / 2 ) * + GetBeta( fF1 / 2, fF2 / 2 ) ) ); + } +} + void ScInterpreter::ScChiDist() { double fResult; @@ -2168,6 +2195,27 @@ void ScInterpreter::ScFInv() PushDouble(fVal); } +void ScInterpreter::ScFInv_LT() +{ + if ( !MustHaveParamCount( GetByte(), 3 ) ) + return; + double fF2 = ::rtl::math::approxFloor(GetDouble()); + double fF1 = ::rtl::math::approxFloor(GetDouble()); + double fP = GetDouble(); + if (fP <= 0.0 || fF1 < 1.0 || fF2 < 1.0 || fF1 >= 1.0E10 || fF2 >= 1.0E10 || fP > 1.0) + { + PushIllegalArgument(); + return; + } + + bool bConvError; + ScFDistFunction aFunc( *this, ( 1.0 - fP ), fF1, fF2 ); + double fVal = lcl_IterateInverse( aFunc, fF1*0.5, fF1, bConvError ); + if (bConvError) + SetError(errNoConvergence); + PushDouble(fVal); +} + class ScChiDistFunction : public ScDistFunc { ScInterpreter& rInt; diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index f17f8470a3ad..38d73b096c29 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -4110,7 +4110,9 @@ StackVar ScInterpreter::Interpret() case ocHypGeomDist : ScHypGeomDist(); break; case ocLogNormDist : ScLogNormDist(); break; case ocTDist : ScTDist(); break; - case ocFDist : ScFDist(); break; + case ocFDist : + case ocFDist_RT : ScFDist(); break; + case ocFDist_LT : ScFDist_LT(); break; case ocChiDist : case ocChiDist_MS : ScChiDist(); break; case ocChiSqDist : @@ -4133,7 +4135,8 @@ StackVar ScInterpreter::Interpret() case ocBad : ScBadName(); break; case ocZTest : ScZTest(); break; case ocTTest : ScTTest(); break; - case ocFTest : ScFTest(); break; + case ocFTest : + case ocFTest_MS : ScFTest(); break; case ocRank : ScRank(); break; case ocPercentile : ScPercentile(); break; case ocPercentrank : ScPercentrank(); break; @@ -4173,7 +4176,9 @@ StackVar ScInterpreter::Interpret() case ocChiSqInv : case ocChiSqInv_MS : ScChiSqInv(); break; case ocTInv : ScTInv(); break; - case ocFInv : ScFInv(); break; + case ocFInv : + case ocFInv_RT : ScFInv(); break; + case ocFInv_LT : ScFInv_LT(); break; case ocLogInv : ScLogNormInv(); break; case ocBetaDist : ScBetaDist(); break; case ocBetaDist_MS : ScBetaDist_MS(); break; diff --git a/sc/source/filter/excel/xlformula.cxx b/sc/source/filter/excel/xlformula.cxx index 9f0184325d1d..b525d75b14e5 100644 --- a/sc/source/filter/excel/xlformula.cxx +++ b/sc/source/filter/excel/xlformula.cxx @@ -445,7 +445,12 @@ static const XclFunctionInfo saFuncTable_2010[] = EXC_FUNCENTRY_V_VR( ocChiInv_MS, 2, 2, 0, "CHISQ.INV.RT" ), EXC_FUNCENTRY_V_VR( ocChiTest_MS, 2, 2, 0, "CHISQ.TEST" ), EXC_FUNCENTRY_V_VR( ocConfidence_N, 3, 3, 0, "CONFIDENCE.NORM" ), - EXC_FUNCENTRY_V_VR( ocConfidence_T, 3, 3, 0, "CONFIDENCE.T" ) + EXC_FUNCENTRY_V_VR( ocConfidence_T, 3, 3, 0, "CONFIDENCE.T" ), + EXC_FUNCENTRY_V_VR( ocFDist_LT, 4, 4, 0, "F.DIST" ), + EXC_FUNCENTRY_V_VR( ocFDist_RT, 3, 3, 0, "F.DIST.RT" ), + EXC_FUNCENTRY_V_VR( ocFInv_LT, 3, 3, 0, "F.INV" ), + EXC_FUNCENTRY_V_VR( ocFInv_RT, 3, 3, 0, "F.INV.RT" ), + EXC_FUNCENTRY_V_VR( ocFTest_MS, 2, 2, 0, "F.TEST" ) }; /** Functions new in Excel 2013. diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx index 09838b3623be..b2376f431960 100644 --- a/sc/source/filter/oox/formulabase.cxx +++ b/sc/source/filter/oox/formulabase.cxx @@ -763,7 +763,12 @@ static const FunctionData saFuncTable2010[] = { "COM.MICROSOFT.CHISQ.INV.RT", "CHISQ.INV.RT", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "COM.MICROSOFT.CHISQ.TEST", "CHISQ.TEST", NOID, NOID, 2, 2, V, { VA }, FUNCFLAG_MACROCALL_NEW }, { "COM.MICROSOFT.CONFIDENCE.NORM", "CONFIDENCE.NORM", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, - { "COM.MICROSOFT.CONFIDENCE.T", "CONFIDENCE.T", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW } + { "COM.MICROSOFT.CONFIDENCE.T", "CONFIDENCE.T", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "COM.MICROSOFT.F.DIST", "F.DIST", NOID, NOID, 4, 4, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "COM.MICROSOFT.F.DIST.RT", "F.DIST.RT", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "COM.MICROSOFT.F.INV", "F.INV", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "COM.MICROSOFT.F.INV.RT", "F.INV.RT", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "COM.MICROSOFT.F.TEST", "F.TEST", NOID, NOID, 2, 2, V, { VA }, FUNCFLAG_MACROCALL_NEW } }; /** Functions new in Excel 2013. diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src index 67c346ea3fd7..36dee21c2ec3 100644 --- a/sc/source/ui/src/scfuncs.src +++ b/sc/source/ui/src/scfuncs.src @@ -7144,6 +7144,94 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2 { Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ; }; + }; + // -=*# Resource for function F.DIST #*=- + Resource SC_OPCODE_F_DIST_LT + { + String 1 // Description + { + Text [ en-US ] = "Values of the left tail F probability distribution." ; + }; + ExtraData = + { + 0; + ID_FUNCTION_GRP_STATISTIC; + U2S( HID_FUNC_F_DIST_LT ); + 4; 0; 0; 0; 0; + 0; + }; + String 2 // Name of Parameter 1 + { + Text [ en-US ] = "Number" ; + }; + String 3 // Description of Parameter 1 + { + Text [ en-US ] = "The value for which the F distribution is to be calculated." ; + }; + String 4 // Name of Parameter 2 + { + Text [ en-US ] = "degrees_freedom_1" ; + }; + String 5 // Description of Parameter 2 + { + Text [ en-US ] = "The degrees of freedom in the numerator of the F distribution." ; + }; + String 6 // Name of Parameter 3 + { + Text [ en-US ] = "degrees_freedom_2" ; + }; + String 7 // Description of Parameter 3 + { + Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ; + }; + String 8 // Name of Parameter 4 + { + Text [ en-US ] = "cumulative" ; + }; + String 9 // Description of Parameter 4 + { + Text [ en-US ] = "Cumulative distribution function (TRUE) or probability density function (FALSE)." ; + }; + }; + // -=*# Resource for function F.DIST.RT #*=- + Resource SC_OPCODE_F_DIST_RT + { + String 1 // Description + { + Text [ en-US ] = "Values of the right tail F probability distribution." ; + }; + ExtraData = + { + 0; + ID_FUNCTION_GRP_STATISTIC; + U2S( HID_FUNC_F_DIST_RT ); + 3; 0; 0; 0; + 0; + }; + String 2 // Name of Parameter 1 + { + Text [ en-US ] = "Number" ; + }; + String 3 // Description of Parameter 1 + { + Text [ en-US ] = "The value for which the F distribution is to be calculated." ; + }; + String 4 // Name of Parameter 2 + { + Text [ en-US ] = "degrees_freedom_1" ; + }; + String 5 // Description of Parameter 2 + { + Text [ en-US ] = "The degrees of freedom in the numerator of the F distribution." ; + }; + String 6 // Name of Parameter 3 + { + Text [ en-US ] = "degrees_freedom_2" ; + }; + String 7 // Description of Parameter 3 + { + Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ; + }; }; // -=*# Resource for function FINV #*=- Resource SC_OPCODE_F_INV @@ -7184,6 +7272,86 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2 { Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ; }; + }; + // -=*# Resource for function F.INV #*=- + Resource SC_OPCODE_F_INV_LT + { + String 1 // Description + { + Text [ en-US ] = "Values of the inverse left tail F distribution." ; + }; + ExtraData = + { + 0; + ID_FUNCTION_GRP_STATISTIC; + U2S( HID_FUNC_F_INV_LT ); + 3; 0; 0; 0; + 0; + }; + String 2 // Name of Parameter 1 + { + Text [ en-US ] = "number" ; + }; + String 3 // Description of Parameter 1 + { + Text [ en-US ] = "The probability value for which the inverse F distribution is to be calculated." ; + }; + String 4 // Name of Parameter 2 + { + Text [ en-US ] = "degrees_freedom_1" ; + }; + String 5 // Description of Parameter 2 + { + Text [ en-US ] = "The degrees of freedom in the numerator of the F distribution." ; + }; + String 6 // Name of Parameter 3 + { + Text [ en-US ] = "degrees_freedom_2" ; + }; + String 7 // Description of Parameter 3 + { + Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ; + }; + }; + // -=*# Resource for function F.INV.RT #*=- + Resource SC_OPCODE_F_INV_RT + { + String 1 // Description + { + Text [ en-US ] = "Values of the inverse right tail F distribution." ; + }; + ExtraData = + { + 0; + ID_FUNCTION_GRP_STATISTIC; + U2S( HID_FUNC_F_INV_RT ); + 3; 0; 0; 0; + 0; + }; + String 2 // Name of Parameter 1 + { + Text [ en-US ] = "number" ; + }; + String 3 // Description of Parameter 1 + { + Text [ en-US ] = "The probability value for which the inverse F distribution is to be calculated." ; + }; + String 4 // Name of Parameter 2 + { + Text [ en-US ] = "degrees_freedom_1" ; + }; + String 5 // Description of Parameter 2 + { + Text [ en-US ] = "The degrees of freedom in the numerator of the F distribution." ; + }; + String 6 // Name of Parameter 3 + { + Text [ en-US ] = "degrees_freedom_2" ; + }; + String 7 // Description of Parameter 3 + { + Text [ en-US ] = "The degrees of freedom in the denominator of the F distribution." ; + }; }; // -=*# Resource for function CHIDIST #*=- Resource SC_OPCODE_CHI_DIST @@ -7825,6 +7993,38 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2 { Text [ en-US ] = "The second record array." ; }; + }; + // -=*# Resource for function F.TEST #*=- + Resource SC_OPCODE_F_TEST_MS + { + String 1 // Description + { + Text [ en-US ] = "Calculates the F test." ; + }; + ExtraData = + { + 0; + ID_FUNCTION_GRP_STATISTIC; + U2S( HID_FUNC_F_TEST_MS ); + 2; 0; 0; + 0; + }; + String 2 // Name of Parameter 1 + { + Text [ en-US ] = "data_1" ; + }; + String 3 // Description of Parameter 1 + { + Text [ en-US ] = "The first record array." ; + }; + String 4 // Name of Parameter 2 + { + Text [ en-US ] = "data_2" ; + }; + String 5 // Description of Parameter 2 + { + Text [ en-US ] = "The second record array." ; + }; }; // -=*# Resource for function TTEST #*=- Resource SC_OPCODE_T_TEST -- cgit v1.2.3