/** Returns {@code this} where {@code d[offset:offset + length] = array/buffer[i]} */ public abstract DoubleIndexer get(long i, double[] d, int offset, int length); /** Returns {@code array/buffer[i * strides[0] + j]} */
/** Returns {@code this} where {@code d[offset:offset + length] = array/buffer[index(indices)]} */ public abstract DoubleIndexer get(long[] indices, double[] d, int offset, int length);
@Override public double getDouble(long... indices) { return get(indices); } @Override public DoubleIndexer putDouble(long[] indices, double d) { return put(indices, d); }
/** Returns {@code this} where {@code d[offset:offset + length] = array/buffer[i * strides[0] + j]} */ public abstract DoubleIndexer get(long i, long j, double[] d, int offset, int length); /** Returns {@code array/buffer[i * strides[0] + j * strides[1] + k]} */
@Override public double getDouble(long i) { if (indexer == null) { throw new IllegalStateException("Indexer must never be null"); } if (dataType() == Type.FLOAT) { return ((FloatIndexer) indexer).get(offset() + i); } else if (dataType() == Type.INT) { return ((IntIndexer) indexer).get(offset() + i); } else if (dataType() == Type.LONG) { return ((LongRawIndexer) indexer).get(offset() + i); } else { return ((DoubleIndexer) indexer).get(offset() + i); } }
@Override public long getLong(long i) { if (dataType() == Type.FLOAT) { return (long) ((FloatIndexer) indexer).get(offset() + i); } else if (dataType() == Type.INT) { return (long) ((IntIndexer) indexer).get(offset() + i); } else if (dataType() == Type.DOUBLE) { return (long) ((DoubleIndexer) indexer).get(offset() + i); } else { return ((LongIndexer) indexer).get(offset() + i); } }
@Override public int getInt(long i) { if (dataType() == Type.DOUBLE) { return (int) ((DoubleIndexer) indexer).get(offset() + i); } else if (dataType() == Type.INT) { return ((IntIndexer) indexer).get(offset() + i); } else if (dataType() == Type.LONG) { return (int) ((LongIndexer) indexer).get(offset() + i); } else { return (int) ((FloatIndexer) indexer).get(offset() + i); } }
@Override public float getFloat(long i) { if (dataType() == Type.DOUBLE) { return (float) ((DoubleIndexer) indexer).get(offset() + i); } else if (dataType() == Type.INT) { return ((IntIndexer) indexer).get(offset() + i); } else if (dataType() == Type.LONG) { return ((LongRawIndexer) indexer).get(offset() + i); } else if (dataType() == Type.HALF) { return ((HalfIndexer) indexer).get(offset() + i); } else { return ((FloatIndexer) indexer).get(offset() + i); } }
hMultiplierIndexer.put(0, 0, hMultiplierIndexer.get(0, 0) / hMultiplierIndexer.get(2, 2)); //0 hMultiplierIndexer.put(0, 1, hMultiplierIndexer.get(0, 1) / hMultiplierIndexer.get(2, 2)); //1 hMultiplierIndexer.put(0, 2, hMultiplierIndexer.get(0, 2) / hMultiplierIndexer.get(2, 2)); //2 hMultiplierIndexer.put(1, 0, hMultiplierIndexer.get(1, 0) / hMultiplierIndexer.get(2, 2)); //3 hMultiplierIndexer.put(1, 1, hMultiplierIndexer.get(1, 1) / hMultiplierIndexer.get(2, 2)); //4 hMultiplierIndexer.put(1, 2, hMultiplierIndexer.get(1, 2) / hMultiplierIndexer.get(2, 2)); //5 hMultiplierIndexer.put(2, 0, hMultiplierIndexer.get(2, 0) / hMultiplierIndexer.get(2, 2)); //6 hMultiplierIndexer.put(2, 1, hMultiplierIndexer.get(2, 1) / hMultiplierIndexer.get(2, 2)); //7 hMultiplierIndexer.put(2, 2, hMultiplierIndexer.get(2, 2) / hMultiplierIndexer.get(2, 2)); //8 trajectoryCIndexer.put(0, i - 1, hMultiplierIndexer.get(0, 0)); //0 trajectoryCIndexer.put(1, i - 1, hMultiplierIndexer.get(0, 1)); //1 trajectoryCIndexer.put(2, i - 1, hMultiplierIndexer.get(0, 2)); //2 trajectoryCIndexer.put(3, i - 1, hMultiplierIndexer.get(1, 0)); //3 trajectoryCIndexer.put(4, i - 1, hMultiplierIndexer.get(1, 1)); //4 trajectoryCIndexer.put(5, i - 1, hMultiplierIndexer.get(1, 2)); //5 trajectoryCIndexer.put(6, i - 1, hMultiplierIndexer.get(2, 0)); //6 trajectoryCIndexer.put(7, i - 1, hMultiplierIndexer.get(2, 1)); //7 trajectoryCIndexer.put(8, i - 1, hMultiplierIndexer.get(2, 2)); //8 hSmoothedIndexer.put(0, 0, trajectorySmoothCIndexer.get(0, p - 1)); //0 hSmoothedIndexer.put(0, 1, trajectorySmoothCIndexer.get(1, p - 1)); //1 hSmoothedIndexer.put(0, 2, trajectorySmoothCIndexer.get(2, p - 1)); //2 hSmoothedIndexer.put(1, 0, trajectorySmoothCIndexer.get(3, p - 1)); //3 hSmoothedIndexer.put(1, 1, trajectorySmoothCIndexer.get(4, p - 1)); //4 hSmoothedIndexer.put(1, 2, trajectorySmoothCIndexer.get(5, p - 1)); //5 hSmoothedIndexer.put(2, 0, trajectorySmoothCIndexer.get(6, p - 1)); //6 hSmoothedIndexer.put(2, 1, trajectorySmoothCIndexer.get(7, p - 1)); //7 hSmoothedIndexer.put(2, 2, trajectorySmoothCIndexer.get(8, p - 1)); //8