6 "gonum.org/v1/gonum/blas"
9 type Ztpmver interface {
10 Ztpmv(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n int, ap []complex128, x []complex128, incX int)
13 func ZtpmvTest(t *testing.T, impl Ztpmver) {
14 for tc, test := range ztrmvTestCases {
17 for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans, blas.ConjTrans} {
18 for _, diag := range []blas.Diag{blas.NonUnit, blas.Unit} {
19 for _, incX := range []int{-11, -2, -1, 1, 2, 7} {
20 ap := zPack(uplo, n, test.a, n)
21 apCopy := make([]complex128, len(ap))
24 x := makeZVector(test.x, incX)
26 impl.Ztpmv(uplo, trans, diag, n, ap, x, incX)
28 if !zsame(ap, apCopy) {
29 t.Errorf("Case %v (uplo=%v,trans=%v,diag=%v,incX=%v): unexpected modification of A", tc, uplo, trans, diag, incX)
33 if diag == blas.NonUnit {
35 case trans == blas.NoTrans && incX > 0:
36 want = makeZVector(test.want, incX)
37 case trans == blas.NoTrans && incX < 0:
38 want = makeZVector(test.wantNeg, incX)
39 case trans == blas.Trans && incX > 0:
40 want = makeZVector(test.wantTrans, incX)
41 case trans == blas.Trans && incX < 0:
42 want = makeZVector(test.wantTransNeg, incX)
43 case trans == blas.ConjTrans && incX > 0:
44 want = makeZVector(test.wantConjTrans, incX)
45 case trans == blas.ConjTrans && incX < 0:
46 want = makeZVector(test.wantConjTransNeg, incX)
50 case trans == blas.NoTrans && incX > 0:
51 want = makeZVector(test.wantUnit, incX)
52 case trans == blas.NoTrans && incX < 0:
53 want = makeZVector(test.wantUnitNeg, incX)
54 case trans == blas.Trans && incX > 0:
55 want = makeZVector(test.wantUnitTrans, incX)
56 case trans == blas.Trans && incX < 0:
57 want = makeZVector(test.wantUnitTransNeg, incX)
58 case trans == blas.ConjTrans && incX > 0:
59 want = makeZVector(test.wantUnitConjTrans, incX)
60 case trans == blas.ConjTrans && incX < 0:
61 want = makeZVector(test.wantUnitConjTransNeg, incX)
65 t.Errorf("Case %v (uplo=%v,trans=%v,diag=%v,incX=%v): unexpected result\nwant %v\ngot %v", tc, uplo, trans, diag, incX, want, x)