math.go 603 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package utils
  2. import "math"
  3. func f(x, a float64) float64 {
  4. return math.Exp(x) - a
  5. }
  6. func Ln(n float64) float64 {
  7. var lo, hi, m float64
  8. if n <= 0 {
  9. return -1
  10. }
  11. if n == 1 {
  12. return 0
  13. }
  14. EPS := 0.00001
  15. lo = 0
  16. hi = n
  17. for math.Abs(lo-hi) >= EPS {
  18. m = float64((lo + hi) / 2.0)
  19. if f(m, n) < 0 {
  20. lo = m
  21. } else {
  22. hi = m
  23. }
  24. }
  25. return float64((lo + hi) / 2.0)
  26. }
  27. func MinInt(x, y int) int {
  28. if x < y {
  29. return x
  30. }
  31. return y
  32. }
  33. func MaxInt(x, y int) int {
  34. if x < y {
  35. return y
  36. }
  37. return x
  38. }
  39. func MinInt64(x, y int64) int64 {
  40. if x < y {
  41. return x
  42. }
  43. return y
  44. }