@Override public Vector<Double> make(double[] data) { long p = pos; final DiskBackedRealVector v = new DiskBackedRealVector(fileChannel, pos, data.length * SIZE_OF_DOUBLE); v.insertAll(data); pos += data.length * SIZE_OF_DOUBLE; return v; }
@Override public void divide(int idx, int val) { put(idx, doubleValue(idx) / val); }
@Override public double doubleValue(int idx) { final ByteBuffer d = data(); d.position(SIZE_OF_DOUBLE * idx); return d.getDouble(); }
@Override public int length() { return size(); }
@Override public int put(int idx, int value) { return (int) put(idx, value); }
@Override public Double value(int idx) { return doubleValue(idx); }
private void insertAll(double[] v) { final ByteBuffer d = data(); d.position(0); for (int i = 0; i < v.length; i++) { d.putDouble(v[i]); } }
@Override public boolean containsKey(int idx) { return idx >= 0 && idx < size(); }
@Override public Double put(Integer idx, Double n) { return put(idx.intValue(), n.doubleValue()); }
@Override public int intValue(int idx) { return (int) doubleValue(idx); }
@Override public void sub(int idx, double val) { put(idx, doubleValue(idx) - val); }
@Override public double put(int idx, double value) { final ByteBuffer d = data(); d.position(SIZE_OF_DOUBLE * idx); double rval = d.getDouble(); d.position(SIZE_OF_DOUBLE * idx); d.putDouble(value); return rval; }
@Override public Vector<Double> clone() { return new DiskBackedRealVector(channel, pos, length); }
@Override public IntSet keySet() { return new IntStreamSet(size()); }
@Override public void multiply(int idx, double val) { put(idx, doubleValue(idx) * val); }
@Override public void multiply(double n) { final ByteBuffer d = data(); for (int i = 0; i < length; i += SIZE_OF_DOUBLE) { d.position(i); double v = d.getDouble(); d.position(i); d.putDouble(v * n); } }
@Override public Vector<Double> make(int n, double defaultValue) { assert (defaultValue == 0.0); long p = pos; final DiskBackedRealVector v = new DiskBackedRealVector(fileChannel, pos, n * SIZE_OF_DOUBLE); pos += n * SIZE_OF_DOUBLE; return v; }
@Override public void divide(int idx, double val) { put(idx, doubleValue(idx) / val); }