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
5package c64
6
7// ScalUnitary is
8//  for i := range x {
9//  	x[i] *= alpha
10//  }
11func ScalUnitary(alpha complex64, x []complex64) {
12	for i := range x {
13		x[i] *= alpha
14	}
15}
16
17// ScalUnitaryTo is
18//  for i, v := range x {
19//  	dst[i] = alpha * v
20//  }
21func ScalUnitaryTo(dst []complex64, alpha complex64, x []complex64) {
22	for i, v := range x {
23		dst[i] = alpha * v
24	}
25}
26
27// ScalInc is
28//  var ix uintptr
29//  for i := 0; i < int(n); i++ {
30//  	x[ix] *= alpha
31//  	ix += incX
32//  }
33func ScalInc(alpha complex64, x []complex64, n, incX uintptr) {
34	var ix uintptr
35	for i := 0; i < int(n); i++ {
36		x[ix] *= alpha
37		ix += incX
38	}
39}
40
41// ScalIncTo is
42//  var idst, ix uintptr
43//  for i := 0; i < int(n); i++ {
44//  	dst[idst] = alpha * x[ix]
45//  	ix += incX
46//  	idst += incDst
47//  }
48func ScalIncTo(dst []complex64, incDst uintptr, alpha complex64, x []complex64, n, incX uintptr) {
49	var idst, ix uintptr
50	for i := 0; i < int(n); i++ {
51		dst[idst] = alpha * x[ix]
52		ix += incX
53		idst += incDst
54	}
55}
56
57// SscalUnitary is
58//  for i, v := range x {
59//  	x[i] = complex(real(v)*alpha, imag(v)*alpha)
60//  }
61func SscalUnitary(alpha float32, x []complex64) {
62	for i, v := range x {
63		x[i] = complex(real(v)*alpha, imag(v)*alpha)
64	}
65}
66
67// SscalInc is
68//  var ix uintptr
69//  for i := 0; i < int(n); i++ {
70//  	x[ix] = complex(real(x[ix])*alpha, imag(x[ix])*alpha)
71//  	ix += inc
72//  }
73func SscalInc(alpha float32, x []complex64, n, inc uintptr) {
74	var ix uintptr
75	for i := 0; i < int(n); i++ {
76		x[ix] = complex(real(x[ix])*alpha, imag(x[ix])*alpha)
77		ix += inc
78	}
79}
80