aboutsummaryrefslogtreecommitdiffstats
path: root/libj2_j2i_sub_ji.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2025-12-27 16:56:35 +0100
committerMattias Andrée <m@maandree.se>2025-12-27 16:56:35 +0100
commitf80ec8dbcb08e7b638b60ad42cd8b1b50926e13c (patch)
tree99cbe20d1667149cb327a7687a316e0a7963bfac /libj2_j2i_sub_ji.c
parentAdd signed arithmetics (diff)
downloadlibj2-f80ec8dbcb08e7b638b60ad42cd8b1b50926e13c.tar.gz
libj2-f80ec8dbcb08e7b638b60ad42cd8b1b50926e13c.tar.bz2
libj2-f80ec8dbcb08e7b638b60ad42cd8b1b50926e13c.tar.xz
Testing
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to '')
-rw-r--r--libj2_j2i_sub_ji.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libj2_j2i_sub_ji.c b/libj2_j2i_sub_ji.c
index b65d6ae..27bf013 100644
--- a/libj2_j2i_sub_ji.c
+++ b/libj2_j2i_sub_ji.c
@@ -43,19 +43,31 @@ validate(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low, u
overflow = 0;
libj2_minus_j2u(&a);
libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r);
+ EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a));
} else if (a_neg) {
overflow = -libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r);
+ EXPECT(overflow == 0 || overflow == -1);
libj2_minus_j2i(&r);
if (!libj2_j2i_is_negative(&r))
overflow = -1;
+ else if (overflow)
+ EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a));
+ if (!overflow)
+ EXPECT(libj2_j2i_le_j2i(&r, (const void *)&a));
} else if (b_neg) {
overflow = +libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r);
+ EXPECT(overflow == 0 || overflow == +1);
if (!libj2_j2i_is_positive(&r))
overflow = +1;
+ else if (overflow)
+ EXPECT(libj2_j2i_lt_j2i(&r, (const void *)&a));
+ if (!overflow)
+ EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a));
} else {
overflow = 0;
libj2_minus_j2u(&b);
libj2_j2u_add_j2u_to_j2u(&a, &b, (void *)&r);
+ EXPECT(libj2_j2i_le_j2u(&r, &a));
}
EXPECT(r.high == r_high);