SafeMath.sol 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. pragma solidity ^0.4.11;
  2. /**
  3. * Math operations with safety checks
  4. */
  5. library SafeMath {
  6. function mul(uint a, uint b) internal returns (uint) {
  7. uint c = a * b;
  8. assert(a == 0 || c / a == b);
  9. return c;
  10. }
  11. function div(uint a, uint b) internal returns (uint) {
  12. // assert(b > 0); // Solidity automatically throws when dividing by 0
  13. uint c = a / b;
  14. // assert(a == b * c + a % b); // There is no case in which this doesn't hold
  15. return c;
  16. }
  17. function sub(uint a, uint b) internal returns (uint) {
  18. assert(b <= a);
  19. return a - b;
  20. }
  21. function add(uint a, uint b) internal returns (uint) {
  22. uint c = a + b;
  23. assert(c >= a);
  24. return c;
  25. }
  26. function max64(uint64 a, uint64 b) internal constant returns (uint64) {
  27. return a >= b ? a : b;
  28. }
  29. function min64(uint64 a, uint64 b) internal constant returns (uint64) {
  30. return a < b ? a : b;
  31. }
  32. function max256(uint256 a, uint256 b) internal constant returns (uint256) {
  33. return a >= b ? a : b;
  34. }
  35. function min256(uint256 a, uint256 b) internal constant returns (uint256) {
  36. return a < b ? a : b;
  37. }
  38. }