Harmonise behaviour with reference code

Still missing on Idamax, but that may require some more thinking.
This commit is contained in:
kortschak
2014-01-07 11:52:31 +10:30
parent ffc06f2dd0
commit 148024ec48
2 changed files with 61 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ package cblas
/*
#cgo CFLAGS: -g -O2
#cgo linux LDFLAGS: -L/usr/lib/ -lcblas
#cgo darwin LDFLAGS: -DYA_BLAS -DYA_LAPACK -DYA_BLASMULT -framework Accelerate
#cgo darwin LDFLAGS: -DYA_BLAS -DYA_LAPACK -DYA_BLASMULT -framework vecLib
#include "cblas.h"
*/
import "C"
@@ -273,6 +273,9 @@ func (Blas) Snrm2(n int, x []float32, incX int) float32 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -285,6 +288,9 @@ func (Blas) Sasum(n int, x []float32, incX int) float32 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -297,6 +303,9 @@ func (Blas) Dnrm2(n int, x []float64, incX int) float64 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -309,6 +318,9 @@ func (Blas) Dasum(n int, x []float64, incX int) float64 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -321,6 +333,9 @@ func (Blas) Scnrm2(n int, x []complex64, incX int) float32 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -333,6 +348,9 @@ func (Blas) Scasum(n int, x []complex64, incX int) float32 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -345,6 +363,9 @@ func (Blas) Dznrm2(n int, x []complex128, incX int) float64 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -357,6 +378,9 @@ func (Blas) Dzasum(n int, x []complex128, incX int) float64 {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return 0
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -369,6 +393,9 @@ func (Blas) Isamax(n int, x []float32, incX int) int {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return -1
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -381,6 +408,9 @@ func (Blas) Idamax(n int, x []float64, incX int) int {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return -1
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -393,6 +423,9 @@ func (Blas) Icamax(n int, x []complex64, incX int) int {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return -1
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -405,6 +438,9 @@ func (Blas) Izamax(n int, x []complex128, incX int) int {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return -1
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -669,6 +705,9 @@ func (Blas) Sscal(n int, alpha float32, x []float32, incX int) {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -681,6 +720,9 @@ func (Blas) Dscal(n int, alpha float64, x []float64, incX int) {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -693,6 +735,9 @@ func (Blas) Cscal(n int, alpha complex64, x []complex64, incX int) {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -705,6 +750,9 @@ func (Blas) Zscal(n int, alpha complex128, x []complex128, incX int) {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}
@@ -717,6 +765,9 @@ func (Blas) Csscal(n int, alpha float32, x []complex64, incX int) {
if incX == 0 {
panic("cblas: zero x index increment")
}
if incX < 0 {
return
}
if (incX > 0 && (n-1)*incX >= len(x)) || (incX < 0 && (1-n)*incX >= len(x)) {
panic("cblas: x index out of range")
}