--- src/s2/s2edge_crossings.cc.orig 2023-04-28 23:28:39.000000000 +0800 +++ src/s2/s2edge_crossings.cc 2023-05-18 18:05:32.000000000 +0800 @@ -459,7 +459,7 @@ constexpr T T_ERR = rounding_epsilon(); constexpr T kMinNormalLength = (16 * kSqrt3 + 24) * DBL_ERR; - constexpr T kMinResultLen = + const T kMinResultLen = 12 / (kIntersectionError.radians() / T_ERR - (2 + 2 * kSqrt3)); // On some platforms "long double" is the same as "double", and on these --- src/s2/s2predicates.cc.orig 2023-04-28 23:28:39.000000000 +0800 +++ src/s2/s2predicates.cc 2023-05-19 01:05:41.000000000 +0800 @@ -932,7 +932,7 @@ // Reference: // Error Estimation Of Floating-Point Summation And Dot Product, Rump // 2011 - constexpr T kMaxError = 3.046875 * std::numeric_limits::epsilon(); + const T kMaxError = 3.046875 * std::numeric_limits::epsilon(); T na = a.DotProd(b); if (std::fabs(na) <= kMaxError) return 0;