1
0

simd_random_test.go 646 B

123456789101112131415161718192021222324252627282930
  1. package cpu
  2. import (
  3. "math"
  4. "math/rand"
  5. "testing"
  6. )
  7. func TestDotFloat32MatchesScalarRandomLengths(t *testing.T) {
  8. rng := rand.New(rand.NewSource(2))
  9. lengths := []int{1, 2, 3, 7, 8, 9, 15, 16, 17, 31, 32, 33, 63, 64, 65, 127, 128, 129}
  10. for _, n := range lengths {
  11. a := make([]float32, n)
  12. b := make([]float32, n)
  13. for i := 0; i < n; i++ {
  14. a[i] = rng.Float32()*2 - 1
  15. b[i] = rng.Float32()*2 - 1
  16. }
  17. got := DotFloat32(a, b)
  18. var want float32
  19. for i := 0; i < n; i++ {
  20. want += a[i] * b[i]
  21. }
  22. if diff := math.Abs(float64(got - want)); diff > 1e-4 {
  23. t.Fatalf("n=%d: got=%v want=%v diff=%g", n, got, want, diff)
  24. }
  25. }
  26. }