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