当前位置: 首页>>代码示例>>Java>>正文


Java Gamma.LANCZOS_G属性代码示例

本文整理汇总了Java中org.apache.commons.math3.special.Gamma.LANCZOS_G属性的典型用法代码示例。如果您正苦于以下问题:Java Gamma.LANCZOS_G属性的具体用法?Java Gamma.LANCZOS_G怎么用?Java Gamma.LANCZOS_G使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在org.apache.commons.math3.special.Gamma的用法示例。


在下文中一共展示了Gamma.LANCZOS_G属性的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: logDensity

/** {@inheritDoc} **/
@Override
public double logDensity(double x) {
    /*
     * see the comment in {@link #density(double)} for computation details
     */
    if (x < 0) {
        return Double.NEGATIVE_INFINITY;
    }
    final double y = x / scale;
    if ((y <= minY) || (FastMath.log(y) >= maxLogY)) {
        /*
         * Overflow.
         */
        final double aux1 = (y - shiftedShape) / shiftedShape;
        final double aux2 = shape * (FastMath.log1p(aux1) - aux1);
        final double aux3 = -y * (Gamma.LANCZOS_G + 0.5) / shiftedShape +
                Gamma.LANCZOS_G + aux2;
        return logDensityPrefactor2 - FastMath.log(x) + aux3;
    }
    /*
     * Natural calculation.
     */
    return logDensityPrefactor1 - y + FastMath.log(y) * (shape - 1);
}
 
开发者ID:biocompibens,项目名称:SME,代码行数:25,代码来源:GammaDistribution.java

示例2: logGamma

public static double logGamma(double x) {
    /*
     * This is a copy of
     * double Gamma.logGamma(double)
     * prior to MATH-849
     */
    double ret;

    if (Double.isNaN(x) || (x <= 0.0)) {
        ret = Double.NaN;
    } else {
        double sum = Gamma.lanczos(x);
        double tmp = x + Gamma.LANCZOS_G + .5;
        ret = ((x + .5) * FastMath.log(tmp)) - tmp +
            HALF_LOG_2_PI + FastMath.log(sum / x);
    }

    return ret;
}
 
开发者ID:Quanticol,项目名称:CARMA,代码行数:19,代码来源:GammaDistributionTest.java

示例3: CustomGammaDistribution

/**
 * Creates a Gamma distribution.
 *
 * @param rng
 *            Random number generator.
 * @param shape
 *            the shape parameter
 * @param scale
 *            the scale parameter
 * @param inverseCumAccuracy
 *            the maximum absolute error in inverse
 *            cumulative probability estimates (defaults to {@link #DEFAULT_INVERSE_ABSOLUTE_ACCURACY}).
 * @throws NotStrictlyPositiveException
 *             if {@code shape <= 0} or {@code scale <= 0}.
 * @since 3.1
 */
public CustomGammaDistribution(RandomGenerator rng, double shape, double scale, double inverseCumAccuracy)
		throws NotStrictlyPositiveException
{
	super(rng);

	if (shape <= 0)
	{
		throw new NotStrictlyPositiveException(LocalizedFormats.SHAPE, shape);
	}
	if (scale <= 0)
	{
		throw new NotStrictlyPositiveException(LocalizedFormats.SCALE, scale);
	}

	this.shape = shape;
	this.scale = scale;
	this.solverAbsoluteAccuracy = inverseCumAccuracy;
	this.shiftedShape = shape + Gamma.LANCZOS_G + 0.5;
	final double aux = FastMath.E / (2.0 * FastMath.PI * shiftedShape);
	this.densityPrefactor2 = shape * FastMath.sqrt(aux) / Gamma.lanczos(shape);
	this.densityPrefactor1 = this.densityPrefactor2 / scale * FastMath.pow(shiftedShape, -shape) *
			FastMath.exp(shape + Gamma.LANCZOS_G);
	this.minY = shape + Gamma.LANCZOS_G - FastMath.log(Double.MAX_VALUE);
	this.maxLogY = FastMath.log(Double.MAX_VALUE) / (shape - 1.0);
}
 
