summaryrefslogtreecommitdiff
path: root/Test/floats/test6.bpl
blob: 6bef1137965498a455a55b010725f097ce02942b (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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//Translation from filter2.c
//Should give an error
//FAILS; doesn't generate terms!

procedure main() returns () {
	var E : float(11 53);
	var E0 : float(11 53);
	var E1 : float(11 53);
	var S : float(11 53);
	var S0 : float(11 53);
	var S1 : float(11 53);
	var i: int;
	
	havoc E;
	havoc E0;
	assume(E >= fp(0.0 11 53) && E <= fp(1.0 11 53));
	assume(E0 >= fp(0.0 11 53) && E0 <= fp(1.0 11 53));
	
	E1 := fp(0.0 11 53);
	S1 := fp(0.0 11 53);
	S0 := fp(0.0 11 53);
	S := fp(0.0 11 53);
	
	i := 0;
//	while (i <= 1000000)
//	{
		E1 := E0;
		E0 := E;
	
		havoc E;
		assume(E >= fp(0.0 11 53) && E <= fp(1.0 11 53));
		
		S1 := S0;
		S0 := S;
		S := E*fp(0.7 11 53) - E0*fp(1.3 11 53) + E1*fp(1.1 11 53) + S0*fp(1.4 11 53) - S1*fp(0.7 11 53);
		
		assert(S >= fp(-4.0 11 53) && S <= fp(4.0 11 53));
		//i := i + 1;
//	}
}