Browse Source

Fixed some style warnings.

Signed-off-by: jvangael <jurgen.vangael@gmail.com>
pull/36/head
Jurgen Van Gael 17 years ago
parent
commit
581e4b12bb
  1. 13
      src/Numerics/Distributions/Continuous/Beta.cs
  2. 20
      src/Numerics/Distributions/Continuous/Gamma.cs
  3. 17
      src/Numerics/SpecialFunctions.cs

13
src/Numerics/Distributions/Continuous/Beta.cs

@ -59,7 +59,7 @@ namespace MathNet.Numerics.Distributions
private Random _random;
/// <summary>
/// Initializes a new instance of the Beta distribution.
/// Initializes a new instance of the Beta class.
/// </summary>
/// <param name="a">The a shape parameter of the Beta distribution.</param>
/// <param name="b">The b shape parameter of the Beta distribution.</param>
@ -73,6 +73,7 @@ namespace MathNet.Numerics.Distributions
/// <summary>
/// A string representation of the distribution.
/// </summary>
/// <returns>A string representation of the Beta distribution.</returns>
public override string ToString()
{
return "Beta(A = " + _shapeA + ", B = " + _shapeB + ")";
@ -217,9 +218,9 @@ namespace MathNet.Numerics.Distributions
get
{
return SpecialFunctions.BetaLn(_shapeA, _shapeB)
- (_shapeA - 1.0) * SpecialFunctions.DiGamma(_shapeA)
- (_shapeB - 1.0) * SpecialFunctions.DiGamma(_shapeB)
+ (_shapeA + _shapeB - 2.0) * SpecialFunctions.DiGamma(_shapeA + _shapeB);
- ((_shapeA - 1.0) * SpecialFunctions.DiGamma(_shapeA))
- ((_shapeB - 1.0) * SpecialFunctions.DiGamma(_shapeB))
+ ((_shapeA + _shapeB - 2.0) * SpecialFunctions.DiGamma(_shapeA + _shapeB));
}
}
@ -505,8 +506,8 @@ namespace MathNet.Numerics.Distributions
else
{
double a = SpecialFunctions.GammaLn(_shapeA + _shapeB) - SpecialFunctions.GammaLn(_shapeA) - SpecialFunctions.GammaLn(_shapeB);
double b = (x == 0.0 ? (_shapeA == 1.0 ? 0.0 : Double.NegativeInfinity) : (_shapeA - 1.0) * Math.Log(x));
double c = (x == 1.0 ? (_shapeB == 1.0 ? 0.0 : Double.NegativeInfinity) : (_shapeB - 1.0) * Math.Log(1.0 - x));
double b = x == 0.0 ? (_shapeA == 1.0 ? 0.0 : Double.NegativeInfinity) : (_shapeA - 1.0) * Math.Log(x);
double c = x == 1.0 ? (_shapeB == 1.0 ? 0.0 : Double.NegativeInfinity) : (_shapeB - 1.0) * Math.Log(1.0 - x);
return a + b + c;
}
}

20
src/Numerics/Distributions/Continuous/Gamma.cs

