commit bd0e227c7e3059e4c71a9aa6ca824673a8d4d4a6
parent 3c8040f2d15fd247c66f0715591e961cf3dd2ad5
Author: Johannes Felzmann <64841415+johannesfelzmann@users.noreply.github.com>
Date: Sun, 7 Jan 2024 15:40:11 +0100
Merge pull request #9 from markhun/sum-optimizations
Sum optimizations
Diffstat:
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/magichex/src/magichex.c b/magichex/src/magichex.c
@@ -79,10 +79,10 @@ CHANGE_IDENTIFIER sethi(HexagonEntry *hexagonEntry, long x) {
assert(hexagonEntry->id != PLACEHOLDER_ENTRY_ID);
if (x < hexagonEntry->hi) {
hexagonEntry->hi = x;
- if (hexagonEntry->lo <= hexagonEntry->hi)
- return CHANGED;
+ if (hexagonEntry->lo > hexagonEntry->hi)
+ return NOSOLUTION;
else
- return NOCHANGE;
+ return CHANGED;
}
return NOCHANGE;
}
@@ -91,10 +91,10 @@ CHANGE_IDENTIFIER setlo(HexagonEntry *hexagonEntry, long x) {
assert(hexagonEntry->id != PLACEHOLDER_ENTRY_ID);
if (x > hexagonEntry->lo) {
hexagonEntry->lo = x;
- if (hexagonEntry->lo <= hexagonEntry->hi)
- return CHANGED;
- else
+ if (hexagonEntry->lo > hexagonEntry->hi)
return NOSOLUTION;
+ else
+ return CHANGED;
}
return NOCHANGE;
}
@@ -134,6 +134,10 @@ CHANGE_IDENTIFIER sum(HexagonEntry hexagon[], unsigned long nv, unsigned long st
hi -= hexagonEntry_p->lo;
lo -= hexagonEntry_p->hi;
}
+
+ if(hi < lo){
+ return NOSOLUTION;
+ }
/* hi is the upper bound of sum-sum(hexagon), lo the lower bound */
for (i=0, hexagonEntry_p=hexagon; i<nv; i++, hexagonEntry_p+=stride) {
CHANGE_IDENTIFIER f = sethi(hexagonEntry_p,hi+hexagonEntry_p->lo); /* readd hexagonEntry_p->lo to get an upper bound of hexagonEntry_p */