File: modtest.5c

package info (click to toggle)
nickle 2.107
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 3,756 kB
  • sloc: ansic: 27,954; yacc: 1,874; lex: 954; sh: 204; makefile: 13; lisp: 1
file content (21 lines) | stat: -rw-r--r-- 543 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void check(real n, real d) {
    real q = n // d;
    real r = n % d;
    assert(is_int(q), "non-integral quotient %v", q);
    assert(r >= 0, "negative remainder %v", r);
    assert(r < abs(d), "too-large remainder %v", r);
    real recons = q * d + r;
    assert(recons == n, "wrong reconstruction %v", recons);
}

void all_signs(real n, real d) {
    check(n, d);
    check(-n, d);
    check(n, -d);
    check(-n, -d);
}

all_signs(7, 3);
all_signs(7 * (1<<32), 3 * (1<<32));
all_signs(7/2, 3/2);
all_signs(imprecise(7/2), imprecise(3/2));