code: func (curve *KoblitzCurve) doubleJacobian(x1, y1, z1, x3, y3, z3 *fieldVal) {
  	// Doubling a point at infinity is still infinity.
  	if y1.IsZero() || z1.IsZero() {
  		x3.SetInt(0)
  		y3.SetInt(0)
  		z3.SetInt(0)
  		return
  	}
  
  	// Slightly faster point doubling can be achieved when the z value is 1
  	// by avoiding the multiplication on the z value.  This section calls
  	// a point doubling function which is accelerated by using that
  	// assumption when possible.
  	if z1.Normalize().Equals(fieldOne) {
  		curve.doubleZ1EqualsOne(x1, y1, x3, y3, z3)
  		return
  	}
  
  	// Fall back to generic point doubling which works with arbitrary z
  	// values.
  	curve.doubleGeneric(x1, y1, z1, x3, y3, z3)
  }
docs: // doubleJacobian doubles the passed Jacobian point (x1, y1, z1) and stores the
  // result in (x3, y3, z3).