Example usage for org.apache.commons.math.exception OutOfRangeException OutOfRangeException

List of usage examples for org.apache.commons.math.exception OutOfRangeException OutOfRangeException

Introduction

In this page you can find the example usage for org.apache.commons.math.exception OutOfRangeException OutOfRangeException.

Prototype

public OutOfRangeException(Number wrong, Number lo, Number hi) 

Source Link

Document

Construct an exception from the mismatched dimensions.

Usage

From source file:cz.paulrz.montecarlo.single.Path.java

/**
 * Adds a new value to the end of path//from   ww  w.  jav  a2  s.  com
 * 
 * @param value Value to add
 * @throws org.apache.commons.math.exception.OutOfRangeException The exception is thrown if path is complete,
 *             i.e. number of points added equals to path's length
 */
public void addValue(double value) throws OutOfRangeException {
    if (currentIndex >= length)
        throw new OutOfRangeException(currentIndex, 0, length);

    values[currentIndex] = value;
    currentIndex++;
}

From source file:cz.paulrz.montecarlo.random.ParallelPercentile.java

/**
* Returns an estimate of the <code>p</code>th percentile of the values
* in the <code>values</code> array, starting with the element in (0-based)
* position <code>begin</code> in the array and including <code>length</code>
* values./*from ww  w.j  a  v  a2s .co m*/
* <p>
* Calls to this method do not modify the internal <code>quantile</code>
* state of this statistic.</p>
* <p>
* <ul>
* <li>Returns <code>Double.NaN</code> if <code>length = 0</code></li>
* <li>Returns (for any value of <code>p</code>) <code>values[begin]</code>
*  if <code>length = 1 </code></li>
* <li>Throws <code>IllegalArgumentException</code> if <code>values</code>
*  is null , <code>begin</code> or <code>length</code> is invalid, or
* <code>p</code> is not a valid quantile value (p must be greater than 0
* and less than or equal to 100)</li>
* </ul></p>
* <p>
* See {@link ParallelPercentile} for a description of the percentile estimation
* algorithm used.</p>
*
* @param values array of input values
* @param p  the percentile to compute
* @param begin  the first (0-based) element to include in the computation
* @param length  the number of array elements to include
* @return  the percentile value
* @throws IllegalArgumentException if the parameters are not valid or the
* input array is null
*/
public double evaluate(final double[] values, final int begin, final int length, final double p)
        throws MathException {

    test(values, begin, length);

    if ((p > 100) || (p <= 0)) {
        throw new OutOfRangeException(p, 0, 100);
    }
    if (length == 0) {
        return Double.NaN;
    }
    if (length == 1) {
        return values[begin]; // always return single value for n = 1
    }
    double n = length;
    double pos = p * (n + 1) / 100;
    double fpos = FastMath.floor(pos);
    int intPos = (int) fpos;
    double dif = pos - fpos;
    double[] work;
    int[] pivotsHeap;
    if (values == getDataRef()) {
        work = getDataRef();
        pivotsHeap = cachedPivots;
    } else {
        work = new double[length];
        System.arraycopy(values, begin, work, 0, length);
        pivotsHeap = new int[(0x1 << MAX_CACHED_LEVELS) - 1];
        Arrays.fill(pivotsHeap, -1);
    }

    if (pos < 1) {
        return select(work, pivotsHeap, 0);
    }
    if (pos >= n) {
        return select(work, pivotsHeap, length - 1);
    }

    Future<Double> lowerFuture = CpuPool.executorService.submit(new SelectWorker(work, pivotsHeap, intPos - 1));
    Future<Double> upperFuture = CpuPool.executorService.submit(new SelectWorker(work, pivotsHeap, intPos));

    try {
        double lower = lowerFuture.get();
        double upper = upperFuture.get();
        return lower + dif * (upper - lower);
    } catch (InterruptedException e) {
        throw new MathException(e);
    } catch (ExecutionException e) {
        throw new MathException(e);
    }
}

From source file:cz.paulrz.montecarlo.random.ParallelPercentile.java

/**
 * Sets the value of the quantile field (determines what percentile is
 * computed when evaluate() is called with no quantile argument).
 *
 * @param p a value between 0 < p <= 100
 * @throws IllegalArgumentException  if p is not greater than 0 and less
 * than or equal to 100/*w  w w  . j a  va2  s.  c  om*/
 */
public void setQuantile(final double p) {
    if (p <= 0 || p > 100) {
        throw new OutOfRangeException(p, 0, 100);
    }
    quantile = p;
}