cmp.gno

0.90 Kb ยท 59 lines
 1package int256
 2
 3func (z *Int) Eq(x *Int) bool {
 4	return z.value.Eq(&x.value)
 5}
 6
 7func (z *Int) Neq(x *Int) bool {
 8	return !z.Eq(x)
 9}
10
11// Cmp compares z and x and returns:
12//
13//   - 1 if z > x
14//   - 0 if z == x
15//   - -1 if z < x
16func (z *Int) Cmp(x *Int) int {
17	zSign, xSign := z.Sign(), x.Sign()
18
19	if zSign == xSign {
20		return z.value.Cmp(&x.value)
21	}
22
23	if zSign == 0 {
24		return -xSign
25	}
26
27	return zSign
28}
29
30// IsZero returns true if z == 0
31func (z *Int) IsZero() bool {
32	return z.value.IsZero()
33}
34
35// IsNeg returns true if z < 0
36func (z *Int) IsNeg() bool {
37	return z.Sign() < 0
38}
39
40func (z *Int) Lt(x *Int) bool {
41	return z.Cmp(x) < 0
42}
43
44func (z *Int) Gt(x *Int) bool {
45	return z.Cmp(x) > 0
46}
47
48func (z *Int) Le(x *Int) bool {
49	return z.Cmp(x) <= 0
50}
51
52func (z *Int) Ge(x *Int) bool {
53	return z.Cmp(x) >= 0
54}
55
56// Clone creates a new Int identical to z
57func (z *Int) Clone() *Int {
58	return New().FromUint256(&z.value)
59}