imath.go 848 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package imath
  2. import "math"
  3. func Max(a, b int) int {
  4. if a > b {
  5. return a
  6. }
  7. return b
  8. }
  9. func Min(a, b int) int {
  10. if a < b {
  11. return a
  12. }
  13. return b
  14. }
  15. func MinNonZero(a, b int) int {
  16. switch {
  17. case a == 0:
  18. return b
  19. case b == 0:
  20. return a
  21. }
  22. return Min(a, b)
  23. }
  24. func Round(a float64) int {
  25. return int(math.Round(a))
  26. }
  27. func RoundToEven(a float64) int {
  28. return int(math.RoundToEven(a))
  29. }
  30. func Scale(a int, scale float64) int {
  31. if a == 0 {
  32. return 0
  33. }
  34. return Round(float64(a) * scale)
  35. }
  36. func ScaleToEven(a int, scale float64) int {
  37. if a == 0 {
  38. return 0
  39. }
  40. return RoundToEven(float64(a) * scale)
  41. }
  42. func Shrink(a int, shrink float64) int {
  43. if a == 0 {
  44. return 0
  45. }
  46. return Round(float64(a) / shrink)
  47. }
  48. func ShrinkToEven(a int, shrink float64) int {
  49. if a == 0 {
  50. return 0
  51. }
  52. return RoundToEven(float64(a) / shrink)
  53. }