code: int _side(double ptX, double ptY) {
  		Point2D v1 = new Point2D(ptX, ptY);
  		v1.sub(getStartXY());
  		Point2D v2 = new Point2D();
  		v2.sub(getEndXY(), getStartXY());
  		double cross = v2.crossProduct(v1);
  		double crossError = 4 * NumberUtils.doubleEps()
  				* (Math.abs(v2.x * v1.y) + Math.abs(v2.y * v1.x));
  		return cross > crossError ? -1 : cross < -crossError ? 1 : 0;
  	}
docs: of the roundoff error)