github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/common/sink/safeMath.go (about) 1 package sink 2 3 import "math" 4 5 const ( 6 MAX_UINT64 = math.MaxUint64 7 ) 8 9 func SafeSub(x, y uint64) (uint64, bool) { 10 return x - y, x < y 11 } 12 13 func SafeAdd(x, y uint64) (uint64, bool) { 14 return x + y, y > MAX_UINT64-x 15 } 16 17 func SafeMul(x, y uint64) (uint64, bool) { 18 if x == 0 || y == 0 { 19 return 0, false 20 } 21 return x * y, y > MAX_UINT64/x 22 }