294{
296 int i;
297 int ndims_a, ndims_b;
298
299 POSTGIS_DEBUG(5, "entered function");
300
301 if (!a && !b)
302 {
303 elog(ERROR, "gidx_union_edge received two null arguments");
304 return 0.0;
305 }
306
309
312
314 return 0.0;
315
316
318
319 ndims_a = GIDX_NDIMS(a);
320 ndims_b = GIDX_NDIMS(b);
321
322
323 result = Max(GIDX_GET_MAX(a, 0), GIDX_GET_MAX(b, 0)) - Min(GIDX_GET_MIN(a, 0), GIDX_GET_MIN(b, 0));
324
325
326 for (i = 1; i < ndims_b; i++)
327 result += (Max(GIDX_GET_MAX(a, i), GIDX_GET_MAX(b, i)) - Min(GIDX_GET_MIN(a, i), GIDX_GET_MIN(b, i)));
328
329
330 for (i = ndims_b; i < ndims_a; i++)
331 result += (GIDX_GET_MAX(a, i) - GIDX_GET_MIN(a, i));
332
333 POSTGIS_DEBUGF(5,
"edge( %s union %s ) = %.12g", gidx_to_string(a), gidx_to_string(b),
result);
334
336}
char result[OUT_DOUBLE_BUFFER_SIZE]
bool gidx_is_unknown(const GIDX *a)
static float gidx_volume(GIDX *a)
static void gidx_dimensionality_check(GIDX **a, GIDX **b)