--- /dev/null
+// Copyright ©2016 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.
+
+//+build !amd64 noasm appengine
+
+package f32
+
+// AxpyUnitary is
+// for i, v := range x {
+// y[i] += alpha * v
+// }
+func AxpyUnitary(alpha float32, x, y []float32) {
+ for i, v := range x {
+ y[i] += alpha * v
+ }
+}
+
+// AxpyUnitaryTo is
+// for i, v := range x {
+// dst[i] = alpha*v + y[i]
+// }
+func AxpyUnitaryTo(dst []float32, alpha float32, x, y []float32) {
+ for i, v := range x {
+ dst[i] = alpha*v + y[i]
+ }
+}
+
+// AxpyInc is
+// for i := 0; i < int(n); i++ {
+// y[iy] += alpha * x[ix]
+// ix += incX
+// iy += incY
+// }
+func AxpyInc(alpha float32, x, y []float32, n, incX, incY, ix, iy uintptr) {
+ for i := 0; i < int(n); i++ {
+ y[iy] += alpha * x[ix]
+ ix += incX
+ iy += incY
+ }
+}
+
+// AxpyIncTo is
+// for i := 0; i < int(n); i++ {
+// dst[idst] = alpha*x[ix] + y[iy]
+// ix += incX
+// iy += incY
+// idst += incDst
+// }
+func AxpyIncTo(dst []float32, incDst, idst uintptr, alpha float32, x, y []float32, n, incX, incY, ix, iy uintptr) {
+ for i := 0; i < int(n); i++ {
+ dst[idst] = alpha*x[ix] + y[iy]
+ ix += incX
+ iy += incY
+ idst += incDst
+ }
+}
+
+// DotUnitary is
+// for i, v := range x {
+// sum += y[i] * v
+// }
+// return sum
+func DotUnitary(x, y []float32) (sum float32) {
+ for i, v := range x {
+ sum += y[i] * v
+ }
+ return sum
+}
+
+// DotInc is
+// for i := 0; i < int(n); i++ {
+// sum += y[iy] * x[ix]
+// ix += incX
+// iy += incY
+// }
+// return sum
+func DotInc(x, y []float32, n, incX, incY, ix, iy uintptr) (sum float32) {
+ for i := 0; i < int(n); i++ {
+ sum += y[iy] * x[ix]
+ ix += incX
+ iy += incY
+ }
+ return sum
+}
+
+// DdotUnitary is
+// for i, v := range x {
+// sum += float64(y[i]) * float64(v)
+// }
+// return
+func DdotUnitary(x, y []float32) (sum float64) {
+ for i, v := range x {
+ sum += float64(y[i]) * float64(v)
+ }
+ return
+}
+
+// DdotInc is
+// for i := 0; i < int(n); i++ {
+// sum += float64(y[iy]) * float64(x[ix])
+// ix += incX
+// iy += incY
+// }
+// return
+func DdotInc(x, y []float32, n, incX, incY, ix, iy uintptr) (sum float64) {
+ for i := 0; i < int(n); i++ {
+ sum += float64(y[iy]) * float64(x[ix])
+ ix += incX
+ iy += incY
+ }
+ return
+}