forgot the header file
optionally time different implementations
dynamically choose between genuine 128-bit cubing and multiply with square depending on discriminant size.  we do this because for discriminants < 69 bits, genuine cubing is faster, otherwise multiply with square is faster