static void Main(String[] args) { using (var writer = new StreamWriter("output.csv", false)) { writer.WriteLine(",min,elias-omega,elias-gamma,elias-delta,fibonacci,vlq(7),thompson-alpha(6)"); for (UInt64 i = 1; i < UInt64.MaxValue / 10; i *= 2) { writer.Write(i); writer.Write(","); writer.Write(Bits.CountUsed(i)); writer.Write(","); writer.Write(EliasOmegaUnsignedWriter.CalculateBitLength(i)); writer.Write(","); writer.Write(EliasGammaUnsignedWriter.CalculateBitLength(i)); writer.Write(","); writer.Write(EliasDeltaUnsignedWriter.CalculateBitLength(i)); writer.Write(","); writer.Write(FibonacciUnsignedWriter.CalculateBitLength(i)); writer.Write(","); writer.Write(VLQUnsignedWriter.CalculateBitLength(7, i)); writer.Write(","); writer.Write(ThompsonAlphaUnsignedWriter.CalculateBitLength(6, i)); writer.WriteLine(); } } }
public void WriteRead_First1000() { for (ulong input = 0; input < 1000; input++) { var encoded = FibonacciUnsignedWriter.WriteOneDefault(input); var output = FibonacciUnsignedReader.ReadOneDefault(encoded); Assert.AreEqual(input, output); } }
public void Write_13_13_13() { using (var stream = new MemoryStream()) { using (var writer = new FibonacciUnsignedWriter(stream)) { writer.Write(13); writer.Write(13); writer.Write(13); } Assert.AreEqual("10000111 00001110 00011000", stream.ToArray().ToBinaryString()); } }
public void WriteRead_First1000_Appending() { ulong min = 0; ulong max = 1000; using (var stream = new MemoryStream()) { using (var writer = new FibonacciUnsignedWriter(stream)) { for (var i = min; i < max; i++) { writer.Write(i); } } stream.Position = 0; using (var reader = new FibonacciUnsignedReader(stream)) { for (var i = min; i < max; i++) { Assert.AreEqual(i, reader.Read()); } } } }
private string Write(ulong value) { return(FibonacciUnsignedWriter.WriteOneDefault(value).ToBinaryString()); }
public void WriteRead_100000000000000() { var encoded = FibonacciUnsignedWriter.WriteOneDefault(100000000000000); Assert.AreEqual((ulong)100000000000000, FibonacciUnsignedReader.ReadOneDefault(encoded)); }