开发者ID:aherbert,项目名称:GDSC-SMLM,代码行数:41,代码来源:CustomGammaDistribution.java

示例4: GammaDistribution

/**
 * Creates a Gamma distribution.
 *
 * @param rng Random number generator.
 * @param shape the shape parameter
 * @param scale the scale parameter
 * @param inverseCumAccuracy the maximum absolute error in inverse
 * cumulative probability estimates (defaults to
 * {@link #DEFAULT_INVERSE_ABSOLUTE_ACCURACY}).
 * @throws NotStrictlyPositiveException if {@code shape <= 0} or
 * {@code scale <= 0}.
 * @since 3.1
 */
public GammaDistribution(RandomGenerator rng,
                         double shape,
                         double scale,
                         double inverseCumAccuracy)
    throws NotStrictlyPositiveException {
    super(rng);

    if (shape <= 0) {
        throw new NotStrictlyPositiveException(LocalizedFormats.SHAPE, shape);
    }
    if (scale <= 0) {
        throw new NotStrictlyPositiveException(LocalizedFormats.SCALE, scale);
    }

    this.shape = shape;
    this.scale = scale;
    this.solverAbsoluteAccuracy = inverseCumAccuracy;
    this.shiftedShape = shape + Gamma.LANCZOS_G + 0.5;
    final double aux = FastMath.E / (2.0 * FastMath.PI * shiftedShape);
    this.densityPrefactor2 = shape * FastMath.sqrt(aux) / Gamma.lanczos(shape);
    this.logDensityPrefactor2 = FastMath.log(shape) + 0.5 * FastMath.log(aux) -
                                FastMath.log(Gamma.lanczos(shape));
    this.densityPrefactor1 = this.densityPrefactor2 / scale *
            FastMath.pow(shiftedShape, -shape) *
            FastMath.exp(shape + Gamma.LANCZOS_G);
    this.logDensityPrefactor1 = this.logDensityPrefactor2 - FastMath.log(scale) -
            FastMath.log(shiftedShape) * shape +
            shape + Gamma.LANCZOS_G;
    this.minY = shape + Gamma.LANCZOS_G - FastMath.log(Double.MAX_VALUE);
    this.maxLogY = FastMath.log(Double.MAX_VALUE) / (shape - 1.0);
}
 
开发者ID:biocompibens,项目名称:SME,代码行数:44,代码来源:GammaDistribution.java

示例5: GammaDistribution

/**
 * Creates a Gamma distribution.
 *
 * @param rng Random number generator.
 * @param shape the shape parameter
 * @param scale the scale parameter
 * @param inverseCumAccuracy the maximum absolute error in inverse
 * cumulative probability estimates (defaults to
 * {@link #DEFAULT_INVERSE_ABSOLUTE_ACCURACY}).
 * @throws NotStrictlyPositiveException if {@code shape <= 0} or
 * {@code scale <= 0}.
 * @since 3.1
 */
public GammaDistribution(RandomGenerator rng,
                         double shape,
                         double scale,
                         double inverseCumAccuracy)
    throws NotStrictlyPositiveException {
    super(rng);

    if (shape <= 0) {
        throw new NotStrictlyPositiveException(LocalizedFormats.SHAPE, shape);
    }
    if (scale <= 0) {
        throw new NotStrictlyPositiveException(LocalizedFormats.SCALE, scale);
    }

    this.shape = shape;
    this.scale = scale;
    this.solverAbsoluteAccuracy = inverseCumAccuracy;
    this.shiftedShape = shape + Gamma.LANCZOS_G + 0.5;
    final double aux = FastMath.E / (2.0 * FastMath.PI * shiftedShape);
    this.densityPrefactor2 = shape * FastMath.sqrt(aux) / Gamma.lanczos(shape);
    this.densityPrefactor1 = this.densityPrefactor2 / scale *
            FastMath.pow(shiftedShape, -shape) *
            FastMath.exp(shape + Gamma.LANCZOS_G);
    this.minY = shape + Gamma.LANCZOS_G - FastMath.log(Double.MAX_VALUE);
    this.maxLogY = FastMath.log(Double.MAX_VALUE) / (shape - 1.0);
}
 
