diff options
| author | Mattias Andrée <m@maandree.se> | 2025-12-27 16:56:35 +0100 |
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2025-12-27 16:56:35 +0100 |
| commit | f80ec8dbcb08e7b638b60ad42cd8b1b50926e13c (patch) | |
| tree | 99cbe20d1667149cb327a7687a316e0a7963bfac /libj2_j2i_sub_ji.c | |
| parent | Add signed arithmetics (diff) | |
| download | libj2-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.c | 12 |
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); |
