static void square(long[] output, long[] in) {
    long[] t = new long[19];
    squareInner(t, in);
    // |t[i]| < 14*2^54 because the largest product of two limbs will be < 2^(27+27) and SquareInner
    // adds together, at most, 14 of those products.
    reduce(t, output);
  }
Returns in^2.

<p>On entry: The |in| argument is in reduced coefficients form and |in[i]| < 2^27.

<p>On exit: The |output| argument is in reduced coefficients form (indeed, one need only
provide storage for 10 limbs) and |out[i]| < 2^26.
java_src/src/main/java/com/google/crypto/tink/internal/Field25519.java