OSDN Git Service

new repo
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / internal / asm / f64 / stubs_noasm.go
1 // Copyright ©2016 The Gonum Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 //+build !amd64 noasm appengine
6
7 package f64
8
9 import "math"
10
11 // L1Norm is
12 //  for _, v := range x {
13 //      sum += math.Abs(v)
14 //  }
15 //  return sum
16 func L1Norm(x []float64) (sum float64) {
17         for _, v := range x {
18                 sum += math.Abs(v)
19         }
20         return sum
21 }
22
23 // L1NormInc is
24 //  for i := 0; i < n*incX; i += incX {
25 //      sum += math.Abs(x[i])
26 //  }
27 //  return sum
28 func L1NormInc(x []float64, n, incX int) (sum float64) {
29         for i := 0; i < n*incX; i += incX {
30                 sum += math.Abs(x[i])
31         }
32         return sum
33 }
34
35 // Add is
36 //  for i, v := range s {
37 //      dst[i] += v
38 //  }
39 func Add(dst, s []float64) {
40         for i, v := range s {
41                 dst[i] += v
42         }
43 }
44
45 // AddConst is
46 //  for i := range x {
47 //      x[i] += alpha
48 //  }
49 func AddConst(alpha float64, x []float64) {
50         for i := range x {
51                 x[i] += alpha
52         }
53 }
54
55 // CumSum is
56 //  if len(s) == 0 {
57 //      return dst
58 //  }
59 //  dst[0] = s[0]
60 //  for i, v := range s[1:] {
61 //      dst[i+1] = dst[i] + v
62 //  }
63 //  return dst
64 func CumSum(dst, s []float64) []float64 {
65         if len(s) == 0 {
66                 return dst
67         }
68         dst[0] = s[0]
69         for i, v := range s[1:] {
70                 dst[i+1] = dst[i] + v
71         }
72         return dst
73 }
74
75 // CumProd is
76 //  if len(s) == 0 {
77 //      return dst
78 //  }
79 //  dst[0] = s[0]
80 //  for i, v := range s[1:] {
81 //      dst[i+1] = dst[i] * v
82 //  }
83 //  return dst
84 func CumProd(dst, s []float64) []float64 {
85         if len(s) == 0 {
86                 return dst
87         }
88         dst[0] = s[0]
89         for i, v := range s[1:] {
90                 dst[i+1] = dst[i] * v
91         }
92         return dst
93 }
94
95 // Div is
96 //  for i, v := range s {
97 //      dst[i] /= v
98 //  }
99 func Div(dst, s []float64) {
100         for i, v := range s {
101                 dst[i] /= v
102         }
103 }
104
105 // DivTo is
106 //  for i, v := range s {
107 //      dst[i] = v / t[i]
108 //  }
109 //  return dst
110 func DivTo(dst, s, t []float64) []float64 {
111         for i, v := range s {
112                 dst[i] = v / t[i]
113         }
114         return dst
115 }
116
117 // L1Dist is
118 //  var norm float64
119 //  for i, v := range s {
120 //      norm += math.Abs(t[i] - v)
121 //  }
122 //  return norm
123 func L1Dist(s, t []float64) float64 {
124         var norm float64
125         for i, v := range s {
126                 norm += math.Abs(t[i] - v)
127         }
128         return norm
129 }
130
131 // LinfDist is
132 //  var norm float64
133 //  if len(s) == 0 {
134 //      return 0
135 //  }
136 //  norm = math.Abs(t[0] - s[0])
137 //  for i, v := range s[1:] {
138 //      absDiff := math.Abs(t[i+1] - v)
139 //      if absDiff > norm || math.IsNaN(norm) {
140 //              norm = absDiff
141 //      }
142 //  }
143 //  return norm
144 func LinfDist(s, t []float64) float64 {
145         var norm float64
146         if len(s) == 0 {
147                 return 0
148         }
149         norm = math.Abs(t[0] - s[0])
150         for i, v := range s[1:] {
151                 absDiff := math.Abs(t[i+1] - v)
152                 if absDiff > norm || math.IsNaN(norm) {
153                         norm = absDiff
154                 }
155         }
156         return norm
157 }