public static Vector<Integer> filter(final IntSet salients, final Vector<Integer> source) { final SparseIntArray filtered = new SparseIntArray(source.length()); for (int i : salients) { filtered.add(i, source.value(i)); } return filtered; }
public static Vector<Double> solveT(SparseMatrix<Double> a, Vector<Double> b) { assert (a.cols() == b.length()); final int N = b.length(); Vector<Double> y = new SparseRealArray(N); for (int i = N - 1; i >= 0; i--) { double sum = b.doubleValue(i); for (int j = i + 1; j < N; j++) { sum -= a.doubleValue(j, i) * y.doubleValue(j); } y.put(i, sum / a.doubleValue(i, i)); } return y; }
public static SparseIntArray histogram(int[] vector, int W) { final SparseIntArray hist = new SparseIntArray(W); for (int i : vector) { hist.inc(i); } return hist; }
@Override public <M extends Number> void sub(Vector<M> vector) { assert (vector.length() != length / SIZE_OF_DOUBLE); 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 - vector.doubleValue(i / SIZE_OF_DOUBLE)); } }
@Override public double[][] toDoubleArray() { double[][] d = new double[rows()][cols()]; for (int i = 0; i < rows(); i++) { for (int j = 0; j < rows(); j++) { d[i][j] = doubleValue(i, j); } } return d; }
@Override public double[][] toDoubleArray() { double[][] d = new double[rows()][cols()]; for (int i = 0; i < rows(); i++) { for (int j = 0; j < rows(); j++) { d[i][j] = doubleValue(i, j); } } return d; } }
@Override public IntSet keySet() { return new IntStreamSet(size()); }
@Override public IntSet keySet() { return new IntStreamSet(size()); }
@Override public IntSet keySet() { return new IntStreamSet(size()); }
/** * For compatibility in the IR experiments: this returns the 'predicted' * TF-vector in the target language, which is of course the same vector * * @param termVec The term vector in the target language * @return The same vector as a 'predicted' vector */ @Override public Vector<Double> simVecTarget(Vector<Integer> termVec) { return new Integer2DoubleVector(termVec); } }
@Override public <M extends Number> void sub(Matrix<M> matrix) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { data[i][j] -= matrix.doubleValue(i, j); } } }
public boolean add(int e) { if (size >= vals.length) { expand(); } vals[size++] = e; return true; }
@Override public Vector<Integer> apply(Vector<Integer> v) { return mult(v); } };
/** * Compute the sum of the array * * @return */ public Double sum() { double sum = n * defaultValue; for (double v : values()) { sum += v - defaultValue; } return sum; }
@Override public Vector<Double> apply(Vector<Double> v) { return mult(v); } };
@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; }
public static Vector<Double> solve(SparseMatrix<Double> a, Vector<Double> b) { assert (a.cols() == b.length()); final int N = b.length(); Vector<Double> y = new SparseRealArray(N); for (int i = 0; i < N; i++) { double sum = b.doubleValue(i); for (int j = 0; j < i; j++) { sum -= a.doubleValue(i, j) * y.doubleValue(j); } y.put(i, sum / a.doubleValue(i, i)); } return y; }
@Override public <M extends Number> void add(Matrix<M> matrix) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { data[i][j] += matrix.doubleValue(i, j); } } }