Search in sources :

Example 6 with Range

use of edu.rit.util.Range in project ffx by mjschnie.

the class LongBuf method patchBuffers.

/**
 * Create an array of buffers for multiple patches of the given long matrix.
 * The length of the returned buffer array is equal to the length of
 * <TT>theRowRanges</TT> times the length of <TT>theColRanges</TT>. Each
 * element of the returned buffer array encompasses the rows given in one
 * element of <TT>theRowRanges</TT> array, and the columns given in one
 * element of <TT>theColRanges</TT> array, in all possible combinations, of
 * <TT>theMatrix</TT>. Each range's stride may be 1 or greater than 1.
 *
 * @param theMatrix Matrix.
 * @param theRowRanges Array of ranges of rows to include.
 * @param theColRanges Array of ranges of columns to include.
 * @return Array of buffers.
 * @exception NullPointerException (unchecked exception) Thrown if
 * <TT>theMatrix</TT> is null,
 * <TT>theRowRanges</TT> or any element thereof is null, or
 * <TT>theColRanges</TT> or any element thereof is null.
 * @exception IndexOutOfBoundsException (unchecked exception) Thrown if
 * <TT>theMatrix</TT>'s allocation does not include any element of
 * <TT>theRowRanges</TT> or
 * <TT>theColRanges</TT>.
 */
public static LongBuf[] patchBuffers(long[][] theMatrix, Range[] theRowRanges, Range[] theColRanges) {
    int m = theRowRanges.length;
    int n = theColRanges.length;
    LongBuf[] result = new LongBuf[m * n];
    int k = 0;
    for (int i = 0; i < m; ++i) {
        Range rowrange = theRowRanges[i];
        for (int j = 0; j < n; ++j) {
            result[k++] = patchBuffer(theMatrix, rowrange, theColRanges[j]);
        }
    }
    return result;
}
Also used : SharedLongBuf(edu.rit.mp.buf.SharedLongBuf) EmptyLongBuf(edu.rit.mp.buf.EmptyLongBuf) Range(edu.rit.util.Range)

Example 7 with Range

use of edu.rit.util.Range in project ffx by mjschnie.

the class LongBuf method buffer.

/**
 * Create a buffer for the entire given long matrix. The returned buffer
 * encompasses all the rows and all the columns in
 * <TT>theMatrix</TT>.
 *
 * @param theMatrix Matrix.
 * @return Buffer.
 * @exception NullPointerException (unchecked exception) Thrown if
 * <TT>theMatrix</TT> is null.
 */
public static LongBuf buffer(long[][] theMatrix) {
    if (theMatrix == null) {
        throw new NullPointerException("LongBuf.buffer(): theMatrix is null");
    }
    int nr = Arrays.rowLength(theMatrix);
    int nc = Arrays.colLength(theMatrix, 0);
    return new LongMatrixBuf_1(theMatrix, new Range(0, nr - 1), new Range(0, nc - 1));
}
Also used : Range(edu.rit.util.Range) LongMatrixBuf_1(edu.rit.mp.buf.LongMatrixBuf_1)

Example 8 with Range

use of edu.rit.util.Range in project ffx by mjschnie.

the class LongBuf method rowSliceBuffer.

/**
 * Create a buffer for one row slice of the given long matrix. The returned
 * buffer encompasses <TT>theRowRange</TT> of rows, and all the columns, in
 * <TT>theMatrix</TT>. The range's stride may be 1 or greater than 1.
 *
 * @param theMatrix Matrix.
 * @param theRowRange Range of rows to include.
 * @return Buffer.
 * @exception NullPointerException (unchecked exception) Thrown if
 * <TT>theMatrix</TT> is null or
 * <TT>theRowRange</TT> is null.
 * @exception IndexOutOfBoundsException (unchecked exception) Thrown if
 * <TT>theMatrix</TT>'s allocation does not include <TT>theRowRange</TT>.
 */
public static LongBuf rowSliceBuffer(long[][] theMatrix, Range theRowRange) {
    if (theMatrix == null) {
        throw new NullPointerException("LongBuf.rowSliceBuffer(): theMatrix is null");
    }
    int nr = Arrays.rowLength(theMatrix);
    if (0 > theRowRange.lb() || theRowRange.ub() >= nr) {
        throw new IndexOutOfBoundsException("LongBuf.rowSliceBuffer(): theMatrix row index range = 0.." + (nr - 1) + ", theRowRange = " + theRowRange);
    }
    int nc = Arrays.colLength(theMatrix, theRowRange.lb());
    if (theRowRange.stride() == 1) {
        return new LongMatrixBuf_1(theMatrix, theRowRange, new Range(0, nc - 1));
    } else {
        return new LongMatrixBuf(theMatrix, theRowRange, new Range(0, nc - 1));
    }
}
Also used : LongMatrixBuf(edu.rit.mp.buf.LongMatrixBuf) Range(edu.rit.util.Range) LongMatrixBuf_1(edu.rit.mp.buf.LongMatrixBuf_1)

Example 9 with Range

use of edu.rit.util.Range in project ffx by mjschnie.

the class ObjectBuf method rowSliceBuffer.

/**
 * Create a buffer for one row slice of the given object matrix. The
 * returned buffer encompasses <TT>theRowRange</TT> of rows, and all the
 * columns, in <TT>theMatrix</TT>. The range's stride may be 1 or greater
 * than 1. The matrix elements are sent and received as multiple separate
 * objects of type <TT>T</TT>.
 *
 * @param <T> Data type of the objects in the buffer.
 * @param theMatrix Matrix.
 * @param theRowRange Range of rows to include.
 * @return Buffer.
 * @exception NullPointerException (unchecked exception) Thrown if
 * <TT>theMatrix</TT> is null or
 * <TT>theRowRange</TT> is null.
 * @exception IndexOutOfBoundsException (unchecked exception) Thrown if
 * <TT>theMatrix</TT>'s allocation does not include <TT>theRowRange</TT>.
 */
