double[] getValues(final FracIndex... fracIndexes) { int origin = 0; for (int i = 0; i < dimensions.length; ++i) { origin += fracIndexes[i].i * strides[i]; } for (int i = 0; i < v.length; ++i) { values.copyTo(origin + o[i], v[i], 0, v[i].length); } for (int i = dimensions.length; i-- > 0;) { final int m = 1 << i; final double f = fracIndexes[i].f; for (int j = 0; j < m; ++j) { for (int k = 0; k < v[j].length; ++k) { v[j][k] += f * (v[m + j][k] - v[j][k]); } } } return v[0]; } }
static void ensureLegalArray(Array array, final int length) throws IllegalArgumentException, NullPointerException { if (array == null) { throw new NullPointerException("array == null"); } if (array.getLength() != length) { throw new IllegalArgumentException(MessageFormat.format( "array.length = {0} does not correspond to the expected length {1}", array.getLength(), length)); } } }
v[i] = values.getValue(origin + o[i]);
public void testDoubleCopyTo() { final Array array = new Array.Double(new double[]{1, 2, 3, 4, 5}); final double[] dest = new double[3]; array.copyTo(1, dest, 0, 3); assertEquals(2.0, dest[0], 0.0); assertEquals(3.0, dest[1], 0.0); assertEquals(4.0, dest[2], 0.0); }
public void testFloatCopyTo() { final Array array = new Array.Float(new float[]{1, 2, 3, 4, 5}); final double[] dest = new double[3]; array.copyTo(1, dest, 0, 3); assertEquals(2.0, dest[0], 0.0); assertEquals(3.0, dest[1], 0.0); assertEquals(4.0, dest[2], 0.0); } }