encode_precise()
This is significantly slower than `encode()`, but a little more precise.
Tests random vectors, and makes sure that encoding/decoding round trip only introduces precision errors below a certain threshold. Pretty confident that the implementation is correct now.