package testblas
import "gonum.org/v1/gonum/blas/testblas"
Package testblas provides tests for blas implementations.
Index ¶
- Constants
- Variables
- func DasumTest(t *testing.T, blasser Dasumer)
- func DaxpyTest(t *testing.T, d Daxpyer)
- func DcopyTest(t *testing.T, d Dcopier)
- func DdotTest(t *testing.T, d Ddotter)
- func DgbmvTest(t *testing.T, blasser Dgbmver)
- func DgemmBenchmark(b *testing.B, dgemm Dgemmer, m, n, k int, tA, tB blas.Transpose)
- func DgemvBenchmark(b *testing.B, impl Dgemver, tA blas.Transpose, m, n, incX, incY int)
- func DgemvTest(t *testing.T, blasser Dgemver)
- func DgerBenchmark(b *testing.B, impl Dgerer, m, n, incX, incY int)
- func DgerTest(t *testing.T, blasser Dgerer)
- func Dnrm2Test(t *testing.T, blasser Dnrm2er)
- func DrotTest(t *testing.T, d Droter)
- func DrotgTest(t *testing.T, d Drotger, skipExtreme bool)
- func DrotmTest(t *testing.T, d Drotmer)
- func DrotmgTest(t *testing.T, d Drotmger)
- func DsbmvTest(t *testing.T, blasser Dsbmver)
- func DscalTest(t *testing.T, blasser Dscaler)
- func DspmvTest(t *testing.T, blasser Dspmver)
- func Dspr2Test(t *testing.T, blasser Dspr2er)
- func DsprTest(t *testing.T, blasser Dsprer)
- func DswapTest(t *testing.T, d Dswapper)
- func DsymmTest(t *testing.T, blasser Dsymmer)
- func DsymvTest(t *testing.T, blasser Dsymver)
- func Dsyr2Test(t *testing.T, blasser Dsyr2er)
- func Dsyr2kTest(t *testing.T, blasser Dsyr2ker)
- func DsyrTest(t *testing.T, blasser Dsyrer)
- func DsyrkTest(t *testing.T, blasser Dsyker)
- func DtbmvTest(t *testing.T, blasser Dtbmver)
- func DtbsvTest(t *testing.T, blasser Dtbsver)
- func DtpmvTest(t *testing.T, blasser Dtpmver)
- func DtpsvTest(t *testing.T, blasser Dtpsver)
- func DtrmmTest(t *testing.T, blasser Dtrmmer)
- func DtrmvBenchmark(b *testing.B, dtrmv Dtrmver, n, lda, incX int, ul blas.Uplo, tA blas.Transpose, d blas.Diag)
- func DtrmvTest(t *testing.T, blasser Dtrmver)
- func DtrsmTest(t *testing.T, impl Dtrsmer)
- func DtrsvTest(t *testing.T, blasser Dtrsver)
- func DtxmvTest(t *testing.T, blasser Dtxmver)
- func DzasumTest(t *testing.T, impl Dzasumer)
- func Dznrm2Test(t *testing.T, impl Dznrm2er)
- func IdamaxTest(t *testing.T, blasser Idamaxer)
- func IzamaxTest(t *testing.T, impl Izamaxer)
- func SgerBenchmark(b *testing.B, blasser Sgerer, m, n, incX, incY int)
- func TestDgemm(t *testing.T, blasser Dgemmer)
- func ZaxpyTest(t *testing.T, impl Zaxpyer)
- func ZcopyTest(t *testing.T, impl Zcopyer)
- func ZdotcTest(t *testing.T, impl Zdotcer)
- func ZdotuTest(t *testing.T, impl Zdotuer)
- func ZdscalTest(t *testing.T, impl Zdscaler)
- func ZgbmvTest(t *testing.T, impl Zgbmver)
- func ZgemmTest(t *testing.T, impl Zgemmer)
- func ZgemvTest(t *testing.T, impl Zgemver)
- func ZgercTest(t *testing.T, impl Zgercer)
- func ZgeruTest(t *testing.T, impl Zgeruer)
- func ZhbmvTest(t *testing.T, impl Zhbmver)
- func ZhemmTest(t *testing.T, impl Zhemmer)
- func ZhemvTest(t *testing.T, impl Zhemver)
- func Zher2Test(t *testing.T, impl Zher2er)
- func Zher2kTest(t *testing.T, impl Zher2ker)
- func ZherTest(t *testing.T, impl Zherer)
- func ZherkTest(t *testing.T, impl Zherker)
- func ZhpmvTest(t *testing.T, impl Zhpmver)
- func Zhpr2Test(t *testing.T, impl Zhpr2er)
- func ZhprTest(t *testing.T, impl Zhprer)
- func ZscalTest(t *testing.T, impl Zscaler)
- func ZswapTest(t *testing.T, impl Zswaper)
- func ZsymmTest(t *testing.T, impl Zsymmer)
- func Zsyr2kTest(t *testing.T, impl Zsyr2ker)
- func ZsyrkTest(t *testing.T, impl Zsyrker)
- func ZtbmvTest(t *testing.T, impl Ztbmver)
- func ZtbsvTest(t *testing.T, impl Ztbsver)
- func ZtpmvTest(t *testing.T, impl Ztpmver)
- func ZtpsvTest(t *testing.T, impl Ztpsver)
- func ZtrmmTest(t *testing.T, impl Ztrmmer)
- func ZtrmvTest(t *testing.T, impl Ztrmver)
- func ZtrsmTest(t *testing.T, impl Ztrsmer)
- func ZtrsvTest(t *testing.T, impl Ztrsver)
- type DScalCase
- type DTwoVecAnswer
- type Dasumer
- type DaxpyCase
- type Daxpyer
- type Dcopier
- type Ddotter
- type Dgbmver
- type DgemmCase
- type Dgemmer
- type DgemvCase
- type DgemvSubcase
- type Dgemver
- type Dgerer
- type Dnrm2er
- type DoubleOneVectorCase
- type DoubleTwoVectorCase
- type DrotCase
- type Droter
- type DrotgTestStruct
- type Drotger
- type DrotmCase
- type Drotmer
- type Drotmger
- type Dsbmver
- type Dscaler
- type Dspmver
- type Dspr2er
- type Dsprer
- type Dswapper
- type Dsyker
- type Dsymmer
- type Dsymver
- type Dsyr2er
- type Dsyr2ker
- type Dsyrer
- type Dtbmver
- type Dtbsver
- type Dtpmver
- type Dtpsver
- type Dtrmmer
- type Dtrmver
- type Dtrsmer
- type Dtrsver
- type Dtxmver
- type Dzasumer
- type Dznrm2er
- type Idamaxer
- type Izamaxer
- type Sgerer
- type Zaxpyer
- type Zcopyer
- type Zdotcer
- type Zdotuer
- type Zdscaler
- type Zgbmver
- type Zgemmer
- type Zgemver
- type Zgercer
- type Zgeruer
- type Zhbmver
- type Zhemmer
- type Zhemver
- type Zher2er
- type Zher2ker
- type Zherer
- type Zherker
- type Zhpmver
- type Zhpr2er
- type Zhprer
- type Zscaler
- type Zswaper
- type Zsymmer
- type Zsyr2ker
- type Zsyrker
- type Ztbmver
- type Ztbsver
- type Ztpmver
- type Ztpsver
- type Ztrmmer
- type Ztrmver
- type Ztrsmer
- type Ztrsver
Constants ¶
const ( SmallMat = 10 MediumMat = 100 LargeMat = 1000 HugeMat = 10000 )
Variables ¶
var DgemmCases = []DgemmCase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }
var DgemvCases = []DgemvCase{ { Name: "M_gt_N_Inc1_NoTrans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, {1, 1, 2}, {9, 2, 5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_gt_N_Inc1_Trans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, {1, 1, 2}, {9, 2, 5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_eq_N_Inc1_NoTrans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_eq_N_Inc1_Trans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_lt_N_Inc1_NoTrans", A: [][]float64{ {4.1, 6.2, 8.1, 10, 7}, {9.6, 3.5, 9.1, -2, 9}, {10, 7, 3, 1, -5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_lt_N_Inc1_Trans", A: [][]float64{ {4.1, 6.2, 8.1, 10, 7}, {9.6, 3.5, 9.1, -2, 9}, {10, 7, 3, 1, -5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_gt_N_Part1_NoTrans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, {1, 1, 2}, {9, 2, 5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_gt_N_Part1_Trans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, {1, 1, 2}, {9, 2, 5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_gt_N_IncNot1_NoTrans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, {1, 1, 2}, {9, 2, 5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_gt_N_IncNot1_Trans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, {1, 1, 2}, {9, 2, 5}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_eq_N_IncNot1_NoTrans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_eq_N_IncNot1_Trans", A: [][]float64{ {4.1, 6.2, 8.1}, {9.6, 3.5, 9.1}, {10, 7, 3}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_lt_N_IncNot1_NoTrans", A: [][]float64{ {4.1, 6.2, 8.1, 10, 11}, {9.6, 3.5, 9.1, -3, -2}, {10, 7, 3, -7, -4}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_lt_N_IncNot1_Trans", A: [][]float64{ {4.1, 6.2, 8.1, 10, 11}, {9.6, 3.5, 9.1, -3, -2}, {10, 7, 3, -7, -4}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, { Name: "M_eq_N_Lg_IncNot1_Trans", A: [][]float64{ {4.1, 6.2, 8.1, 2.5, 3.3, 7.4, 9.3}, {9.6, 3.5, 9.1, 1.2, 5.4, 4.8, 8.7}, {10, 7, 3, 2, 4, 1, 12}, {9.6, 3.5, 9.1, 1.2, 5.4, 4.8, 8.7}, {4.1, 6.2, 8.1, 2.5, 3.3, 7.4, 9.3}, {10, 7, 3, 2, 4, 1, 12}, {9.6, 3.5, 9.1, 1.2, 5.4, 4.8, 8.7}, }, Subcases: []DgemvSubcase{ { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, { // contains filtered or unexported fields }, }, // contains filtered or unexported fields }, }
var DoubleOneVectorCases = []DoubleOneVectorCase{ { Name: "AllPositive", X: []float64{6, 5, 4, 2, 6}, Incx: 1, N: 5, Panic: false, Dasum: 23, Dnrm2: 10.81665382639196787935766380241148783875388972153573863813135, Idamax: 0, DscalCases: []DScalCase{ { Alpha: 0, Ans: []float64{0, 0, 0, 0, 0}, }, { Alpha: 1, Ans: []float64{6, 5, 4, 2, 6}, }, { Alpha: -2, Ans: []float64{-12, -10, -8, -4, -12}, }, }, }, { Name: "LeadingZero", X: []float64{0, 1}, Incx: 1, N: 2, Panic: false, Dasum: 1, Dnrm2: 1, Idamax: 1, DscalCases: []DScalCase{ { Alpha: 0, Ans: []float64{0, 0}, }, { Alpha: 1, Ans: []float64{0, 1}, }, { Alpha: -2, Ans: []float64{0, -2}, }, }, }, { Name: "MaxInMiddle", X: []float64{6, 5, 9, 0, 6}, Incx: 1, N: 5, Panic: false, Dasum: 26, Dnrm2: 13.34166406412633371248943627250846646911846482744007727141318, Idamax: 2, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-12, -10, -18, 0, -12}, }, }, }, { Name: "MaxAtEnd", X: []float64{6, 5, -9, 0, 10}, Incx: 1, N: 5, Panic: false, Dasum: 30, Dnrm2: 15.55634918610404553681857596630667886426639062914642880494347, Idamax: 4, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-12, -10, 18, 0, -20}, }, }, }, { Name: "AllNegative", X: []float64{-6, -5, -4, -2, -6}, Incx: 1, N: 5, Panic: false, Dasum: 23, Dnrm2: 10.81665382639196787935766380241148783875388972153573863813135, Idamax: 0, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{12, 10, 8, 4, 12}, }, }, }, { Name: "AllMixed", X: []float64{-6, 5, 4, -2, -6}, Incx: 1, N: 5, Panic: false, Dasum: 23, Dnrm2: 10.81665382639196787935766380241148783875388972153573863813135, Idamax: 0, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{12, -10, -8, 4, 12}, }, }, }, { Name: "ZeroN", X: []float64{-6, 5, 4, -2, -6}, Incx: 1, N: 0, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6}, }, }, }, { Name: "OneN", X: []float64{-6, 5, 4, -2, -6}, Incx: 1, N: 1, Panic: false, Dasum: 6, Dnrm2: 6, Idamax: 0, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{12, 5, 4, -2, -6}, }, }, }, { Name: "PositiveExactInc", X: []float64{-6, 5, 10, -2, -5}, Incx: 2, N: 3, Panic: false, Dasum: 21, Dnrm2: 12.68857754044952038019377274608948979173952662752515253090272, Idamax: 1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{12, 5, -20, -2, 10}, }, }, }, { Name: "PositiveOffInc", X: []float64{-6, 5, 4, -2, -6, 8, 10, 11}, Incx: 3, N: 3, Panic: false, Dasum: 18, Dnrm2: 11.83215956619923208513465658312323409683100246158868064575943, Idamax: 2, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{12, 5, 4, 4, -6, 8, -20, 11}, }, }, }, { Name: "PositiveShortInc", X: []float64{-6, 5, 4, -2, -6, 8, 10, 11}, Incx: 3, N: 2, Panic: false, Dasum: 8, Dnrm2: 6.324555320336758663997787088865437067439110278650433653715009, Idamax: 0, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{12, 5, 4, 4, -6, 8, 10, 11}, }, }, }, { Name: "NegativeInc", X: []float64{-6, 5, 4, -2, -6}, Incx: -1, N: 5, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6}, }, }, }, { Name: "NegativeExactInc", X: []float64{-6, 5, 4, -2, -6}, Incx: -2, N: 3, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6}, }, }, }, { Name: "NegativeOffInc", X: []float64{-6, 5, 4, -2, -6, 8, 10, 11}, Incx: -3, N: 2, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6, 8, 10, 11}, }, }, }, { Name: "NegativeShortInc", X: []float64{-6, 5, 4, -2, -6, 8, 10, 11}, Incx: -3, N: 2, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6, 8, 10, 11}, }, }, }, { Name: "NegativeN", X: []float64{-6, 5, 4, -2, -6}, Incx: 2, N: -5, Panic: true, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6}, }, }, }, { Name: "ZeroInc", X: []float64{-6, 5, 4, -2, -6}, Incx: 0, N: 5, Panic: true, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6}, }, }, }, { Name: "OutOfBounds", X: []float64{-6, 5, 4, -2, -6}, Incx: 2, N: 6, Panic: true, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6}, }, }, }, { Name: "NegativeOutOfBounds", X: []float64{-6, 5, 4, -2, -6}, Incx: -2, N: 6, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-6, 5, 4, -2, -6}, }, }, }, { Name: "NaN", X: []float64{math.NaN(), 2.0}, Incx: 1, N: 2, Panic: false, Dasum: math.NaN(), Dnrm2: math.NaN(), Idamax: 0, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{math.NaN(), -4.0}, }, { Alpha: 0, Ans: []float64{0, 0}, }, }, }, { Name: "NaNInc", X: []float64{math.NaN(), math.NaN(), 2.0}, Incx: 2, N: 2, Panic: false, Dasum: math.NaN(), Dnrm2: math.NaN(), Idamax: 0, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{math.NaN(), math.NaN(), -4.0}, }, { Alpha: 0, Ans: []float64{0, math.NaN(), 0}, }, }, }, { Name: "Empty", X: []float64{}, Incx: 1, N: 0, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{}, }, { Alpha: 0, Ans: []float64{}, }, }, }, { Name: "EmptyZeroInc", X: []float64{}, Incx: 0, N: 0, Panic: true, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{}, }, { Alpha: 0, Ans: []float64{}, }, }, }, { Name: "EmptyReverse", X: []float64{}, Incx: -1, N: 0, Panic: false, Dasum: 0, Dnrm2: 0, Idamax: -1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{}, }, { Alpha: 0, Ans: []float64{}, }, }, }, { Name: "MultiInf", X: []float64{5, math.Inf(1), math.Inf(-1), 8, 9}, Incx: 1, N: 5, Panic: false, Dasum: math.Inf(1), Dnrm2: math.Inf(1), Idamax: 1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-10, math.Inf(-1), math.Inf(1), -16, -18}, }, { Alpha: 0, Ans: []float64{0, 0, 0, 0, 0}, }, }, }, { Name: "NaNInf", X: []float64{5, math.NaN(), math.Inf(-1), 8, 9}, Incx: 1, N: 5, Panic: false, Dasum: math.NaN(), Dnrm2: math.NaN(), Idamax: 2, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-10, math.NaN(), math.Inf(1), -16, -18}, }, { Alpha: 0, Ans: []float64{0, 0, 0, 0, 0}, }, }, }, { Name: "InfNaN", X: []float64{5, math.Inf(1), math.NaN(), 8, 9}, Incx: 1, N: 5, Panic: false, Dasum: math.NaN(), Dnrm2: math.NaN(), Idamax: 1, DscalCases: []DScalCase{ { Alpha: -2, Ans: []float64{-10, math.Inf(-1), math.NaN(), -16, -18}, }, { Alpha: 0, Ans: []float64{0, 0, 0, 0, 0}, }, }, }, }
var DoubleTwoVectorCases = []DoubleTwoVectorCase{ { Name: "UnitaryInc", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0}, Incx: 1, Incy: 1, N: 6, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 1, Ans: []float64{18, 13, -2, 10, 20, 4}, }, { Alpha: 2, Ans: []float64{28, 28, -8, 13, 34, 11}, }, { Alpha: -3, Ans: []float64{-22, -47, 22, -2, -36, -24}, }, { Alpha: 0, Ans: []float64{8, -2, 4, 7, 6, -3}, }, }, DdotAns: 110, DswapAns: DTwoVecAnswer{ X: []float64{8, -2, 4, 7, 6, -3}, Y: []float64{10, 15, -6, 3, 14, 7}, }, DcopyAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{10, 15, -6, 3, 14, 7}, }, DrotCases: []DrotCase{ { C: math.Cos(0), S: math.Sin(0), XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3}, }, { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{12.444023964292095, 12.749380282068351, -3.7473736752571014, 5.677251193294846, 15.224018588957296, 5.076299724034451}, YAns: []float64{3.024279678886205, -8.151889500183792, 6.160940718590796, 5.076299724034451, -0.4788089421498931, -5.677251193294846}, }, { C: math.Cos(0.5 * math.Pi), S: math.Sin(0.5 * math.Pi), XAns: []float64{8, -2, 4, 7, 6, -3}, YAns: []float64{-10, -15, 6, -3, -14, -7}, }, { C: math.Cos(math.Pi), S: math.Sin(math.Pi), XAns: []float64{-10, -15, 6, -3, -14, -7}, YAns: []float64{-8, 2, -4, -7, -6, 3}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Identity, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3}, Name: "Neg2Flag", }, { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 13.7, -5.8, 2, 12, 6.6}, YAns: []float64{5, 0.5, 1.4, 3.8, 4.4, -0.8}, Name: "Neg1Flag", }, { P: blas.DrotmParams{ Flag: blas.OffDiagonal, H: [4]float64{1, 0.1, -0.1, 1}, }, XAns: []float64{9.2, 15.2, -6.4, 2.3, 13.4, 7.3}, YAns: []float64{9, -0.5, 3.4, 7.3, 7.4, -2.3}, Name: "ZeroFlag", }, { P: blas.DrotmParams{ Flag: blas.Diagonal, H: [4]float64{0.5, -1, 1, 0.7}, }, XAns: []float64{13, 5.5, 1, 8.5, 13, 0.5}, YAns: []float64{-4.4, -16.4, 8.8, 1.9, -9.8, -9.1}, Name: "OneFlag", }, }, }, { Name: "UnitaryIncLong", X: []float64{10, 15, -6, 3, 14, 7, 8, -9, 10}, Y: []float64{8, -2, 4, 7, 6, -3, 7, -6}, XTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: 1, Incy: 1, N: 6, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 1, Ans: []float64{18, 13, -2, 10, 20, 4, 7, -6}, }, { Alpha: 2, Ans: []float64{28, 28, -8, 13, 34, 11, 7, -6}, }, { Alpha: -3, Ans: []float64{-22, -47, 22, -2, -36, -24, 7, -6}, }, { Alpha: 0, Ans: []float64{8, -2, 4, 7, 6, -3, 7, -6}, }, }, DdotAns: 110, DswapAns: DTwoVecAnswer{ X: []float64{8, -2, 4, 7, 6, -3, 8, -9, 10}, Y: []float64{10, 15, -6, 3, 14, 7, 7, -6}, }, DcopyAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7, 8, -9, 10}, Y: []float64{10, 15, -6, 3, 14, 7, 7, -6}, }, DrotCases: []DrotCase{ { C: math.Cos(0), S: math.Sin(0), XAns: []float64{10, 15, -6, 3, 14, 7, 8, -9, 10}, YAns: []float64{8, -2, 4, 7, 6, -3, 7, -6}, }, { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{12.444023964292095, 12.749380282068351, -3.7473736752571014, 5.677251193294846, 15.224018588957296, 5.076299724034451, 8, -9, 10}, YAns: []float64{3.024279678886205, -8.151889500183792, 6.160940718590796, 5.076299724034451, -0.4788089421498931, -5.677251193294846, 7, -6}, }, { C: math.Cos(0.5 * math.Pi), S: math.Sin(0.5 * math.Pi), XAns: []float64{8, -2, 4, 7, 6, -3, 8, -9, 10}, YAns: []float64{-10, -15, 6, -3, -14, -7, 7, -6}, }, { C: math.Cos(math.Pi), S: math.Sin(math.Pi), XAns: []float64{-10, -15, 6, -3, -14, -7, 8, -9, 10}, YAns: []float64{-8, 2, -4, -7, -6, 3, 7, -6}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Identity, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{10, 15, -6, 3, 14, 7, 8, -9, 10}, YAns: []float64{8, -2, 4, 7, 6, -3, 7, -6}, Name: "Neg2Flag", }, { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 13.7, -5.8, 2, 12, 6.6, 8, -9, 10}, YAns: []float64{5, 0.5, 1.4, 3.8, 4.4, -0.8, 7, -6}, Name: "Neg1Flag", }, { P: blas.DrotmParams{ Flag: blas.OffDiagonal, H: [4]float64{1, 0.1, -0.1, 1}, }, XAns: []float64{9.2, 15.2, -6.4, 2.3, 13.4, 7.3, 8, -9, 10}, YAns: []float64{9, -0.5, 3.4, 7.3, 7.4, -2.3, 7, -6}, Name: "ZeroFlag", }, { P: blas.DrotmParams{ Flag: blas.Diagonal, H: [4]float64{0.5, -1, 1, 0.7}, }, XAns: []float64{13, 5.5, 1, 8.5, 13, 0.5, 8, -9, 10}, YAns: []float64{-4.4, -16.4, 8.8, 1.9, -9.8, -9.1, 7, -6}, Name: "OneFlag", }, }, }, { Name: "PositiveInc", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: 2, Incy: 3, N: 3, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{28, -2, 4, -5, 6, -3, 24, 10}, }, }, DdotAns: -18, DswapAns: DTwoVecAnswer{ X: []float64{8, 15, 7, 3, -4, 7}, Y: []float64{10, -2, 4, -6, 6, -3, 14, 10}, }, DcopyAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{10, -2, 4, -6, 6, -3, 14, 10}, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{12.444023964292095, 15, -2.479518890035003, 3, 10.997835971550302, 7}, YAns: []float64{3.024279678886205, -2, 4, 8.879864079700745, 6, -3, -9.541886812516392, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 15, -6.1, 3, 13, 7}, YAns: []float64{5, -2, 4, 2.9, 6, -3, -0.6, 10}, }, { P: blas.DrotmParams{ Flag: blas.OffDiagonal, H: [4]float64{1, 0.1, -0.1, 1}, }, XAns: []float64{9.2, 15, -6.7, 3, 14.4, 7}, YAns: []float64{9, -2, 4, 6.4, 6, -3, -2.6, 10}, }, { P: blas.DrotmParams{ Flag: blas.Diagonal, H: [4]float64{0.5, -1, 1, 0.7}, }, XAns: []float64{13, 15, 4, 3, 3, 7}, YAns: []float64{-4.4, -2, 4, 10.9, 6, -3, -16.8, 10}, }, }, }, { Name: "NegativeInc", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: -2, Incy: -3, N: 3, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{28, -2, 4, -5, 6, -3, 24, 10}, }, }, DdotAns: -18, DswapAns: DTwoVecAnswer{ X: []float64{8, 15, 7, 3, -4, 7}, Y: []float64{10, -2, 4, -6, 6, -3, 14, 10}, }, DcopyAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{10, -2, 4, -6, 6, -3, 14, 10}, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{12.444023964292095, 15, -2.479518890035003, 3, 10.997835971550302, 7}, YAns: []float64{3.024279678886205, -2, 4, 8.879864079700745, 6, -3, -9.541886812516392, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 15, -6.1, 3, 13, 7}, YAns: []float64{5, -2, 4, 2.9, 6, -3, -0.6, 10}, }, { P: blas.DrotmParams{ Flag: blas.OffDiagonal, H: [4]float64{1, 0.1, -0.1, 1}, }, XAns: []float64{9.2, 15, -6.7, 3, 14.4, 7}, YAns: []float64{9, -2, 4, 6.4, 6, -3, -2.6, 10}, }, { P: blas.DrotmParams{ Flag: blas.Diagonal, H: [4]float64{0.5, -1, 1, 0.7}, }, XAns: []float64{13, 15, 4, 3, 3, 7}, YAns: []float64{-4.4, -2, 4, 10.9, 6, -3, -16.8, 10}, }, }, }, { Name: "MixedInc1", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: 2, Incy: -3, N: 3, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{36, -2, 4, -5, 6, -3, 16, 10}, }, }, DdotAns: 30, DswapAns: DTwoVecAnswer{ X: []float64{-4, 15, 7, 3, 8, 7}, Y: []float64{14, -2, 4, -6, 6, -3, 10, 10}, }, DcopyAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{14, -2, 4, -6, 6, -3, 10, 10}, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{7.372604823403701, 15, -2.479518890035003, 3, 16.069255112438693, 7}, YAns: []float64{1.333806631923407, -2, 4, 8.879864079700745, 6, -3, -7.851413765553595, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{9.4, 15, -6.1, 3, 11.8, 7}, YAns: []float64{5.4, -2, 4, 2.9, 6, -3, -1, 10}, }, { P: blas.DrotmParams{ Flag: blas.OffDiagonal, H: [4]float64{1, 0.1, -0.1, 1}, }, XAns: []float64{10.4, 15, -6.7, 3, 13.2, 7}, YAns: []float64{9.4, -2, 4, 6.4, 6, -3, -3, 10}, }, { P: blas.DrotmParams{ Flag: blas.Diagonal, H: [4]float64{0.5, -1, 1, 0.7}, }, XAns: []float64{1, 15, 4, 3, 15, 7}, YAns: []float64{-8.4, -2, 4, 10.9, 6, -3, -12.8, 10}, }, }, }, { Name: "MixedInc2", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: -2, Incy: 3, N: 3, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{36, -2, 4, -5, 6, -3, 16, 10}, }, }, DdotAns: 30, DswapAns: DTwoVecAnswer{ X: []float64{-4, 15, 7, 3, 8, 7}, Y: []float64{14, -2, 4, -6, 6, -3, 10, 10}, }, DcopyAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{14, -2, 4, -6, 6, -3, 10, 10}, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{7.372604823403701, 15, -2.479518890035003, 3, 16.069255112438693, 7}, YAns: []float64{1.333806631923407, -2, 4, 8.879864079700745, 6, -3, -7.851413765553595, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{9.4, 15, -6.1, 3, 11.8, 7}, YAns: []float64{5.4, -2, 4, 2.9, 6, -3, -1, 10}, }, { P: blas.DrotmParams{ Flag: blas.OffDiagonal, H: [4]float64{1, 0.1, -0.1, 1}, }, XAns: []float64{10.4, 15, -6.7, 3, 13.2, 7}, YAns: []float64{9.4, -2, 4, 6.4, 6, -3, -3, 10}, }, { P: blas.DrotmParams{ Flag: blas.Diagonal, H: [4]float64{0.5, -1, 1, 0.7}, }, XAns: []float64{1, 15, 4, 3, 15, 7}, YAns: []float64{-8.4, -2, 4, 10.9, 6, -3, -12.8, 10}, }, }, }, { Name: "ZeroN", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: -2, Incy: 3, N: 0, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, DswapAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, DcopyAns: DTwoVecAnswer{ X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, }, { Name: "NegativeN", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: -2, Incy: 3, N: -3, Panic: true, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{36, -2, 4, -5, 6, -3, 16, 10}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 13.7, -5.8, 2, 12, 6.6}, YAns: []float64{5, 0.5, 1.4, 3.8, 4.4, -0.8}, }, }, }, { Name: "ZeroIncX", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: 0, Incy: 3, N: 2, Panic: true, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{36, -2, 4, -5, 6, -3, 16, 10}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 13.7, -5.8, 2, 12, 6.6}, YAns: []float64{5, 0.5, 1.4, 3.8, 4.4, -0.8}, }, }, }, { Name: "ZeroIncY", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: 1, Incy: 0, N: 2, Panic: true, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{36, -2, 4, -5, 6, -3, 16, 10}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 13.7, -5.8, 2, 12, 6.6}, YAns: []float64{5, 0.5, 1.4, 3.8, 4.4, -0.8}, }, }, }, { Name: "OutOfBoundsX", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: 8, Incy: 2, N: 2, Panic: true, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{36, -2, 4, -5, 6, -3, 16, 10}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{8.2, 13.7, -5.8, 2, 12, 6.6}, YAns: []float64{5, 0.5, 1.4, 3.8, 4.4, -0.8}, }, }, }, { Name: "OutOfBoundsY", X: []float64{10, 15, -6, 3, 14, 7}, Y: []float64{8, -2, 4, 7, 6, -3, -4, 10}, XTmp: []float64{0, 0, 0, 0, 0, 0}, YTmp: []float64{0, 0, 0, 0, 0, 0, 0, 0}, Incx: 2, Incy: 8, N: 2, Panic: true, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{36, -2, 4, -5, 6, -3, 16, 10}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{10, 15, -6, 3, 14, 7}, YAns: []float64{8, -2, 4, 7, 6, -3, -4, 10}, }, }, }, { Name: "Empty", X: []float64{}, Y: []float64{}, Incx: 1, Incy: 1, N: 0, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{}, YAns: []float64{}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{}, YAns: []float64{}, }, }, }, { Name: "EmptyZeroIncX", X: []float64{}, Y: []float64{}, Incx: 0, Incy: 1, N: 0, Panic: true, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{}, YAns: []float64{}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{}, YAns: []float64{}, }, }, }, { Name: "EmptyZeroIncY", X: []float64{}, Y: []float64{}, Incx: 1, Incy: 0, N: 0, Panic: true, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{}, YAns: []float64{}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{}, YAns: []float64{}, }, }, }, { Name: "EmptyReverse", X: []float64{}, Y: []float64{}, Incx: -1, Incy: -1, N: 0, Panic: false, DaxpyCases: []DaxpyCase{ { Alpha: 2, Ans: []float64{}, }, }, DrotCases: []DrotCase{ { C: math.Cos(25 * math.Pi / 180), S: math.Sin(25 * math.Pi / 180), XAns: []float64{}, YAns: []float64{}, }, }, DrotmCases: []DrotmCase{ { P: blas.DrotmParams{ Flag: blas.Rescaling, H: [4]float64{0.9, 0.1, -0.1, 0.5}, }, XAns: []float64{}, YAns: []float64{}, }, }, }, }
var DrotgTests = []DrotgTestStruct{ { Name: "ZeroAB", C: 1, }, { Name: "PosA_ZeroB", A: 0.5, C: 1, R: 0.5, }, { Name: "NegA_ZeroB", A: -4.6, C: 1, R: -4.6, }, { Name: "ZeroA_PosB", B: 3, S: 1, R: 3, Z: 1, }, { Name: "ZeroA_NegB", B: -0.3, S: 1, R: -0.3, Z: 1, }, { Name: "PosA_PosB_AGTB", A: 5, B: 0.3, C: 0.99820484546577868593549038000, S: 0.05989229072794672115612942280, R: 5.00899191454727744602429072688, Z: 0.05989229072794672115612942280, }, { Name: "PosA_PosB_ALTB", A: 3, B: 4, C: 3.0 / 5, S: 4.0 / 5, R: 5, Z: 5.0 / 3.0, }, { Name: "PosA_NegB_AGTB", A: 2.6, B: -0.9, C: 0.94498607344025815971847507095, S: -0.32711056388316628605639521686, R: 2.751363298439520872718790879655, Z: -0.3271105638831662860563952168, }, { Name: "PosA_NegB_ALTB", A: 2.6, B: -2.9, C: -0.6675450157520258540548049558, S: 0.7445694406464903756765132200, R: -3.8948684188300893100043812234, Z: 1 / -0.6675450157520258540548049558, }, { Name: "NegA_PosB_AGTB", A: -11.4, B: 10.3, C: 0.7419981952497362418487847947, S: -0.6704018781642353764072353847, R: -15.363918770938617534070671122, Z: -0.6704018781642353764072353847, }, { Name: "NegA_PosB_ALTB", A: -1.4, B: 10.3, C: -0.1346838895922121112404717523, S: 0.9908886162855605326977564640, R: 10.394710193170370442523552032, Z: 1 / -0.1346838895922121112404717523, }, { Name: "NegA_NegB_AGTB", A: -11.4, B: 10.3, C: 0.7419981952497362418487847947, S: -0.6704018781642353764072353847, R: -15.363918770938617534070671122, Z: -0.6704018781642353764072353847, }, { Name: "NegA_NegB_ALTB", A: -1.4, B: -10.3, C: 0.1346838895922121112404717523, S: 0.9908886162855605326977564640, R: -10.394710193170370442523552032, Z: 1 / 0.1346838895922121112404717523, }, }
Functions ¶
func DasumTest ¶
func DaxpyTest ¶
func DcopyTest ¶
func DdotTest ¶
func DgbmvTest ¶
func DgemmBenchmark ¶
func DgemvBenchmark ¶
func DgemvTest ¶
func DgerBenchmark ¶
func DgerTest ¶
func Dnrm2Test ¶
func DrotTest ¶
func DrotgTest ¶
func DrotmTest ¶
func DrotmgTest ¶
func DsbmvTest ¶
func DscalTest ¶
func DspmvTest ¶
func Dspr2Test ¶
func DsprTest ¶
func DswapTest ¶
func DsymmTest ¶
func DsymvTest ¶
func Dsyr2Test ¶
func Dsyr2kTest ¶
func DsyrTest ¶
func DsyrkTest ¶
func DtbmvTest ¶
func DtbsvTest ¶
func DtpmvTest ¶
func DtpsvTest ¶
func DtrmmTest ¶
func DtrmvBenchmark ¶
func DtrmvBenchmark(b *testing.B, dtrmv Dtrmver, n, lda, incX int, ul blas.Uplo, tA blas.Transpose, d blas.Diag)
func DtrmvTest ¶
func DtrsmTest ¶
func DtrsvTest ¶
func DtxmvTest ¶
func DzasumTest ¶
func Dznrm2Test ¶
func IdamaxTest ¶
func IzamaxTest ¶
func SgerBenchmark ¶
func TestDgemm ¶
func ZaxpyTest ¶
func ZcopyTest ¶
func ZdotcTest ¶
func ZdotuTest ¶
func ZdscalTest ¶
func ZgbmvTest ¶
func ZgemmTest ¶
func ZgemvTest ¶
func ZgercTest ¶
func ZgeruTest ¶
func ZhbmvTest ¶
func ZhemmTest ¶
func ZhemvTest ¶
func Zher2Test ¶
func Zher2kTest ¶
func ZherTest ¶
func ZherkTest ¶
func ZhpmvTest ¶
func Zhpr2Test ¶
func ZhprTest ¶
func ZscalTest ¶
func ZswapTest ¶
func ZsymmTest ¶
func Zsyr2kTest ¶
func ZsyrkTest ¶
func ZtbmvTest ¶
func ZtbsvTest ¶
func ZtpmvTest ¶
func ZtpsvTest ¶
func ZtrmmTest ¶
func ZtrmvTest ¶
func ZtrsmTest ¶
func ZtrsvTest ¶
Types ¶
type DScalCase ¶
type DTwoVecAnswer ¶
type Dasumer ¶
type DaxpyCase ¶
type Daxpyer ¶
type Daxpyer interface { Daxpy(n int, alpha float64, x []float64, incX int, y []float64, incY int) }
type Dcopier ¶
type Ddotter ¶
type Dgbmver ¶
type Dgbmver interface { Dgbmv(tA blas.Transpose, m, n, kL, kU int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int) }
type DgemmCase ¶
type DgemmCase struct {
// contains filtered or unexported fields
}
type Dgemmer ¶
type Dgemmer interface { Dgemm(tA, tB blas.Transpose, m, n, k int, alpha float64, a []float64, lda int, b []float64, ldb int, beta float64, c []float64, ldc int) }
type DgemvCase ¶
type DgemvCase struct { Name string A [][]float64 Subcases []DgemvSubcase // contains filtered or unexported fields }
type DgemvSubcase ¶
type DgemvSubcase struct {
// contains filtered or unexported fields
}
type Dgemver ¶
type Dgemver interface { Dgemv(tA blas.Transpose, m, n int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int) }
type Dgerer ¶
type Dgerer interface { Dger(m, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64, lda int) }
type Dnrm2er ¶
type DoubleOneVectorCase ¶
type DoubleOneVectorCase struct { Name string X []float64 Incx int N int Panic bool Dasum float64 Dnrm2 float64 Idamax int DscalCases []DScalCase }
type DoubleTwoVectorCase ¶
type DoubleTwoVectorCase struct { Name string X []float64 Y []float64 XTmp []float64 YTmp []float64 Incx int Incy int N int Panic bool // For Daxpy DaxpyCases []DaxpyCase DdotAns float64 DswapAns DTwoVecAnswer DcopyAns DTwoVecAnswer DrotCases []DrotCase DrotmCases []DrotmCase }
type DrotCase ¶
type Droter ¶
type DrotgTestStruct ¶
type Drotger ¶
type DrotmCase ¶
type DrotmCase struct { P blas.DrotmParams XAns []float64 YAns []float64 Name string }
type Drotmer ¶
type Drotmer interface { Drotm(n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams) }
type Drotmger ¶
type Drotmger interface { Drotmg(d1, d2, x1, y1 float64) (p blas.DrotmParams, rd1, rd2, rx1 float64) Drotmer }
type Dsbmver ¶
type Dsbmver interface { Dsbmv(ul blas.Uplo, n, k int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int) }
type Dscaler ¶
type Dspmver ¶
type Dspmver interface { Dspmv(ul blas.Uplo, n int, alpha float64, ap []float64, x []float64, incX int, beta float64, y []float64, incY int) }
type Dspr2er ¶
type Dspr2er interface { Dspr2(ul blas.Uplo, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64) }
type Dsprer ¶
type Dsprer interface { Dspr(ul blas.Uplo, n int, alpha float64, x []float64, incX int, a []float64) }
type Dswapper ¶
type Dsyker ¶
type Dsyker interface { Dsyrk(ul blas.Uplo, tA blas.Transpose, n, k int, alpha float64, a []float64, lda int, beta float64, c []float64, ldc int) }
type Dsymmer ¶
type Dsymmer interface { Dsymm(s blas.Side, ul blas.Uplo, m, n int, alpha float64, a []float64, lda int, b []float64, ldb int, beta float64, c []float64, ldc int) }
type Dsymver ¶
type Dsymver interface { Dsymv(ul blas.Uplo, n int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int) }
type Dsyr2er ¶
type Dsyr2er interface { Dsyr2(ul blas.Uplo, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64, lda int) }
type Dsyr2ker ¶
type Dsyr2ker interface { Dsyr2k(ul blas.Uplo, tA blas.Transpose, n, k int, alpha float64, a []float64, lda int, b []float64, ldb int, beta float64, c []float64, ldc int) }
type Dsyrer ¶
type Dsyrer interface { Dsyr(ul blas.Uplo, n int, alpha float64, x []float64, incX int, a []float64, lda int) }
type Dtbmver ¶
type Dtbmver interface { Dtbmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []float64, lda int, x []float64, incX int) }
type Dtbsver ¶
type Dtbsver interface { Dtbsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []float64, lda int, x []float64, incX int) Dtrsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float64, lda int, x []float64, incX int) }
type Dtpmver ¶
type Dtpmver interface { Dtpmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap []float64, x []float64, incX int) }
type Dtpsver ¶
type Dtpsver interface { Dtpsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap []float64, x []float64, incX int) }
type Dtrmmer ¶
type Dtrmmer interface { Dtrmm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha float64, a []float64, lda int, b []float64, ldb int) }
type Dtrmver ¶
type Dtrmver interface { Dtrmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float64, lda int, x []float64, incX int) }
type Dtrsmer ¶
type Dtrsmer interface { Dtrsm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha float64, a []float64, lda int, b []float64, ldb int) }
type Dtrsver ¶
type Dtrsver interface { Dtrsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float64, lda int, x []float64, incX int) }
type Dtxmver ¶
type Dtxmver interface { Dtrmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float64, lda int, x []float64, incX int) Dtbmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []float64, lda int, x []float64, incX int) Dtpmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float64, x []float64, incX int) }
type Dzasumer ¶
type Dzasumer interface { Dzasum(n int, x []complex128, incX int) float64 }
type Dznrm2er ¶
type Dznrm2er interface { Dznrm2(n int, x []complex128, incX int) float64 Dnrm2er }
type Idamaxer ¶
type Izamaxer ¶
type Izamaxer interface { Izamax(n int, x []complex128, incX int) int }
type Sgerer ¶
type Sgerer interface { Sger(m, n int, alpha float32, x []float32, incX int, y []float32, incY int, a []float32, lda int) }
type Zaxpyer ¶
type Zaxpyer interface { Zaxpy(n int, alpha complex128, x []complex128, incX int, y []complex128, incY int) }
type Zcopyer ¶
type Zcopyer interface { Zcopy(n int, x []complex128, incX int, y []complex128, incY int) }
type Zdotcer ¶
type Zdotcer interface { Zdotc(n int, x []complex128, incX int, y []complex128, incY int) complex128 }
type Zdotuer ¶
type Zdotuer interface { Zdotu(n int, x []complex128, incX int, y []complex128, incY int) complex128 }
type Zdscaler ¶
type Zdscaler interface { Zdscal(n int, alpha float64, x []complex128, incX int) }
type Zgbmver ¶
type Zgbmver interface { Zgbmv(trans blas.Transpose, m, n, kL, kU int, alpha complex128, ab []complex128, ldab int, x []complex128, incX int, beta complex128, y []complex128, incY int) Zgemver }
type Zgemmer ¶
type Zgemmer interface { Zgemm(tA, tB blas.Transpose, m, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) }
type Zgemver ¶
type Zgemver interface { Zgemv(trans blas.Transpose, m, n int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int) }
type Zgercer ¶
type Zgercer interface { Zgerc(m, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int) }
type Zgeruer ¶
type Zgeruer interface { Zgeru(m, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int) }
type Zhbmver ¶
type Zhbmver interface { Zhbmv(uplo blas.Uplo, n, k int, alpha complex128, ab []complex128, ldab int, x []complex128, incX int, beta complex128, y []complex128, incY int) Zhemver }
type Zhemmer ¶
type Zhemmer interface { Zhemm(side blas.Side, uplo blas.Uplo, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) }
type Zhemver ¶
type Zhemver interface { Zhemv(uplo blas.Uplo, n int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int) }
type Zher2er ¶
type Zher2er interface { Zher2(uplo blas.Uplo, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int) }
type Zher2ker ¶
type Zher2ker interface { Zher2k(uplo blas.Uplo, trans blas.Transpose, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta float64, c []complex128, ldc int) }
type Zherer ¶
type Zherer interface { Zher(uplo blas.Uplo, n int, alpha float64, x []complex128, incX int, a []complex128, lda int) }
type Zherker ¶
type Zherker interface { Zherk(uplo blas.Uplo, trans blas.Transpose, n, k int, alpha float64, a []complex128, lda int, beta float64, c []complex128, ldc int) }
type Zhpmver ¶
type Zhpmver interface { Zhpmv(uplo blas.Uplo, n int, alpha complex128, ap []complex128, x []complex128, incX int, beta complex128, y []complex128, incY int) }
type Zhpr2er ¶
type Zhpr2er interface { Zhpr2(uplo blas.Uplo, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, ap []complex128) }
type Zhprer ¶
type Zhprer interface { Zhpr(uplo blas.Uplo, n int, alpha float64, x []complex128, incX int, ap []complex128) }
type Zscaler ¶
type Zscaler interface { Zscal(n int, alpha complex128, x []complex128, incX int) }
type Zswaper ¶
type Zswaper interface { Zswap(n int, x []complex128, incX int, y []complex128, incY int) }
type Zsymmer ¶
type Zsymmer interface { Zsymm(side blas.Side, uplo blas.Uplo, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) }
type Zsyr2ker ¶
type Zsyr2ker interface { Zsyr2k(uplo blas.Uplo, trans blas.Transpose, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) }
type Zsyrker ¶
type Zsyrker interface { Zsyrk(uplo blas.Uplo, trans blas.Transpose, n, k int, alpha complex128, a []complex128, lda int, beta complex128, c []complex128, ldc int) }
type Ztbmver ¶
type Ztbmver interface { Ztbmv(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n, k int, ab []complex128, ldab int, x []complex128, incX int) Ztrmver }
type Ztbsver ¶
type Ztbsver interface { Ztbsv(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n, k int, ab []complex128, ldab int, x []complex128, incX int) Ztbmver }
type Ztpmver ¶
type Ztpmver interface { Ztpmv(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n int, ap []complex128, x []complex128, incX int) }
type Ztpsver ¶
type Ztpsver interface { Ztpsv(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n int, ap []complex128, x []complex128, incX int) Ztpmver }
type Ztrmmer ¶
type Ztrmmer interface { Ztrmm(side blas.Side, uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int) }
type Ztrmver ¶
type Ztrmver interface { Ztrmv(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n int, a []complex128, lda int, x []complex128, incX int) }
type Ztrsmer ¶
type Ztrsmer interface { Ztrsm(side blas.Side, uplo blas.Uplo, transA blas.Transpose, diag blas.Diag, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int) }
type Ztrsver ¶
type Ztrsver interface { Ztrsv(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n int, a []complex128, lda int, x []complex128, incX int) Ztrmver }
Source Files ¶
benchsize.go common.go dgbmv.go dgemm.go dgemmbench.go dgemv.go dger.go doc.go dsbmv.go dspmv.go dspr.go dspr2.go dsymm.go dsymv.go dsyr.go dsyr2.go dsyr2k.go dsyrk.go dtbmv.go dtbsv.go dtpmv.go dtpsv.go dtrmm.go dtrmv.go dtrmvbench.go dtrsm.go dtrsv.go dtxmv.go dzasum.go dznrm2.go izamax.go level1double.go level2bench.go zaxpy.go zcopy.go zdotc.go zdotu.go zdscal.go zgbmv.go zgemm.go zgemv.go zgerc.go zgeru.go zhbmv.go zhemm.go zhemv.go zher.go zher2.go zher2k.go zherk.go zhpmv.go zhpr.go zhpr2.go zscal.go zswap.go zsymm.go zsyr2k.go zsyrk.go ztbmv.go ztbsv.go ztpmv.go ztpsv.go ztrmm.go ztrmv.go ztrsm.go ztrsv.go
Directories ¶
Path | Synopsis |
---|---|
blas/testblas/benchautogen | Script for automatic code generation of the benchmark routines. |
- Version
- v0.15.1 (latest)
- Published
- Aug 16, 2024
- Platform
- linux/amd64
- Imports
- 8 packages
- Last checked
- 12 hours ago –
Tools for package owners.