Files
why3/examples/micro-c/mult.c
Jean-Christophe Filliatre c999f70d56 bench of Python/Micro-C files
added sessions for Python examples
2021-07-08 14:45:49 +02:00

24 lines
343 B
C

// la multiplication dite russe
int mult(int a, int b)
//@ ensures result == a * b;
{ int p = a;
int q = b;
if (q < 0) {
p = -a;
q = -b;
}
int r = 0;
while (q) {
//@ invariant 0 <= q;
//@ invariant r + p * q == a * b;
//@ variant q;
if (q % 2 == 1)
r += p;
p *= 2;
q /= 2;
}
return r;
}