SafeMath.sol 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. pragma solidity ^0.4.8;
  2. /**
  3. * Math operations with safety checks
  4. */
  5. contract SafeMath {
  6. function safeMul(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 safeDiv(uint a, uint b) internal returns (uint) {
  12. assert(b > 0);
  13. uint c = a / b;
  14. assert(a == b * c + a % b);
  15. return c;
  16. }
  17. function safeSub(uint a, uint b) internal returns (uint) {
  18. assert(b <= a);
  19. return a - b;
  20. }
  21. function safeAdd(uint a, uint b) internal returns (uint) {
  22. uint c = a + b;
  23. assert(c>=a && c>=b);
  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. function assert(bool assertion) internal {
  39. if (!assertion) {
  40. throw;
  41. }
  42. }
  43. }