开发者ID:SpoonLabs,项目名称:astor,代码行数:39,代码来源:GammaDistribution.java

示例6: logGamma

/**
 * Copied from Apache Commons FastMath. Removed support for NaN and x < 0.5.
 * <p>
 * Returns the value of log&nbsp;&Gamma;(x) for x&nbsp;&gt;&nbsp;0.
 * </p>
 * <p>
 * For x &le; 8, the implementation is based on the double precision
 * implementation in the <em>NSWC Library of Mathematics Subroutines</em>,
 * {@code DGAMLN}. For x &gt; 8, the implementation is based on
 * </p>
 * <ul>
 * <li><a href="http://mathworld.wolfram.com/GammaFunction.html">Gamma
 * Function</a>, equation (28).</li>
 * <li><a href="http://mathworld.wolfram.com/LanczosApproximation.html">
 * Lanczos Approximation</a>, equations (1) through (5).</li>
 * <li><a href="http://my.fit.edu/~gabdo/gamma.txt">Paul Godfrey, A note on
 * the computation of the convergent Lanczos complex Gamma
 * approximation</a></li>
 * </ul>
 *
 * @param x
 *            Argument.
 * @return the value of {@code log(Gamma(x))}, {@code Double.NaN} if
 *         {@code x <= 0.0}.
 */
private static double logGamma(double x)
{
	//		if (Double.isNaN(x) || (x <= 0.0))
	//		{
	//			return Double.NaN;
	//		}
	//		else if (x < 0.5)
	//		{
	//			return Gamma.logGamma1p(x) - Math.log(x);
	//		}
	//		else 
	if (x <= 2.5)
	{
		return Gamma.logGamma1p((x - 0.5) - 0.5);
	}
	else if (x <= 8.0)
	{
		final int n = (int) FastMath.floor(x - 1.5);
		double prod = 1.0;
		for (int i = 1; i <= n; i++)
		{
			prod *= x - i;
		}
		return Gamma.logGamma1p(x - (n + 1)) + Math.log(prod);
	}
	else
	{
		double sum = Gamma.lanczos(x);
		double tmp = x + Gamma.LANCZOS_G + .5;
		return ((x + .5) * Math.log(tmp)) - tmp + HALF_LOG_2_PI + Math.log(sum / x);
	}
}
 
开发者ID:aherbert,项目名称:GDSC-SMLM,代码行数:57,代码来源:PoissonCalculator.java

示例7: init

public void init() {
    this.shiftedShape = shape + Gamma.LANCZOS_G + 0.5;
    final double aux = FastMath.E / (2.0 * FastMath.PI * shiftedShape);
    this.densityPrefactor2 = shape * FastMath.sqrt(aux) / Gamma.lanczos(shape);
    this.logDensityPrefactor2 = FastMath.log(shape) + 0.5 * FastMath.log(aux) -
                                FastMath.log(Gamma.lanczos(shape));
    this.densityPrefactor1 = this.densityPrefactor2 / scale *
            FastMath.pow(shiftedShape, -shape) *
            FastMath.exp(shape + Gamma.LANCZOS_G);
    this.logDensityPrefactor1 = this.logDensityPrefactor2 - FastMath.log(scale) -
            FastMath.log(shiftedShape) * shape +
            shape + Gamma.LANCZOS_G;
    this.minY = shape + Gamma.LANCZOS_G - FastMath.log(Double.MAX_VALUE);
    this.maxLogY = FastMath.log(Double.MAX_VALUE) / (shape - 1.0);
}
 
