public void testPlusEquals() {
    HashedSparseVector s = (HashedSparseVector) s1.cloneMatrix();
    s.plusEqualsSparse(s2, 2.0);
    checkAnswer(s, new double[] {3, 5, 7, 6, 7});

    HashedSparseVector s2p = new HashedSparseVector(new int[] {13}, new double[] {0.8});
    s.plusEqualsSparse(s2p, 1.0);
    checkAnswer(s, new double[] {3, 5, 7, 6.8, 7});

    HashedSparseVector s3p = new HashedSparseVector(new int[] {14}, new double[] {0.8});
    s.plusEqualsSparse(s3p, 1.0);
    checkAnswer(s, new double[] {3, 5, 7, 6.8, 7}); // verify s unchanged

    HashedSparseVector s4 =
        new HashedSparseVector(new int[] {7, 14, 15}, new double[] {0.2, 0.8, 1.2});
    s.plusEqualsSparse(s4, 1.0);
    checkAnswer(s, new double[] {3, 5, 7.2, 6.8, 8.2});

    HashedSparseVector s5 = new HashedSparseVector(new int[] {7}, new double[] {0.2});
    s5.plusEqualsSparse(s1);
    for (int i = 0; i < s5.numLocations(); i++) {
      assertEquals(7, s5.indexAtLocation(i));
      assertEquals(3.2, s5.valueAtLocation(i), 0.0);
    }

    HashedSparseVector s6 = new HashedSparseVector(new int[] {7}, new double[] {0.2});
    s6.plusEqualsSparse(s1, 3.5);
    for (int i = 0; i < s6.numLocations(); i++) {
      assertEquals(7, s6.indexAtLocation(i));
      assertEquals(10.7, s6.valueAtLocation(i), 0.0);
    }
  }
 public void testCloneMatrixZeroed() {
   HashedSparseVector s = (HashedSparseVector) s1.cloneMatrixZeroed();
   for (int i = 0; i < s.numLocations(); i++) {
     assertTrue(s.valueAtLocation(i) == 0.0);
     assertTrue(s.indexAtLocation(i) == idxs[i]);
   }
 }