1
2
3
4
5 package org.codehaus.groovy.runtime;
6
7 /***
8 * Long NumberMath operations
9 *
10 * @author Steve Goetze
11 */
12 public class LongMath extends NumberMath {
13
14 protected static LongMath instance = new LongMath();
15
16 private LongMath() {}
17
18 protected Number absImpl(Number number) {
19 return new Long(Math.abs(number.longValue()));
20 }
21
22 protected Number addImpl(Number left, Number right) {
23 return new Long(left.longValue() + right.longValue());
24 }
25
26 protected Number subtractImpl(Number left, Number right) {
27 return new Long(left.longValue() - right.longValue());
28 }
29
30 protected Number multiplyImpl(Number left, Number right) {
31 return new Long(left.longValue() * right.longValue());
32 }
33
34 protected Number divideImpl(Number left, Number right) {
35 return BigDecimalMath.instance.divideImpl(left, right);
36 }
37
38 protected int compareToImpl(Number left, Number right) {
39 long leftVal = left.longValue();
40 long rightVal = right.longValue();
41 return (leftVal<rightVal ? -1 : (leftVal==rightVal ? 0 : 1));
42 }
43
44 protected Number andImpl(Number left, Number right) {
45 return new Long(left.longValue() & right.longValue());
46 }
47
48 protected Number intdivImpl(Number left, Number right) {
49 return new Long(left.longValue() / right.longValue());
50 }
51
52 protected Number modImpl(Number left, Number right) {
53 return new Long(left.longValue() % right.longValue());
54 }
55
56 protected Number negateImpl(Number left) {
57 return new Long(-left.longValue());
58 }
59
60 protected Number orImpl(Number left, Number right) {
61 return new Long(left.longValue() | right.longValue());
62 }
63
64 protected Number leftShiftImpl(Number left, Number right) {
65 return new Long(left.longValue() << right.longValue());
66 }
67
68 protected Number rightShiftImpl(Number left, Number right) {
69 return new Long(left.longValue() >> right.longValue());
70 }
71
72 protected Number rightShiftUnsignedImpl(Number left, Number right) {
73 return new Long(left.longValue() >>> right.longValue());
74 }
75 }