gonum.org/v1/gonum@v0.14.0/internal/asm/f64/stubs_amd64.go (about)

     1  // Copyright ©2015 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  //go:build !noasm && !gccgo && !safe
     6  // +build !noasm,!gccgo,!safe
     7  
     8  package f64
     9  
    10  // L1Norm is
    11  //
    12  //	for _, v := range x {
    13  //		sum += math.Abs(v)
    14  //	}
    15  //	return sum
    16  func L1Norm(x []float64) (sum float64)
    17  
    18  // L1NormInc is
    19  //
    20  //	for i := 0; i < n*incX; i += incX {
    21  //		sum += math.Abs(x[i])
    22  //	}
    23  //	return sum
    24  func L1NormInc(x []float64, n, incX int) (sum float64)
    25  
    26  // AddConst is
    27  //
    28  //	for i := range x {
    29  //		x[i] += alpha
    30  //	}
    31  func AddConst(alpha float64, x []float64)
    32  
    33  // Add is
    34  //
    35  //	for i, v := range s {
    36  //		dst[i] += v
    37  //	}
    38  func Add(dst, s []float64)
    39  
    40  // AxpyUnitary is
    41  //
    42  //	for i, v := range x {
    43  //		y[i] += alpha * v
    44  //	}
    45  func AxpyUnitary(alpha float64, x, y []float64)
    46  
    47  // AxpyUnitaryTo is
    48  //
    49  //	for i, v := range x {
    50  //		dst[i] = alpha*v + y[i]
    51  //	}
    52  func AxpyUnitaryTo(dst []float64, alpha float64, x, y []float64)
    53  
    54  // AxpyInc is
    55  //
    56  //	for i := 0; i < int(n); i++ {
    57  //		y[iy] += alpha * x[ix]
    58  //		ix += incX
    59  //		iy += incY
    60  //	}
    61  func AxpyInc(alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr)
    62  
    63  // AxpyIncTo is
    64  //
    65  //	for i := 0; i < int(n); i++ {
    66  //		dst[idst] = alpha*x[ix] + y[iy]
    67  //		ix += incX
    68  //		iy += incY
    69  //		idst += incDst
    70  //	}
    71  func AxpyIncTo(dst []float64, incDst, idst uintptr, alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr)
    72  
    73  // CumSum is
    74  //
    75  //	if len(s) == 0 {
    76  //		return dst
    77  //	}
    78  //	dst[0] = s[0]
    79  //	for i, v := range s[1:] {
    80  //		dst[i+1] = dst[i] + v
    81  //	}
    82  //	return dst
    83  func CumSum(dst, s []float64) []float64
    84  
    85  // CumProd is
    86  //
    87  //	if len(s) == 0 {
    88  //		return dst
    89  //	}
    90  //	dst[0] = s[0]
    91  //	for i, v := range s[1:] {
    92  //		dst[i+1] = dst[i] * v
    93  //	}
    94  //	return dst
    95  func CumProd(dst, s []float64) []float64
    96  
    97  // Div is
    98  //
    99  //	for i, v := range s {
   100  //		dst[i] /= v
   101  //	}
   102  func Div(dst, s []float64)
   103  
   104  // DivTo is
   105  //
   106  //	for i, v := range s {
   107  //		dst[i] = v / t[i]
   108  //	}
   109  //	return dst
   110  func DivTo(dst, x, y []float64) []float64
   111  
   112  // DotUnitary is
   113  //
   114  //	for i, v := range x {
   115  //		sum += y[i] * v
   116  //	}
   117  //	return sum
   118  func DotUnitary(x, y []float64) (sum float64)
   119  
   120  // DotInc is
   121  //
   122  //	for i := 0; i < int(n); i++ {
   123  //		sum += y[iy] * x[ix]
   124  //		ix += incX
   125  //		iy += incY
   126  //	}
   127  //	return sum
   128  func DotInc(x, y []float64, n, incX, incY, ix, iy uintptr) (sum float64)
   129  
   130  // L1Dist is
   131  //
   132  //	var norm float64
   133  //	for i, v := range s {
   134  //		norm += math.Abs(t[i] - v)
   135  //	}
   136  //	return norm
   137  func L1Dist(s, t []float64) float64
   138  
   139  // LinfDist is
   140  //
   141  //	var norm float64
   142  //	if len(s) == 0 {
   143  //		return 0
   144  //	}
   145  //	norm = math.Abs(t[0] - s[0])
   146  //	for i, v := range s[1:] {
   147  //		absDiff := math.Abs(t[i+1] - v)
   148  //		if absDiff > norm || math.IsNaN(norm) {
   149  //			norm = absDiff
   150  //		}
   151  //	}
   152  //	return norm
   153  func LinfDist(s, t []float64) float64
   154  
   155  // ScalUnitary is
   156  //
   157  //	for i := range x {
   158  //		x[i] *= alpha
   159  //	}
   160  func ScalUnitary(alpha float64, x []float64)
   161  
   162  // ScalUnitaryTo is
   163  //
   164  //	for i, v := range x {
   165  //		dst[i] = alpha * v
   166  //	}
   167  func ScalUnitaryTo(dst []float64, alpha float64, x []float64)
   168  
   169  // ScalInc is
   170  //
   171  //	var ix uintptr
   172  //	for i := 0; i < int(n); i++ {
   173  //		x[ix] *= alpha
   174  //		ix += incX
   175  //	}
   176  func ScalInc(alpha float64, x []float64, n, incX uintptr)
   177  
   178  // ScalIncTo is
   179  //
   180  //	var idst, ix uintptr
   181  //	for i := 0; i < int(n); i++ {
   182  //		dst[idst] = alpha * x[ix]
   183  //		ix += incX
   184  //		idst += incDst
   185  //	}
   186  func ScalIncTo(dst []float64, incDst uintptr, alpha float64, x []float64, n, incX uintptr)
   187  
   188  // Sum is
   189  //
   190  //	var sum float64
   191  //	for i := range x {
   192  //	    sum += x[i]
   193  //	}
   194  func Sum(x []float64) float64
   195  
   196  // L2NormUnitary returns the L2-norm of x.
   197  //
   198  //	  var scale float64
   199  //	  sumSquares := 1.0
   200  //	  for _, v := range x {
   201  //	  	if v == 0 {
   202  //	  		continue
   203  //	  	}
   204  //	  	absxi := math.Abs(v)
   205  //	  	if math.IsNaN(absxi) {
   206  //	  		return math.NaN()
   207  //	  	}
   208  //	  	if scale < absxi {
   209  //	  		s := scale / absxi
   210  //	  		sumSquares = 1 + sumSquares*s*s
   211  //	  		scale = absxi
   212  //	  	} else {
   213  //	  		s := absxi / scale
   214  //	  		sumSquares += s * s
   215  //	  	}
   216  //		  	if math.IsInf(scale, 1) {
   217  //			  	return math.Inf(1)
   218  //		  	}
   219  //	  }
   220  //	  return scale * math.Sqrt(sumSquares)
   221  func L2NormUnitary(x []float64) (norm float64)
   222  
   223  // L2NormInc returns the L2-norm of x.
   224  //
   225  //	var scale float64
   226  //	sumSquares := 1.0
   227  //	for ix := uintptr(0); ix < n*incX; ix += incX {
   228  //		val := x[ix]
   229  //		if val == 0 {
   230  //			continue
   231  //		}
   232  //		absxi := math.Abs(val)
   233  //		if math.IsNaN(absxi) {
   234  //			return math.NaN()
   235  //		}
   236  //		if scale < absxi {
   237  //			s := scale / absxi
   238  //			sumSquares = 1 + sumSquares*s*s
   239  //			scale = absxi
   240  //		} else {
   241  //			s := absxi / scale
   242  //			sumSquares += s * s
   243  //		}
   244  //	}
   245  //	if math.IsInf(scale, 1) {
   246  //		return math.Inf(1)
   247  //	}
   248  //	return scale * math.Sqrt(sumSquares)
   249  func L2NormInc(x []float64, n, incX uintptr) (norm float64)
   250  
   251  // L2DistanceUnitary returns the L2-norm of x-y.
   252  //
   253  //	var scale float64
   254  //	sumSquares := 1.0
   255  //	for i, v := range x {
   256  //		v -= y[i]
   257  //		if v == 0 {
   258  //			continue
   259  //		}
   260  //		absxi := math.Abs(v)
   261  //		if math.IsNaN(absxi) {
   262  //			return math.NaN()
   263  //		}
   264  //		if scale < absxi {
   265  //			s := scale / absxi
   266  //			sumSquares = 1 + sumSquares*s*s
   267  //			scale = absxi
   268  //		} else {
   269  //			s := absxi / scale
   270  //			sumSquares += s * s
   271  //		}
   272  //	}
   273  //	if math.IsInf(scale, 1) {
   274  //		return math.Inf(1)
   275  //	}
   276  //	return scale * math.Sqrt(sumSquares)
   277  func L2DistanceUnitary(x, y []float64) (norm float64)