@@@ -3966,11 -3405,14 +3966,14 @@@ __isl_give isl_basic_map *isl_basic_map
if (!bmap)
return NULL;
- if (n == 0)
+ if (n == 0) {
+ bmap = isl_basic_map_reset(bmap, src_type);
+ bmap = isl_basic_map_reset(bmap, dst_type);
return bmap;
+ }
- isl_assert(bmap->ctx, src_pos + n <= isl_basic_map_dim(bmap, src_type),
- goto error);
+ if (isl_basic_map_check_range(bmap, src_type, src_pos, n) < 0)
+ return isl_basic_map_free(bmap);
if (dst_type == src_type && dst_pos == src_pos)
return bmap;
--- /dev/null
- if (1997 * ((5987 * c0 + 5989) / 5990) >= 1996 * c0 + 1986 && 3993 * ((5987 * c0 + 5989) / 5990) >= 3991 * c0 + 3993) {
- int c3 = min(c0 - (5987 * c0 + 5989) / 5990 + 1, c0 - (5987 * c0 + 5989) / 5990 - 32 * ((c0 + 59921) / 61907) + 33);
- for (int c4 = 1996 * c0 - 1997 * ((5987 * c0 + 5989) / 5990) + 1998; c4 <= 12; c4 += 1)
- S_3(c4, 1996 * c0 - 1997 * ((5987 * c0 + 5989) / 5990) + 1997, -3991 * c0 + 3993 * ((5987 * c0 + 5989) / 5990) - 3993);
- }
+ for (int c0 = 3993; c0 <= 63893; c0 += 1)
++ if (2 * c0 - 3993 * ((3 * c0 + 5990) / 5990) >= 0)
++ for (int c4 = -c0 + 1997 * ((3 * c0 + 5990) / 5990) + 1; c4 <= 12; c4 += 1)
++ S_3(c4, -c0 + 1997 * ((3 * c0 + 5990) / 5990), 2 * c0 - 3993 * ((3 * c0 + 5990) / 5990));