home *** CD-ROM | disk | FTP | other *** search
- package COM.objectspace.jgl;
-
- import java.math.BigDecimal;
- import java.math.BigInteger;
-
- final class NumberHelper {
- private static Class classInteger = (new Integer(0)).getClass();
- private static Class classLong = (new Long(0L)).getClass();
- private static Class classFloat = (new Float(0.0F)).getClass();
- private static Class classDouble = (new Double((double)0.0F)).getClass();
- private static Class classByte = (new Byte((byte)0)).getClass();
- private static Class classShort = (new Short((short)0)).getClass();
- private static Class classBigInteger = (new BigInteger("0")).getClass();
- private static Class classBigDecimal = (new BigDecimal("0")).getClass();
- static Class classNumber = (new Integer(0)).getClass().getSuperclass();
-
- private NumberHelper() {
- }
-
- static BigDecimal asBigDecimal(Number var0) {
- return var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString());
- }
-
- static BigInteger asBigInteger(Number var0) {
- return var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger();
- }
-
- static Number plus(Number var0, Number var1, Class var2) {
- if (var2.equals(classInteger)) {
- return new Integer(var0.intValue() + var1.intValue());
- } else if (var2.equals(classLong)) {
- return new Long(var0.longValue() + var1.longValue());
- } else if (var2.equals(classFloat)) {
- return new Float(var0.floatValue() + var1.floatValue());
- } else if (var2.equals(classDouble)) {
- return new Double(var0.doubleValue() + var1.doubleValue());
- } else if (var2.equals(classByte)) {
- return new Byte((byte)(var0.byteValue() + var1.byteValue()));
- } else if (var2.equals(classShort)) {
- return new Short((short)(var0.shortValue() + var1.shortValue()));
- } else if (var2.equals(classBigInteger)) {
- return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).add(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
- } else if (var2.equals(classBigDecimal)) {
- return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).add(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
- } else {
- throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
- }
- }
-
- static Number minus(Number var0, Number var1, Class var2) {
- if (var2.equals(classInteger)) {
- return new Integer(var0.intValue() - var1.intValue());
- } else if (var2.equals(classLong)) {
- return new Long(var0.longValue() - var1.longValue());
- } else if (var2.equals(classFloat)) {
- return new Float(var0.floatValue() - var1.floatValue());
- } else if (var2.equals(classDouble)) {
- return new Double(var0.doubleValue() - var1.doubleValue());
- } else if (var2.equals(classByte)) {
- return new Byte((byte)(var0.byteValue() - var1.byteValue()));
- } else if (var2.equals(classShort)) {
- return new Short((short)(var0.shortValue() - var1.shortValue()));
- } else if (var2.equals(classBigInteger)) {
- return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).subtract(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
- } else if (var2.equals(classBigDecimal)) {
- return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).subtract(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
- } else {
- throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
- }
- }
-
- static Number multiply(Number var0, Number var1, Class var2) {
- if (var2.equals(classInteger)) {
- return new Integer(var0.intValue() * var1.intValue());
- } else if (var2.equals(classLong)) {
- return new Long(var0.longValue() * var1.longValue());
- } else if (var2.equals(classFloat)) {
- return new Float(var0.floatValue() * var1.floatValue());
- } else if (var2.equals(classDouble)) {
- return new Double(var0.doubleValue() * var1.doubleValue());
- } else if (var2.equals(classByte)) {
- return new Byte((byte)(var0.byteValue() * var1.byteValue()));
- } else if (var2.equals(classShort)) {
- return new Short((short)(var0.shortValue() * var1.shortValue()));
- } else if (var2.equals(classBigInteger)) {
- return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).multiply(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
- } else if (var2.equals(classBigDecimal)) {
- return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).multiply(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
- } else {
- throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
- }
- }
-
- static Number divides(Number var0, Number var1, Class var2, int var3) {
- if (var2.equals(classInteger)) {
- return new Integer(var0.intValue() / var1.intValue());
- } else if (var2.equals(classLong)) {
- return new Long(var0.longValue() / var1.longValue());
- } else if (var2.equals(classFloat)) {
- return new Float(var0.floatValue() / var1.floatValue());
- } else if (var2.equals(classDouble)) {
- return new Double(var0.doubleValue() / var1.doubleValue());
- } else if (var2.equals(classByte)) {
- return new Byte((byte)(var0.byteValue() / var1.byteValue()));
- } else if (var2.equals(classShort)) {
- return new Short((short)(var0.shortValue() / var1.shortValue()));
- } else if (var2.equals(classBigInteger)) {
- return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).divide(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
- } else if (var2.equals(classBigDecimal)) {
- return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).divide(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()), var3);
- } else {
- throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
- }
- }
-
- static Number modulus(Number var0, Number var1, Class var2, int var3) {
- if (var2.equals(classInteger)) {
- return new Integer(var0.intValue() % var1.intValue());
- } else if (var2.equals(classLong)) {
- return new Long(var0.longValue() % var1.longValue());
- } else if (var2.equals(classFloat)) {
- return new Float(var0.floatValue() % var1.floatValue());
- } else if (var2.equals(classDouble)) {
- return new Double(var0.doubleValue() % var1.doubleValue());
- } else if (var2.equals(classByte)) {
- return new Byte((byte)(var0.byteValue() % var1.byteValue()));
- } else if (var2.equals(classShort)) {
- return new Short((short)(var0.shortValue() % var1.shortValue()));
- } else if (var2.equals(classBigInteger)) {
- return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).mod(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
- } else if (var2.equals(classBigDecimal)) {
- BigDecimal var4 = var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString());
- BigDecimal var5 = var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString());
- BigDecimal var6 = var4.divide(var5, var3);
- return var4.subtract(var6.multiply(var5));
- } else {
- throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
- }
- }
-
- static int compare(Number var0, Number var1, Class var2) {
- if (var2.equals(classInteger)) {
- if (var0.intValue() < var1.intValue()) {
- return -1;
- } else {
- return var0.intValue() > var1.intValue() ? 1 : 0;
- }
- } else if (var2.equals(classLong)) {
- if (var0.longValue() < var1.longValue()) {
- return -1;
- } else {
- return var0.longValue() > var1.longValue() ? 1 : 0;
- }
- } else if (var2.equals(classFloat)) {
- if (var0.floatValue() < var1.floatValue()) {
- return -1;
- } else {
- return var0.floatValue() > var1.floatValue() ? 1 : 0;
- }
- } else if (var2.equals(classDouble)) {
- if (var0.doubleValue() < var1.doubleValue()) {
- return -1;
- } else {
- return var0.doubleValue() > var1.doubleValue() ? 1 : 0;
- }
- } else if (var2.equals(classByte)) {
- if (var0.byteValue() < var1.byteValue()) {
- return -1;
- } else {
- return var0.byteValue() > var1.byteValue() ? 1 : 0;
- }
- } else if (var2.equals(classShort)) {
- if (var0.shortValue() < var1.shortValue()) {
- return -1;
- } else {
- return var0.shortValue() > var1.shortValue() ? 1 : 0;
- }
- } else if (var2.equals(classBigInteger)) {
- return (var0 instanceof BigInteger ? (BigInteger)var0 : (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).toBigInteger()).compareTo(var1 instanceof BigInteger ? (BigInteger)var1 : (var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString())).toBigInteger());
- } else if (var2.equals(classBigDecimal)) {
- return (var0 instanceof BigDecimal ? (BigDecimal)var0 : new BigDecimal(var0.toString())).compareTo(var1 instanceof BigDecimal ? (BigDecimal)var1 : new BigDecimal(var1.toString()));
- } else {
- throw new IllegalArgumentException("unknown subclass of java.lang.Number: " + var2.getClass());
- }
- }
- }
-