public static long binomial(LongPair pair) { Object find = pascal.get(pair); if (find == null) { long l = binomial(pair.x() - 1, pair.y() - 1); long r = binomial(pair.x() - 1, pair.y()); pascal.put(pair, new Long(l + r)); return l + r; } return ((Long) find).longValue(); }
private void internalReset(String term) throws IOException { if (indexFile != null) { if (index == null) { index = new ImmutableBTreeIndex.Reader<String, LongPair>( indexFile, new StringSerializer(), new LongPairSerializer(), false); } Generation.Entry<String, LongPair> e = index.floor(term); if (e == null) { e = index.first(); } lastTermBytes = e.getKey().getBytes(Charsets.UTF_8); lastTermByteBuffer = ByteBuffer.wrap(lastTermBytes); lastTermLength = lastTermBytes.length; lastString = null; final LongPair p = e.getValue(); refillBuffer(p.getFirst()); lastTermOffset = p.getSecond(); lastTermDocFreq = (int) readVLong(); done = false; while (decoder .decode((ByteBuffer) lastTermByteBuffer.position(0).limit(lastTermLength)) .toString() .compareTo(term) < 0 && next()) {} bufferNext = true; } else { lastTermLength = 0; lastTermOffset = 0L; lastTermDocFreq = 0; lastString = null; bufferLen = 0; bufferOffset = 0L; bufferPtr = 0; done = false; while (next() && new String(lastTermBytes, 0, lastTermLength, Charsets.UTF_8).compareTo(term) < 0) {} bufferNext = true; } }
/* (non-Javadoc) * @see eu.stratosphere.pact.runtime.plugable.TypeAccessorsV2#putNormalizedKey(java.lang.Object, byte[], int, int) */ @Override public void putNormalizedKey(LongPair record, byte[] target, int offset, int len) { final long value = record.getKey(); if (len == 8) { // default case, full normalized key long highByte = ((value >>> 56) & 0xff); highByte -= Byte.MIN_VALUE; target[offset] = (byte) highByte; target[offset + 1] = (byte) (value >>> 48); target[offset + 2] = (byte) (value >>> 40); target[offset + 3] = (byte) (value >>> 32); target[offset + 4] = (byte) (value >>> 24); target[offset + 5] = (byte) (value >>> 16); target[offset + 6] = (byte) (value >>> 8); target[offset + 7] = (byte) (value); } else if (len <= 0) { } else if (len < 8) { long highByte = ((value >>> 56) & 0xff); highByte -= Byte.MIN_VALUE; target[offset] = (byte) highByte; len--; for (int i = 1; len > 0; len--, i++) { target[offset + i] = (byte) (value >>> ((7 - i) << 3)); } } else { long highByte = ((value >>> 56) & 0xff); highByte -= Byte.MIN_VALUE; target[offset] = (byte) highByte; target[offset + 1] = (byte) (value >>> 48); target[offset + 2] = (byte) (value >>> 40); target[offset + 3] = (byte) (value >>> 32); target[offset + 4] = (byte) (value >>> 24); target[offset + 5] = (byte) (value >>> 16); target[offset + 6] = (byte) (value >>> 8); target[offset + 7] = (byte) (value); for (int i = 8; i < len; i++) { target[offset + i] = 0; } } }
public boolean equalToReference(LongPair candidate) { return candidate.getKey() == this.reference; }
public void setReferenceForEquality(LongPair reference) { this.reference = reference.getKey(); }
/* (non-Javadoc) * @see eu.stratosphere.pact.runtime.plugable.TypeAccessorsV2#hash(java.lang.Object) */ @Override public int hash(LongPair object) { final long key = object.getKey(); return ((int) (key >>> 32)) ^ ((int) key); }
/* (non-Javadoc) * @see eu.stratosphere.pact.runtime.plugable.TypeAccessorsV2#deserialize(java.lang.Object, eu.stratosphere.nephele.services.memorymanager.DataInputView) */ @Override public void deserialize(LongPair target, DataInputViewV2 source) throws IOException { target.setKey(source.readLong()); target.setValue(source.readLong()); }
/* (non-Javadoc) * @see eu.stratosphere.pact.runtime.plugable.TypeAccessorsV2#serialize(java.lang.Object, eu.stratosphere.nephele.services.memorymanager.DataOutputView) */ @Override public long serialize(LongPair record, DataOutputViewV2 target) throws IOException { target.writeLong(record.getKey()); target.writeLong(record.getValue()); return 16; }
/* (non-Javadoc) * @see eu.stratosphere.pact.runtime.plugable.TypeAccessorsV2#copyTo(java.lang.Object, java.lang.Object) */ @Override public void copyTo(LongPair from, LongPair to) { to.setKey(from.getKey()); to.setValue(from.getValue()); }
/* (non-Javadoc) * @see eu.stratosphere.pact.runtime.plugable.TypeAccessorsV2#createCopy(java.lang.Object) */ @Override public LongPair createCopy(LongPair from) { return new LongPair(from.getKey(), from.getValue()); }