开发者ID:happyjack27,项目名称:autoredistrict,代码行数:15,代码来源:GammaDistribution.java

示例8: density

/** {@inheritDoc} */
public double density(double x) {
   /* The present method must return the value of
    *
    *     1       x a     - x
    * ---------- (-)  exp(---)
    * x Gamma(a)  b        b
    *
    * where a is the shape parameter, and b the scale parameter.
    * Substituting the Lanczos approximation of Gamma(a) leads to the
    * following expression of the density
    *
    * a              e            1         y      a
    * - sqrt(------------------) ---- (-----------)  exp(a - y + g),
    * x      2 pi (a + g + 0.5)  L(a)  a + g + 0.5
    *
    * where y = x / b. The above formula is the "natural" computation, which
    * is implemented when no overflow is likely to occur. If overflow occurs
    * with the natural computation, the following identity is used. It is
    * based on the BOOST library
    * http://www.boost.org/doc/libs/1_35_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html
    * Formula (15) needs adaptations, which are detailed below.
    *
    *       y      a
    * (-----------)  exp(a - y + g)
    *  a + g + 0.5
    *                              y - a - g - 0.5    y (g + 0.5)
    *               = exp(a log1pm(---------------) - ----------- + g),
    *                                a + g + 0.5      a + g + 0.5
    *
    *  where log1pm(z) = log(1 + z) - z. Therefore, the value to be
    *  returned is
    *
    * a              e            1
    * - sqrt(------------------) ----
    * x      2 pi (a + g + 0.5)  L(a)
    *                              y - a - g - 0.5    y (g + 0.5)
    *               * exp(a log1pm(---------------) - ----------- + g).
    *                                a + g + 0.5      a + g + 0.5
    */
    if (x < 0) {
        return 0;
    }
    final double y = x / scale;
    if ((y <= minY) || (FastMath.log(y) >= maxLogY)) {
        /*
         * Overflow.
         */
        final double aux1 = (y - shiftedShape) / shiftedShape;
        final double aux2 = shape * (FastMath.log1p(aux1) - aux1);
        final double aux3 = -y * (Gamma.LANCZOS_G + 0.5) / shiftedShape +
                Gamma.LANCZOS_G + aux2;
        return densityPrefactor2 / x * FastMath.exp(aux3);
    }
    /*
     * Natural calculation.
     */
    return densityPrefactor1 * FastMath.exp(-y) * FastMath.pow(y, shape - 1);
}
 
开发者ID:biocompibens,项目名称:SME,代码行数:59,代码来源:GammaDistribution.java

示例9: density

/** {@inheritDoc} */
public double density(double x) {
   /* The present method must return the value of
    *
    *     1       x a     - x
    * ---------- (-)  exp(---)
    * x Gamma(a)  b        b
    *
    * where a is the shape parameter, and b the scale parameter.
    * Substituting the Lanczos approximation of Gamma(a) leads to the
    * following expression of the density
    *
    * a              e            1         y      a
    * - sqrt(------------------) ---- (-----------)  exp(a - y + g),
    * x      2 pi (a + g + 0.5)  L(a)  a + g + 0.5
    *
    * where y = x / b. The above formula is the "natural" computation, which
    * is implemented when no overflow is likely to occur. If overflow occurs
    * with the natural computation, the following identity is used. It is
    * based on the BOOST library
    * http://www.boost.org/doc/libs/1_35_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html
    * Formula (15) needs adaptations, which are detailed below.
    *
    *       y      a
    * (-----------)  exp(a - y + g)
    *  a + g + 0.5
    *                              y - a - g - 0.5    y (g + 0.5)
    *               = exp(a log1pm(---------------) - ----------- + g),
    *                                a + g + 0.5      a + g + 0.5
    *
    *  where log1pm(z) = log(1 + z) - z. Therefore, the value to be
    *  returned is
    *
    * a              e            1
    * - sqrt(------------------) ----
    * x      2 pi (a + g + 0.5)  L(a)
    *                              y - a - g - 0.5    y (g + 0.5)
    *               * exp(a log1pm(---------------) - ----------- + g).
    *                                a + g + 0.5      a + g + 0.5
    */
    if (x < 0) {
        return 0;
    }
    final double y = x / scale;
    if ((y <= minY) || (FastMath.log(y) >= maxLogY)) {
        /*
         * Overflow.
         */
        final double aux1 = (y - shiftedShape) / shiftedShape;
        final double aux2 = shape * (FastMath.log1p(aux1) - aux1);
        final double aux3 = -y * (Gamma.LANCZOS_G + 0.5) / shiftedShape +
                Gamma.LANCZOS_G + aux2;
        return densityPrefactor2 / x * FastMath.exp(aux3);
    }
    /*
     * Natural calculation.
     */
    return densityPrefactor1  * FastMath.exp(-y) *
            FastMath.pow(y, shape - 1);
}
 
