/*
* Copyright ( C ) 2014 The Android Open Source Project
*
* Licensed under the Apache License , Version 2 . 0 ( the " License " ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
public class Main {
public static void main(String[] args) {
assertEquals(4 .2 f, returnFloat());
float [] a = new float [2 ];
a[0 ] = 42 .2 f;
a[1 ] = 3 .2 f;
assertEquals(45 .4 f, returnFloat(a));
assertEquals(4 .4 , returnDouble());
double [] b = new double [1 ];
b[0 ] = 42 .4 ;
assertEquals(42 .4 , returnDouble(b));
assertEquals(4 .2 f, invokeReturnFloat());
assertEquals(4 .4 , invokeReturnDouble());
assertEquals(4 .2 f, takeAFloat(4 .2 f));
assertEquals(3 .1 , takeADouble(3 .1 ));
assertEquals(12 .7 , takeThreeDouble(3 .1 , 4 .4 , 5 .2 ));
assertEquals(12 .7 f, takeThreeFloat(3 .1 f, 4 .4 f, 5 .2 f));
assertEquals(4 .2 f, invokeTakeAFloat(4 .2 f));
assertEquals(3 .1 , invokeTakeADouble(3 .1 ));
assertEquals(12 .7 , invokeTakeThreeDouble(3 .1 , 4 .4 , 5 .2 ));
assertEquals(12 .7 f, invokeTakeThreeFloat(3 .1 f, 4 .4 f, 5 .2 f));
testArrayOperations(new float [2 ], 0 , 1 .2 f, 3 .4 f);
testArrayOperations(new double [2 ], 0 , 4 .1 , 7 .6 );
}
public static float invokeReturnFloat() {
return returnFloat();
}
public static double invokeReturnDouble() {
return returnDouble();
}
public static float returnFloat() {
return 4 .2 f;
}
public static float returnFloat(float [] a) {
return a[0 ] + a[1 ];
}
public static double returnDouble() {
return 4 .4 ;
}
public static double returnDouble(double [] a) {
return a[0 ];
}
public static float takeAFloat(float a) {
return a;
}
public static double takeADouble(double a) {
return a;
}
public static double takeThreeDouble(double a, double b, double c) {
return a + b + c;
}
public static float takeThreeFloat(float a, float b, float c) {
return a + b + c;
}
public static float invokeTakeAFloat(float a) {
return takeAFloat(a);
}
public static double invokeTakeADouble(double a) {
return takeADouble(a);
}
public static double invokeTakeThreeDouble(double a, double b, double c) {
return takeThreeDouble(a, b, c);
}
public static float invokeTakeThreeFloat(float a, float b, float c) {
return takeThreeFloat(a, b, c);
}
// Test simple operations on a float array to ensure the register allocator works
// properly.
public static void testArrayOperations(float [] a, int index, float value1, float value2) {
a[0 ] = value1;
a[1 ] = value2;
assertEquals(value1 + value2, a[0 ] + a[1 ]);
a[0 ] = 0 .0 f;
a[1 ] = 0 .0 f;
assertEquals(0 .0 f, a[0 ] + a[1 ]);
a[index] = value1;
a[index + 1 ] = value2;
assertEquals(value1 + value2, a[0 ] + a[1 ]);
}
// Test simple operations on a double array to ensure the register allocator works
// properly.
public static void testArrayOperations(double [] a, int index, double value1, double value2) {
a[0 ] = value1;
a[1 ] = value2;
assertEquals(value1 + value2, a[0 ] + a[1 ]);
a[0 ] = 0 .0 ;
a[1 ] = 0 .0 ;
assertEquals(0 .0 , a[0 ] + a[1 ]);
a[index] = value1;
a[index + 1 ] = value2;
assertEquals(value1 + value2, a[0 ] + a[1 ]);
}
public static void assertEquals(float expected, float actual) {
if (expected != actual) {
throw new AssertionError("Expected " + expected + " got " + actual);
}
}
public static void assertEquals(double expected, double actual) {
if (expected != actual) {
throw new AssertionError("Expected " + expected + " got " + actual);
}
}
}
Messung V0.5 in Prozent C=86 H=98 G=91
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-29)
¤
*© Formatika GbR, Deutschland