Skip to content

Commit

Permalink
PDF, CDF, QNT, RND for Snedecor's F distribution (F-distribution or F…
Browse files Browse the repository at this point in the history
…-ratio, also known as Fisher–Snedecor distribution) #238

rFSned(d1, d2) - Random variable - Snedecor's F distribution (F-distribution or F-ratio, also known as Fisher–Snedecor distribution)
pFSned(x, d1, d2) - Probability distribution function - Snedecor's F distribution (F-distribution or F-ratio, also known as Fisher–Snedecor distribution)
cFSned(x, d1, d2) - Cumulative distribution function - Snedecor's F distribution (F-distribution or F-ratio, also known as Fisher–Snedecor distribution)
qFSned(p, d1, d2) - Quantile function (inverse cumulative distribution function) - Snedecor's F distribution (F-distribution or F-ratio, also known as Fisher–Snedecor distribution)
  • Loading branch information
mariuszgromada committed Sep 3, 2022
1 parent e35db24 commit 0fb76fc
Show file tree
Hide file tree
Showing 16 changed files with 837 additions and 60 deletions.
65 changes: 58 additions & 7 deletions CURRENT/c-sharp/src/org/mariuszgromada/math/mxparser/Expression.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* @(#)Expression.cs 5.0.7 2022-08-21
* @(#)Expression.cs 5.1.0 2022-09-04
*
* MathParser.org-mXparser DUAL LICENSE AGREEMENT as of date 2022-05-22
* The most up-to-date license is available at the below link:
Expand Down Expand Up @@ -214,7 +214,7 @@ namespace org.mariuszgromada.math.mxparser {
* <a href="https://play.google.com/store/apps/details?id=org.mathparser.scalar.pro" target="_blank">Scalar Pro</a><br>
* <a href="https://mathspace.pl" target="_blank">MathSpace.pl</a><br>
*
* @version 5.0.7
* @version 5.1.0
*
* @see Argument
* @see RecursiveArgument
Expand Down Expand Up @@ -4052,6 +4052,16 @@ private void RND_NORMAL(int pos) {
double stddev = getTokenValue(pos + 2);
f2SetDecreaseRemove(pos, ProbabilityDistributions.rndNormal(mean, stddev, ProbabilityDistributions.randomGenerator));
}
/**
* Random number - Snedecor's F distribution (F-distribution or F-ratio, also known as Fisher–Snedecor distribution)
*
* @param pos the token position
*/
private void RND_F_SNEDECOR(int pos) {
double d1 = getTokenValue(pos+1);
double d2 = getTokenValue(pos+2);
f2SetDecreaseRemove(pos, ProbabilityDistributions.rndSnedecordF(d1, d2) );
}
/**
* Number of digits in given numeral system
*
Expand Down Expand Up @@ -4355,6 +4365,39 @@ private void QNT_NORMAL(int pos) {
double stddev = getTokenValue(pos + 3);
f3SetDecreaseRemove(pos, ProbabilityDistributions.qntNormal(q, mean, stddev));
}
/**
* Probability Distribution Function - Snedecor's F distribution
*
* @param pos the token position
*/
private void PDF_F_SNEDECOR(int pos) {
double x = getTokenValue(pos+1);
double d1 = getTokenValue(pos+2);
double d2 = getTokenValue(pos+3);
f3SetDecreaseRemove(pos, ProbabilityDistributions.pdfSnedecordF(x, d1, d2) );
}
/**
* Cumulative Distribution Function - Snedecor's F distribution
*
* @param pos the token position
*/
private void CDF_F_SNEDECOR(int pos) {
double x = getTokenValue(pos+1);
double d1 = getTokenValue(pos+2);
double d2 = getTokenValue(pos+3);
f3SetDecreaseRemove(pos, ProbabilityDistributions.cdfSnedecordF(x, d1, d2) );
}
/**
* Quantile Function - Snedecor's F distribution
*
* @param pos the token position
*/
private void QNT_F_SNEDECOR(int pos) {
double p = getTokenValue(pos+1);
double d1 = getTokenValue(pos+2);
double d2 = getTokenValue(pos+3);
f3SetDecreaseRemove(pos, ProbabilityDistributions.qntSnedecordF(p, d1, d2) );
}
/**
* Digit at position - numeral system with given base
*
Expand Down Expand Up @@ -6426,7 +6469,8 @@ private void f2ArgCalc(int pos) {
case Function2Arg.PDF_CHI2_ID: PDF_CHI2(pos); break;
case Function2Arg.CDF_CHI2_ID: CDF_CHI2(pos); break;
case Function2Arg.QNT_CHI2_ID: QNT_CHI2(pos); break;
}
case Function2Arg.RND_F_SNEDECOR_ID: RND_F_SNEDECOR(pos); break;
}
}
/**
* Calculates function with 3 arguments
Expand All @@ -6448,6 +6492,9 @@ private void f3ArgCalc(int pos) {
case Function3Arg.DIGIT_ID: DIGIT(pos); break;
case Function3Arg.INC_BETA_ID: INC_BETA(pos); break;
case Function3Arg.REG_BETA_ID: REG_BETA(pos); break;
case Function3Arg.PDF_F_SNEDECOR_ID: PDF_F_SNEDECOR(pos); break;
case Function3Arg.CDF_F_SNEDECOR_ID: CDF_F_SNEDECOR(pos); break;
case Function3Arg.QNT_F_SNEDECOR_ID: QNT_F_SNEDECOR(pos); break;
}
}
/**
Expand Down Expand Up @@ -6792,10 +6839,11 @@ private void addParserKeyWords() {
addKeyWord(Function2Arg.PDF_CHI2_STR, Function2Arg.PDF_CHI2_DESC, Function2Arg.PDF_CHI2_ID, Function2Arg.PDF_CHI2_SYN, Function2Arg.PDF_CHI2_SINCE, Function2Arg.TYPE_ID);
addKeyWord(Function2Arg.CDF_CHI2_STR, Function2Arg.CDF_CHI2_DESC, Function2Arg.CDF_CHI2_ID, Function2Arg.CDF_CHI2_SYN, Function2Arg.CDF_CHI2_SINCE, Function2Arg.TYPE_ID);
addKeyWord(Function2Arg.QNT_CHI2_STR, Function2Arg.QNT_CHI2_DESC, Function2Arg.QNT_CHI2_ID, Function2Arg.QNT_CHI2_SYN, Function2Arg.QNT_CHI2_SINCE, Function2Arg.TYPE_ID);
/*
addKeyWord(Function2Arg.RND_F_SNEDECOR_STR, Function2Arg.RND_F_SNEDECOR_DESC, Function2Arg.RND_F_SNEDECOR_ID, Function2Arg.RND_F_SNEDECOR_SYN, Function2Arg.RND_F_SNEDECOR_SINCE, Function2Arg.TYPE_ID);
/*
* 3 args functions key words
*/
addKeyWord(Function3Arg.IF_STR, Function3Arg.IF_DESC, Function3Arg.IF_CONDITION_ID, Function3Arg.IF_SYN, Function3Arg.IF_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.IF_STR, Function3Arg.IF_DESC, Function3Arg.IF_CONDITION_ID, Function3Arg.IF_SYN, Function3Arg.IF_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.CHI_STR, Function3Arg.CHI_DESC, Function3Arg.CHI_ID, Function3Arg.CHI_SYN, Function3Arg.CHI_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.CHI_LR_STR, Function3Arg.CHI_LR_DESC, Function3Arg.CHI_LR_ID, Function3Arg.CHI_LR_SYN, Function3Arg.CHI_LR_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.CHI_L_STR, Function3Arg.CHI_L_DESC, Function3Arg.CHI_L_ID, Function3Arg.CHI_L_SYN, Function3Arg.CHI_L_SINCE, Function3Arg.TYPE_ID);
Expand All @@ -6810,10 +6858,13 @@ private void addParserKeyWords() {
addKeyWord(Function3Arg.INC_BETA_STR, Function3Arg.INC_BETA_DESC, Function3Arg.INC_BETA_ID, Function3Arg.INC_BETA_SYN, Function3Arg.INC_BETA_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.REG_BETA_STR, Function3Arg.REG_BETA_DESC, Function3Arg.REG_BETA_ID, Function3Arg.REG_BETA_SYN, Function3Arg.REG_BETA_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.REG_BETA_I_STR, Function3Arg.REG_BETA_DESC, Function3Arg.REG_BETA_ID, Function3Arg.REG_BETA_I_SYN, Function3Arg.REG_BETA_I_SINCE, Function3Arg.TYPE_ID);
/*
addKeyWord(Function3Arg.PDF_F_SNEDECOR_STR, Function3Arg.PDF_F_SNEDECOR_DESC, Function3Arg.PDF_F_SNEDECOR_ID, Function3Arg.PDF_F_SNEDECOR_SYN, Function3Arg.PDF_F_SNEDECOR_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.CDF_F_SNEDECOR_STR, Function3Arg.CDF_F_SNEDECOR_DESC, Function3Arg.CDF_F_SNEDECOR_ID, Function3Arg.CDF_F_SNEDECOR_SYN, Function3Arg.CDF_F_SNEDECOR_SINCE, Function3Arg.TYPE_ID);
addKeyWord(Function3Arg.QNT_F_SNEDECOR_STR, Function3Arg.QNT_F_SNEDECOR_DESC, Function3Arg.QNT_F_SNEDECOR_ID, Function3Arg.QNT_F_SNEDECOR_SYN, Function3Arg.QNT_F_SNEDECOR_SINCE, Function3Arg.TYPE_ID);
/*
* Variadic functions as key words
*/
addKeyWord(FunctionVariadic.IFF_STR, FunctionVariadic.IFF_DESC, FunctionVariadic.IFF_ID, FunctionVariadic.IFF_SYN, FunctionVariadic.IFF_SINCE, FunctionVariadic.TYPE_ID);
addKeyWord(FunctionVariadic.IFF_STR, FunctionVariadic.IFF_DESC, FunctionVariadic.IFF_ID, FunctionVariadic.IFF_SYN, FunctionVariadic.IFF_SINCE, FunctionVariadic.TYPE_ID);
addKeyWord(FunctionVariadic.MIN_STR, FunctionVariadic.MIN_DESC, FunctionVariadic.MIN_ID, FunctionVariadic.MIN_SYN, FunctionVariadic.MIN_SINCE, FunctionVariadic.TYPE_ID);
addKeyWord(FunctionVariadic.MAX_STR, FunctionVariadic.MAX_DESC, FunctionVariadic.MAX_ID, FunctionVariadic.MAX_SYN, FunctionVariadic.MAX_SINCE, FunctionVariadic.TYPE_ID);
addKeyWord(FunctionVariadic.CONT_FRAC_STR, FunctionVariadic.CONT_FRAC_DESC, FunctionVariadic.CONT_FRAC_ID, FunctionVariadic.CONT_FRAC_SYN, FunctionVariadic.CONT_FRAC_SINCE, FunctionVariadic.TYPE_ID);
Expand Down
11 changes: 6 additions & 5 deletions CURRENT/c-sharp/src/org/mariuszgromada/math/mxparser/mXparser.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* @(#)mXparser.cs 5.0.7 2022-08-20
* @(#)mXparser.cs 5.1.0 2022-09-04
*
* MathParser.org-mXparser DUAL LICENSE AGREEMENT as of date 2022-05-22
* The most up-to-date license is available at the below link:
Expand Down Expand Up @@ -202,7 +202,7 @@ namespace org.mariuszgromada.math.mxparser {
* <a href="https://play.google.com/store/apps/details?id=org.mathparser.scalar.pro" target="_blank">Scalar Pro</a><br>
* <a href="https://mathspace.pl" target="_blank">MathSpace.pl</a><br>
*
* @version 5.0.7
* @version 5.1.0
*
* @see RecursiveArgument
* @see Expression
Expand All @@ -214,8 +214,8 @@ public sealed class mXparser {
/**
* mXparser version
*/
public const String VERSION = "5.0.6";
public const String VERSION_CODE_NAME = "Leonis";
public const String VERSION = "5.1.0";
public const String VERSION_CODE_NAME = "Libris";
public const String VERSION_NAME = VERSION + " " + VERSION_CODE_NAME;
#if NET48
public const String BUIT_FOR = "NET48";
Expand Down Expand Up @@ -1829,5 +1829,6 @@ public static bool isCurrentCalculationCancelled() {
public const String NAMEv43 = "4.3";
public const String NAMEv44 = "4.4";
public const String NAMEv50 = "5.0";
}
public const String NAMEv51 = "5.1";
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* @(#)ProbabilityDistributions.cs 5.0.4 2022-05-22
* @(#)ProbabilityDistributions.cs 5.1.0 2022-09-04
*
* MathParser.org-mXparser DUAL LICENSE AGREEMENT as of date 2022-05-22
* The most up-to-date license is available at the below link:
Expand Down Expand Up @@ -196,7 +196,7 @@ namespace org.mariuszgromada.math.mxparser.mathcollection {
* <a href="https://play.google.com/store/apps/details?id=org.mathparser.scalar.pro" target="_blank">Scalar Pro</a><br>
* <a href="https://mathspace.pl" target="_blank">MathSpace.pl</a><br>
*
* @version 5.0.0
* @version 5.1.0
*/
[CLSCompliant(true)]
public class ProbabilityDistributions {
Expand Down Expand Up @@ -807,5 +807,106 @@ public static double rndChiSquared(double k) {
if (k < 1.0) return Double.NaN;
return qntChiSquared(randomGenerator.NextDouble(), k);
}
/**
* Probability distribution function - Snedecor's F distribution (F-distribution or F-ratio,
* also known as Fisher–Snedecor distribution)
*
* @param x Real value
* @param d1 Number of degrees of freedom - 1
* @param d2 Number of degrees of freedom - 2
* @return Returns the PDF of Snedecor's F distribution (F-distribution or F-ratio,
* also known as Fisher–Snedecor distribution)
*/
public static double pdfSnedecordF(double x, double d1, double d2) {
if (Double.IsNaN(x)) return Double.NaN;
if (Double.IsNaN(d1)) return Double.NaN;
if (Double.IsNaN(d2)) return Double.NaN;
if (Double.IsInfinity(d1)) return Double.NaN;
if (Double.IsInfinity(d2)) return Double.NaN;
if (d1 < 0.0) return Double.NaN;
if (d2 < 0.0) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d1, 0.0)) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d2, 0.0)) return Double.NaN;
if (x == Double.PositiveInfinity) return 0.0;
if (x == Double.NegativeInfinity) return 0.0;
if (x < 0.0) return 0.0;
if (BinaryRelations.isEqualOrAlmost(x, 0.0)) return 0.0;
double d1div2 = d1 / 2.0;
double d2div2 = d2 / 2.0;
return ( ( Math.Pow(d1*x, d1div2) * Math.Pow(d2, d2div2) ) / Math.Pow(d1*x + d2, d1div2 + d2div2 ) ) / ( x * SpecialFunctions.beta(d1div2, d2div2) );
}
/**
* Cumulative distribution function - Snedecor's F distribution (F-distribution or F-ratio,
* also known as Fisher–Snedecor distribution)
*
* @param x Real value
* @param d1 Number of degrees of freedom - 1
* @param d2 Number of degrees of freedom - 2
* @return Returns the CDF of Snedecor's F distribution (F-distribution or F-ratio,
* also known as Fisher–Snedecor distribution)
*/
public static double cdfSnedecordF(double x, double d1, double d2) {
if (Double.IsNaN(x)) return Double.NaN;
if (Double.IsNaN(d1)) return Double.NaN;
if (Double.IsNaN(d2)) return Double.NaN;
if (Double.IsInfinity(d1)) return Double.NaN;
if (Double.IsInfinity(d2)) return Double.NaN;
if (d1 < 0.0) return Double.NaN;
if (d2 < 0.0) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d1, 0.0)) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d2, 0.0)) return Double.NaN;
if (x == Double.PositiveInfinity) return 1.0;
if (x == Double.NegativeInfinity) return 0.0;
if (x < 0.0) return 0.0;
if (BinaryRelations.isEqualOrAlmost(x, 0.0)) return 0.0;
return SpecialFunctions.regularizedBeta( d1/2.0, d2/2.0, (d1*x)/(d1*x + d2));
}
/**
* Quantile function (Inverse cumulative distribution function) - Snedecor's F distribution (F-distribution
* or F-ratio, also known as Fisher–Snedecor distribution)
*
* @param p Probability
* @param d1 Number of degrees of freedom - 1
* @param d2 Number of degrees of freedom - 2
* @return Returns the quantile of Snedecor's F distribution (F-distribution or F-ratio,
* also known as Fisher–Snedecor distribution)
*/
public static double qntSnedecordF(double p, double d1, double d2) {
if (Double.IsNaN(p)) return Double.NaN;
if (Double.IsNaN(d1)) return Double.NaN;
if (Double.IsNaN(d2)) return Double.NaN;
if (Double.IsInfinity(d1)) return Double.NaN;
if (Double.IsInfinity(d2)) return Double.NaN;
if (d1 < 0.0) return Double.NaN;
if (d2 < 0.0) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d1, 0.0)) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d2, 0.0)) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(p, 0.0)) return 0.0;
if (BinaryRelations.isEqualOrAlmost(p, 1.0)) return Double.PositiveInfinity;
if (p < 0.0) return Double.NaN;
if (p > 1.0) return Double.NaN;
double regBetaInv = SpecialFunctions.inverseRegularizedBeta(d1/2.0, d2/2.0, p);
return (d2 * regBetaInv) / ( d1 * (1 - regBetaInv) );
}
/**
* Pseudo-random number from Snedecor's F distribution (F-distribution or F-ratio,
* also known as Fisher–Snedecor distribution)
*
* @param d1 Number of degrees of freedom - 1
* @param d2 Number of degrees of freedom - 2
* @return Returns Pseudo-random number from Snedecor's F distribution (F-distribution
* or F-ratio, also known as Fisher–Snedecor distribution)
*/
public static double rndSnedecordF(double d1, double d2) {
if (Double.IsNaN(d1)) return Double.NaN;
if (Double.IsNaN(d2)) return Double.NaN;
if (Double.IsInfinity(d1)) return Double.NaN;
if (Double.IsInfinity(d2)) return Double.NaN;
if (d1 < 0.0) return Double.NaN;
if (d2 < 0.0) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d1, 0.0)) return Double.NaN;
if (BinaryRelations.isEqualOrAlmost(d2, 0.0)) return Double.NaN;
return qntSnedecordF(randomGenerator.NextDouble(), d1, d2);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* @(#)SpecialFunctions.cs 5.0.4 2022-05-22
* @(#)SpecialFunctions.cs 5.1.0 2022-09-04
*
* MathParser.org-mXparser DUAL LICENSE AGREEMENT as of date 2022-05-22
* The most up-to-date license is available at the below link:
Expand Down Expand Up @@ -193,7 +193,7 @@ namespace org.mariuszgromada.math.mxparser.mathcollection {
* <a href="https://play.google.com/store/apps/details?id=org.mathparser.scalar.pro" target="_blank">Scalar Pro</a><br>
* <a href="https://mathspace.pl" target="_blank">MathSpace.pl</a><br>
*
* @version 5.0.0
* @version 5.1.0
*/
[CLSCompliant(true)]
public sealed class SpecialFunctions {
Expand Down Expand Up @@ -589,15 +589,16 @@ public static double lanchosGamma(double x) {
if ( MathFunctions.abs(xabs-xint) <= BinaryRelations.DEFAULT_COMPARISON_EPSILON )
return Double.NaN;
} else return Double.NaN;
if(x < 0.5) return MathConstants.PI / (Math.Sin(MathConstants.PI * x) * lanchosGamma(1-x));
int g = 7;
x -= 1;
double a = Coefficients.lanchosGamma[0];
if (x < 0.5) return MathConstants.PI / (Math.Sin(MathConstants.PI * x) * lanchosGamma(1.0-x));
double g = 7.0;
double[] coefficients = Coefficients.lanchosGamma;
x -= 1.0;
double a = coefficients[0];
double t = x+g+0.5;
for(int i = 1; i < Coefficients.lanchosGamma.Length; i++){
a += Coefficients.lanchosGamma[i] / (x+i);
for (int i = 1; i < coefficients.Length; i++){
a += coefficients[i] / (x+i);
}
return Math.Sqrt(2*MathConstants.PI) * Math.Pow(t, x+0.5) * Math.Exp(-t) * a;
return Math.Sqrt(2.0*MathConstants.PI) * Math.Pow(t, x+0.5) * Math.Exp(-t) * a;
}
/**
* Real valued log gamma function.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* @(#)Function2Arg.cs 5.0.7 2022-07-10
* @(#)Function2Arg.cs 5.1.0 2022-09-04
*
* MathParser.org-mXparser DUAL LICENSE AGREEMENT as of date 2022-05-22
* The most up-to-date license is available at the below link:
Expand Down Expand Up @@ -194,7 +194,7 @@ namespace org.mariuszgromada.math.mxparser.parsertokens {
* <a href="https://play.google.com/store/apps/details?id=org.mathparser.scalar.pro" target="_blank">Scalar Pro</a><br>
* <a href="https://mathspace.pl" target="_blank">MathSpace.pl</a><br>
*
* @version 5.0.7
* @version 5.1.0
*/
[CLSCompliant(true)]
public sealed class Function2Arg {
Expand Down Expand Up @@ -239,6 +239,7 @@ public sealed class Function2Arg {
public const int PDF_CHI2_ID = 31;
public const int CDF_CHI2_ID = 32;
public const int QNT_CHI2_ID = 33;
public const int RND_F_SNEDECOR_ID = 34;
/*
* BinaryFunction - tokens key words.
*/
Expand Down Expand Up @@ -278,6 +279,7 @@ public sealed class Function2Arg {
public const String PDF_CHI2_STR = "pChi2";
public const String CDF_CHI2_STR = "cChi2";
public const String QNT_CHI2_STR = "qChi2";
public const String RND_F_SNEDECOR_STR = "rFSned";
/*
* BinaryFunction - syntax.
*/
Expand Down Expand Up @@ -317,6 +319,7 @@ public sealed class Function2Arg {
public static readonly String PDF_CHI2_SYN = SyntaxStringBuilder.binaryFunction(PDF_CHI2_STR, SyntaxStringBuilder.x, SyntaxStringBuilder.k);
public static readonly String CDF_CHI2_SYN = SyntaxStringBuilder.binaryFunction(CDF_CHI2_STR, SyntaxStringBuilder.x, SyntaxStringBuilder.k);
public static readonly String QNT_CHI2_SYN = SyntaxStringBuilder.binaryFunction(QNT_CHI2_STR, SyntaxStringBuilder.p, SyntaxStringBuilder.k);
public static readonly String RND_F_SNEDECOR_SYN = SyntaxStringBuilder.binaryFunction(RND_F_SNEDECOR_STR, SyntaxStringBuilder.d1, SyntaxStringBuilder.d2);
/*
* BinaryFunction - tokens description.
*/
Expand Down Expand Up @@ -353,6 +356,7 @@ public sealed class Function2Arg {
public const String PDF_CHI2_DESC = "Probability distribution function - Chi-squared distribution";
public const String CDF_CHI2_DESC = "Cumulative distribution function - Chi-squared distribution";
public const String QNT_CHI2_DESC = "Quantile function (inverse cumulative distribution function) - Chi-squared distribution";
public const String RND_F_SNEDECOR_DESC = "Random variable - Snedecor's F distribution (F-distribution or F-ratio, also known as Fisher–Snedecor distribution)";
/*
* BinaryFunction - since.
*/
Expand Down Expand Up @@ -390,5 +394,6 @@ public sealed class Function2Arg {
public const String PDF_CHI2_SINCE = mXparser.NAMEv50;
public const String CDF_CHI2_SINCE = mXparser.NAMEv50;
public const String QNT_CHI2_SINCE = mXparser.NAMEv50;
public const String RND_F_SNEDECOR_SINCE = mXparser.NAMEv51;
}
}
Loading

0 comments on commit 0fb76fc

Please sign in to comment.