开发者ID:SpoonLabs,项目名称:astor,代码行数:60,代码来源:GammaDistribution.java

示例10: density

/** {@inheritDoc} */
public double density(double x)
{
	/*
	 * The present method must return the value of
	 * 
	 * 1 x a - x
	 * ---------- (-) exp(---)
	 * x Gamma(a) b b
	 * 
	 * where a is the shape parameter, and b the scale parameter.
	 * Substituting the Lanczos approximation of Gamma(a) leads to the
	 * following expression of the density
	 * 
	 * a e 1 y a
	 * - sqrt(------------------) ---- (-----------) exp(a - y + g),
	 * x 2 pi (a + g + 0.5) L(a) a + g + 0.5
	 * 
	 * where y = x / b. The above formula is the "natural" computation, which
	 * is implemented when no overflow is likely to occur. If overflow occurs
	 * with the natural computation, the following identity is used. It is
	 * based on the BOOST library
	 * http://www.boost.org/doc/libs/1_35_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html
	 * Formula (15) needs adaptations, which are detailed below.
	 * 
	 * y a
	 * (-----------) exp(a - y + g)
	 * a + g + 0.5
	 * y - a - g - 0.5 y (g + 0.5)
	 * = exp(a log1pm(---------------) - ----------- + g),
	 * a + g + 0.5 a + g + 0.5
	 * 
	 * where log1pm(z) = log(1 + z) - z. Therefore, the value to be
	 * returned is
	 * 
	 * a e 1
	 * - sqrt(------------------) ----
	 * x 2 pi (a + g + 0.5) L(a)
	 * y - a - g - 0.5 y (g + 0.5)
	 * * exp(a log1pm(---------------) - ----------- + g).
	 * a + g + 0.5 a + g + 0.5
	 */
	if (x < 0)
	{
		return 0;
	}
	final double y = x / scale;
	if ((y <= minY) || (FastMath.log(y) >= maxLogY))
	{
		/*
		 * Overflow.
		 */
		final double aux1 = (y - shiftedShape) / shiftedShape;
		final double aux2 = shape * (FastMath.log1p(aux1) - aux1);
		final double aux3 = -y * (Gamma.LANCZOS_G + 0.5) / shiftedShape + Gamma.LANCZOS_G + aux2;
		return densityPrefactor2 / x * FastMath.exp(aux3);
	}
	/*
	 * Natural calculation.
	 */
	return densityPrefactor1 * FastMath.exp(-y) * FastMath.pow(y, shape - 1);
}
 
开发者ID:aherbert,项目名称:GDSC-SMLM,代码行数:62,代码来源:CustomGammaDistribution.java


注:本文中的org.apache.commons.math3.special.Gamma.LANCZOS_G属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。