01: package JSci.maths.fields;
02:
03: import JSci.maths.*;
04: import JSci.maths.groups.AbelianGroup;
05:
06: /**
07: * The IntegerRing class encapsulates the ring of integer numbers.
08: * @version 1.0
09: * @author Mark Hale
10: */
11: public final class IntegerRing extends Object implements Ring {
12: public final static MathInteger ZERO = new MathInteger(0);
13: public final static MathInteger ONE = new MathInteger(1);
14:
15: private final static IntegerRing _instance = new IntegerRing();
16:
17: /**
18: * Constructs a ring of integer numbers.
19: */
20: private IntegerRing() {
21: }
22:
23: /**
24: * Constructs a ring of integer numbers.
25: * Singleton.
26: */
27: public static final IntegerRing getInstance() {
28: return _instance;
29: }
30:
31: /**
32: * Returns the integer number zero.
33: */
34: public AbelianGroup.Member zero() {
35: return ZERO;
36: }
37:
38: /**
39: * Returns true if the integer number is equal to zero.
40: */
41: public boolean isZero(AbelianGroup.Member g) {
42: return ZERO.equals(g);
43: }
44:
45: /**
46: * Returns true if one integer number is the negative of the other.
47: */
48: public boolean isNegative(AbelianGroup.Member a,
49: AbelianGroup.Member b) {
50: return ZERO.equals(a.add(b));
51: }
52:
53: /**
54: * Returns the integer number one.
55: */
56: public Ring.Member one() {
57: return ONE;
58: }
59:
60: /**
61: * Returns true if the integer number is equal to one.
62: */
63: public boolean isOne(Ring.Member r) {
64: return ONE.equals(r);
65: }
66: }
|