xref: /aosp_15_r20/art/test/410-floats/src/Main.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2014 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker public class Main {
main(String[] args)18*795d594fSAndroid Build Coastguard Worker   public static void main(String[] args) {
19*795d594fSAndroid Build Coastguard Worker     assertEquals(4.2f, returnFloat());
20*795d594fSAndroid Build Coastguard Worker     float[] a = new float[2];
21*795d594fSAndroid Build Coastguard Worker     a[0] = 42.2f;
22*795d594fSAndroid Build Coastguard Worker     a[1] = 3.2f;
23*795d594fSAndroid Build Coastguard Worker     assertEquals(45.4f, returnFloat(a));
24*795d594fSAndroid Build Coastguard Worker 
25*795d594fSAndroid Build Coastguard Worker     assertEquals(4.4, returnDouble());
26*795d594fSAndroid Build Coastguard Worker     double[] b = new double[1];
27*795d594fSAndroid Build Coastguard Worker     b[0] = 42.4;
28*795d594fSAndroid Build Coastguard Worker     assertEquals(42.4, returnDouble(b));
29*795d594fSAndroid Build Coastguard Worker 
30*795d594fSAndroid Build Coastguard Worker     assertEquals(4.2f, invokeReturnFloat());
31*795d594fSAndroid Build Coastguard Worker     assertEquals(4.4, invokeReturnDouble());
32*795d594fSAndroid Build Coastguard Worker     assertEquals(4.2f, takeAFloat(4.2f));
33*795d594fSAndroid Build Coastguard Worker     assertEquals(3.1, takeADouble(3.1));
34*795d594fSAndroid Build Coastguard Worker     assertEquals(12.7, takeThreeDouble(3.1, 4.4, 5.2));
35*795d594fSAndroid Build Coastguard Worker     assertEquals(12.7f, takeThreeFloat(3.1f, 4.4f, 5.2f));
36*795d594fSAndroid Build Coastguard Worker     assertEquals(4.2f, invokeTakeAFloat(4.2f));
37*795d594fSAndroid Build Coastguard Worker     assertEquals(3.1, invokeTakeADouble(3.1));
38*795d594fSAndroid Build Coastguard Worker     assertEquals(12.7, invokeTakeThreeDouble(3.1, 4.4, 5.2));
39*795d594fSAndroid Build Coastguard Worker     assertEquals(12.7f, invokeTakeThreeFloat(3.1f, 4.4f, 5.2f));
40*795d594fSAndroid Build Coastguard Worker 
41*795d594fSAndroid Build Coastguard Worker     testArrayOperations(new float[2], 0, 1.2f, 3.4f);
42*795d594fSAndroid Build Coastguard Worker     testArrayOperations(new double[2], 0, 4.1, 7.6);
43*795d594fSAndroid Build Coastguard Worker   }
44*795d594fSAndroid Build Coastguard Worker 
invokeReturnFloat()45*795d594fSAndroid Build Coastguard Worker   public static float invokeReturnFloat() {
46*795d594fSAndroid Build Coastguard Worker     return returnFloat();
47*795d594fSAndroid Build Coastguard Worker   }
48*795d594fSAndroid Build Coastguard Worker 
invokeReturnDouble()49*795d594fSAndroid Build Coastguard Worker   public static double invokeReturnDouble() {
50*795d594fSAndroid Build Coastguard Worker     return returnDouble();
51*795d594fSAndroid Build Coastguard Worker   }
52*795d594fSAndroid Build Coastguard Worker 
returnFloat()53*795d594fSAndroid Build Coastguard Worker   public static float returnFloat() {
54*795d594fSAndroid Build Coastguard Worker     return 4.2f;
55*795d594fSAndroid Build Coastguard Worker   }
56*795d594fSAndroid Build Coastguard Worker 
returnFloat(float[] a)57*795d594fSAndroid Build Coastguard Worker   public static float returnFloat(float[] a) {
58*795d594fSAndroid Build Coastguard Worker     return a[0] + a[1];
59*795d594fSAndroid Build Coastguard Worker   }
60*795d594fSAndroid Build Coastguard Worker 
returnDouble()61*795d594fSAndroid Build Coastguard Worker   public static double returnDouble() {
62*795d594fSAndroid Build Coastguard Worker     return 4.4;
63*795d594fSAndroid Build Coastguard Worker   }
64*795d594fSAndroid Build Coastguard Worker 
returnDouble(double[] a)65*795d594fSAndroid Build Coastguard Worker   public static double returnDouble(double[] a) {
66*795d594fSAndroid Build Coastguard Worker     return a[0];
67*795d594fSAndroid Build Coastguard Worker   }
68*795d594fSAndroid Build Coastguard Worker 
takeAFloat(float a)69*795d594fSAndroid Build Coastguard Worker   public static float takeAFloat(float a) {
70*795d594fSAndroid Build Coastguard Worker     return a;
71*795d594fSAndroid Build Coastguard Worker   }
72*795d594fSAndroid Build Coastguard Worker 
takeADouble(double a)73*795d594fSAndroid Build Coastguard Worker   public static double takeADouble(double a) {
74*795d594fSAndroid Build Coastguard Worker     return a;
75*795d594fSAndroid Build Coastguard Worker   }
76*795d594fSAndroid Build Coastguard Worker 
takeThreeDouble(double a, double b, double c)77*795d594fSAndroid Build Coastguard Worker   public static double takeThreeDouble(double a, double b, double c) {
78*795d594fSAndroid Build Coastguard Worker     return a + b + c;
79*795d594fSAndroid Build Coastguard Worker   }
80*795d594fSAndroid Build Coastguard Worker 
takeThreeFloat(float a, float b, float c)81*795d594fSAndroid Build Coastguard Worker   public static float takeThreeFloat(float a, float b, float c) {
82*795d594fSAndroid Build Coastguard Worker     return a + b + c;
83*795d594fSAndroid Build Coastguard Worker   }
84*795d594fSAndroid Build Coastguard Worker 
invokeTakeAFloat(float a)85*795d594fSAndroid Build Coastguard Worker   public static float invokeTakeAFloat(float a) {
86*795d594fSAndroid Build Coastguard Worker     return takeAFloat(a);
87*795d594fSAndroid Build Coastguard Worker   }
88*795d594fSAndroid Build Coastguard Worker 
invokeTakeADouble(double a)89*795d594fSAndroid Build Coastguard Worker   public static double invokeTakeADouble(double a) {
90*795d594fSAndroid Build Coastguard Worker     return takeADouble(a);
91*795d594fSAndroid Build Coastguard Worker   }
92*795d594fSAndroid Build Coastguard Worker 
invokeTakeThreeDouble(double a, double b, double c)93*795d594fSAndroid Build Coastguard Worker   public static double invokeTakeThreeDouble(double a, double b, double c) {
94*795d594fSAndroid Build Coastguard Worker     return takeThreeDouble(a, b, c);
95*795d594fSAndroid Build Coastguard Worker   }
96*795d594fSAndroid Build Coastguard Worker 
invokeTakeThreeFloat(float a, float b, float c)97*795d594fSAndroid Build Coastguard Worker   public static float invokeTakeThreeFloat(float a, float b, float c) {
98*795d594fSAndroid Build Coastguard Worker     return takeThreeFloat(a, b, c);
99*795d594fSAndroid Build Coastguard Worker   }
100*795d594fSAndroid Build Coastguard Worker 
101*795d594fSAndroid Build Coastguard Worker   // Test simple operations on a float array to ensure the register allocator works
102*795d594fSAndroid Build Coastguard Worker   // properly.
testArrayOperations(float[] a, int index, float value1, float value2)103*795d594fSAndroid Build Coastguard Worker   public static void testArrayOperations(float[] a, int index, float value1, float value2) {
104*795d594fSAndroid Build Coastguard Worker     a[0] = value1;
105*795d594fSAndroid Build Coastguard Worker     a[1] = value2;
106*795d594fSAndroid Build Coastguard Worker     assertEquals(value1 + value2, a[0] + a[1]);
107*795d594fSAndroid Build Coastguard Worker     a[0] = 0.0f;
108*795d594fSAndroid Build Coastguard Worker     a[1] = 0.0f;
109*795d594fSAndroid Build Coastguard Worker     assertEquals(0.0f, a[0] + a[1]);
110*795d594fSAndroid Build Coastguard Worker     a[index] = value1;
111*795d594fSAndroid Build Coastguard Worker     a[index + 1] = value2;
112*795d594fSAndroid Build Coastguard Worker     assertEquals(value1 + value2, a[0] + a[1]);
113*795d594fSAndroid Build Coastguard Worker   }
114*795d594fSAndroid Build Coastguard Worker 
115*795d594fSAndroid Build Coastguard Worker   // Test simple operations on a double array to ensure the register allocator works
116*795d594fSAndroid Build Coastguard Worker   // properly.
testArrayOperations(double[] a, int index, double value1, double value2)117*795d594fSAndroid Build Coastguard Worker   public static void testArrayOperations(double[] a, int index, double value1, double value2) {
118*795d594fSAndroid Build Coastguard Worker     a[0] = value1;
119*795d594fSAndroid Build Coastguard Worker     a[1] = value2;
120*795d594fSAndroid Build Coastguard Worker     assertEquals(value1 + value2, a[0] + a[1]);
121*795d594fSAndroid Build Coastguard Worker     a[0] = 0.0;
122*795d594fSAndroid Build Coastguard Worker     a[1] = 0.0;
123*795d594fSAndroid Build Coastguard Worker     assertEquals(0.0, a[0] + a[1]);
124*795d594fSAndroid Build Coastguard Worker     a[index] = value1;
125*795d594fSAndroid Build Coastguard Worker     a[index + 1] = value2;
126*795d594fSAndroid Build Coastguard Worker     assertEquals(value1 + value2, a[0] + a[1]);
127*795d594fSAndroid Build Coastguard Worker   }
128*795d594fSAndroid Build Coastguard Worker 
assertEquals(float expected, float actual)129*795d594fSAndroid Build Coastguard Worker   public static void assertEquals(float expected, float actual) {
130*795d594fSAndroid Build Coastguard Worker     if (expected != actual) {
131*795d594fSAndroid Build Coastguard Worker       throw new AssertionError("Expected " + expected + " got " + actual);
132*795d594fSAndroid Build Coastguard Worker     }
133*795d594fSAndroid Build Coastguard Worker   }
134*795d594fSAndroid Build Coastguard Worker 
assertEquals(double expected, double actual)135*795d594fSAndroid Build Coastguard Worker   public static void assertEquals(double expected, double actual) {
136*795d594fSAndroid Build Coastguard Worker     if (expected != actual) {
137*795d594fSAndroid Build Coastguard Worker       throw new AssertionError("Expected " + expected + " got " + actual);
138*795d594fSAndroid Build Coastguard Worker     }
139*795d594fSAndroid Build Coastguard Worker   }
140*795d594fSAndroid Build Coastguard Worker }
141