1418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file 2418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager// for details. All rights reserved. Use of this source code is governed by a 3418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager// BSD-style license that can be found in the LICENSE file. 4418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 5418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager// This code is not run directly. It needs to be compiled to dex code. 6418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager// 'arithmetic.dex' is what is run. 7418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 8418d1ca139ea11316113beafbb3b3dd3fd5587aMads Agerpackage arithmetic; 9418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 10418d1ca139ea11316113beafbb3b3dd3fd5587aMads Agerimport java.util.Arrays; 11418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 12418d1ca139ea11316113beafbb3b3dd3fd5587aMads Agerpublic class Arithmetic { 13418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager static void addInts(int[] ints) { 14418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager int result = 0; 15418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager for (int i : ints) { 16418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager result += i; 17418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 18418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println("addInts: " + Arrays.toString(ints) + " = " + result); 19418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 20418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 21418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager static void addDoubles(double[] doubles) { 22418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager double result = 0; 23418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager for (double d : doubles) { 24418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager result += d; 25418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 26418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println("addDoubles: " + Arrays.toString(doubles) + " = " + result); 27418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 28418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 29418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager static void addLongs(long[] longs) { 30418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long result = 0; 31418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager for (long l : longs) { 32418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager result += l; 33418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 34418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println("addLongs: " + Arrays.toString(longs) + " = " + result); 35418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 36418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 37418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager static void binaryOps() { 38418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager int i = 0; 39418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println("i values:"); 40418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = i + 1; 41418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 42418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = 1 + i; 43418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 44418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = i * 4; 45418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 46418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = i * i; 47418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 48418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = 4 * i; 49418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 50418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = i / 4; 51418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 52418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = i / i; 53418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 54418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager i = i % i; 55418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(i); 56418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 57418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long l = 0; 58418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println("l values:"); 59418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = l + 1; 60418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 61418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = 1 + l; 62418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 63418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = l * 4; 64418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 65418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = l * l; 66418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 67418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = 4 * l; 68418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 69418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = l / 4; 70418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 71418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = l / l; 72418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 73418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager l = l % l; 74418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(l); 75418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 76418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager double d = 0.0; 77418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println("d values: "); 78418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = d + 1.0; 79418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 80418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = 1.0 + d; 81418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 82418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = d * 4.0; 83418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 84418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = d * d; 85418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 86418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = 4.0 * d; 87418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 88418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = d / 4.0; 89418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 90418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = d / d; 91418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 92418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager d = d % d; 93418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(d); 94418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 95418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager float f = 0.0f; 96418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println("f values: "); 97418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = f + 1.0f; 98418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 99418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = 1.0f + f; 100418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 101418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = f * 4.0f; 102418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 103418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = f * f; 104418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 105418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = 4.0f * f; 106418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 107418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = f / 4.0f; 108418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 109418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = f / f; 110418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 111418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager f = f % f; 112418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(f); 113418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 114418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 115418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager public static void moreOps() { 116418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager int a = 42; 117418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager int b = -a; 118418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager int shiftLeftA = a << 5; 119418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager int shiftRightA = a >> 5; 120418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager int uShiftRightA = -a >>> 5; 121418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(a + b + shiftLeftA + shiftRightA + uShiftRightA); 122418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager float c = 42.42f; 123418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager float d = -c; 124418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(c + d); 125418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager double e = 43.43; 126418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager double f = -e; 127418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(e + f); 128418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long g = 5000000000L; 129418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long h = -g; 130418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long shiftLeftG = g << 8; 131418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long shiftRightG = g >> 8; 132418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long uShiftRightG = -g >>> 8; 133418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(g + h + shiftLeftG + shiftRightG + uShiftRightG); 134418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 135418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 136418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager public static void bitwiseInts(int x, int y) { 137418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(x & y); 138418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(x | y); 139418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(x ^ y); 140418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(~x); 141418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 142418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 143418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager public static void bitwiseLongs(long x, long y) { 144418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(x & y); 145418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(x | y); 146418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(x ^ y); 147418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager System.out.println(~x); 148418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 149418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager 150418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager public static void main(String[] args) { 151418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addInts(new int[] { }); 152418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addInts(new int[] { 1 }); 153418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addInts(new int[] { 0, 1, 2, 3 }); 154418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addDoubles(new double[] { 0.0 }); 155418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addDoubles(new double[] { 0.0, 1.0, 2.0 }); 156418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addDoubles(new double[] { 0.0, 1.0, 2.0, 3.0 }); 157418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager long l = 0x0000000100000000L; 158418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addLongs(new long[] { }); 159418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addLongs(new long[] { l }); 160418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager addLongs(new long[] { l, l + 1, l + 2 }); 161418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager binaryOps(); 162418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager moreOps(); 163418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager bitwiseInts(12345, 54321); 164418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager bitwiseLongs(54321, 12345); 165418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager } 166418d1ca139ea11316113beafbb3b3dd3fd5587aMads Ager} 167