6 "gonum.org/v1/gonum/blas"
7 "gonum.org/v1/gonum/floats"
10 type Dsymver interface {
11 Dsymv(ul blas.Uplo, n int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int)
14 func DsymvTest(t *testing.T, blasser Dsymver) {
15 for i, test := range []struct {
33 x: []float64{3, 4, 5},
34 y: []float64{6, 7, 8},
37 ans: []float64{137.4, 189, 240.6},
47 x: []float64{3, 4, 5},
48 y: []float64{6, 7, 8},
51 ans: []float64{137.4, 189, 240.6},
54 incTest := func(incX, incY, extra int) {
55 x := makeIncremented(test.x, incX, extra)
56 y := makeIncremented(test.y, incY, extra)
57 aFlat := flatten(test.a)
58 ans := makeIncremented(test.ans, incY, extra)
60 blasser.Dsymv(test.ul, test.n, test.alpha, aFlat, test.n, x, incX, test.beta, y, incY)
61 if !floats.EqualApprox(ans, y, 1e-14) {
62 t.Errorf("Case %v, incX=%v, incY=%v: Want %v, got %v.", i, incX, incY, ans, y)