summaryrefslogtreecommitdiff
path: root/Test/floats/test15.bpl
blob: 1dc549ace56e3e4d9b73648dd27ab3777d45a653 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//Translation from Muller_Kahan.c
//Should Verify
//NOTE:  (fp(....)) causes a compiler error!
//FAILS!  Heavily...

procedure main() returns () {
	var x0 : float(11 53);
	var x1 : float(11 53);
	var x2 : float(11 53);
	var i : int;
	
	x0 := fp(11 11 53) / fp(2 11 53);
	x1 := fp(61 11 53) / fp(11 11 53);
	i := 0;
	while (i < 100) {
		x2 := fp(1130 11 53) - fp(3000 11 53) / x0;
		x2 := fp(111 11 53) - x2 / x1;
		x0 := x1;
		x1 := x2;
		i := i + 1;
	}
	
	assert(x0 >= fp(99 11 53) && x0 <= fp(101 11 53));
}