@Override public int getEffectiveK() { return (gadget_ != null) ? gadget_.getK() : maxK_; }
@Test public void maxK() { final UpdateDoublesSketch sketch = DoublesSketch.builder().setK(32768).build(); Assert.assertEquals(sketch.getK(), 32768); }
@Test public void differentLargerKDirect() { final DoublesUnion union = DoublesUnion.builder().setMaxK(128).build(); final UpdateDoublesSketch sketch1 = buildAndLoadDQS(256, 0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); sketch1.update(1.0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); }
@Test public void checkGetKFromEqs() { final UpdateDoublesSketch sketch = DoublesSketch.builder().build(); int k = sketch.getK(); double eps = DoublesSketch.getNormalizedRankError(k, false); double epsPmf = DoublesSketch.getNormalizedRankError(k, true); int kEps = DoublesSketch.getKFromEpsilon(eps, false); int kEpsPmf = DoublesSketch.getKFromEpsilon(epsPmf, true); assertEquals(kEps, k); assertEquals(kEpsPmf, k); }
@Test public void differentLargerK() { final DoublesUnion union = DoublesUnion.builder().setMaxK(128).build(); final UpdateDoublesSketch sketch1 = buildAndLoadQS(256, 0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); sketch1.update(1.0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); }
@Test public void differentEmptySmallerKDirect() { final int k128 = 128; final int k64 = 64; final DoublesUnion union = DoublesUnion.builder().setMaxK(k128).build(); assertTrue(union.isEmpty()); //gadget is null Assert.assertFalse(union.isDirect()); // byte[] unionByteArr = union.toByteArray(); // Assert.assertEquals(unionByteArr.length, 32 + 32); //empty final UpdateDoublesSketch sketch1 = buildAndLoadDQS(k64, 0); //build smaller empty sketch union.update(sketch1); assertTrue(union.isEmpty()); //gadget is valid Assert.assertFalse(union.isDirect()); // unionByteArr = union.toByteArray(); // int udBytes = DoublesSketch.getUpdatableStorageBytes(k64, 0); // Assert.assertEquals(unionByteArr.length, udBytes); //empty Assert.assertEquals(union.getResult().getK(), 128); sketch1.update(1.0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); }
@Test public void differentEmptySmallerK() { final int k128 = 128; final int k64 = 64; final DoublesUnion union = DoublesUnion.builder().setMaxK(k128).build(); assertTrue(union.isEmpty()); //gadget is null Assert.assertFalse(union.isDirect()); // byte[] unionByteArr = union.toByteArray(); // Assert.assertEquals(unionByteArr.length, 32 + 32); //empty final UpdateDoublesSketch sketch1 = buildAndLoadQS(k64, 0); //build smaller empty sketch union.update(sketch1); assertTrue(union.isEmpty()); //gadget is valid Assert.assertFalse(union.isDirect()); // unionByteArr = union.toByteArray(); // int udBytes = DoublesSketch.getUpdatableStorageBytes(k64, 0); // Assert.assertEquals(unionByteArr.length, udBytes); //empty Assert.assertEquals(union.getResult().getK(), 128); sketch1.update(1.0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); }
@Override public int getEffectiveK() { return (gadget_ != null) ? gadget_.getK() : maxK_; }
final int k = sketch.getK(); final long n = sketch.getN();
final int tgtK = tgt.getK(); final long srcN = src.getN(); final long tgtN = tgt.getN();
final int tgtK = tgt.getK(); final long tgtN = tgt.getN();
final WritableMemory dstMem) { final long memCap = dstMem.getCapacity(); final int k = sketch.getK(); final long n = sketch.getN(); checkDirectMemCapacity(k, n, memCap);
if (myQS.getK() <= other.getK()) { //I am smaller or equal, thus the target DoublesMergeImpl.mergeInto(other, myQS); ret = myQS;
final int k = sketch.getK(); final long n = sketch.getN();
final int tgtK = tgt.getK(); final long srcN = src.getN(); final long tgtN = tgt.getN();
final int tgtK = tgt.getK(); final long tgtN = tgt.getN();
final WritableMemory dstMem) { final long memCap = dstMem.getCapacity(); final int k = sketch.getK(); final long n = sketch.getN(); checkDirectMemCapacity(k, n, memCap);
if (myQS.getK() <= other.getK()) { //I am smaller or equal, thus the target DoublesMergeImpl.mergeInto(other, myQS); ret = myQS;