Example usage for org.apache.commons.math3.exception MathIllegalStateException getStackTrace

List of usage examples for org.apache.commons.math3.exception MathIllegalStateException getStackTrace

Introduction

In this page you can find the example usage for org.apache.commons.math3.exception MathIllegalStateException getStackTrace.

Prototype

public StackTraceElement[] getStackTrace() 

Source Link

Document

Provides programmatic access to the stack trace information printed by #printStackTrace() .

Usage

From source file:pyromaniac.Algorithm.BalzerOUCallFrequencyTable.java

/**
 * _calculate probability./*from   w w  w.ja v a 2  s . co  m*/
 *
 * @param mode the mode
 * @param segmentNumber the segment number
 * @return the BigDecimal [] of probabilities, all with scale of 10.
 */
private BigDecimal[] _calculateProbabilitiesHelper(int segmentNumber, int mode) {
    BigDecimal sd, mean, modeBD;

    //this multiplicative factor was taken from elsewhere...
    BigDecimal flowEffect = new BigDecimal("0.003").multiply(new BigDecimal(segmentNumber)).setScale(SCALE,
            BigDecimal.ROUND_HALF_UP);

    modeBD = new BigDecimal(mode);

    if (mode >= 6) {
        mean = new BigDecimal(mode).setScale(SCALE, BigDecimal.ROUND_HALF_UP);
        //standard deviation is 0.03 + effect of RefLen + effect of flow position 
        sd = new BigDecimal("0.03494").add(mean.multiply(new BigDecimal("0.06856"))).add(flowEffect);
    } else {
        mean = new BigDecimal(this.normalDistParams.get(mode).getFirst()).setScale(SCALE,
                BigDecimal.ROUND_HALF_UP);
        sd = new BigDecimal(this.normalDistParams.get(mode).getSecond()).add(flowEffect).setScale(SCALE,
                BigDecimal.ROUND_HALF_UP);
    }

    NormalDistribution norm = new NormalDistribution(mean.doubleValue(), sd.doubleValue());

    try {
        //due to rounding...
        //cumulative probability [X <= x]
        //so prob under is [X <= MODE - 0.51], and prob over is 1 - prob [X <= MODE + 0.49] (i.e. prob X > MODE + 0.49)
        BigDecimal lowerBound = modeBD.subtract(new BigDecimal(SUBTRACT_FOR_LB)).setScale(SCALE,
                BigDecimal.ROUND_HALF_UP);
        BigDecimal upperBound = modeBD.add(new BigDecimal(ADD_FOR_UB)).setScale(SCALE,
                BigDecimal.ROUND_HALF_UP);

        BigDecimal probLessThan = new BigDecimal(norm.cumulativeProbability(lowerBound.doubleValue()))
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP);
        BigDecimal probMoreThan = new BigDecimal("1")
                .subtract(new BigDecimal(norm.cumulativeProbability(upperBound.doubleValue())).setScale(SCALE,
                        BigDecimal.ROUND_HALF_UP));
        BigDecimal probEqualTo = new BigDecimal("1").subtract(probLessThan).subtract(probMoreThan)
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP);

        BigDecimal summed = probLessThan.add(probEqualTo).add(probMoreThan).setScale(SCALE,
                BigDecimal.ROUND_HALF_UP);
        if (!summed.equals(new BigDecimal("1").setScale(SCALE, BigDecimal.ROUND_HALF_UP))) {
            probLessThan = probLessThan.divide(summed, SCALE, BigDecimal.ROUND_HALF_UP);
            probMoreThan = probMoreThan.divide(summed, SCALE, BigDecimal.ROUND_HALF_UP);
            probEqualTo = probEqualTo.divide(summed, SCALE, BigDecimal.ROUND_HALF_UP);
        }

        BigDecimal[] probs = { probLessThan, probEqualTo, probMoreThan };

        return probs;
    } catch (MathIllegalStateException me) {
        me.getStackTrace();
    }
    return null;
}

From source file:pyromaniac.Algorithm.QuinceOUFrequencyTable.java

private BigDecimal[] _calculateProbabilitiesHelper(int mode) {
    BigDecimal sd = new BigDecimal("0.04").add(new BigDecimal(mode).multiply(new BigDecimal("0.03")));
    BigDecimal modeBD = new BigDecimal(mode);

    BigDecimal lowerBound = modeBD.subtract(new BigDecimal(SUBTRACT_FOR_LB)).setScale(SCALE,
            BigDecimal.ROUND_HALF_UP);
    BigDecimal upperBound = modeBD.add(new BigDecimal(ADD_FOR_UB)).setScale(SCALE, BigDecimal.ROUND_HALF_UP);

    NormalDistribution norm = new NormalDistribution(mode, sd.doubleValue());

    try {//from w  w w.j  a v  a 2  s . c  om
        BigDecimal probLessThan = new BigDecimal(norm.cumulativeProbability(lowerBound.doubleValue()))
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP);
        BigDecimal probMoreThan = new BigDecimal("1")
                .subtract(new BigDecimal(norm.cumulativeProbability(upperBound.doubleValue())))
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP);
        BigDecimal probEqualTo = new BigDecimal("1").subtract(probLessThan).subtract(probMoreThan)
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP);

        BigDecimal totalProb = probLessThan.add(probEqualTo).add(probMoreThan).setScale(SCALE,
                BigDecimal.ROUND_HALF_UP);

        if (!totalProb.equals(new BigDecimal("1").setScale(SCALE, BigDecimal.ROUND_HALF_UP))) {
            probLessThan = probLessThan.divide(totalProb, SCALE, BigDecimal.ROUND_HALF_UP);
            probMoreThan = probMoreThan.divide(totalProb, SCALE, BigDecimal.ROUND_HALF_UP);
            probEqualTo = probEqualTo.divide(totalProb, SCALE, BigDecimal.ROUND_HALF_UP);
        }

        BigDecimal[] probs = { probLessThan, probEqualTo, probMoreThan };
        return probs;
    } catch (MathIllegalStateException me) {
        me.getStackTrace();
    }
    return null;
}