File: modtest.5c

package info (click to toggle)
nickle 2.68-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 2,336 kB
  • ctags: 3,288
  • sloc: ansic: 31,198; yacc: 1,860; lex: 858; sh: 830; makefile: 229
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));