I am working with Frama-C formal specification for two methods:
/*@ requires n >= 0;
ensures result >= 0;
terminates n == 0;
*/
int decimal_binary(int n)
{
int rem, i = 1, binary = 0;
while (n != 0)
{
rem = n % 2;
n /= 2;
binary += rem * i;
i *= 10;
}
return binary;
}
/*@ requires n >= 0;
ensures result >= 0;
terminates n == 0;
*/
int binary_decimal(int n)
{
int decimal = 0, i = 1, rem;
while (n != 0)
{
rem = n % 10;
n /= 10;
decimal += rem * i;
i = i << 1;
}
return decimal;
}
This above is what i got after my current work. I dont have idea how describe variables and loops.