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  }