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) } } }