@ -67,7 +67,7 @@ namespace MathNet.Numerics.Distributions
private Random _random;
/// <summary>
/// Initializes a new instance of the Gamma distribution.
/// Initializes a new instance of the Gamma class.
/// </summary>
/// <param name="shape">The shape of the Gamma distribution.</param>
/// <param name="invScale">The inverse scale of the Gamma distribution.</param>
@ -304,7 +304,7 @@ namespace MathNet.Numerics.Distributions
}
else
{
return _shape - Math.Log(_invScale) + SpecialFunctions.GammaLn(_shape) + (1.0 - _shape) * SpecialFunctions.DiGamma(_shape);
return _shape - Math.Log(_invScale) + SpecialFunctions.GammaLn(_shape) + ((1.0 - _shape) * SpecialFunctions.DiGamma(_shape));
}
}
}
@ -436,11 +436,11 @@ namespace MathNet.Numerics.Distributions
}
else if(_shape == 1.0)
{
return Math.Log(_invScale) - _invScale*x;
return Math.Log(_invScale) - (_invScale * x);
}
else
{
return _shape * Math.Log(_invScale) + (_shape - 1.0) * Math.Log(x) - _invScale * x - SpecialFunctions.GammaLn(_shape);
return (_shape * Math.Log(_invScale)) + ((_shape - 1.0) * Math.Log(x)) - (_invScale * x) - SpecialFunctions.GammaLn(_shape);
}
}
@ -554,25 +554,27 @@ namespace MathNet.Numerics.Distributions
alphafix = System.Math.Pow(rnd.NextDouble(), 1.0 / shape);
}
double d = a - 1.0 / 3.0;
double d = a - (1.0 / 3.0);
double c = 1.0 / System.Math.Sqrt(9.0 * d);
while (true)
{
double x = Normal.Sample(rnd, 0.0, 1.0);
double v = 1.0 + c * x;
double v = 1.0 + (c * x);
while (v <= 0.0)
{
x = Normal.Sample(rnd, 0.0, 1.0);
v = 1.0 + c * x;
v = 1.0 + (c * x);
}
v = v * v * v;
double u = rnd.NextDouble();
x = x * x;
if (u < 1.0 - 0.0331 * x * x)
if (u < 1.0 - (0.0331 * x * x))
{
return alphafix * d * v / invScale;
}
if (System.Math.Log(u) < 0.5 * x + d * (1.0 - v + System.Math.Log(v)))
if (System.Math.Log(u) < (0.5 * x) + (d * (1.0 - v + System.Math.Log(v))))
{
return alphafix * d * v / invScale;
}

17
src/Numerics/SpecialFunctions.cs

@ -108,7 +108,8 @@ namespace MathNet.Numerics
{
s += Gamma_dk[i] / (i - z);
}
return Constants.LnPi - Math.Log(Math.Sin(Math.PI * z)) - Math.Log(s) - Constants.LogTwoSqrtEOverPi - (0.5 - z) * Math.Log((0.5 - z + Gamma_r) / Math.E);
return Constants.LnPi - Math.Log(Math.Sin(Math.PI * z)) - Math.Log(s) - Constants.LogTwoSqrtEOverPi - ((0.5 - z) * Math.Log((0.5 - z + Gamma_r) / Math.E));
}
else
{
@ -117,7 +118,8 @@ namespace MathNet.Numerics
{
s += Gamma_dk[i] / (z + i - 1.0);
}
return Math.Log(s) + Constants.LogTwoSqrtEOverPi + (z - 0.5) * Math.Log((z - 0.5 + Gamma_r) / Math.E);
return Math.Log(s) + Constants.LogTwoSqrtEOverPi + ((z - 0.5) * Math.Log((z - 0.5 + Gamma_r) / Math.E));
}
}
@ -144,6 +146,7 @@ namespace MathNet.Numerics
{
s += Gamma_dk[i] / (i - z);
}
return Math.PI / (Math.Sin(Math.PI * z) * s * Constants.TwoSqrtEOverPi * Math.Pow((0.5 - z + Gamma_r) / Math.E, 0.5 - z));
}
else
@ -153,6 +156,7 @@ namespace MathNet.Numerics
{
s += Gamma_dk[i] / (z + i - 1.0);
}
return s * Constants.TwoSqrtEOverPi * Math.Pow((z - 0.5 + Gamma_r) / Math.E, z - 0.5);
}
}
@ -195,12 +199,12 @@ namespace MathNet.Numerics
// Use inversion formula for negative numbers.
if (x < 0)
{
return DiGamma(1.0 - x) + System.Math.PI / System.Math.Tan(-System.Math.PI * x);
return DiGamma(1.0 - x) + (System.Math.PI / System.Math.Tan(-System.Math.PI * x));
}
if (x <= s)
{
return d1 - 1 / x + d2 * x;
return d1 - (1 / x) + (d2 * x);
}
double result = 0;
@ -213,10 +217,10 @@ namespace MathNet.Numerics
if (x >= c)
{
double r = 1 / x;
result += System.Math.Log(x) - 0.5 * r;
result += System.Math.Log(x) - (0.5 * r);
r *= r;
result -= r * (s3 - r * (s4 - r * (s5 - r * (s6 - r * s7))));
result -= r * (s3 - (r * (s4 - (r * (s5 - (r * (s6 - (r * s7))))))));
}
return result;
@ -226,6 +230,7 @@ namespace MathNet.Numerics
{
throw new NotImplementedException();
}
public static double BetaLn(double a, double b)
{
throw new NotImplementedException();

Loading…
Cancel
Save