public static <T> ObjectBuf<T> rowSliceBuffer(T[][] theMatrix, Range theRowRange) {
    if (theMatrix == null) {
        throw new NullPointerException("ObjectBuf.rowSliceBuffer(): theMatrix is null");
    }
    int nr = Arrays.rowLength(theMatrix);
    if (0 > theRowRange.lb() || theRowRange.ub() >= nr) {
        throw new IndexOutOfBoundsException("ObjectBuf.rowSliceBuffer(): theMatrix row index range = 0.." + (nr - 1) + ", theRowRange = " + theRowRange);
    }
    int nc = Arrays.colLength(theMatrix, theRowRange.lb());
    if (theRowRange.stride() == 1) {
        return new ObjectMatrixBuf_1<T>(theMatrix, theRowRange, new Range(0, nc - 1));
    } else {
        return new ObjectMatrixBuf<T>(theMatrix, theRowRange, new Range(0, nc - 1));
    }
}
Also used : ObjectMatrixBuf_1(edu.rit.mp.buf.ObjectMatrixBuf_1) Range(edu.rit.util.Range) ObjectMatrixBuf(edu.rit.mp.buf.ObjectMatrixBuf)

Example 10 with Range

use of edu.rit.util.Range in project ffx by mjschnie.

the class Signed16BitIntegerBuf method rowSliceBuffer.

/**
 * Create a buffer for one row slice of the given integer matrix. The
 * returned buffer encompasses <TT>theRowRange</TT> of rows, and all the
 * columns, in <TT>theMatrix</TT>. The range's stride may be 1 or greater
 * than 1.
 *
 * @param theMatrix Matrix.
 * @param theRowRange Range of rows to include.
 * @return Buffer.
 * @exception NullPointerException (unchecked exception) Thrown if
 * <TT>theMatrix</TT> is null or
 * <TT>theRowRange</TT> is null.
 * @exception IndexOutOfBoundsException (unchecked exception) Thrown if
 * <TT>theMatrix</TT>'s allocation does not include <TT>theRowRange</TT>.
 */
public static Signed16BitIntegerBuf rowSliceBuffer(int[][] theMatrix, Range theRowRange) {
    if (theMatrix == null) {
        throw new NullPointerException("Signed16BitIntegerBuf.rowSliceBuffer(): theMatrix is null");
    }
    int nr = Arrays.rowLength(theMatrix);
    if (0 > theRowRange.lb() || theRowRange.ub() >= nr) {
        throw new IndexOutOfBoundsException("Signed16BitIntegerBuf.rowSliceBuffer(): theMatrix row index range = 0.." + (nr - 1) + ", theRowRange = " + theRowRange);
    }
    int nc = Arrays.colLength(theMatrix, theRowRange.lb());
    if (theRowRange.stride() == 1) {
        return new Signed16BitIntegerMatrixBuf_1(theMatrix, theRowRange, new Range(0, nc - 1));
    } else {
        return new Signed16BitIntegerMatrixBuf(theMatrix, theRowRange, new Range(0, nc - 1));
    }
}
Also used : Signed16BitIntegerMatrixBuf_1(edu.rit.mp.buf.Signed16BitIntegerMatrixBuf_1) Signed16BitIntegerMatrixBuf(edu.rit.mp.buf.Signed16BitIntegerMatrixBuf) Range(edu.rit.util.Range)

Aggregations

Range (edu.rit.util.Range)76 LongRange (edu.rit.util.LongRange)6 BooleanMatrixBuf_1 (edu.rit.mp.buf.BooleanMatrixBuf_1)3 ByteMatrixBuf_1 (edu.rit.mp.buf.ByteMatrixBuf_1)3 CharacterMatrixBuf_1 (edu.rit.mp.buf.CharacterMatrixBuf_1)3 DoubleMatrixBuf_1 (edu.rit.mp.buf.DoubleMatrixBuf_1)3 FloatMatrixBuf_1 (edu.rit.mp.buf.FloatMatrixBuf_1)3 IntegerMatrixBuf_1 (edu.rit.mp.buf.IntegerMatrixBuf_1)3 LongMatrixBuf_1 (edu.rit.mp.buf.LongMatrixBuf_1)3 ObjectMatrixBuf_1 (edu.rit.mp.buf.ObjectMatrixBuf_1)3 ShortMatrixBuf_1 (edu.rit.mp.buf.ShortMatrixBuf_1)3 Signed16BitIntegerMatrixBuf_1 (edu.rit.mp.buf.Signed16BitIntegerMatrixBuf_1)3 Signed8BitIntegerMatrixBuf_1 (edu.rit.mp.buf.Signed8BitIntegerMatrixBuf_1)3 Unsigned16BitIntegerMatrixBuf_1 (edu.rit.mp.buf.Unsigned16BitIntegerMatrixBuf_1)3 Unsigned8BitIntegerMatrixBuf_1 (edu.rit.mp.buf.Unsigned8BitIntegerMatrixBuf_1)3 BooleanMatrixBuf (edu.rit.mp.buf.BooleanMatrixBuf)2 ByteMatrixBuf (edu.rit.mp.buf.ByteMatrixBuf)2 CharacterMatrixBuf (edu.rit.mp.buf.CharacterMatrixBuf)2 DoubleMatrixBuf (edu.rit.mp.buf.DoubleMatrixBuf)2 FloatMatrixBuf (edu.rit.mp.buf.FloatMatrixBuf)2