1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 public class Main {
floatTest()18     public static void floatTest() {
19       float f = 0;
20       float nf = -0;
21       float fc = 1f;
22       for (int i = 0; i < 2; i++) {
23         f -= fc;
24         f = -f;
25         nf -= fc;
26         nf = -nf;
27       }
28 
29       System.out.println(f);
30       System.out.println(nf);
31       System.out.println(f + 0f);
32       System.out.println(f - (-0f));
33       System.out.println(-f - (-nf));
34       System.out.println(-f + (-nf));
35     }
36 
doubleTest()37     public static void doubleTest() {
38       double d = 0;
39       double nd = -0;
40       double dc = 1f;
41       for (int i = 0; i < 2; i++) {
42         d -= dc;
43         d = -d;
44         nd -= dc;
45         nd = -nd;
46       }
47 
48       System.out.println(d);
49       System.out.println(nd);
50       System.out.println(d + 0f);
51       System.out.println(d - (-0f));
52       System.out.println(-d - (-nd));
53       System.out.println(-d + (-nd));
54     }
55 
bug_1()56     public static void bug_1() {
57       int i4=18, i3=-48959;
58       float d;
59       float f=-0.0f;
60       float a=0.0f;
61 
62       d = -f + (-a);
63       f += i4 * i3;
64 
65       System.out.println("d " + d);
66     }
67 
main(String[] args)68     public static void main(String[] args) {
69         doubleTest();
70         floatTest();
71         bug_1();
72     }
73 
74 }
75