diff --git a/src/shadowswift/algorithm3d/delaunay.h b/src/shadowswift/algorithm3d/delaunay.h
index 48fe36877808f05f98db91e309194753f4b5aba5..379c965ad9432fa060884eedf6bc7878e3f91416 100644
--- a/src/shadowswift/algorithm3d/delaunay.h
+++ b/src/shadowswift/algorithm3d/delaunay.h
@@ -2256,8 +2256,8 @@ inline static void delaunay_compute_circumcenters(
     const double r3 =
         sqrt((cx - v3r[0]) * (cx - v3r[0]) + (cy - v3r[1]) * (cy - v3r[1]) +
              (cz - v3r[2]) * (cz - v3r[2]));
-    delaunay_assert(double_cmp(r0, r1, 6) && double_cmp(r0, r2, 6) &&
-                    double_cmp(r0, r3, 6));
+    delaunay_assert(approx_equals(r0, r1, 1e-6) &&
+                    approx_equals(r0, r2, 1e-6) && approx_equals(r0, r3, 1e-6));
 #endif
   }
 }
diff --git a/src/shadowswift/algorithm3d/geometry.h b/src/shadowswift/algorithm3d/geometry.h
index 0057075c19f5f71e03144416d6baf60992a01e58..9dd6545159d4c84e8612238bbdc24330dfb3e043 100644
--- a/src/shadowswift/algorithm3d/geometry.h
+++ b/src/shadowswift/algorithm3d/geometry.h
@@ -1035,20 +1035,24 @@ static inline double geometry3d_compute_circumradius2_adaptive(
                          circumcenter[2] * circumcenter[2];
 #ifdef SWIFT_DEBUG_CHECKS
   /* Check validity */
+  double c_non_rel[3] = {v0->x_f64[0] + circumcenter[0],
+                         v0->x_f64[1] + circumcenter[1],
+                         v0->x_f64[2] + circumcenter[2]};
   const double r12 =
-      (circumcenter[0] - v1->x_f64[0]) * (circumcenter[0] - v1->x_f64[0]) +
-      (circumcenter[1] - v1->x_f64[1]) * (circumcenter[1] - v1->x_f64[1]) +
-      (circumcenter[2] - v1->x_f64[2]) * (circumcenter[2] - v1->x_f64[2]);
+      (c_non_rel[0] - v1->x_f64[0]) * (c_non_rel[0] - v1->x_f64[0]) +
+      (c_non_rel[1] - v1->x_f64[1]) * (c_non_rel[1] - v1->x_f64[1]) +
+      (c_non_rel[2] - v1->x_f64[2]) * (c_non_rel[2] - v1->x_f64[2]);
   const double r22 =
-      (circumcenter[0] - v2->x_f64[0]) * (circumcenter[0] - v2->x_f64[0]) +
-      (circumcenter[1] - v2->x_f64[1]) * (circumcenter[1] - v2->x_f64[1]) +
-      (circumcenter[2] - v2->x_f64[2]) * (circumcenter[2] - v2->x_f64[2]);
+      (c_non_rel[0] - v2->x_f64[0]) * (c_non_rel[0] - v2->x_f64[0]) +
+      (c_non_rel[1] - v2->x_f64[1]) * (c_non_rel[1] - v2->x_f64[1]) +
+      (c_non_rel[2] - v2->x_f64[2]) * (c_non_rel[2] - v2->x_f64[2]);
   const double r32 =
-      (circumcenter[0] - v3->x_f64[0]) * (circumcenter[0] - v3->x_f64[0]) +
-      (circumcenter[1] - v3->x_f64[1]) * (circumcenter[1] - v3->x_f64[1]) +
-      (circumcenter[2] - v3->x_f64[2]) * (circumcenter[2] - v3->x_f64[2]);
-  assert(double_cmp(radius2, r12, 1e3) && double_cmp(radius2, r22, 1e3) &&
-         double_cmp(radius2, r32, 1e3));
+      (c_non_rel[0] - v3->x_f64[0]) * (c_non_rel[0] - v3->x_f64[0]) +
+      (c_non_rel[1] - v3->x_f64[1]) * (c_non_rel[1] - v3->x_f64[1]) +
+      (c_non_rel[2] - v3->x_f64[2]) * (c_non_rel[2] - v3->x_f64[2]);
+  assert(approx_equals(radius2, r12, 1e-6) &&
+         approx_equals(radius2, r22, 1e-6) &&
+         approx_equals(radius2, r32, 1e-6));
 #endif
 
   return radius2 * box_side * box_side;