OSDN Git Service

new repo
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / blas / gonum / level1single_sdsdot.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 // Sdsdot computes the dot product of the two vectors plus a constant
14 //  alpha + \sum_i x[i]*y[i]
15 //
16 // Float32 implementations are autogenerated and not directly tested.
17 func (Implementation) Sdsdot(n int, alpha float32, 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 alpha + float32(f32.DdotUnitary(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 alpha + float32(f32.DdotInc(x, y, uintptr(n), uintptr(incX), uintptr(incY), uintptr(ix), uintptr(iy)))
53 }