@Override public void multiply(double n) { for (Map.Entry<Integer, Double> e : entrySet()) { e.setValue(e.getValue() * n); } defaultValue *= n; }
/** * Convert to a dense array */ public double[] toArray() { double[] arr = new double[n]; for (Map.Entry<Integer, Double> entry : entrySet()) { arr[entry.getKey()] = entry.getValue(); } return arr; }
@Override public String toString() { if (isEmpty()) { return ""; } StringBuilder sb = new StringBuilder(); for (Map.Entry<Integer, Double> entry : entrySet()) { sb.append(",").append(entry.getKey().toString()).append("=").append(entry.getValue().toString()); } return sb.substring(1); }
@Override @SuppressWarnings("unchecked") public <M extends Number, O extends Number> Matrix<O> outerProduct(Vector<M> y, Vectors.Factory<O> using) { if (using == Vectors.AS_INTS) { int[][] data2 = new int[n][y.length()]; for (Map.Entry<Integer, Double> e : entrySet()) { for (int j = 0; j < y.length(); j++) { data2[e.getKey()][j] = (int) (e.getValue().doubleValue() * y.doubleValue(j)); } } return (Matrix<O>) new IntArrayMatrix(data2); } else if (using == Vectors.AS_REALS) { double[][] data2 = new double[n][y.length()]; for (Map.Entry<Integer, Double> e : entrySet()) { for (int j = 0; j < y.length(); j++) { data2[e.getKey()][j] = y.doubleValue(j) * e.getValue().doubleValue(); } } return (Matrix<O>) new DoubleArrayMatrix(data2); } else { final SparseMatrix<O> matrix = new SparseMatrix<O>(n, y.length(), using); for (Map.Entry<Integer, Double> e : entrySet()) { for (Map.Entry<Integer, M> e2 : y.entrySet()) { matrix.set(e.getKey(), e2.getKey(), e2.getValue().doubleValue() * e.getKey().doubleValue()); } } return matrix; } }
if (defaultValue == 0) { double innerProduct = 0; for (Map.Entry<Integer, Double> e : entrySet()) { innerProduct += e.getValue().doubleValue() * y2[e.getKey()]; if (defaultValue == 0) { double innerProduct = 0; for (Map.Entry<Integer, Double> e : entrySet()) { innerProduct += e.getValue().doubleValue() * y2[e.getKey()]; double innerProduct = 0.0; if (this.size() <= y.size()) { for (Map.Entry<Integer, Double> e : entrySet()) { innerProduct += e.getValue().doubleValue() * y.doubleValue(e.getKey()); double innerProduct = 0; int notBothSparse = 0; for (Map.Entry<Integer, Double> e : entrySet()) { innerProduct += e.getValue().doubleValue() * y.doubleValue(e.getKey()); notBothSparse++;