code: func (curve *KoblitzCurve) Double(x1, y1 *big.Int) (*big.Int, *big.Int) {
  	if y1.Sign() == 0 {
  		return new(big.Int), new(big.Int)
  	}
  
  	// Convert the affine coordinates from big integers to field values
  	// and do the point doubling in Jacobian projective space.
  	fx1, fy1 := curve.bigAffineToField(x1, y1)
  	fx3, fy3, fz3 := new(fieldVal), new(fieldVal), new(fieldVal)
  	fOne := new(fieldVal).SetInt(1)
  	curve.doubleJacobian(fx1, fy1, fOne, fx3, fy3, fz3)
  
  	// Convert the Jacobian coordinate field values back to affine big
  	// integers.
  	return curve.fieldJacobianToBigAffine(fx3, fy3, fz3)
  }
docs: // Double returns 2*(x1,y1). Part of the elliptic.Curve interface.