Initial push.
diff --git a/src/test/examples/arithmetic/Arithmetic.java b/src/test/examples/arithmetic/Arithmetic.java
new file mode 100644
index 0000000..315aca4
--- /dev/null
+++ b/src/test/examples/arithmetic/Arithmetic.java
@@ -0,0 +1,166 @@
+// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// This code is not run directly. It needs to be compiled to dex code.
+// 'arithmetic.dex' is what is run.
+
+package arithmetic;
+
+import java.util.Arrays;
+
+public class Arithmetic {
+  static void addInts(int[] ints) {
+    int result = 0;
+    for (int i : ints) {
+      result += i;
+    }
+    System.out.println("addInts: " + Arrays.toString(ints) + " = " + result);
+  }
+
+  static void addDoubles(double[] doubles) {
+    double result = 0;
+    for (double d : doubles) {
+      result += d;
+    }
+    System.out.println("addDoubles: " + Arrays.toString(doubles) + " = " + result);
+  }
+
+  static void addLongs(long[] longs) {
+    long result = 0;
+    for (long l : longs) {
+      result += l;
+    }
+    System.out.println("addLongs: " + Arrays.toString(longs) + " = " + result);
+  }
+
+  static void binaryOps() {
+    int i = 0;
+    System.out.println("i values:");
+    i = i + 1;
+    System.out.println(i);
+    i = 1 + i;
+    System.out.println(i);
+    i = i * 4;
+    System.out.println(i);
+    i = i * i;
+    System.out.println(i);
+    i = 4 * i;
+    System.out.println(i);
+    i = i / 4;
+    System.out.println(i);
+    i = i / i;
+    System.out.println(i);
+    i = i % i;
+    System.out.println(i);
+
+    long l = 0;
+    System.out.println("l values:");
+    l = l + 1;
+    System.out.println(l);
+    l = 1 + l;
+    System.out.println(l);
+    l = l * 4;
+    System.out.println(l);
+    l = l * l;
+    System.out.println(l);
+    l = 4 * l;
+    System.out.println(l);
+    l = l / 4;
+    System.out.println(l);
+    l = l / l;
+    System.out.println(l);
+    l = l % l;
+    System.out.println(l);
+
+    double d = 0.0;
+    System.out.println("d values: ");
+    d = d + 1.0;
+    System.out.println(d);
+    d = 1.0 + d;
+    System.out.println(d);
+    d = d * 4.0;
+    System.out.println(d);
+    d = d * d;
+    System.out.println(d);
+    d = 4.0 * d;
+    System.out.println(d);
+    d = d / 4.0;
+    System.out.println(d);
+    d = d / d;
+    System.out.println(d);
+    d = d % d;
+    System.out.println(d);
+
+    float f = 0.0f;
+    System.out.println("f values: ");
+    f = f + 1.0f;
+    System.out.println(f);
+    f = 1.0f + f;
+    System.out.println(f);
+    f = f * 4.0f;
+    System.out.println(f);
+    f = f * f;
+    System.out.println(f);
+    f = 4.0f * f;
+    System.out.println(f);
+    f = f / 4.0f;
+    System.out.println(f);
+    f = f / f;
+    System.out.println(f);
+    f = f % f;
+    System.out.println(f);
+  }
+
+  public static void moreOps() {
+    int a = 42;
+    int b = -a;
+    int shiftLeftA = a << 5;
+    int shiftRightA = a >> 5;
+    int uShiftRightA = -a >>> 5;
+    System.out.println(a + b + shiftLeftA + shiftRightA + uShiftRightA);
+    float c = 42.42f;
+    float d = -c;
+    System.out.println(c + d);
+    double e = 43.43;
+    double f  = -e;
+    System.out.println(e + f);
+    long g = 5000000000L;
+    long h = -g;
+    long shiftLeftG = g << 8;
+    long shiftRightG = g >> 8;
+    long uShiftRightG = -g >>> 8;
+    System.out.println(g + h + shiftLeftG + shiftRightG + uShiftRightG);
+  }
+
+  public static void bitwiseInts(int x, int y) {
+    System.out.println(x & y);
+    System.out.println(x | y);
+    System.out.println(x ^ y);
+    System.out.println(~x);
+  }
+
+  public static void bitwiseLongs(long x, long y) {
+    System.out.println(x & y);
+    System.out.println(x | y);
+    System.out.println(x ^ y);
+    System.out.println(~x);
+  }
+
+  public static void main(String[] args) {
+    addInts(new int[] { });
+    addInts(new int[] { 1 });
+    addInts(new int[] { 0, 1, 2, 3 });
+    addDoubles(new double[] { 0.0 });
+    addDoubles(new double[] { 0.0, 1.0, 2.0 });
+    addDoubles(new double[] { 0.0, 1.0, 2.0, 3.0 });
+    long l = 0x0000000100000000L;
+    addLongs(new long[] { });
+    addLongs(new long[] { l });
+    addLongs(new long[] { l, l + 1, l + 2 });
+    binaryOps();
+    moreOps();
+    bitwiseInts(12345, 54321);
+    bitwiseLongs(54321, 12345);
+  }
+}