]> granicus.if.org Git - postgis/commitdiff
Add FP_EQUALS and bracket arguments for a little extra safety
authorPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 14 Sep 2009 18:15:18 +0000 (18:15 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 14 Sep 2009 18:15:18 +0000 (18:15 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@4496 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/liblwgeom.h

index 9d0658927712a446eaae876b6c535cf6c4049e5c..86230b99fe7033e0840d087b9dc2e0a86880c217 100644 (file)
 /*
  * Floating point comparitors.
  */
-#define PGIS_EPSILON 1e-12
-#define FP_MAX(A, B) ((A > B) ? A : B)
-#define FP_MIN(A, B) ((A < B) ? A : B)
-#define FP_LT(A, B) ((A + PGIS_EPSILON) < B)
-#define FP_LTEQ(A, B) ((A - PGIS_EPSILON) <= B)
-#define FP_GT(A, B) ((A - PGIS_EPSILON) > B)
-#define FP_GTEQ(A, B) ((A + PGIS_EPSILON) >= B)
+#define FP_TOLERANCE 1e-12
+#define FP_MAX(A, B) (((A) > (B)) ? (A) : (B))
+#define FP_MIN(A, B) (((A) < (B)) ? (A) : (B))
+#define FP_EQUALS(A, B) (fabs((A)-(B)) < FP_TOLERANCE)
+#define FP_LT(A, B) (((A) + FP_TOLERANCE) < (B))
+#define FP_LTEQ(A, B) (((A) - FP_TOLERANCE) <= (B))
+#define FP_GT(A, B) (((A) - FP_TOLERANCE) > (B))
+#define FP_GTEQ(A, B) (((A) + FP_TOLERANCE) >= (B))
 #define FP_CONTAINS_TOP(A, X, B) (FP_LT(A, X) && FP_LTEQ(X, B))
 #define FP_CONTAINS_BOTTOM(A, X, B) (FP_LTEQ(A, X) && FP_LT(X, B))
 #define FP_CONTAINS_INCL(A, X, B) (FP_LTEQ(A, X) && FP_LTEQ(X, B))