From: Paul Ramsey Date: Tue, 13 Oct 2009 19:50:45 +0000 (+0000) Subject: Much better fix for NaN area problem. X-Git-Tag: 1.5.0b1~373 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6839e6d5bc050c9624f51e3284def84ae182a5a7;p=postgis Much better fix for NaN area problem. git-svn-id: http://svn.osgeo.org/postgis/trunk@4647 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/lwgeodetic.c b/liblwgeom/lwgeodetic.c index 48071199e..9ebdbc686 100644 --- a/liblwgeom/lwgeodetic.c +++ b/liblwgeom/lwgeodetic.c @@ -628,14 +628,7 @@ static double sphere_excess(GEOGRAPHIC_POINT a, GEOGRAPHIC_POINT b, GEOGRAPHIC_P double sign = signum(hcb-hca); double ss = (a_dist + b_dist + c_dist) / 2.0; double E = tan(ss/2.0)*tan((ss-a_dist)/2.0)*tan((ss-b_dist)/2.0)*tan((ss-c_dist)/2.0); - /* This is a worrying hack, the number had to be tuned a lot to find - the dividing line between things so small they caused a NaN and - things large enough to effect the final output areas. Probably we - will have platform difficulties with this. - */ - if( fabs(E) < 1.0e-30 ) - E = 0.0; - return 4.0 * atan(sqrt(E)) * sign; + return 4.0 * atan(sqrt(fabs(E))) * sign; }