private static Point edwards(Point a, Point b) {
    Point o = new Point();
    BigInteger xxyy = D_BI.multiply(a.x.multiply(b.x).multiply(a.y).multiply(b.y)).mod(P_BI);
    o.x =
        (a.x.multiply(b.y).add(b.x.multiply(a.y)))
            .multiply(BigInteger.ONE.add(xxyy).modInverse(P_BI))
            .mod(P_BI);
    o.y =
        (a.y.multiply(b.y).add(a.x.multiply(b.x)))
            .multiply(BigInteger.ONE.subtract(xxyy).modInverse(P_BI))
            .mod(P_BI);
    return o;
  }
Base point for the Edwards twisted curve = (x, 4/5) and its exponentiations. B_TABLE[i][j] =
(j+1)*256^i*B for i in [0, 32) and j in [0, 8). Base point B = B_TABLE[0][0]

<p>See {@link Ed25519ConstantsGenerator}.
java_src/src/main/java/com/google/crypto/tink/internal/Ed25519Constants.java