View Javadoc

    1   package org.codehaus.groovy.runtime;
    2
    3   /***
    4    * BigInteger NumberMath operations
    5    *
    6    * @author Steve Goetze
    7    */
    8   public class BigIntegerMath extends NumberMath {
    9
    10  	protected static BigIntegerMath instance = new BigIntegerMath();
    11
    12  	private BigIntegerMath() {}
    13
    14  	protected Number absImpl(Number number) {
    15  		return toBigInteger(number).abs();
    16  	}
    17
    18  	protected Number addImpl(Number left, Number right) {
    19  		return toBigInteger(left).add(toBigInteger(right));
    20  	}
    21
    22  	protected Number subtractImpl(Number left, Number right) {
    23  		return toBigInteger(left).subtract(toBigInteger(right));
    24  	}
    25
    26  	protected Number multiplyImpl(Number left, Number right) {
    27  		return toBigInteger(left).multiply(toBigInteger(right));
    28  	}
    29
    30  	protected Number divideImpl(Number left, Number right) {
    31  		return BigDecimalMath.instance.divideImpl(left, right);
    32  	}
    33
    34  	protected int compareToImpl(Number left, Number right) {
    35  		return toBigInteger(left).compareTo(toBigInteger(right));
    36  	}
    37
    38      protected Number andImpl(Number left, Number right) {
    39          return toBigInteger(left).and(toBigInteger(right));
    40      }
    41
    42      protected Number intdivImpl(Number left, Number right) {
    43          return toBigInteger(left).divide(toBigInteger(right));
    44      }
    45
    46      protected Number modImpl(Number left, Number right) {
    47          return toBigInteger(left).mod(toBigInteger(right));
    48      }
    49
    50      protected Number negateImpl(Number left) {
    51          return toBigInteger(left).negate();
    52      }
    53
    54      protected Number orImpl(Number left, Number right) {
    55          return toBigInteger(left).or(toBigInteger(right));
    56      }
    57  }