OSDN Git Service

new repo
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / blas / gonum / level1single_sdot.go
1 // Code generated by "go generate gonum.org/v1/gonum/blas/gonum”; DO NOT EDIT.
2
3 // Copyright ©2015 The Gonum Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 package gonum
8
9 import (
10         "gonum.org/v1/gonum/internal/asm/f32"
11 )
12
13 // Sdot computes the dot product of the two vectors
14 //  \sum_i x[i]*y[i]
15 //
16 // Float32 implementations are autogenerated and not directly tested.
17 func (Implementation) Sdot(n int, x []float32, incX int, y []float32, incY int) float32 {
18         if incX == 0 {
19                 panic(zeroIncX)
20         }
21         if incY == 0 {
22                 panic(zeroIncY)
23         }
24         if n <= 0 {
25                 if n == 0 {
26                         return 0
27                 }
28                 panic(negativeN)
29         }
30         if incX == 1 && incY == 1 {
31                 if len(x) < n {
32                         panic(badLenX)
33                 }
34                 if len(y) < n {
35                         panic(badLenY)
36                 }
37                 return f32.DotUnitary(x[:n], y)
38         }
39         var ix, iy int
40         if incX < 0 {
41                 ix = (-n + 1) * incX
42         }
43         if incY < 0 {
44                 iy = (-n + 1) * incY
45         }
46         if ix >= len(x) || ix+(n-1)*incX >= len(x) {
47                 panic(badLenX)
48         }
49         if iy >= len(y) || iy+(n-1)*incY >= len(y) {
50                 panic(badLenY)
51         }
52         return f32.DotInc(x, y, uintptr(n), uintptr(incX), uintptr(incY), uintptr(ix), uintptr(iy))
53 }