code: func (c *twistPoint) IsOnCurve() bool {
  	pool := new(bnPool)
  	yy := newGFp2(pool).Square(c.y, pool)
  	xxx := newGFp2(pool).Square(c.x, pool)
  	xxx.Mul(xxx, c.x, pool)
  	yy.Sub(yy, xxx)
  	yy.Sub(yy, twistB)
  	yy.Minimal()
  
  	if yy.x.Sign() != 0 || yy.y.Sign() != 0 {
  		return false
  	}
  	cneg := newTwistPoint(pool)
  	cneg.Mul(c, Order, pool)
  	return cneg.z.IsZero()
  }
docs: // IsOnCurve returns true iff c is on the curve where c must be in affine form.