mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-02 17:28:45 +02:00
39 lines
1022 B
Java
39 lines
1022 B
Java
|
package com.twitter.search.common.encoding.features;
|
||
|
|
||
|
/**
|
||
|
* Interface for compressing unbounded float values to a signed byte. It includes both
|
||
|
* normalization of values and encoding of values in a byte.
|
||
|
*/
|
||
|
public abstract class ByteNormalizer {
|
||
|
public static byte intToUnsignedByte(int i) {
|
||
|
return (byte) i;
|
||
|
}
|
||
|
|
||
|
public static int unsignedByteToInt(byte b) {
|
||
|
return (int) b & 0xFF;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the byte-compressed value of {@code val}.
|
||
|
*/
|
||
|
public abstract byte normalize(double val);
|
||
|
|
||
|
/**
|
||
|
* Returns a lower bound to the unnormalized range of {@code norm}.
|
||
|
*/
|
||
|
public abstract double unnormLowerBound(byte norm);
|
||
|
|
||
|
/**
|
||
|
* Returns an upper bound to the unnormalized range of {@code norm}.
|
||
|
*/
|
||
|
public abstract double unnormUpperBound(byte norm);
|
||
|
|
||
|
/**
|
||
|
* Returns true if the normalized value of {@code val} is different than the normalized value of
|
||
|
* {@code val - 1}
|
||
|
*/
|
||
|
public boolean changedNorm(double val) {
|
||
|
return normalize(val) != normalize(val - 1);
|
||
|
}
|
||
|
}
|