SafeMath.sol 1.2 KB

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