Files
gonum/blas/cgo/blas.go
2017-05-23 00:03:03 -06:00

4259 lines
133 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Do not manually edit this file. It was created by the generate_blas.go from cblas.h.
// Copyright ©2014 The Gonum Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package cgo
/*
#cgo CFLAGS: -g -O2
#include "cblas.h"
*/
import "C"
import (
"unsafe"
"gonum.org/v1/gonum/blas"
)
// Type check assertions:
var (
_ blas.Float32 = Implementation{}
_ blas.Float64 = Implementation{}
_ blas.Complex64 = Implementation{}
_ blas.Complex128 = Implementation{}
)
// Type order is used to specify the matrix storage format. We still interact with
// an API that allows client calls to specify order, so this is here to document that fact.
type order int
const (
rowMajor order = 101 + iota
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
type Implementation struct{}
// Special cases...
type srotmParams struct {
flag float32
h [4]float32
}
type drotmParams struct {
flag float64
h [4]float64
}
func (Implementation) Srotg(a float32, b float32) (c float32, s float32, r float32, z float32) {
C.cblas_srotg((*C.float)(&a), (*C.float)(&b), (*C.float)(&c), (*C.float)(&s))
return c, s, a, b
}
func (Implementation) Srotmg(d1 float32, d2 float32, b1 float32, b2 float32) (p blas.SrotmParams, rd1 float32, rd2 float32, rb1 float32) {
var pi srotmParams
C.cblas_srotmg((*C.float)(&d1), (*C.float)(&d2), (*C.float)(&b1), C.float(b2), (*C.float)(unsafe.Pointer(&pi)))
return blas.SrotmParams{Flag: blas.Flag(pi.flag), H: pi.h}, d1, d2, b1
}
func (Implementation) Srotm(n int, x []float32, incX int, y []float32, incY int, p blas.SrotmParams) {
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if p.Flag < blas.Identity || p.Flag > blas.Diagonal {
panic("blas: illegal blas.Flag value")
}
if n == 0 {
return
}
pi := srotmParams{
flag: float32(p.Flag),
h: p.H,
}
C.cblas_srotm(C.int(n), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY), (*C.float)(unsafe.Pointer(&pi)))
}
func (Implementation) Drotg(a float64, b float64) (c float64, s float64, r float64, z float64) {
C.cblas_drotg((*C.double)(&a), (*C.double)(&b), (*C.double)(&c), (*C.double)(&s))
return c, s, a, b
}
func (Implementation) Drotmg(d1 float64, d2 float64, b1 float64, b2 float64) (p blas.DrotmParams, rd1 float64, rd2 float64, rb1 float64) {
var pi drotmParams
C.cblas_drotmg((*C.double)(&d1), (*C.double)(&d2), (*C.double)(&b1), C.double(b2), (*C.double)(unsafe.Pointer(&pi)))
return blas.DrotmParams{Flag: blas.Flag(pi.flag), H: pi.h}, d1, d2, b1
}
func (Implementation) Drotm(n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams) {
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if p.Flag < blas.Identity || p.Flag > blas.Diagonal {
panic("blas: illegal blas.Flag value")
}
if n == 0 {
return
}
pi := drotmParams{
flag: float64(p.Flag),
h: p.H,
}
C.cblas_drotm(C.int(n), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY), (*C.double)(unsafe.Pointer(&pi)))
}
func (Implementation) Cdotu(n int, x []complex64, incX int, y []complex64, incY int) (dotu complex64) {
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
C.cblas_cdotu_sub(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&dotu))
return dotu
}
func (Implementation) Cdotc(n int, x []complex64, incX int, y []complex64, incY int) (dotc complex64) {
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
C.cblas_cdotc_sub(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&dotc))
return dotc
}
func (Implementation) Zdotu(n int, x []complex128, incX int, y []complex128, incY int) (dotu complex128) {
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
C.cblas_zdotu_sub(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&dotu))
return dotu
}
func (Implementation) Zdotc(n int, x []complex128, incX int, y []complex128, incY int) (dotc complex128) {
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
C.cblas_zdotc_sub(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&dotc))
return dotc
}
// Generated cases ...
// Sdsdot computes the dot product of the two vectors plus a constant
// alpha + \sum_i x[i]*y[i]
func (Implementation) Sdsdot(n int, alpha float32, x []float32, incX int, y []float32, incY int) float32 {
// declared at cblas.h:24:8 float cblas_sdsdot ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
return float32(C.cblas_sdsdot(C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY)))
}
// Dsdot computes the dot product of the two vectors
// \sum_i x[i]*y[i]
func (Implementation) Dsdot(n int, x []float32, incX int, y []float32, incY int) float64 {
// declared at cblas.h:26:8 double cblas_dsdot ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
return float64(C.cblas_dsdot(C.int(n), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY)))
}
// Sdot computes the dot product of the two vectors
// \sum_i x[i]*y[i]
func (Implementation) Sdot(n int, x []float32, incX int, y []float32, incY int) float32 {
// declared at cblas.h:28:8 float cblas_sdot ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
return float32(C.cblas_sdot(C.int(n), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY)))
}
// Ddot computes the dot product of the two vectors
// \sum_i x[i]*y[i]
func (Implementation) Ddot(n int, x []float64, incX int, y []float64, incY int) float64 {
// declared at cblas.h:30:8 double cblas_ddot ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return 0
}
return float64(C.cblas_ddot(C.int(n), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY)))
}
// Snrm2 computes the Euclidean norm of a vector,
// sqrt(\sum_i x[i] * x[i]).
// This function returns 0 if incX is negative.
func (Implementation) Snrm2(n int, x []float32, incX int) float32 {
// declared at cblas.h:49:8 float cblas_snrm2 ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float32(C.cblas_snrm2(C.int(n), (*C.float)(&x[0]), C.int(incX)))
}
// Sasum computes the sum of the absolute values of the elements of x.
// \sum_i |x[i]|
// Sasum returns 0 if incX is negative.
func (Implementation) Sasum(n int, x []float32, incX int) float32 {
// declared at cblas.h:50:8 float cblas_sasum ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float32(C.cblas_sasum(C.int(n), (*C.float)(&x[0]), C.int(incX)))
}
// Dnrm2 computes the Euclidean norm of a vector,
// sqrt(\sum_i x[i] * x[i]).
// This function returns 0 if incX is negative.
func (Implementation) Dnrm2(n int, x []float64, incX int) float64 {
// declared at cblas.h:52:8 double cblas_dnrm2 ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float64(C.cblas_dnrm2(C.int(n), (*C.double)(&x[0]), C.int(incX)))
}
// Dasum computes the sum of the absolute values of the elements of x.
// \sum_i |x[i]|
// Dasum returns 0 if incX is negative.
func (Implementation) Dasum(n int, x []float64, incX int) float64 {
// declared at cblas.h:53:8 double cblas_dasum ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float64(C.cblas_dasum(C.int(n), (*C.double)(&x[0]), C.int(incX)))
}
func (Implementation) Scnrm2(n int, x []complex64, incX int) float32 {
// declared at cblas.h:55:8 float cblas_scnrm2 ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float32(C.cblas_scnrm2(C.int(n), unsafe.Pointer(&x[0]), C.int(incX)))
}
func (Implementation) Scasum(n int, x []complex64, incX int) float32 {
// declared at cblas.h:56:8 float cblas_scasum ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float32(C.cblas_scasum(C.int(n), unsafe.Pointer(&x[0]), C.int(incX)))
}
func (Implementation) Dznrm2(n int, x []complex128, incX int) float64 {
// declared at cblas.h:58:8 double cblas_dznrm2 ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float64(C.cblas_dznrm2(C.int(n), unsafe.Pointer(&x[0]), C.int(incX)))
}
func (Implementation) Dzasum(n int, x []complex128, incX int) float64 {
// declared at cblas.h:59:8 double cblas_dzasum ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return 0
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return 0
}
return float64(C.cblas_dzasum(C.int(n), unsafe.Pointer(&x[0]), C.int(incX)))
}
// Isamax returns the index of an element of x with the largest absolute value.
// If there are multiple such indices the earliest is returned.
// Isamax returns -1 if n == 0.
func (Implementation) Isamax(n int, x []float32, incX int) int {
// declared at cblas.h:65:13 int cblas_isamax ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n == 0 || incX < 0 {
return -1
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return -1
}
return int(C.cblas_isamax(C.int(n), (*C.float)(&x[0]), C.int(incX)))
}
// Idamax returns the index of an element of x with the largest absolute value.
// If there are multiple such indices the earliest is returned.
// Idamax returns -1 if n == 0.
func (Implementation) Idamax(n int, x []float64, incX int) int {
// declared at cblas.h:66:13 int cblas_idamax ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n == 0 || incX < 0 {
return -1
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return -1
}
return int(C.cblas_idamax(C.int(n), (*C.double)(&x[0]), C.int(incX)))
}
func (Implementation) Icamax(n int, x []complex64, incX int) int {
// declared at cblas.h:67:13 int cblas_icamax ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n == 0 || incX < 0 {
return -1
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return -1
}
return int(C.cblas_icamax(C.int(n), unsafe.Pointer(&x[0]), C.int(incX)))
}
func (Implementation) Izamax(n int, x []complex128, incX int) int {
// declared at cblas.h:68:13 int cblas_izamax ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n == 0 || incX < 0 {
return -1
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return -1
}
return int(C.cblas_izamax(C.int(n), unsafe.Pointer(&x[0]), C.int(incX)))
}
// Sswap exchanges the elements of two vectors.
// x[i], y[i] = y[i], x[i] for all i
func (Implementation) Sswap(n int, x []float32, incX int, y []float32, incY int) {
// declared at cblas.h:79:6 void cblas_sswap ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_sswap(C.int(n), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY))
}
// Scopy copies the elements of x into the elements of y.
// y[i] = x[i] for all i
func (Implementation) Scopy(n int, x []float32, incX int, y []float32, incY int) {
// declared at cblas.h:81:6 void cblas_scopy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_scopy(C.int(n), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY))
}
// Saxpy adds alpha times x to y
// y[i] += alpha * x[i] for all i
func (Implementation) Saxpy(n int, alpha float32, x []float32, incX int, y []float32, incY int) {
// declared at cblas.h:83:6 void cblas_saxpy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_saxpy(C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY))
}
// Dswap exchanges the elements of two vectors.
// x[i], y[i] = y[i], x[i] for all i
func (Implementation) Dswap(n int, x []float64, incX int, y []float64, incY int) {
// declared at cblas.h:90:6 void cblas_dswap ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_dswap(C.int(n), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY))
}
// Dcopy copies the elements of x into the elements of y.
// y[i] = x[i] for all i
func (Implementation) Dcopy(n int, x []float64, incX int, y []float64, incY int) {
// declared at cblas.h:92:6 void cblas_dcopy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_dcopy(C.int(n), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY))
}
// Daxpy adds alpha times x to y
// y[i] += alpha * x[i] for all i
func (Implementation) Daxpy(n int, alpha float64, x []float64, incX int, y []float64, incY int) {
// declared at cblas.h:94:6 void cblas_daxpy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_daxpy(C.int(n), C.double(alpha), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY))
}
func (Implementation) Cswap(n int, x []complex64, incX int, y []complex64, incY int) {
// declared at cblas.h:101:6 void cblas_cswap ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_cswap(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Ccopy(n int, x []complex64, incX int, y []complex64, incY int) {
// declared at cblas.h:103:6 void cblas_ccopy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_ccopy(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Caxpy(n int, alpha complex64, x []complex64, incX int, y []complex64, incY int) {
// declared at cblas.h:105:6 void cblas_caxpy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_caxpy(C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Zswap(n int, x []complex128, incX int, y []complex128, incY int) {
// declared at cblas.h:112:6 void cblas_zswap ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_zswap(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Zcopy(n int, x []complex128, incX int, y []complex128, incY int) {
// declared at cblas.h:114:6 void cblas_zcopy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_zcopy(C.int(n), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Zaxpy(n int, alpha complex128, x []complex128, incX int, y []complex128, incY int) {
// declared at cblas.h:116:6 void cblas_zaxpy ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_zaxpy(C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY))
}
// Srot applies a plane transformation.
// x[i] = c * x[i] + s * y[i]
// y[i] = c * y[i] - s * x[i]
func (Implementation) Srot(n int, x []float32, incX int, y []float32, incY int, c, s float32) {
// declared at cblas.h:129:6 void cblas_srot ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_srot(C.int(n), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY), C.float(c), C.float(s))
}
// Drot applies a plane transformation.
// x[i] = c * x[i] + s * y[i]
// y[i] = c * y[i] - s * x[i]
func (Implementation) Drot(n int, x []float64, incX int, y []float64, incY int, c, s float64) {
// declared at cblas.h:136:6 void cblas_drot ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_drot(C.int(n), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY), C.double(c), C.double(s))
}
// Sscal scales x by alpha.
// x[i] *= alpha
// Sscal has no effect if incX < 0.
func (Implementation) Sscal(n int, alpha float32, x []float32, incX int) {
// declared at cblas.h:145:6 void cblas_sscal ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_sscal(C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX))
}
// Dscal scales x by alpha.
// x[i] *= alpha
// Dscal has no effect if incX < 0.
func (Implementation) Dscal(n int, alpha float64, x []float64, incX int) {
// declared at cblas.h:146:6 void cblas_dscal ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_dscal(C.int(n), C.double(alpha), (*C.double)(&x[0]), C.int(incX))
}
func (Implementation) Cscal(n int, alpha complex64, x []complex64, incX int) {
// declared at cblas.h:147:6 void cblas_cscal ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_cscal(C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Zscal(n int, alpha complex128, x []complex128, incX int) {
// declared at cblas.h:148:6 void cblas_zscal ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_zscal(C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Csscal(n int, alpha float32, x []complex64, incX int) {
// declared at cblas.h:149:6 void cblas_csscal ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incX < 0 {
return
}
if incX > 0 && (n-1)*incX >= len(x) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_csscal(C.int(n), C.float(alpha), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Zdscal(n int, alpha float64, x []complex128, incX int) {
// declared at cblas.h:150:6 void cblas_zdscal ...
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_zdscal(C.int(n), C.double(alpha), unsafe.Pointer(&x[0]), C.int(incX))
}
// Sgemv computes
// y = alpha * a * x + beta * y if tA = blas.NoTrans
// y = alpha * A^T * x + beta * y if tA = blas.Trans or blas.ConjTrans
// where A is an m×n dense matrix, x and y are vectors, and alpha is a scalar.
func (Implementation) Sgemv(tA blas.Transpose, m, n int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int) {
// declared at cblas.h:171:6 void cblas_sgemv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_sgemv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX), C.float(beta), (*C.float)(&y[0]), C.int(incY))
}
// Sgbmv computes
// y = alpha * A * x + beta * y if tA == blas.NoTrans
// y = alpha * A^T * x + beta * y if tA == blas.Trans or blas.ConjTrans
// where a is an m×n band matrix kL subdiagonals and kU super-diagonals, and
// m and n refer to the size of the full dense matrix it represents.
// x and y are vectors, and alpha and beta are scalars.
func (Implementation) Sgbmv(tA blas.Transpose, m, n, kL, kU int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int) {
// declared at cblas.h:176:6 void cblas_sgbmv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if kL < 0 {
panic("blas: kL < 0")
}
if kU < 0 {
panic("blas: kU < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+kL+kU+1 > len(a) || lda < kL+kU+1 {
panic("blas: index of a out of range")
}
C.cblas_sgbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), C.int(kL), C.int(kU), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX), C.float(beta), (*C.float)(&y[0]), C.int(incY))
}
// Strmv computes
// x = A * x if tA == blas.NoTrans
// x = A^T * x if tA == blas.Trans or blas.ConjTrans
// A is an n×n Triangular matrix and x is a vector.
func (Implementation) Strmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float32, lda int, x []float32, incX int) {
// declared at cblas.h:181:6 void cblas_strmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_strmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX))
}
// Stbmv computes
// x = A * x if tA == blas.NoTrans
// x = A^T * x if tA == blas.Trans or blas.ConjTrans
// where A is an n×n triangular banded matrix with k diagonals, and x is a vector.
func (Implementation) Stbmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []float32, lda int, x []float32, incX int) {
// declared at cblas.h:185:6 void cblas_stbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_stbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX))
}
// Stpmv computes
// x = A * x if tA == blas.NoTrans
// x = A^T * x if tA == blas.Trans or blas.ConjTrans
// where A is an n×n unit triangular matrix in packed format, and x is a vector.
func (Implementation) Stpmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []float32, incX int) {
// declared at cblas.h:189:6 void cblas_stpmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_stpmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.float)(&ap[0]), (*C.float)(&x[0]), C.int(incX))
}
// Strsv solves
// A * x = b if tA == blas.NoTrans
// A^T * x = b if tA == blas.Trans or blas.ConjTrans
// A is an n×n triangular matrix and x is a vector.
// At entry to the function, x contains the values of b, and the result is
// stored in place into x.
//
// No test for singularity or near-singularity is included in this
// routine. Such tests must be performed before calling this routine.
func (Implementation) Strsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float32, lda int, x []float32, incX int) {
// declared at cblas.h:192:6 void cblas_strsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_strsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX))
}
// Stbsv solves
// A * x = b
// where A is an n×n triangular banded matrix with k diagonals in packed format,
// and x is a vector.
// At entry to the function, x contains the values of b, and the result is
// stored in place into x.
//
// No test for singularity or near-singularity is included in this
// routine. Such tests must be performed before calling this routine.
func (Implementation) Stbsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []float32, lda int, x []float32, incX int) {
// declared at cblas.h:196:6 void cblas_stbsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_stbsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX))
}
// Stpsv solves
// A * x = b if tA == blas.NoTrans
// A^T * x = b if tA == blas.Trans or blas.ConjTrans
// where A is an n×n triangular matrix in packed format and x is a vector.
// At entry to the function, x contains the values of b, and the result is
// stored in place into x.
//
// No test for singularity or near-singularity is included in this
// routine. Such tests must be performed before calling this routine.
func (Implementation) Stpsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []float32, incX int) {
// declared at cblas.h:200:6 void cblas_stpsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_stpsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.float)(&ap[0]), (*C.float)(&x[0]), C.int(incX))
}
// Dgemv computes
// y = alpha * a * x + beta * y if tA = blas.NoTrans
// y = alpha * A^T * x + beta * y if tA = blas.Trans or blas.ConjTrans
// where A is an m×n dense matrix, x and y are vectors, and alpha is a scalar.
func (Implementation) Dgemv(tA blas.Transpose, m, n int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int) {
// declared at cblas.h:204:6 void cblas_dgemv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_dgemv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX), C.double(beta), (*C.double)(&y[0]), C.int(incY))
}
// Dgbmv computes
// y = alpha * A * x + beta * y if tA == blas.NoTrans
// y = alpha * A^T * x + beta * y if tA == blas.Trans or blas.ConjTrans
// where a is an m×n band matrix kL subdiagonals and kU super-diagonals, and
// m and n refer to the size of the full dense matrix it represents.
// x and y are vectors, and alpha and beta are scalars.
func (Implementation) 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) {
// declared at cblas.h:209:6 void cblas_dgbmv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if kL < 0 {
panic("blas: kL < 0")
}
if kU < 0 {
panic("blas: kU < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+kL+kU+1 > len(a) || lda < kL+kU+1 {
panic("blas: index of a out of range")
}
C.cblas_dgbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), C.int(kL), C.int(kU), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX), C.double(beta), (*C.double)(&y[0]), C.int(incY))
}
// Dtrmv computes
// x = A * x if tA == blas.NoTrans
// x = A^T * x if tA == blas.Trans or blas.ConjTrans
// A is an n×n Triangular matrix and x is a vector.
func (Implementation) Dtrmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float64, lda int, x []float64, incX int) {
// declared at cblas.h:214:6 void cblas_dtrmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_dtrmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX))
}
// Dtbmv computes
// x = A * x if tA == blas.NoTrans
// x = A^T * x if tA == blas.Trans or blas.ConjTrans
// where A is an n×n triangular banded matrix with k diagonals, and x is a vector.
func (Implementation) Dtbmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []float64, lda int, x []float64, incX int) {
// declared at cblas.h:218:6 void cblas_dtbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_dtbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX))
}
// Dtpmv computes
// x = A * x if tA == blas.NoTrans
// x = A^T * x if tA == blas.Trans or blas.ConjTrans
// where A is an n×n unit triangular matrix in packed format, and x is a vector.
func (Implementation) Dtpmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []float64, incX int) {
// declared at cblas.h:222:6 void cblas_dtpmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_dtpmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.double)(&ap[0]), (*C.double)(&x[0]), C.int(incX))
}
// Dtrsv solves
// A * x = b if tA == blas.NoTrans
// A^T * x = b if tA == blas.Trans or blas.ConjTrans
// A is an n×n triangular matrix and x is a vector.
// At entry to the function, x contains the values of b, and the result is
// stored in place into x.
//
// No test for singularity or near-singularity is included in this
// routine. Such tests must be performed before calling this routine.
func (Implementation) Dtrsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []float64, lda int, x []float64, incX int) {
// declared at cblas.h:225:6 void cblas_dtrsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_dtrsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX))
}
// Dtbsv solves
// A * x = b
// where A is an n×n triangular banded matrix with k diagonals in packed format,
// and x is a vector.
// At entry to the function, x contains the values of b, and the result is
// stored in place into x.
//
// No test for singularity or near-singularity is included in this
// routine. Such tests must be performed before calling this routine.
func (Implementation) Dtbsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []float64, lda int, x []float64, incX int) {
// declared at cblas.h:229:6 void cblas_dtbsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_dtbsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX))
}
// Dtpsv solves
// A * x = b if tA == blas.NoTrans
// A^T * x = b if tA == blas.Trans or blas.ConjTrans
// where A is an n×n triangular matrix in packed format and x is a vector.
// At entry to the function, x contains the values of b, and the result is
// stored in place into x.
//
// No test for singularity or near-singularity is included in this
// routine. Such tests must be performed before calling this routine.
func (Implementation) Dtpsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []float64, incX int) {
// declared at cblas.h:233:6 void cblas_dtpsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_dtpsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), (*C.double)(&ap[0]), (*C.double)(&x[0]), C.int(incX))
}
func (Implementation) Cgemv(tA blas.Transpose, m, n int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int) {
// declared at cblas.h:237:6 void cblas_cgemv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_cgemv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Cgbmv(tA blas.Transpose, m, n, kL, kU int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int) {
// declared at cblas.h:242:6 void cblas_cgbmv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if kL < 0 {
panic("blas: kL < 0")
}
if kU < 0 {
panic("blas: kU < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+kL+kU+1 > len(a) || lda < kL+kU+1 {
panic("blas: index of a out of range")
}
C.cblas_cgbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), C.int(kL), C.int(kU), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Ctrmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []complex64, lda int, x []complex64, incX int) {
// declared at cblas.h:247:6 void cblas_ctrmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_ctrmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ctbmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []complex64, lda int, x []complex64, incX int) {
// declared at cblas.h:251:6 void cblas_ctbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_ctbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ctpmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []complex64, incX int) {
// declared at cblas.h:255:6 void cblas_ctpmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_ctpmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&ap[0]), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ctrsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []complex64, lda int, x []complex64, incX int) {
// declared at cblas.h:258:6 void cblas_ctrsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_ctrsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ctbsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []complex64, lda int, x []complex64, incX int) {
// declared at cblas.h:262:6 void cblas_ctbsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_ctbsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ctpsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []complex64, incX int) {
// declared at cblas.h:266:6 void cblas_ctpsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_ctpsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&ap[0]), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Zgemv(tA blas.Transpose, m, n int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int) {
// declared at cblas.h:270:6 void cblas_zgemv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_zgemv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Zgbmv(tA blas.Transpose, m, n, kL, kU int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int) {
// declared at cblas.h:275:6 void cblas_zgbmv ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if kL < 0 {
panic("blas: kL < 0")
}
if kU < 0 {
panic("blas: kU < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
var lenX, lenY int
if tA == blas.NoTrans {
lenX, lenY = n, m
} else {
lenX, lenY = m, n
}
if (incX > 0 && (lenX-1)*incX >= len(x)) || (incX < 0 && (1-lenX)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (lenY-1)*incY >= len(y)) || (incY < 0 && (1-lenY)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+kL+kU+1 > len(a) || lda < kL+kU+1 {
panic("blas: index of a out of range")
}
C.cblas_zgbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.int(m), C.int(n), C.int(kL), C.int(kU), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Ztrmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []complex128, lda int, x []complex128, incX int) {
// declared at cblas.h:280:6 void cblas_ztrmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_ztrmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ztbmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []complex128, lda int, x []complex128, incX int) {
// declared at cblas.h:284:6 void cblas_ztbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_ztbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ztpmv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []complex128, incX int) {
// declared at cblas.h:288:6 void cblas_ztpmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_ztpmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&ap[0]), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ztrsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, a []complex128, lda int, x []complex128, incX int) {
// declared at cblas.h:291:6 void cblas_ztrsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_ztrsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ztbsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n, k int, a []complex128, lda int, x []complex128, incX int) {
// declared at cblas.h:295:6 void cblas_ztbsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_ztbsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), C.int(k), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX))
}
func (Implementation) Ztpsv(ul blas.Uplo, tA blas.Transpose, d blas.Diag, n int, ap, x []complex128, incX int) {
// declared at cblas.h:299:6 void cblas_ztpsv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_ztpsv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(n), unsafe.Pointer(&ap[0]), unsafe.Pointer(&x[0]), C.int(incX))
}
// Ssymv computes
// y = alpha * A * x + beta * y,
// where a is an n×n symmetric matrix, x and y are vectors, and alpha and
// beta are scalars.
func (Implementation) Ssymv(ul blas.Uplo, n int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int) {
// declared at cblas.h:307:6 void cblas_ssymv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_ssymv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX), C.float(beta), (*C.float)(&y[0]), C.int(incY))
}
// Ssbmv performs
// y = alpha * A * x + beta * y
// where A is an n×n symmetric banded matrix, x and y are vectors, and alpha
// and beta are scalars.
func (Implementation) Ssbmv(ul blas.Uplo, n, k int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int) {
// declared at cblas.h:311:6 void cblas_ssbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_ssbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.int(k), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&x[0]), C.int(incX), C.float(beta), (*C.float)(&y[0]), C.int(incY))
}
// Sspmv performs
// y = alpha * A * x + beta * y,
// where A is an n×n symmetric matrix in packed format, x and y are vectors
// and alpha and beta are scalars.
func (Implementation) Sspmv(ul blas.Uplo, n int, alpha float32, ap, x []float32, incX int, beta float32, y []float32, incY int) {
// declared at cblas.h:315:6 void cblas_sspmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_sspmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), (*C.float)(&ap[0]), (*C.float)(&x[0]), C.int(incX), C.float(beta), (*C.float)(&y[0]), C.int(incY))
}
// Sger performs the rank-one operation
// A += alpha * x * y^T
// where A is an m×n dense matrix, x and y are vectors, and alpha is a scalar.
func (Implementation) Sger(m, n int, alpha float32, x []float32, incX int, y []float32, incY int, a []float32, lda int) {
// declared at cblas.h:319:6 void cblas_sger ...
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (m-1)*incX >= len(x)) || (incX < 0 && (1-m)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_sger(C.enum_CBLAS_ORDER(rowMajor), C.int(m), C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY), (*C.float)(&a[0]), C.int(lda))
}
// Ssyr performs the rank-one update
// a += alpha * x * x^T
// where a is an n×n symmetric matrix, and x is a vector.
func (Implementation) Ssyr(ul blas.Uplo, n int, alpha float32, x []float32, incX int, a []float32, lda int) {
// declared at cblas.h:322:6 void cblas_ssyr ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_ssyr(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX), (*C.float)(&a[0]), C.int(lda))
}
// Sspr computes the rank-one operation
// a += alpha * x * x^T
// where a is an n×n symmetric matrix in packed format, x is a vector, and
// alpha is a scalar.
func (Implementation) Sspr(ul blas.Uplo, n int, alpha float32, x []float32, incX int, ap []float32) {
// declared at cblas.h:325:6 void cblas_sspr ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_sspr(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX), (*C.float)(&ap[0]))
}
// Ssyr2 performs the symmetric rank-two update
// A += alpha * x * y^T + alpha * y * x^T
// where A is a symmetric n×n matrix, x and y are vectors, and alpha is a scalar.
func (Implementation) Ssyr2(ul blas.Uplo, n int, alpha float32, x []float32, incX int, y []float32, incY int, a []float32, lda int) {
// declared at cblas.h:328:6 void cblas_ssyr2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_ssyr2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY), (*C.float)(&a[0]), C.int(lda))
}
// Sspr2 performs the symmetric rank-2 update
// A += alpha * x * y^T + alpha * y * x^T,
// where A is an n×n symmetric matrix in packed format, x and y are vectors,
// and alpha is a scalar.
func (Implementation) Sspr2(ul blas.Uplo, n int, alpha float32, x []float32, incX int, y []float32, incY int, ap []float32) {
// declared at cblas.h:332:6 void cblas_sspr2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_sspr2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), (*C.float)(&x[0]), C.int(incX), (*C.float)(&y[0]), C.int(incY), (*C.float)(&ap[0]))
}
// Dsymv computes
// y = alpha * A * x + beta * y,
// where a is an n×n symmetric matrix, x and y are vectors, and alpha and
// beta are scalars.
func (Implementation) Dsymv(ul blas.Uplo, n int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int) {
// declared at cblas.h:336:6 void cblas_dsymv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_dsymv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX), C.double(beta), (*C.double)(&y[0]), C.int(incY))
}
// Dsbmv performs
// y = alpha * A * x + beta * y
// where A is an n×n symmetric banded matrix, x and y are vectors, and alpha
// and beta are scalars.
func (Implementation) Dsbmv(ul blas.Uplo, n, k int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int) {
// declared at cblas.h:340:6 void cblas_dsbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_dsbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.int(k), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&x[0]), C.int(incX), C.double(beta), (*C.double)(&y[0]), C.int(incY))
}
// Dspmv performs
// y = alpha * A * x + beta * y,
// where A is an n×n symmetric matrix in packed format, x and y are vectors
// and alpha and beta are scalars.
func (Implementation) Dspmv(ul blas.Uplo, n int, alpha float64, ap, x []float64, incX int, beta float64, y []float64, incY int) {
// declared at cblas.h:344:6 void cblas_dspmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_dspmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), (*C.double)(&ap[0]), (*C.double)(&x[0]), C.int(incX), C.double(beta), (*C.double)(&y[0]), C.int(incY))
}
// Dger performs the rank-one operation
// A += alpha * x * y^T
// where A is an m×n dense matrix, x and y are vectors, and alpha is a scalar.
func (Implementation) Dger(m, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64, lda int) {
// declared at cblas.h:348:6 void cblas_dger ...
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (m-1)*incX >= len(x)) || (incX < 0 && (1-m)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_dger(C.enum_CBLAS_ORDER(rowMajor), C.int(m), C.int(n), C.double(alpha), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY), (*C.double)(&a[0]), C.int(lda))
}
// Dsyr performs the rank-one update
// a += alpha * x * x^T
// where a is an n×n symmetric matrix, and x is a vector.
func (Implementation) Dsyr(ul blas.Uplo, n int, alpha float64, x []float64, incX int, a []float64, lda int) {
// declared at cblas.h:351:6 void cblas_dsyr ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_dsyr(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), (*C.double)(&x[0]), C.int(incX), (*C.double)(&a[0]), C.int(lda))
}
// Dspr computes the rank-one operation
// a += alpha * x * x^T
// where a is an n×n symmetric matrix in packed format, x is a vector, and
// alpha is a scalar.
func (Implementation) Dspr(ul blas.Uplo, n int, alpha float64, x []float64, incX int, ap []float64) {
// declared at cblas.h:354:6 void cblas_dspr ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_dspr(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), (*C.double)(&x[0]), C.int(incX), (*C.double)(&ap[0]))
}
// Dsyr2 performs the symmetric rank-two update
// A += alpha * x * y^T + alpha * y * x^T
// where A is a symmetric n×n matrix, x and y are vectors, and alpha is a scalar.
func (Implementation) Dsyr2(ul blas.Uplo, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64, lda int) {
// declared at cblas.h:357:6 void cblas_dsyr2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_dsyr2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY), (*C.double)(&a[0]), C.int(lda))
}
// Dspr2 performs the symmetric rank-2 update
// A += alpha * x * y^T + alpha * y * x^T,
// where A is an n×n symmetric matrix in packed format, x and y are vectors,
// and alpha is a scalar.
func (Implementation) Dspr2(ul blas.Uplo, n int, alpha float64, x []float64, incX int, y []float64, incY int, ap []float64) {
// declared at cblas.h:361:6 void cblas_dspr2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_dspr2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), (*C.double)(&x[0]), C.int(incX), (*C.double)(&y[0]), C.int(incY), (*C.double)(&ap[0]))
}
func (Implementation) Chemv(ul blas.Uplo, n int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int) {
// declared at cblas.h:369:6 void cblas_chemv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_chemv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Chbmv(ul blas.Uplo, n, k int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int) {
// declared at cblas.h:373:6 void cblas_chbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_chbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Chpmv(ul blas.Uplo, n int, alpha complex64, ap, x []complex64, incX int, beta complex64, y []complex64, incY int) {
// declared at cblas.h:377:6 void cblas_chpmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_chpmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&ap[0]), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Cgeru(m, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, a []complex64, lda int) {
// declared at cblas.h:381:6 void cblas_cgeru ...
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (m-1)*incX >= len(x)) || (incX < 0 && (1-m)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_cgeru(C.enum_CBLAS_ORDER(rowMajor), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Cgerc(m, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, a []complex64, lda int) {
// declared at cblas.h:384:6 void cblas_cgerc ...
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (m-1)*incX >= len(x)) || (incX < 0 && (1-m)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_cgerc(C.enum_CBLAS_ORDER(rowMajor), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Cher(ul blas.Uplo, n int, alpha float32, x []complex64, incX int, a []complex64, lda int) {
// declared at cblas.h:387:6 void cblas_cher ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_cher(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Chpr(ul blas.Uplo, n int, alpha float32, x []complex64, incX int, ap []complex64) {
// declared at cblas.h:390:6 void cblas_chpr ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_chpr(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.float(alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&ap[0]))
}
func (Implementation) Cher2(ul blas.Uplo, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, a []complex64, lda int) {
// declared at cblas.h:393:6 void cblas_cher2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_cher2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Chpr2(ul blas.Uplo, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, ap []complex64) {
// declared at cblas.h:396:6 void cblas_chpr2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_chpr2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&ap[0]))
}
func (Implementation) Zhemv(ul blas.Uplo, n int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int) {
// declared at cblas.h:400:6 void cblas_zhemv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_zhemv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Zhbmv(ul blas.Uplo, n, k int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int) {
// declared at cblas.h:404:6 void cblas_zhbmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+k+1 > len(a) || lda < k+1 {
panic("blas: index of a out of range")
}
C.cblas_zhbmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Zhpmv(ul blas.Uplo, n int, alpha complex128, ap, x []complex128, incX int, beta complex128, y []complex128, incY int) {
// declared at cblas.h:408:6 void cblas_zhpmv ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_zhpmv(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&ap[0]), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&beta), unsafe.Pointer(&y[0]), C.int(incY))
}
func (Implementation) Zgeru(m, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int) {
// declared at cblas.h:412:6 void cblas_zgeru ...
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (m-1)*incX >= len(x)) || (incX < 0 && (1-m)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_zgeru(C.enum_CBLAS_ORDER(rowMajor), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Zgerc(m, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int) {
// declared at cblas.h:415:6 void cblas_zgerc ...
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (m-1)*incX >= len(x)) || (incX < 0 && (1-m)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(m-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_zgerc(C.enum_CBLAS_ORDER(rowMajor), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Zher(ul blas.Uplo, n int, alpha float64, x []complex128, incX int, a []complex128, lda int) {
// declared at cblas.h:418:6 void cblas_zher ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_zher(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Zhpr(ul blas.Uplo, n int, alpha float64, x []complex128, incX int, ap []complex128) {
// declared at cblas.h:421:6 void cblas_zhpr ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if n == 0 {
return
}
C.cblas_zhpr(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), C.double(alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&ap[0]))
}
func (Implementation) Zher2(ul blas.Uplo, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int) {
// declared at cblas.h:424:6 void cblas_zher2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if lda*(n-1)+n > len(a) || lda < max(1, n) {
panic("blas: index of a out of range")
}
C.cblas_zher2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&a[0]), C.int(lda))
}
func (Implementation) Zhpr2(ul blas.Uplo, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, ap []complex128) {
// declared at cblas.h:427:6 void cblas_zhpr2 ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if n < 0 {
panic("blas: n < 0")
}
if incX == 0 {
panic("blas: zero x index increment")
}
if incY == 0 {
panic("blas: zero y index increment")
}
if n*(n+1)/2 > len(ap) {
panic("blas: index of ap out of range")
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("blas: x index out of range")
}
if (incY > 0 && (n-1)*incY >= len(y)) || (incY < 0 && (1-n)*incY >= len(y)) {
panic("blas: y index out of range")
}
if n == 0 {
return
}
C.cblas_zhpr2(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&x[0]), C.int(incX), unsafe.Pointer(&y[0]), C.int(incY), unsafe.Pointer(&ap[0]))
}
// Sgemm computes
// C = beta * C + alpha * A * B,
// where A, B, and C are dense matrices, and alpha and beta are scalars.
// tA and tB specify whether A or B are transposed.
func (Implementation) Sgemm(tA, tB blas.Transpose, m, n, k int, alpha float32, a []float32, lda int, b []float32, ldb int, beta float32, c []float32, ldc int) {
// declared at cblas.h:440:6 void cblas_sgemm ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if tB != blas.NoTrans && tB != blas.Trans && tB != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var rowA, colA, rowB, colB int
if tA == blas.NoTrans {
rowA, colA = m, k
} else {
rowA, colA = k, m
}
if tB == blas.NoTrans {
rowB, colB = k, n
} else {
rowB, colB = n, k
}
if lda*(rowA-1)+colA > len(a) || lda < max(1, colA) {
panic("blas: index of a out of range")
}
if ldb*(rowB-1)+colB > len(b) || ldb < max(1, colB) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_sgemm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_TRANSPOSE(tB), C.int(m), C.int(n), C.int(k), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&b[0]), C.int(ldb), C.float(beta), (*C.float)(&c[0]), C.int(ldc))
}
// Ssymm performs one of
// C = alpha * A * B + beta * C, if side == blas.Left,
// C = alpha * B * A + beta * C, if side == blas.Right,
// where A is an n×n or m×m symmetric matrix, B and C are m×n matrices, and alpha
// is a scalar.
func (Implementation) Ssymm(s blas.Side, ul blas.Uplo, m, n int, alpha float32, a []float32, lda int, b []float32, ldb int, beta float32, c []float32, ldc int) {
// declared at cblas.h:445:6 void cblas_ssymm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_ssymm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.int(m), C.int(n), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&b[0]), C.int(ldb), C.float(beta), (*C.float)(&c[0]), C.int(ldc))
}
// Ssyrk performs the symmetric rank-k operation
// C = alpha * A * A^T + beta*C
// C is an n×n symmetric matrix. A is an n×k matrix if tA == blas.NoTrans, and
// a k×n matrix otherwise. alpha and beta are scalars.
func (Implementation) Ssyrk(ul blas.Uplo, t blas.Transpose, n, k int, alpha float32, a []float32, lda int, beta float32, c []float32, ldc int) {
// declared at cblas.h:450:6 void cblas_ssyrk ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_ssyrk(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), C.float(alpha), (*C.float)(&a[0]), C.int(lda), C.float(beta), (*C.float)(&c[0]), C.int(ldc))
}
// Ssyr2k performs the symmetric rank 2k operation
// C = alpha * A * B^T + alpha * B * A^T + beta * C
// where C is an n×n symmetric matrix. A and B are n×k matrices if
// tA == NoTrans and k×n otherwise. alpha and beta are scalars.
func (Implementation) Ssyr2k(ul blas.Uplo, t blas.Transpose, n, k int, alpha float32, a []float32, lda int, b []float32, ldb int, beta float32, c []float32, ldc int) {
// declared at cblas.h:454:6 void cblas_ssyr2k ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldb*(row-1)+col > len(b) || ldb < max(1, col) {
panic("blas: index of b out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_ssyr2k(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&b[0]), C.int(ldb), C.float(beta), (*C.float)(&c[0]), C.int(ldc))
}
// Strmm performs
// B = alpha * A * B, if tA == blas.NoTrans and side == blas.Left,
// B = alpha * A^T * B, if tA == blas.Trans or blas.ConjTrans, and side == blas.Left,
// B = alpha * B * A, if tA == blas.NoTrans and side == blas.Right,
// B = alpha * B * A^T, if tA == blas.Trans or blas.ConjTrans, and side == blas.Right,
// where A is an n×n or m×m triangular matrix, and B is an m×n matrix.
func (Implementation) Strmm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha float32, a []float32, lda int, b []float32, ldb int) {
// declared at cblas.h:459:6 void cblas_strmm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_strmm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&b[0]), C.int(ldb))
}
// Strsm solves
// A * X = alpha * B, if tA == blas.NoTrans side == blas.Left,
// A^T * X = alpha * B, if tA == blas.Trans or blas.ConjTrans, and side == blas.Left,
// X * A = alpha * B, if tA == blas.NoTrans side == blas.Right,
// X * A^T = alpha * B, if tA == blas.Trans or blas.ConjTrans, and side == blas.Right,
// where A is an n×n or m×m triangular matrix, X is an m×n matrix, and alpha is a
// scalar.
//
// At entry to the function, X contains the values of B, and the result is
// stored in place into X.
//
// No check is made that A is invertible.
func (Implementation) Strsm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha float32, a []float32, lda int, b []float32, ldb int) {
// declared at cblas.h:464:6 void cblas_strsm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_strsm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), C.float(alpha), (*C.float)(&a[0]), C.int(lda), (*C.float)(&b[0]), C.int(ldb))
}
// Dgemm computes
// C = beta * C + alpha * A * B,
// where A, B, and C are dense matrices, and alpha and beta are scalars.
// tA and tB specify whether A or B are transposed.
func (Implementation) 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) {
// declared at cblas.h:470:6 void cblas_dgemm ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if tB != blas.NoTrans && tB != blas.Trans && tB != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var rowA, colA, rowB, colB int
if tA == blas.NoTrans {
rowA, colA = m, k
} else {
rowA, colA = k, m
}
if tB == blas.NoTrans {
rowB, colB = k, n
} else {
rowB, colB = n, k
}
if lda*(rowA-1)+colA > len(a) || lda < max(1, colA) {
panic("blas: index of a out of range")
}
if ldb*(rowB-1)+colB > len(b) || ldb < max(1, colB) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_dgemm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_TRANSPOSE(tB), C.int(m), C.int(n), C.int(k), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&b[0]), C.int(ldb), C.double(beta), (*C.double)(&c[0]), C.int(ldc))
}
// Dsymm performs one of
// C = alpha * A * B + beta * C, if side == blas.Left,
// C = alpha * B * A + beta * C, if side == blas.Right,
// where A is an n×n or m×m symmetric matrix, B and C are m×n matrices, and alpha
// is a scalar.
func (Implementation) 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) {
// declared at cblas.h:475:6 void cblas_dsymm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_dsymm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.int(m), C.int(n), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&b[0]), C.int(ldb), C.double(beta), (*C.double)(&c[0]), C.int(ldc))
}
// Dsyrk performs the symmetric rank-k operation
// C = alpha * A * A^T + beta*C
// C is an n×n symmetric matrix. A is an n×k matrix if tA == blas.NoTrans, and
// a k×n matrix otherwise. alpha and beta are scalars.
func (Implementation) Dsyrk(ul blas.Uplo, t blas.Transpose, n, k int, alpha float64, a []float64, lda int, beta float64, c []float64, ldc int) {
// declared at cblas.h:480:6 void cblas_dsyrk ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_dsyrk(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), C.double(alpha), (*C.double)(&a[0]), C.int(lda), C.double(beta), (*C.double)(&c[0]), C.int(ldc))
}
// Dsyr2k performs the symmetric rank 2k operation
// C = alpha * A * B^T + alpha * B * A^T + beta * C
// where C is an n×n symmetric matrix. A and B are n×k matrices if
// tA == NoTrans and k×n otherwise. alpha and beta are scalars.
func (Implementation) Dsyr2k(ul blas.Uplo, t blas.Transpose, n, k int, alpha float64, a []float64, lda int, b []float64, ldb int, beta float64, c []float64, ldc int) {
// declared at cblas.h:484:6 void cblas_dsyr2k ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldb*(row-1)+col > len(b) || ldb < max(1, col) {
panic("blas: index of b out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_dsyr2k(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&b[0]), C.int(ldb), C.double(beta), (*C.double)(&c[0]), C.int(ldc))
}
// Dtrmm performs
// B = alpha * A * B, if tA == blas.NoTrans and side == blas.Left,
// B = alpha * A^T * B, if tA == blas.Trans or blas.ConjTrans, and side == blas.Left,
// B = alpha * B * A, if tA == blas.NoTrans and side == blas.Right,
// B = alpha * B * A^T, if tA == blas.Trans or blas.ConjTrans, and side == blas.Right,
// where A is an n×n or m×m triangular matrix, and B is an m×n matrix.
func (Implementation) 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) {
// declared at cblas.h:489:6 void cblas_dtrmm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_dtrmm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&b[0]), C.int(ldb))
}
// Dtrsm solves
// A * X = alpha * B, if tA == blas.NoTrans side == blas.Left,
// A^T * X = alpha * B, if tA == blas.Trans or blas.ConjTrans, and side == blas.Left,
// X * A = alpha * B, if tA == blas.NoTrans side == blas.Right,
// X * A^T = alpha * B, if tA == blas.Trans or blas.ConjTrans, and side == blas.Right,
// where A is an n×n or m×m triangular matrix, X is an m×n matrix, and alpha is a
// scalar.
//
// At entry to the function, X contains the values of B, and the result is
// stored in place into X.
//
// No check is made that A is invertible.
func (Implementation) 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) {
// declared at cblas.h:494:6 void cblas_dtrsm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_dtrsm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), C.double(alpha), (*C.double)(&a[0]), C.int(lda), (*C.double)(&b[0]), C.int(ldb))
}
func (Implementation) Cgemm(tA, tB blas.Transpose, m, n, k int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int) {
// declared at cblas.h:500:6 void cblas_cgemm ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if tB != blas.NoTrans && tB != blas.Trans && tB != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var rowA, colA, rowB, colB int
if tA == blas.NoTrans {
rowA, colA = m, k
} else {
rowA, colA = k, m
}
if tB == blas.NoTrans {
rowB, colB = k, n
} else {
rowB, colB = n, k
}
if lda*(rowA-1)+colA > len(a) || lda < max(1, colA) {
panic("blas: index of a out of range")
}
if ldb*(rowB-1)+colB > len(b) || ldb < max(1, colB) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_cgemm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_TRANSPOSE(tB), C.int(m), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Csymm(s blas.Side, ul blas.Uplo, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int) {
// declared at cblas.h:505:6 void cblas_csymm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_csymm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Csyrk(ul blas.Uplo, t blas.Transpose, n, k int, alpha complex64, a []complex64, lda int, beta complex64, c []complex64, ldc int) {
// declared at cblas.h:510:6 void cblas_csyrk ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_csyrk(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Csyr2k(ul blas.Uplo, t blas.Transpose, n, k int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int) {
// declared at cblas.h:514:6 void cblas_csyr2k ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldb*(row-1)+col > len(b) || ldb < max(1, col) {
panic("blas: index of b out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_csyr2k(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Ctrmm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int) {
// declared at cblas.h:519:6 void cblas_ctrmm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_ctrmm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb))
}
func (Implementation) Ctrsm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int) {
// declared at cblas.h:524:6 void cblas_ctrsm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_ctrsm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb))
}
func (Implementation) 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) {
// declared at cblas.h:530:6 void cblas_zgemm ...
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if tB != blas.NoTrans && tB != blas.Trans && tB != blas.ConjTrans {
panic("blas: illegal transpose")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var rowA, colA, rowB, colB int
if tA == blas.NoTrans {
rowA, colA = m, k
} else {
rowA, colA = k, m
}
if tB == blas.NoTrans {
rowB, colB = k, n
} else {
rowB, colB = n, k
}
if lda*(rowA-1)+colA > len(a) || lda < max(1, colA) {
panic("blas: index of a out of range")
}
if ldb*(rowB-1)+colB > len(b) || ldb < max(1, colB) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_zgemm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_TRANSPOSE(tB), C.int(m), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Zsymm(s blas.Side, ul blas.Uplo, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) {
// declared at cblas.h:535:6 void cblas_zsymm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_zsymm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Zsyrk(ul blas.Uplo, t blas.Transpose, n, k int, alpha complex128, a []complex128, lda int, beta complex128, c []complex128, ldc int) {
// declared at cblas.h:540:6 void cblas_zsyrk ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_zsyrk(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Zsyr2k(ul blas.Uplo, t blas.Transpose, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) {
// declared at cblas.h:544:6 void cblas_zsyr2k ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.Trans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldb*(row-1)+col > len(b) || ldb < max(1, col) {
panic("blas: index of b out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_zsyr2k(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Ztrmm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int) {
// declared at cblas.h:549:6 void cblas_ztrmm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_ztrmm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb))
}
func (Implementation) Ztrsm(s blas.Side, ul blas.Uplo, tA blas.Transpose, d blas.Diag, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int) {
// declared at cblas.h:554:6 void cblas_ztrsm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if tA != blas.NoTrans && tA != blas.Trans && tA != blas.ConjTrans {
panic("blas: illegal transpose")
}
if d != blas.NonUnit && d != blas.Unit {
panic("blas: illegal diagonal")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
C.cblas_ztrsm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(tA), C.enum_CBLAS_DIAG(d), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb))
}
func (Implementation) Chemm(s blas.Side, ul blas.Uplo, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int) {
// declared at cblas.h:564:6 void cblas_chemm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_chemm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Cherk(ul blas.Uplo, t blas.Transpose, n, k int, alpha float32, a []complex64, lda int, beta float32, c []complex64, ldc int) {
// declared at cblas.h:569:6 void cblas_cherk ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_cherk(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), C.float(alpha), unsafe.Pointer(&a[0]), C.int(lda), C.float(beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Cher2k(ul blas.Uplo, t blas.Transpose, n, k int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta float32, c []complex64, ldc int) {
// declared at cblas.h:573:6 void cblas_cher2k ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldb*(row-1)+col > len(b) || ldb < max(1, col) {
panic("blas: index of b out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_cher2k(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), C.float(beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Zhemm(s blas.Side, ul blas.Uplo, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) {
// declared at cblas.h:578:6 void cblas_zhemm ...
if s != blas.Left && s != blas.Right {
panic("blas: illegal side")
}
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if m < 0 {
panic("blas: m < 0")
}
if n < 0 {
panic("blas: n < 0")
}
var k int
if s == blas.Left {
k = m
} else {
k = n
}
if lda*(k-1)+k > len(a) || lda < max(1, k) {
panic("blas: index of a out of range")
}
if ldb*(m-1)+n > len(b) || ldb < max(1, n) {
panic("blas: index of b out of range")
}
if ldc*(m-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_zhemm(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_SIDE(s), C.enum_CBLAS_UPLO(ul), C.int(m), C.int(n), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), unsafe.Pointer(&beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Zherk(ul blas.Uplo, t blas.Transpose, n, k int, alpha float64, a []complex128, lda int, beta float64, c []complex128, ldc int) {
// declared at cblas.h:583:6 void cblas_zherk ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_zherk(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), C.double(alpha), unsafe.Pointer(&a[0]), C.int(lda), C.double(beta), unsafe.Pointer(&c[0]), C.int(ldc))
}
func (Implementation) Zher2k(ul blas.Uplo, t blas.Transpose, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta float64, c []complex128, ldc int) {
// declared at cblas.h:587:6 void cblas_zher2k ...
if ul != blas.Upper && ul != blas.Lower {
panic("blas: illegal triangle")
}
if t != blas.NoTrans && t != blas.ConjTrans {
panic("blas: illegal transpose")
}
if n < 0 {
panic("blas: n < 0")
}
if k < 0 {
panic("blas: k < 0")
}
var row, col int
if t == blas.NoTrans {
row, col = n, k
} else {
row, col = k, n
}
if lda*(row-1)+col > len(a) || lda < max(1, col) {
panic("blas: index of a out of range")
}
if ldb*(row-1)+col > len(b) || ldb < max(1, col) {
panic("blas: index of b out of range")
}
if ldc*(n-1)+n > len(c) || ldc < max(1, n) {
panic("blas: index of c out of range")
}
C.cblas_zher2k(C.enum_CBLAS_ORDER(rowMajor), C.enum_CBLAS_UPLO(ul), C.enum_CBLAS_TRANSPOSE(t), C.int(n), C.int(k), unsafe.Pointer(&alpha), unsafe.Pointer(&a[0]), C.int(lda), unsafe.Pointer(&b[0]), C.int(ldb), C.double(beta), unsafe.Pointer(&c[0]), C.int(ldc))
}