dist_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package math
  2. import (
  3. "fmt"
  4. "math/big"
  5. "testing"
  6. )
  7. type summer struct {
  8. numbers []*big.Int
  9. }
  10. func (s summer) Len() int { return len(s.numbers) }
  11. func (s summer) Sum(i int) *big.Int {
  12. return s.numbers[i]
  13. }
  14. func TestSum(t *testing.T) {
  15. summer := summer{numbers: []*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}}
  16. sum := Sum(summer)
  17. if sum.Cmp(big.NewInt(6)) != 0 {
  18. t.Errorf("not 6", sum)
  19. }
  20. }
  21. func TestDist(t *testing.T) {
  22. var vectors = []Vector{
  23. Vector{big.NewInt(1000), big.NewInt(1234)},
  24. Vector{big.NewInt(500), big.NewInt(10023)},
  25. Vector{big.NewInt(1034), big.NewInt(1987)},
  26. Vector{big.NewInt(1034), big.NewInt(1987)},
  27. Vector{big.NewInt(8983), big.NewInt(1977)},
  28. Vector{big.NewInt(98382), big.NewInt(1887)},
  29. Vector{big.NewInt(12398), big.NewInt(1287)},
  30. Vector{big.NewInt(12398), big.NewInt(1487)},
  31. Vector{big.NewInt(12398), big.NewInt(1987)},
  32. Vector{big.NewInt(12398), big.NewInt(128)},
  33. Vector{big.NewInt(12398), big.NewInt(1987)},
  34. Vector{big.NewInt(1398), big.NewInt(187)},
  35. Vector{big.NewInt(12328), big.NewInt(1927)},
  36. Vector{big.NewInt(12398), big.NewInt(1987)},
  37. Vector{big.NewInt(22398), big.NewInt(1287)},
  38. Vector{big.NewInt(1370), big.NewInt(1981)},
  39. Vector{big.NewInt(12398), big.NewInt(1957)},
  40. Vector{big.NewInt(42198), big.NewInt(1987)},
  41. }
  42. VectorsBy(GasSort).Sort(vectors)
  43. fmt.Println(vectors)
  44. BP := big.NewInt(15)
  45. GL := big.NewInt(1000000)
  46. EP := big.NewInt(100)
  47. fmt.Println("BP", BP, "GL", GL, "EP", EP)
  48. GP := GasPrice(BP, GL, EP)
  49. fmt.Println("GP =", GP, "Wei per GU")
  50. S := len(vectors) / 4
  51. fmt.Println("L", len(vectors), "S", S)
  52. for i := 1; i <= S*4; i += S {
  53. fmt.Printf("T%d = %v\n", i, vectors[i])
  54. }
  55. g := VectorSum(GasSum).Sum(vectors)
  56. fmt.Printf("G = ∑g* (%v)\n", g)
  57. }